欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

nginx部署及简单优化

程序员文章站 2022-06-11 18:08:50
研究nginx优化时反复安装清理nginx,为方便做了一个简单部署脚本,用的最新稳定版1.14.0,默认路径,加入systemd系统进程管理中,可以通过systemd管理nginx的启动、终止、重载、状态、开机自启等. 需要再次覆盖nginx时,用awk找到nginx的进程然后kill掉,再次执行安 ......

研究nginx优化时反复安装清理nginx,为方便做了一个简单部署脚本,用的最新稳定版1.14.0,默认路径,加入systemd系统进程管理中,可以通过systemd管理nginx的启动、终止、重载、状态、开机自启等.

 1 #!/bin/bash
 2 
 3 yum -y install gcc pcre pcre-devel
 4 sleep 2
 6 cd ~
 7 tar -zxvf ~/zlib-1.2.11.tar.gz
 8 cd ~/zlib-1.2.11 && ./configure && make && make install 
10 cd ~
11 tar -zxvf ~/nginx-1.14.0.tar.gz
12 cd ~/nginx-1.14.0 && ./configure && make && make install
14 cd ~
16 #/usr/local/nginx/sbin/nginx
19 firewall-cmd --set-default-zone=trusted
21 touch /lib/systemd/system/nginx.service
23 echo "[unit]
24 description=nginx 
25 after=network.target   
27 [service] 
28 type=forking 
29 execstart=/usr/local/nginx/sbin/nginx
30 execreload=/usr/local/nginx/sbin/nginx reload
31 execstop=/usr/local/nginx/sbin/nginx quit
32 privatetmp=true 
33    
34 [install] 
35 wantedby=multi-user.target" > /lib/systemd/system/nginx.service
36 
37 systemctl enable nginx.service
38 systemctl restart nginx.service
39 
40 echo "nginx done"

需要再次覆盖nginx时,用awk找到nginx的进程然后kill掉,再次执行安装脚本就行.

1 kill -9 $`ps aux | grep 'nginx' | awk 'nr==2{print $2}'`

二、nginx优化

nginx优化配置集中在nginx.conf文件的main和events段.

main段中worker配置,可以通过work_cpu_affinity选项,按任务类型:cpu密集型或者io密集型,根据实际业务情况绑定每个worker进程运行在哪个cpu核心上,(前提是系统必须为多核心cpu),例如

1 # 4核心cpu中,开启4个worker,每个worker分别对应cpu0/cpu1/cpu2/cpu.
2 worker_processes    4;
3 worker_cpu_affinity 0001 0010 0100 1000;
4 
5 # 4核心cpu中,也可以只开启2个worker,第一个worker对应cpu0/cpu2,第二个worker对应cpu1/cpu3.
6 worker_processes    2;
7 worker_cpu_affinity 0101 1010;

envents段中开启集中一次性接入连接请求和串行方式接入新连接

events {
    worker_connections  1024;   # 每个worker最大连接数.
    multi_accept on;            # 是否集中接入监听到的连接请求,默认为off,关闭时一次只接收一个连接.
    accept_mutex on             # 默认为on,表示以串行方式接入新连接,off时,将通报给所有worker.

其它的,例如http段优化,sendfile、keepalive_timeout、gzip是nginx中必做.