Centos项目部署之Nginx 的安装与卸载

Nginx 的安装与卸载

Nginx 安装

以下是在 CentOS 7.9 上通过源码编译安装 Nginx ,并配置 BrotliGzip 压缩及 HTTPHTTPS 的完整步骤。

1. 安装编译器和工具

bash 复制代码
sudo yum install -y epel-release
sudo yum install -y wget git make gcc-c++ pcre-devel zlib-devel openssl-devel brotli-devel

2. 下载 Nginx 及 Brotli 模块

bash 复制代码
# 进入下载目录
cd /usr/local/softpackage

# 下载 ngx_brotli 模块
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
# 修改子模块 URL 为国内镜像
git config submodule.deps/brotli.url https://gitee.com/mirrors/brotli.git
# 然后执行子模块更新(速度会快很多)
git submodule update --init
# 返回到下载目录
cd ..

# 下载nginx
wget -P /usr/local/softpackage http://nginx.org/download/nginx-1.25.3.tar.gz
# 解压
tar -zxvf /usr/local/softpackage/nginx-1.25.3.tar.gz
# 进入源码文件夹
cd nginx-1.25.3

3. 配置编译选项(启用 SSL 支持)

bash 复制代码
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-file-aio \
--with-threads \
--add-module=../ngx_brotli
Nginx 编译参数介绍
基础路径和文件位置相关参数
  • --prefix=/usr/local/nginx
    • 说明:指定 Nginx 的安装目录。
    • 默认值/usr/local/nginx
    • 作用:所有相关的文件(如配置文件、日志文件等)都会在这个目录下创建。
  • --sbin-path=/usr/sbin/nginx
    • 说明 :指定 Nginx 可执行文件(nginx)的安装路径。
    • 默认值--prefix/sbin/nginx
    • 作用 :此参数将其安装到 /usr/sbin/nginx
  • --conf-path=/etc/nginx/nginx.conf
    • 说明:指定 Nginx 配置文件的路径。
    • 默认值--prefix/conf/nginx.conf
    • 作用 :此参数将其设置为 /etc/nginx/nginx.conf
  • --pid-path=/var/run/nginx.pid
    • 说明:指定 Nginx 进程 ID 文件的路径。
    • 默认值--prefix/logs/nginx.pid
    • 作用 :此参数将其设置为 /var/run/nginx.pid
  • --lock-path=/var/run/nginx.lock
    • 说明:指定 Nginx 的锁文件路径,用于防止多个 Nginx 实例同时运行。
    • 默认值--prefix/logs/nginx.lock
    • 作用 :此参数将其设置为 /var/run/nginx.lock
  • --error-log-path=/var/log/nginx/error.log
    • 说明:指定 Nginx 的错误日志文件路径。
    • 默认值--prefix/logs/error.log
    • 作用 :此参数将其设置为 /var/log/nginx/error.log
  • --http-log-path=/var/log/nginx/access.log
    • 说明:指定 Nginx 的访问日志文件路径。
    • 默认值--prefix/logs/access.log
    • 作用 :此参数将其设置为 /var/log/nginx/access.log
功能模块相关参数
  • --with-http_ssl_module
    • 说明:启用 SSL/TLS 支持,允许 Nginx 使用 HTTPS 协议。
    • 作用:这是运行 HTTPS 网站所必需的模块。
  • --with-http_v2_module
    • 说明:启用 HTTP/2 支持,允许 Nginx 使用 HTTP/2 协议。
    • 作用:HTTP/2 是 HTTP 协议的升级版本,可以提高网页加载速度。
  • --with-http_realip_module
    • 说明 :启用 http_realip 模块,允许 Nginx 使用 X-Real-IPX-Forwarded-For 头来获取客户端的真实 IP 地址。
    • 作用:这对于使用反向代理时非常有用。
  • --with-http_stub_status_module
    • 说明 :启用 http_stub_status 模块,允许 Nginx 提供一个用于监控的页面,显示当前服务器的状态信息(如请求处理情况、连接数等)。
  • --with-http_gzip_static_module
    • 说明 :启用 http_gzip_static 模块,允许 Nginx 提供预压缩的 .gz 文件。
    • 作用:以减少响应时间并节省带宽。
  • --with-pcre
    • 说明:启用 PCRE(Perl Compatible Regular Expressions)支持,用于 Nginx 的正则表达式功能。
    • 作用:这是处理 URL 重写等任务所必需的。
  • --with-file-aio
    • 说明:启用文件异步 I/O 支持,允许 Nginx 使用异步 I/O 操作。
    • 作用:提高性能。
  • --with-threads
    • 说明:启用线程支持,允许 Nginx 使用线程来处理请求。
    • 作用:提高多核 CPU 的利用率。
  • --add-module=../ngx_brotli
    • 说明 :添加第三方模块 ngx_brotli,用于支持 Brotli 压缩算法。
    • 作用:Brotli 是一种高效的压缩算法,可以进一步减少响应数据的大小。

4. 编译并安装

bash 复制代码
make -j$(nproc)
sudo make install

5. 配置系统服务

5.1 创建 systemd 服务文件:
bash 复制代码
sudo tee /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
5.2 启动并设置开机自启:
bash 复制代码
sudo systemctl daemon-reload # 重新加载 systemd 守护进程
sudo systemctl enable nginx  # 将 Nginx 服务配置为开机自启动
sudo systemctl start nginx   # 启动 Nginx

6. 配置 Brotli 和 Gzip 压缩

编辑 Nginx 配置文件:

bash 复制代码
vim /etc/nginx/nginx.conf

http {} 块中添加以下内容:

nginx 复制代码
# Brotli 全局压缩配置(现代浏览器优先)
brotli on;                  # 启用 Brotli 压缩
brotli_static on;           # 优先使用预压缩的 .br 文件
brotli_comp_level 6;        # 压缩级别 1-11(6 是性能与压缩率的平衡点)
brotli_min_length 256;      # 只压缩大于 256 字节的文件
brotli_types text/plain text/css text/javascript application/javascript application/json application/xml application/x-javascript application/xhtml+xml image/svg+xml;

# Gzip 全局压缩配置(兼容旧版浏览器)
gzip on;                    # 启用 Gzip 压缩
gzip_static on;             # 优先使用预压缩的 .gz 文件
gzip_comp_level 6;          # 压缩级别 1-9(6 是性能与压缩率的平衡点)
gzip_min_length 256;        # 只压缩大于 256 字节的文件
gzip_types text/plain text/css text/javascript application/javascript application/json application/xml application/x-javascript application/xhtml+xml image/svg+xml;

检查文件是否配置成功

bash 复制代码
sudo nginx -t

# 应输出:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载配置

bash 复制代码
sudo systemctl reload nginx

7. 验证安装

检查 Nginx 版本:

bash 复制代码
nginx -v

验证 Brotli 是否工作:

bash 复制代码
curl -H "Accept-Encoding: br" -I http://localhost | grep -i content-encoding
# 应该返回 content-encoding: br

8. 配置 HTTP 和 HTTPS

8.1 备份配置文件
bash 复制代码
cd /etc/nginx
cp nginx.conf nginx.conf.back # 备份一份
8.2 编辑 Nginx 主配置文件
bash 复制代码
vim nginx.conf

http {} 块内添加以下内容(仅仅配置 HTTPS):

nginx 复制代码
server {
    listen       80;
    server_name pzhdv.cn www.pzhdv.cn;  # 替换为你的域名或 IP 地址
    # 将所有 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  pzhdv.cn www.pzhdv.cn;

    # SSL 配置
    ssl_certificate      /usr/local/resource/ssl/pzhdv.cn.pem; # 证书路径
    ssl_certificate_key  /usr/local/resource/ssl/pzhdv.cn.key; # 证书路径

    location / {
        root   html;
        index  index.html index.htm;
    }
}

9. 验证配置

测试配置文件语法:

bash 复制代码
sudo nginx -t

应输出:

vbnet 复制代码
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

10. 重载配置

bash 复制代码
sudo systemctl reload nginx

11. 访问测试

  • HTTP :浏览器访问 http://你的服务器IP
  • HTTPS :浏览器访问 https://域名

以上步骤完成了 Nginx 的安装、Brotli 和 Gzip 压缩的配置,以及 HTTP 和 HTTPS 的设置。

12. 常用操作 Nginx 的系统命令

bash 复制代码
# 检查 Nginx 文件是否配置成功
sudo nginx -t 
# 查看 Nginx 服务的运行状态
sudo systemctl status nginx
# 启动 Nginx 服务
sudo systemctl start nginx
# 停止 Nginx 服务
sudo systemctl stop nginx
# 重启 Nginx 服务
sudo systemctl restart nginx
# 重新加载 Nginx 配置文件
sudo systemctl reload nginx

# 检查 Nginx 服务是否设置为开机自动启动
sudo systemctl is-enabled nginx
# 设置 Nginx 服务为开机自启动
sudo systemctl enable nginx
# 禁止 Nginx 服务为开机自启动
sudo systemctl disable nginx
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 验证是否开机自启动
sudo reboot # 重启系统
sudo systemctl status nginx # 查看状态

卸载 Nginx(通过 wget 安装的)

1. 停止 Nginx 服务

首先,确保 Nginx 服务已经停止运行:

bash 复制代码
sudo systemctl stop nginx

或者,如果你没有使用 systemctl,可以直接使用 Nginx 的停止命令:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx -s stop

2. 禁用 Nginx 服务(如果使用了 systemctl

如果你为 Nginx 创建了 systemd 服务文件,禁用它以防止开机自启:

bash 复制代码
sudo systemctl disable nginx

如果你为 Nginx 创建了启动脚本或 systemd 服务文件,也需要删除它们:

bash 复制代码
sudo rm -f /etc/systemd/system/nginx.service
sudo systemctl daemon-reload

3. 查找并删除 Nginx 相关文件

通过 wget 安装的 Nginx 通常会被安装到 /usr/local/nginx 目录下。你可以通过以下命令删除这个目录:

bash 复制代码
sudo rm -rf /usr/local/nginx

此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx/var/log/nginx 目录下。删除这些目录:

bash 复制代码
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx

如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。

3. 查找并删除 Nginx 相关文件

通过 wget 安装的 Nginx 通常会被安装到 /usr/local/nginx 目录下。你可以通过以下命令删除这个目录:

bash 复制代码
sudo rm -rf /usr/local/nginx

此外,你还需要删除 Nginx 的配置文件和日志文件。这些文件通常位于 /etc/nginx/var/log/nginx 目录下。删除这些目录:

bash 复制代码
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx

如果你在安装过程中将配置文件放在了其他位置,请确保删除那些配置文件。

4. 删除 Nginx 的安装包和源码

如果你在安装过程中下载了 Nginx 的源码包,也需要删除它。通常,源码包会被下载到 /usr/local/softpackage 或其他临时目录中。删除下载的文件:

bash 复制代码
sudo rm -rf /usr/local/softpackage/nginx-*.tar.gz
sudo rm -rf /usr/local/softpackage/nginx-*

6. 清理残留文件

使用 find 命令查找系统中可能残留的 Nginx 相关文件:

bash 复制代码
sudo find / -name "*nginx*"

根据输出结果,删除所有与 Nginx 相关的文件和目录。例如:

bash 复制代码
sudo rm -rf /usr/local/nginx
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
sudo rm -rf /var/cache/nginx
sudo rm -rf /var/lib/nginx

7. 验证是否卸载成功

执行以下命令,检查是否还有 Nginx 的进程或服务:

bash 复制代码
ps -ef | grep nginx

如果没有输出,说明 Nginx 已经完全卸载。

相关推荐
渡我白衣3 分钟前
Linux操作系统之文件(四):文件系统(上)
linux
ZZH1120KQ10 分钟前
Linux系统安全及应用
linux·运维·系统安全
程序漫游人1 小时前
centos8.5安装jdk21详细安装教程
java·linux
小小小糖果人1 小时前
Linux云计算基础篇(5)
linux·运维·服务器
small_wh1te_coder1 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
小张是铁粉1 小时前
docker在Linux的安装遇到的问题
linux·docker·容器
weixin_7714323111 小时前
linux系统 weblogic10.3.6(jar) 下载及安装
linux·运维·jar
绝不偷吃1 小时前
FastDFS分布式储存
linux·nginx
IC 见路不走3 小时前
LeetCode 第91题:解码方法
linux·运维·服务器
翻滚吧键盘3 小时前
查看linux中steam游戏的兼容性
linux·运维·游戏