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 已经完全卸载。

相关推荐
zz_nj2 小时前
工作的环境
linux·运维·服务器
极客先躯2 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
C_心欲无痕2 小时前
nginx - 实现域名跳转的几种方式
运维·前端·nginx
suijishengchengde3 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue3 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI3 小时前
Linux 操作系统简介
linux
南烟斋..4 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员4 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
令狐少侠20116 小时前
docker基本操作 部署启动nginx
nginx·docker·容器
oMcLin6 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu