编译安装Nginx

环境准备

yum install -y gcc

yum -y install gperftools

yum install -y gcc-c++

yum install -y pcre pcre-devel #正则

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

yum -y install gperftools

针对最通用的、使Nginx支持更多并发请求的 TCP网络参数做简单说明。修改 system.conf, vim /etc/sysctl.conf

fs.file-max = 999999
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024 61000
net.ipv4.tcp_rmem = 4096 32768 262142
net.ipv4.tcp_wmem = 4096 32768 262142
net.core.netdev_max_backlog = 8096
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn.backlog=1024

执行sysctl -p 使其生效

编译安装

1
2
./configure --with-http_auth_request_module --with-http_realip_module --with-http_v2_module --with-debug --with-http_random_index_module --with-http_sub_module --with-http_addition_module --with-http_secure_link_module  --with-http_ssl_module --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-stream --with-http_slice_module --with-google_perftools_module --with-threads --with-http_gzip_static_module --with-http_gunzip_module --with-http_stub_status_module
make & make install

alt text

启动与停止

默认方式启动

/usr/local/nginx/sbin/nginx

另行指定配置文件的启动方式

/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf

显示编译阶段的参数

/usr/local/nginx/sbin/nginx -V

测试配置信息是否有错误

/usr/local/nginx/sbin/nginx -t -q

/usr/local/nginx/sbin/nginx -s reload === kill -s SIGHUP

快速地停止服务

/usr/local/nginx/sbin/nginx -s stop == kill -s SIGTERM / kill -s SIGINT

“优雅”地停止服务

该命令与快速停止Nginx服务是有区别的。当快速停止服务时, worker进程与master进程在收到信号后会立刻跳出循环,退出进程。 而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然 后把当前正在处理的连接全部处理完,最后再退出进程。

/usr/local/nginx/sbin/nginx -s quit # 优雅 == kill -s SIGQUIT

/usr/local/nginx/sbin/nginx -s reopen 使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开时就会生成新的日 志文件。这个功能使得日志文件不至于过大 ===kill -s SIGUSR1

平滑升级Nginx

通知正在运行的旧版本Nginx准备升级。通过向master进程发送 USR2信号可达到目的。例如: kill -s SIGUSR2 这时,运行中的Nginx会将pid文件重命名,如 将/usr/local/nginx/logs/nginx.pid重命名 为/usr/local/nginx/logs/nginx.pid.oldbin,这样新的Nginx才有可能启动成功。 启动新版本的Nginx,可以使用以上介绍过的任意一种启动方 法。这时通过ps命令可以发现新旧版本的Nginx在同时运行。 3)通过kill命令向旧版本的master进程发送SIGQUIT信号,以“优 雅”的方式关闭旧版本的Nginx。随后将只有新版本的Nginx服务运行, 此时平滑升级完毕。
nginx启动之后,woker 监听端口
alt text

参考

nginx 官方文档

作者

Amazing Coder

发布于

2024-08-21

更新于

2024-08-21

许可协议

评论