标签:分布 官方 find命令 module 用户 tac 文件结构 安装配置 bmp
CentOS7 Nginx安装配置操作指引目录
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" ‘
# ‘"$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企业级分布式监控系统:精讲与企业应用
标签:分布 官方 find命令 module 用户 tac 文件结构 安装配置 bmp
原文地址:https://blog.51cto.com/2221384/2539935