码迷,mamicode.com
首页 > 其他好文 > 详细

CentOS7 Nginx安装配置操作指引

时间:2020-10-05 22:08:10      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:分布   官方   find命令   module   用户   tac   文件结构   安装配置   bmp   

CentOS7 Nginx安装配置操作指引

目录

  1. Nginx概念 3
  2. Nginx安装 3
    2.1 通过yum安装部署 3
  3. 构建Nginx仓储库 3
  4. 建立nginx.repo 文件 4
  5. 更新系统 4
  6. 执行安装 4
  7. 运行并验证 5
    2.2 通过编译安装部署 6
    2.2.1 依赖包安装 6
    2.2.2 下载源码安装包 6
    2.2.3 Configure命令参数讲解 7
    2.2.4 编译安装 9
    2.2.5 运行并验证 9
    2.2.6 Nginx加入环境变量 10
  8. Nginx运行、重启及关闭 11
    3.1 Nginx启动 11
    3.2 Nginx状态检查 11
    3.3 Nginx关闭 11
    3.3.1 nginx进程支持的信号 12
    3.3.2 快速关闭 12
    3.3.3 正常关闭 13
    3.3.4 强制关闭 13
    3.3.5 关闭工作进程 13
    3.4 Nginx重启 14
  9. Nginx配置 14
  10. 防火墙配置 20
  11. 参考文献 21

1.Nginx概念
Nginx是一台轻量级、高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
其主要特点是:占有内存少,并发能力强。
Nginx unit:Nginx 多语言应用程序服务器;
Nginx plus:web服务器、内容缓存及API网关 多合一负载均衡器;
Nginx control:Nginx plus的几种监控和管理;
Nginx waf:web应用程序防火墙;
Nginx big:Nginx和Nginx plus的轻量级基于云的监视;

2.Nginx安装
Nginx安装有两种方式,一种是通过yum直接安装,方法二是通过源码编译安装。
通过yum安装方法简单、速度很快,而且该软件包含几乎所有正式的Nginx模块但安装的版本不是最新版本;
编译安装方式更加灵活,可以自定义安装路径以及添加特定的模块,包含第三方模块,或应用最新的安全补丁。

2.1通过yum安装部署
安装前首先检查下系统版本及环境:
[root@nginx-1 ~]# cat /etc/centos-release

技术图片

可以看到我们的安装部署环境为 centos 7.2版本。
1.构建Nginx仓储库
进入网址 https://nginx.org/en/linux_packages.html#RHEL-CentOS ,可以查看到针对各个系统的详细安装步骤:

技术图片
技术图片

默认是安装稳定版,如想要安装主线版,可输入如下命令:
技术图片

开始使用yum安装:
技术图片
技术图片

2.建立nginx.repo 文件
在/etc/yum.repos.d/ 目录下新建文件nginx.repo
[root@nginx-1 ~]# vim /etc/yum.repos.d/nginx.repo

技术图片

3.更新系统
[root@nginx-1 ~]# yum update

4.执行安装
[root@nginx-1 ~]# yum install nginx

技术图片
技术图片

安装时提示是否接受GPG秘钥,并验证指纹是否匹配?573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62,如果是,输入y表示接受。

5.运行并验证
安装好后,可以直接运行并验证是否安装成功。
查看安装后文件,安装配置文件在/etc/nginx/ 目录,执行文件路径:/usr/sbin/nginx ,日志文件在 /var/log/nginx 目录。
[root@nginx-1 nginx-1.16.1]# find / -name nginx

技术图片

启动nginx服务,并检查端口:
[root@nginx-1 ~]# nginx
[root@nginx-1 ~]# netstat -nutpl

技术图片

[root@nginx-1 ~]# curl -I 127.0.0.1
技术图片

出现以上结果,表示,已安装成功,并运行。版本为1.16.1版。

2.2通过编译安装部署
2.2.1依赖包安装
源码安装之前,首先要安装好相应的依赖包:
[root@nginx-1 ~]# yum -y install gcc gcc-c++ autoconf automake libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
2.2.2下载源码安装包
通过官网下载对应源码安装包文件https://nginx.org/en/download.html,

技术图片

或在服务器上直接通过命令下载:
[root@nginx-1 src]# wget https://nginx.org/download/nginx-1.16.1.tar.gz

技术图片

下载后解压缩:
[root@nginx-1 src]# tar -zxvf nginx-1.16.1.tar.gz

技术图片

技术图片

2.2.3Configure命令参数讲解
Configure命令详细参数可参考以下官方文档:
http://nginx.org/en/docs/configure.html

技术图片
技术图片
技术图片
技术图片

2.2.4编译安装
[root@nginx-1 nginx-1.16.1]# ./configure \
--prefix=/usr/local/nginx \
--error-log-path=/var/log/nginx/error.log \
--with-http_ssl_module

[root@nginx-1 nginx-1.16.1]#make && make install
编译安装后,通过tree命令检查安装后文件结构:
[root@nginx-1 nginx]# tree /usr/local/nginx/
/usr/local/nginx/ #安装目录
├── client_body_temp
├── conf #nginx所有配置文件目录
│?? ├── fastcgi.conf #fastcgi 配置文件
│?? ├── fastcgi.conf.default #fastcgi配置文件的原始备份
│?? ├── fastcgi_params #fastcgi参数文件
│?? ├── fastcgi_params.default #fastcgi参数文件的原始备份
│?? ├── koi-utf
│?? ├── koi-win
│?? ├── mime.types #媒体类型文件
│?? ├── mime.types.default #媒体类型文件原始备份
│?? ├── nginx.conf #nginx主配置文件
│?? ├── nginx.conf.default #nginx主配置文件原始备份
│?? ├── scgi_params #scgi相关参数文件
│?? ├── scgi_params.default
│?? ├── uwsgi_params #uwsgi相关参数文件
│?? ├── uwsgi_params.default
│?? └── win-utf
├── fastcgi_temp #fastcgi临时数据目录
├── html #编译安装时nginx默认站点目录
│?? ├── 50x.html #错误页面代替显示文件
│?? └── index.html #默认首页文件
├── logs #nginx默认日志目录
│?? ├── access.log #nginx默认访问日志文件,可以实
#时记录网址用户访问情况信息
│?? ├── error.log #nginx默认错误日志文件
│?? └── nginx.pid #nginx的pid文件,nginx启动后,
#会把所有进程的ID号写到此文件
├── proxy_temp #proxy临时目录
├── sbin #nginx命令文件路径
│?? └── nginx #nginx执行文件
├── scgi_temp #scgi临时目录
└── uwsgi_temp #uwsgi临时目录

2.2.5运行并验证
通过以下命令运行 nginx并检查:
[root@nginx-1 local]# /usr/local/nginx/sbin/nginx #运行nginx
[root@nginx-1 local]# netstat -nutpl | grep nginx #检查端口

技术图片

[root@nginx-1 local]# curl -I 127.0.0.1

技术图片

可以看到nginx已安装成功并正常运行。

2.2.6Nginx加入环境变量
正常安装后无法直接通过命令执行,需要进入nginx执行文件的路径下执行,如:
技术图片

因此,需要配置环境变量:
编辑 /etc/profile文件,在文件最后面加上以下行:
[root@nginx-1 local]# vim /etc/profile
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

技术图片

保存后立即生效:
[root@nginx-1 local]# source /etc/profile 或
[root@nginx-1 local]# ./etc/profile
再执行命令可以看到:

技术图片

3.Nginx运行、重启及关闭
3.1Nginx启动
执行以下命令启动nginx:
方法一:如已配置好nginx的环境变量,可以直接执行nginx命令启动
[root@nginx-1 ~]# nginx
方法二:可以通过nginx可执行文件绝对路径执行
[root@nginx-1 ~]# /usr/local/nginx/sbin/nginx
方法三:执行运行指定的配置文件,如配置文件默认,可不指定
[root@nginx-1~]#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

3.2Nginx状态检查
检查nginx端口
[root@nginx-1 ~]# netstat -nutpl | grep nginx

技术图片

检查进程,此示例中,master表示是主进程,pid号12529,;worker是工作进程。Pid号是12530
[root@nginx-1 ~]# ps -ef | grep nginx

技术图片

3.3Nginx关闭
Nginx的停止有多种方法,一般通过kill命令并发送不同信号给nginx进程的方式来控制nginx的停止。
如通过指定nginx的PID文件路径关闭:
-# kill -信号 “/usr/local/nginx/logs/nginx.pid”
或通过主进程的pid号进行关闭:
-# kill -信号 nginx主进程号

3.3.1 nginx进程支持的信号
Nginx主进程支持的信号:

技术图片

Nginx工作进程支持的信号:

技术图片

3.3.2 快速关闭
使用以下命令来快速关闭nginx:
[root@nginx-1 systemd]# nginx -s stop
或通过给主进程发送 TERM 或 INT信号来快速关闭。
首先通过ps命令查到nginx的主进程及工作进程的pid:

技术图片

[root@nginx-1 conf]# kill -TERM 12529

技术图片

3.3.3 正常关闭
可以使用以下命令正常关闭nginx,
[root@nginx-1 systemd]# nginx -s quit
或给主进程发送 QUIT来实现正常关闭。
[root@nginx-1 conf]# kill -QUIT 22775

技术图片

3.3.4 强制关闭
使用kill -9 命令强制关闭nginx。强制关闭主进程后,工作进程任然存在,需要通过kill命令一一关闭。
[root@nginx-1 conf]# kill -9 23606 #关闭主进程
[root@nginx-1 conf]# kill -9 23607 #关闭工作进程

技术图片

技术图片

3.3.5 关闭工作进程
通过WINCH信号来正常关闭工作进程,或直接使用kill -9 强制关闭。
[root@nginx-1 conf]# kill -WINCH 23949 #正常关闭工作进程
[root@nginx-1 conf]# kill -9 23950 #强制关闭工作进程

技术图片

3.4 Nginx重启
当配置变更后,需要重新加载。可使用以下命令重启:
[root@nginx-1 sbin]# nginx -s reload
或给主进程发送 HUP信号
[root@nginx-1 sbin]# kill -HUP 25064
当nginx接受到HUP信号时,首先解析配置文件,如配置文件配置无问题,就应用新的配置文件;如配置文件有问题,将继续使用旧的配置进行工作。
Nginx应用新的配置文件后,通知旧的工作进程关闭监听套接字,但就得工作进程还会继续为当前连接提供服务,直到旧的工作进程被关闭。
因此,我们变更配置文件后,需要执行以下命令检查配置是否正确:
[root@nginx-1 sbin]# nginx -t 或者
[root@nginx-1 sbin]# nginx -t -c /usr/local/nginx/conf/nginx.conf

技术图片

出现以上结果表示配置无问题。

4.Nginx配置
Nginx.conf配置文件默认是安装在 prefix/conf/nginx.conf 目录下。也可以通过find命令查看。

技术图片

Nginx.conf详细配置可参考《nginx.conf 配置详解》。
使用vim命令打开文件编辑:
[root@nginx-1 ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody;
#nginx进程数,建议设置为等于CPU总核心数
worker_processes 1;
#全局错误日志定义目录,默认在 /usr/local/nginx/logs/error.log,可自定义其他路径;
#全局错误日志定义级别[debug | info | notice | warn | error | crit ]
#例如:error_log /var/log/nginx/error.log debug
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid进程文件路径,默认 /usr/local/nginx/logs/nginx.pid,可以自定义其他路径。
#pid logs/nginx.pid;
#工作模式与连接数上限
events {
#参考时间模型 use [ kqueue | rtsig | epoll | select | poll ];
#epoll 模型是 Linux 2.6以上版本内核中的高性能网络I/O模型,
#如果是FreeBSD系统,就使用kqueue模型
use epoll;
#单个工作进程最大连接数(最大连接数=连接数*进程数)
worker_connections 1024;
}
#设置HTTP服务器
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
#charset utf-8; #设置字符编码
#log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

#                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;

#access_log  logs/access.log  main;

client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓存大小
client_max_body_size 8m; #设定请求缓存大小
##开启高效文件传输模式,
#sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为off,
#如果图片显示不正常,可把这个改为off
sendfile on;
#autoindex on; #开启目录列表访问权限,默认关闭
#tcp_nopush on; #防止网络阻塞
#tcp_nodelay on; #方式网络阻塞
#keepalive_timeout 120; #长连接超时时间,单位为秒
keepalive_timeout 65;
#FastCGI参数配置
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 16k; #压缩缓冲区
#gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
#压缩类型,默认就已经包含text/html
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#开启限制IP连接数的时候需要使用
#limit_zone crawler $binary_remote_addr 10m;
#虚拟主机配置
server {
listen 80; #监听端口
server_name localhost; #服务器域名,可以有多域名,用空格隔开
index index.html index.htm index.php #设置访问首页
#charset koi8-r;
#日志格式设定
log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
#定义本虚拟主机的访问日志
access_log /var/log/nginx/ha97access.log access;
#php设置
location ~ ..(php|php5)?$
{
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi.conf;
}
#图片缓存时间设置
location ~ .
.(gif|jpg|jpeg|png|bmp|swf)$
{
   expires 10d;
}
#JS和CSS缓存时间设置
location ~ .*.(js|css)?$
{
   expires 1h;
}
location / {
root html;
index index.html index.htm;
}

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache‘s document root
    # concurs with nginx‘s one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

5.防火墙配置
Nginx运行后,需要放通防火墙后才能正常访问。
[root@nginx-1 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@nginx-1 ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
[root@nginx-1 ~]# firewall-cmd --reload
[root@nginx-1 ~]# firewall-cmd --zone=public --list-ports

技术图片

以上已放通80及443端口,再次测试是否能长成访问:

技术图片

6.参考文献
https://docs.nginx.com/nginx/admin-guide/
https://nginx.org/en/docs/
实战Nginx:取代Apache的高性能Web服务器 张宴著

Zabbix5.0企业级分布式监控系统:精讲与企业应用

技术图片

CentOS7 Nginx安装配置操作指引

标签:分布   官方   find命令   module   用户   tac   文件结构   安装配置   bmp   

原文地址:https://blog.51cto.com/2221384/2539935

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!