NGINX源码安装详细配置文档
一、基础Linux指令
查看nginx进程是否启动:ps -ef | grep nginx
关闭防火墙:systemctl stop firewalld
开放80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
关闭80端口:firewall-cmd --permanent --remove-port=80/tcp
查看80端口是否开启:firewall-cmd --query-port=80/tcp
重载防火墙:firewall-cmd --reload //修改端口状态后需要执行
查看已开放端口:firewall-cmd --list-ports
查看监听端口:netstat -tuln | grep 80
查看系统所有资源限制:ulimit -a
查看cpu核心数等信息:lscpu
只显示核心数:nproc
可打开最大文件描述符:cat /proc/sys/fs/file-max
系统 cpu 内存等使用情况:ps aux --sort=-%cpu | head
查看系统已用连接数:sudo netstat -anp | grep ESTABLISHED | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -k1 -nr
查看系统每个进程连接数:sudo lsof -i | awk ‘{print $2}’ | sort | uniq -c | sort -k1 -nr
实时监控系统信息:top (然后按不同数字会有不同信息:1看进程核心信息)
查看系统核心数:cat /proc/cpuinfo | grep “core id”
查看系统信息:
uname -a:显示系统内核版本、操作系统版本、主机名和系统架构等信息。
cat /etc/os-release:显示操作系统的名称、版本、ID和其他详细信息。
lsb_release -a:显示Linux发行版的版本和其他详细信息。
cat /etc/issue:显示操作系统版本和其他信息。
cat /proc/version:显示操作系统版本、编译日期和编译者等信息。
二、安装配置步骤
1.先安装nginx安装时所需要的依赖
使用安装包为:nginx-1.20.2版本
也可以官网下载最新包https://nginx.org/en/download.html
或者自行下载nginx依赖:
sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
如果在内网或者离线环境安装,可以先在同样系统的有网环境下载依赖,导入到需要安装的系统中去。
centos7用以下指令:
sudo yum -y install --downloadonly --downloaddir=/download gcc zlib zlib-devel pcre-devel openssl openssl-devel
centos8用以下指令:
sudo dnf -y install --downloadonly --downloaddir=/download gcc zlib zlib-devel pcre-devel openssl openssl-devel
ubantu系列使用以下指令(会下载到/var/cache/apt/archives/目录下):
sudo apt-get download --download-only gcc zlib zlib-devel pcre-devel openssl openssl-devel
(1)将nginx所需依赖的包进行安装:
①将以下文件夹使用文件传输工具,传到linux系统;将文件夹放到linux系统指定路径(/usr/local)
②使用linux远程连接工具Xshell或者其他工具将依赖安装包安装
[root@localhost /]# cd /usr/local/nginx_require/
[root@localhost nginx_require]# rpm -ivh *.rpm --force --nodeps
(2)解压nginx文件夹下的依赖包
nginx_upstream_check_module-master.zip模块用于ustream健康检查,ngx_cache_purge模块,该模块用于清理nginx缓存。ngx_req_status-master.zip 该模块用于nginx请求量检测
①使用linux远程连接工具Xshell或者其他工具将依赖nginx_upstream_check_module-master.zip、ngx_req_status-master.zip文件进行解压
[root@localhost /]# cd /usr/local/nginx/
[root@localhost nginx]# ls
ngx_cache_purge-2.3.tar.gz nginx-1.20.2.tar.gz nginx_upstream_check_module-master.zip ngx_req_status-master.zip
[root@localhost nginx]# unzip nginx_upstream_check_module-master.zip
[root@localhost nginx]# unzip ngx_req_status-master.zip
②将依赖文件ngx_cache_purge-2.3.tar.gz进行解压。
[root@localhost ~]# cd /usr/local/nginx
[root@localhost nginx]# ls
nginx_upstream_check_module-master ngx_cache_purge-2.3.tar.gz nginx-1.20.2.tar.gz nginx_upstream_check_module-master.zip
[root@localhost nginx]# tar zxvf ngx_cache_purge-2.3.tar.gz
2.编译安装nginx
①解压
[root@localhost nginx]# cd /usr/localnginx
[root@localhost nginx]# tar -zxvf nginx-1.20.2.tar.gz
进入nginx-1.20.2文件夹
[root@localhost nginx]# /usr/localnginx/nginx-1.20.2
②将nginx_upstream_check_m7odule-master打补丁到nginx
[root@localhost nginx-1.20.2]# sudo patch -p1 < ../nginx_upstream_check_module-master/check_1.16.1+.patch
③将 ngx_req_status-master.zip打补丁到nginx
[root@localhost nginx-1.20.2]# sudo patch -p1 < ../ngx_req_status-master/write_filter-1.7.11.patch
④编译
[root@localhost nginx-1.20.2]# sudo ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --with-pcre --with-stream --add-module=../ngx_cache_purge-2.3/ --add-module=../nginx_upstream_check_module-master/ --add-module=../ngx_req_status-master
开始:
结束:
最终出现以上样式表示编译成功!
④安装
[root@localhost nginx-1.20.2]# cd /usr/local/nginx-1.20.2
[root@localhost nginx-1.20.2]# ls
build bundle configure COPYRIGHT Makefile patches README.markdown README-windows.txt util
[root@localhost nginx-1.20.2]# sudo make && sudo make install
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
最终出现类似样式表示安装成功!
三、检查nginx是否安装成功
进入安装目录中,
nginx命令:cd /usr/local/nginx/sbin
启动,关闭,重启,命令:
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重载配置 正式使用时用这个指令来重载配置
查看nginx是否启动:ps -ef | grep nginx
四、修改系统配置
1.安装成功,配置启动停用等指令
由于第三点中的命令无法开机自启动,并且启动比较麻烦,所以设置命令到systemctl中的系统命令去,比较方便。
**(1)**创建服务文件
[root@localhost sbin]# vim /lib/systemd/system/nginx.service
①将以下文档添加到页面中,先点击键盘I键进入输入模式
Nginx:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx restart
ExecStop=/usr/local/nginx/sbin/nginx stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
②按esc退出输入模式
③按 :wq 进行保存
**(2)**然后重新加载配置文档
[root@localhost sbin]# sudo systemctl daemon-reload
(3)将nginx设置为开机自启动
[root@localhost sbin]# systemctl enable nginx //开机自启动
[root@localhost sbin]# systemctl status nginx //查看nginx状态
systemctl 指令合集:
[root@localhost sbin]# systemctl disable nginx //关闭开机自启动
[root@localhost sbin]# systemctl start nginx //启动nginx服务
[root@localhost sbin]# systemctl restart nginx //重启nginx服务 正式使用时请误用
[root@localhost sbin]# systemctl enable nginx //开机自启动
[root@localhost sbin]# systemctl status nginx //查看nginx状态
2.打开端口,并测试能否通过浏览器访问nginx
(1)打开80端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
(2)重载防火墙配置
[root@localhost ~]# firewall-cmd --reload
(3)检查80端口是否已打开
[root@localhost ~]# firewall-cmd --query-port=80/tcp
(4)使用浏览器访问:在同一网域内,输入安装了nginx的ip即可看到如下页面,即表示成功。
五、修改nginx.conf配置
本文只介绍安装步骤,nginx配置是一个复杂的过程,针对于不同服务架构配置也不同,可以根据实际情况进行搜索。
也可以查看我的文章来查看每个配置的作用:http://t.csdnimg.cn/OVftQ
六、linux内核优化与nginx优化
(一)系统内核优化
1.内核优化
sudo vim /etc/sysctl.conf
先按i进入编辑,在尾部添加:
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 30
按esc退出编辑,按wq保存并退出。
然后执行:sudo sysctl -p 重载配置生效
2.修改连接数限制
ulimit -n查看每个进程最大连接数,默认为1024
进入limits.conf进行系统限制编辑:
sudo vim /etc/security/limits.conf
在尾部添加以下内容:
* soft nofile 65535
* hard nofile 65535
必须重启才生效:sudo reboot。这一步可以留到将所有配置好后执行。
(二)nginx优化
1.日志分割(防止无用日志占用存储空间)
创建配置文件:sudo vim /etc/logrotate.d/nginx
复制以下内容:
/usr/local/nginx/logs/*log
{
su root root
daily
dateext
missingok
rotate 30
notifempty
compress
create 644 nginx
sharedscripts
postrotate
[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 cat /usr/local/nginx/logs/nginx.pid
endscript
}
按esc退出编辑,按wq保存并退出。
对以上内容进行解释:
/usr/local/nginx/logs/*log # 这里也可以写明对具体哪几个文件进行切割
{
su root root # 赋root权限
daily # 每天切割
dateext # 日志文件添加日期
missingok # 忽略错误
rotate 30 # 最多保留多少个存档
notifempty # 日志为空就不切割
compress # 切割后且压缩
create 644 nginx # 文件权限
sharedscripts # 共享脚本,结果为空
postrotate # 收尾动作,重新生成nginx日志
[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1
cat /usr/local/nginx/logs/nginx.pid
endscript
}
测试:sudo logrotate -f /etc/logrotate.d/nginx
原本没有日志就不会生成日志压缩包
出现错误1:没有nginx用户,创建即可
指令:sudo useradd nginx 然后重新执行测试代码。
效果如下:
2. nginx请求量监控ngx_req_status-master.zip模块
http {
req_status_zone server_name $server_name 256k;
req_status_zone server_addr $server_addr 256k;
req_status server_name server_addr;
server {
location /req-status {
req_status_show on;
}
}
}
Nginx请求信息解释:
八、注意事项-必看
1. 在nginx服务正式使用时,修改配置后,请勿使用systemctl restart nginx指令来重置配置,如果配置有误,nginx将会宕机。
进入安装目录中,
[root@localhost sbin]# cd /usr/local/nginx/sbin
[root@localhost sbin]# ./nginx -s reload
2.端口一键开放
sudo firewall-cmd --zone=public --add-port=112/tcp --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=161/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5405/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent
sudo firewall-cmd --reload