Nginx,Tengine(ubuntu,centos)
### 1.安装依赖(ubuntu)
```js|nginx,redis
1. apt-get install libpcre3 libpcre3-dev
2. apt-get install openssl libssl-dev
3. apt-get install zlib1g-dev
4. apt-get install build-essential
```
### 1.安装依赖(centos)
```js|nginx,redis
yum -y install openssl openssl-devel
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install gcc-c++
```
### 2.下载源码解压
```js|nginx
1. wget http://nginx.org/download/nginx-1.20.2.tar.gz
2. tar -xvf nginx-1.20.2.tar.gz
1.http://tengine.taobao.org/download/tengine-2.3.3.tar.gz
2. tar -xvf tengine-2.3.3.tar.gz
```
### 3.安装模块
```js|nginx
1. $ ./configure --prefix=/etc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/opt/ngx_cache_purge-2.3
模块参数:
--prefix=/etc/nginx/ 安装路径(自定义即可)
--with-http_stub_status_module --with-http_ssl_module https支持模块
2. 编译
make
3. 安装
make install
```
修改nginx server头(进入源码文件修改nginx.h,然后make,obj文件夹会生成新的nginx启动脚本,复制到安装目录sbin下,重启即可)
vim /opt/nginx-1.20.2/src/core/nginx.h

### 相关命令
```js|nginx
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启
```
### 设置开机自启动
vim /etc/systemd/system/nginx.service
```
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/etc/nginx/sbin/nginx
ExecReload=/etc/nginx/sbin/nginx -s reload
ExecStop=/etc/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
```
```
chmod +x /etc/systemd/system/nginx.service
```
systemctl daemon-reload
systemctl enable nginx
#### nginx 版本升级
一、查看nginx老版本
```
/usr/local/nginx/sbin/nginx -V
```

下载新的nginx源码包
新源码包 按照安装nginx的方法进行安装,只需要到make,千万不要make install
```
wget http://nginx.org/download/nginx-1.23.3.tar.gz
tar -zxvf nginx-1.23.3.tar.gz
cd nginx-1.23.3/
./configure --prefix=/etc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
```
编译
```
make
```
二、平滑升级nginx
1: 备份旧版本的nginx可执行文件(期间nginx不会停止服务)
```
mv /etc/nginx/sbin/nginx /etc/nginx/sbin/nginx.old
```
2:复制新的nginx二进制文件,进入新的nginx源码包
```
cp /opt/nginx-1.23.3/objs/nginx /etc/nginx/sbin/
```
3: 测试新版本的nginx是否正常
```
/etc/nginx/sbin/nginx -t
```
4: 给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)
```
kill -USR2 cat /etc/nginx/logs/nginx.pid
```
5:从容关闭旧的Nginx进程
```
kill -WINCH cat /etc/nginx/logs/nginx.pid.oldbin
```
8:验证Nginx是否升级成功
```
/etc/nginx/sbin/nginx -V
```

四,如果在升级之后发现因版本问题不兼容应用程序,怎么回退。
在上面的结果中,我们也能看到老的master进程是一直存在,在没有手工关闭前,它是不会自已关闭的,这种设计是有好处的,好处就是为了升级新版本后,如果出现问题能及时快速的回滚到上一个稳定版本。
也就是说,在检查出没问题前,请务必不执行以下指令。
```
kill -QUIT cat /etc/nginx/logs/nginx.pid.oldbin
```
——下面是回退的操作——
重命名nginx二进制文件,把之前备份的修改回来
kill -USR1 cat /etc/nginx/logs/nginx.pid.oldbin