knowledge/docs/php/nginx.md

155 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 编译安装nginx
> wandoubaba / 2023-07-21
## 系统环境
以Debian11为例
## 下载源码
以1.24.0版本为例下载nginx
```sh
wget https://nginx.org/download/nginx-1.24.0.tar.gz
```
如果提示`wget: command not found`就先安装wget执行`sudo apt-get install wget`就行。
解压:
```sh
tar zxvf nginx-1.24.0.tar.gz
```
## 安装依赖
```sh
sudo apt-get install libgd-dev build-essential zlib1g-dev libpcre3-dev libssl-dev lsb-release
```
## 创建www用户和组
查看www用户是否存在
```sh
id www
```
创建www分组和www用户并且不允许登录系统
```sh
groupadd www
useradd -g www -s /sbin/nologin www
```
再查看www用户
```sh
id www
```
## 编译安装
```sh
cd nginx-1.24.0
```
带参数执行编译
```sh
./configure --user=www --group=www \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_addition_module \
--with-http_stub_status_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_dav_module \
--with-openssl-opt=-g \
--with-pcre-opt=-g \
--with-pcre
```
安装:
```sh
make
sudo make install
```
经过以上步骤nginx已经被安装到`/usr/local/nginx`目录下,程序文件位于`/usr/local/nginx/sbin/nginx`。
## 启动服务
可以先把nginx程序路径写到系统环境中可以把这条命令加到`~/.bashrc`文件中)
```sh
export PATH=/usr/local/nginx/sbin/:$PATH
```
执行直接执行`nginx`即可启动服务。
在浏览器访问`http://ip`把IP换成你的nginx主机地址如果防火墙和安全组都放行了80端口我们现在应该能看到`Welcome to nginx`页面了。
用下面的命令可以控制服务的启停:
```sh
## 重启服务
nginx -s reopen
## 停止服务
nginx -s stop
nginx -s quit
## 重载配置
nginx -s reload
```
## 注册系统服务
注意:操作系统不同,下面的方法可能不一样。
创建`/etc/systemd/system/nginx.service`文件:
```ini
[Unit]
Description=Nginx Service
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
```
执行下面的命令使服务生效并实现随系统启动:
```sh
sudo systemctl daemon-reload
sudo systemctl enable nginx
```
用下面的命令控制服务:
```sh
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl stop nginx
sudo systemctl reload nginx
sudo systemctl status nginx
```