155 lines
2.9 KiB
Markdown
155 lines
2.9 KiB
Markdown
# 编译安装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
|
||
```
|