赞
踩
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/opt/nginx --with-http_gzip_static_module --with-http_v2_module --with-openssl=/opt/openssl-1.1.1d --with-http_ssl_module --with-ipv6
# 可以提前输入 ./configure --help 来查看所有选项;
# 带 PATH 的代表安装路径,sbin路径、modules路径、conf路径、prefix安装路径、pid路径
# --with开头 表示安装第三方动态模块,--without开头 表示取消已安装模块;--user 和 --group 代表分配的用户和用户组
# 编译
make
# 安装
sudo make install
sudo /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
# -c 初次启动指定配置文件的路径。不加 nginx会自动加载默认路径的配置文件。
/opt/nginx/sbin/nginx -h # 显示帮助信息 -v 版本 -V 展示运行参数 (测试:-t -T会列出源文件)-q 安静 -s:signal -p:prefix -c:filename -g:directives
/opt/nginx/sbin/nginx -s reload # 重新加载配置;
/opt/nginx/sbin/nginx -s reopen # 重新打开日志;等同于 kill -USR1 PID
/opt/nginx/sbin/nginx -s stop # 快速停止;等同于 kill -TERM/INT PID
/opt/nginx/sbin/nginx -s quit # 停止接受请求+处理完后关闭;等同于 kill -QUIT PID
/opt/nginx/sbin/nginx -g "pid logs/nginx.pid" # 添加配置
vim /usr/lib/systemd/system/nginx.service
[Unit] Descripitoin=nginx web service Doucumentation=http://nginx.org/en/docs/ After=network.target [Service] Type=forking PIDFile=/opt/nginx/logs/nginx.pid ExecStartPre=/opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf ExecStart=/opt/nginx/sbin/nginx ExecReload=/opt/nginx/sbin/nginx -s reload ExecStop=/opt/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=default.target
# 授权 authorize
chmod 755 /usr/lib/systemd/system/nginx.service
# operator
systemctl start/stop/restart/reload/status/enable nginx
# 其中重载reload,体现在 master 进程号不变,worker进程号修改了
export PATH=$PATH:/opt/nginx/sbin
./nginx -s stop && rm -rf /opt/nginx && make clean
# make clean 其实就是清理生成的 Makefile 和 objs/ 文件
nginx 是通过多进程的方式运行的:ps -ef |grep nginx
nginx 主要有两类进程
管理员向 master 发送信号,master 向 worker 传递信号;worker 进程和用户进行连接;
重新打开日志文件:kill -USR1 PID;重新读取配置文件并生效 -HUP
优雅关闭整个服务:kill -TERM/INT PID;所有子进程不在接收处理新连接:-WINCH(只关闭worker进程)
平滑升级:kill -USR2 PID # 这样会复制一份,并得到 nginx.pid.oldbin 文件,再继续运行kill -QUIT OLDPID 这样平滑更新就完成了。
nginx 使用服务信号升级
# 准备工作
./configure && make && make install # 旧版
./configure && make # 新版
# 备份原有的二进制 nginx
mv nginx oldnginx
# 更新 nginx 二进制文件
cp ~/nginx-1.17.1/objs/nginx /usr/local/nginx/sbin/
# 复制得到新的进程(根据新的二进制文件运行的进程)
kill -USR2 'more /usr/local/nginx/logs/nginx.pid'
# 退出旧版本
kill -QUIT 'more /usr/local/nginx/logs/nginx.pid.oldbin'
# 准备工作
./configure && make && make install # 旧版
./configure && make # 新版
# 备份原有的二进制 nginx
mv nginx oldnginx
# 更新 nginx 二进制文件
cp ~/nginx-1.17.1/objs/nginx /usr/local/nginx/sbin/
# 在新版本的根目录下执行
make upgrade
# 查看之前安装的模块有哪些(需要添加到后面)
nginx -V
# 清理
make clean
# 模块更新
./configure --without.... --with...
# 编译
make
# 更新
mv objs/nginx /opt/nginx/sbin/ && make upgrade
/usr/local/nginx/conf/nginx.conf
由三大块组成;
# worker 进程的用户,可以 useradd www,然后设置为www(会添加一个/home/www/目录方便配置)
user www;
# 是否开启工作进程,主要用于测试,需要重启,只留一个nginx进程(不区分master worker)
master_process off; # default on;
# 开启多少个worker进程,实现并发。适合为cpu物理内核数,超了会分时(也可以叫业务进程)
worker_processes auto;
# 是否以守护进程启动
daemon off; # default on;
# pid 文件路径
pid file;
# 错误日志存放路径(不记录访问请求),还包括日志级别:debug info notice warn error crit alert emerg
error_log file error; # 不建议 info 以下级别,会有大量 I/O
# 事件驱动模块
events {
# 单个worker进程最大连接数;不能大于系统支持的最大文件句柄数
worker_connections 1024;
# 网络连接序列化,解决 “惊群” 问题(一根声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/733346
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。