在 Ubuntu 上安装 Nginx 的详细指南

在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块,以满足特定需求。以下是详细的步骤指南:

前提条件

  1. 更新系统包列表

    bash 复制代码
    sudo apt update
    sudo apt upgrade -y
  2. 安装必要的依赖包

    bash 复制代码
    sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev wget
    • build-essential: 包含编译工具如gcc、make等。
    • libpcre3 & libpcre3-dev: 用于正则表达式支持。
    • zlib1g & zlib1g-dev: 用于压缩功能。
    • libssl-dev: 提供SSL支持。
    • wget: 用于下载源码。

步骤一:下载Nginx源码

  1. 访问Nginx官方主页,获取最新的稳定版本下载链接。

  2. 使用wget下载源码包(以Nginx 1.24.0为例,请根据最新版本替换):

    bash 复制代码
    cd /usr/local/src
    sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
  3. 解压源码包

    bash 复制代码
    sudo tar -zxvf nginx-1.24.0.tar.gz
    cd nginx-1.24.0

步骤二:配置编译选项

配置编译选项可以自定义Nginx的功能和模块。以下是一个常用的配置示例:

bash 复制代码
sudo ./configure \
  --sbin-path=/usr/local/nginx/nginx \
  --conf-path=/usr/local/nginx/conf/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --with-pcre \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_gzip_static_module \
  --with-stream \
  --with-stream_ssl_module

说明:

  • --sbin-path: 指定Nginx可执行文件的安装路径。
  • --conf-path: 指定Nginx配置文件的位置。
  • --error-log-path & --http-log-path: 指定日志文件的位置。
  • --with-pcre: 启用PCRE支持(正则表达式)。
  • --with-http_ssl_module: 启用SSL模块。
  • --with-http_v2_module: 启用HTTP/2支持。
  • --with-http_gzip_static_module: 启用Gzip静态压缩模块。
  • --with-stream & --with-stream_ssl_module: 启用TCP/UDP流支持及其SSL模块。

您可以根据需求添加或删除配置选项。运行./configure --help可以查看所有可用的配置选项。

步骤三:编译和安装

  1. 编译源码

    bash 复制代码
    sudo make

    编译过程可能需要几分钟,具体时间取决于系统性能。

  2. 安装Nginx

    bash 复制代码
    sudo make install

    默认情况下,Nginx将被安装到之前指定的路径(如 /usr/local/nginx/)。

步骤四:创建Nginx用户和目录

  1. 创建一个专用用户运行Nginx

    bash 复制代码
    sudo useradd -r -s /sbin/nologin nginx
  2. 设置正确的权限

    bash 复制代码
    sudo chown -R nginx:nginx /usr/local/nginx

步骤五:配置Nginx为系统服务

为了方便管理Nginx,建议将其配置为systemd服务。

  1. 创建Systemd服务文件

    bash 复制代码
    sudo nano /etc/systemd/system/nginx.service
  2. 在文件中添加以下内容

    ini 复制代码
    [Unit]
    Description=The NGINX HTTP and reverse proxy server
    After=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 quit
    User=nginx
    Group=nginx
    
    [Install]
    WantedBy=multi-user.target
  3. 重新加载Systemd守护进程

    bash 复制代码
    sudo systemctl daemon-reload
  4. 启动Nginx服务

    bash 复制代码
    sudo systemctl start nginx
  5. 设置开机自启动

    bash 复制代码
    sudo systemctl enable nginx
  6. 检查Nginx状态

    bash 复制代码
    sudo systemctl status nginx

    您应该看到Nginx正在运行的状态。

步骤六:配置防火墙

确保防火墙允许HTTP和HTTPS流量。

  1. 如果使用UFW防火墙

    bash 复制代码
    sudo ufw allow 'Nginx Full'
  2. 重新加载防火墙规则

    bash 复制代码
    sudo ufw reload

步骤七:验证安装

  1. 访问Nginx默认页面

    打开浏览器,访问服务器的IP地址(例如 http://your_server_ip/),您应该看到Nginx的默认欢迎页面。

  2. 检查Nginx版本

    bash 复制代码
    /usr/local/nginx/sbin/nginx -v

    输出类似于:

    复制代码
    nginx version: nginx/1.24.0

步骤八:管理Nginx

  • 启动Nginx

    bash 复制代码
    sudo systemctl start nginx
  • 停止Nginx

    bash 复制代码
    sudo systemctl stop nginx
  • 重启Nginx

    bash 复制代码
    sudo systemctl restart nginx
  • 重新加载配置

    bash 复制代码
    sudo systemctl reload nginx

附加步骤:配置Nginx

Nginx的主配置文件位于 /usr/local/nginx/conf/nginx.conf。您可以根据需要编辑该文件进行进一步配置。

bash 复制代码
sudo nano /usr/local/nginx/conf/nginx.conf

编辑完成后,重新加载Nginx以应用更改:

bash 复制代码
sudo systemctl reload nginx

注意事项

  1. 更新Nginx

    由于是源码安装,Nginx不会自动更新。要更新Nginx,需要手动下载新版本源码,编译并安装,或使用包管理工具。

  2. 卸载Nginx

    源码安装的Nginx通常位于 /usr/local/nginx/。要卸载,只需删除该目录:

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

    以及删除Systemd服务文件:

    bash 复制代码
    sudo rm /etc/systemd/system/nginx.service
    sudo systemctl daemon-reload
  3. 日志管理

    确保定期轮转Nginx日志以防止日志文件过大。可以使用 logrotate 工具进行配置。

总结

通过以上步骤,您已经成功在Ubuntu系统中从源码编译并安装了Nginx。源码安装提供了更高的灵活性,使您能够根据具体需求自定义Nginx的功能。请确保在生产环境中仔细测试配置,并定期维护Nginx以保持系统安全和稳定。

相关推荐
zhuyan1088 小时前
【远程桌面】在ubuntu中安装远程桌面
ubuntu
小池先生9 小时前
服务请求出现偶发超时问题,经查服务本身没问题,问题出现在nginx转发。
运维·服务器·nginx
LJ-SEU12 小时前
win-ubuntu网络转发
linux·网络·ubuntu
QT 小鲜肉12 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装 anaconda 及其相关终端命令行
linux·笔记·深度学习·学习·ubuntu·学习方法
QT 小鲜肉13 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
linux·笔记·学习·ubuntu·学习方法
我先去打把游戏先16 小时前
VSCode通过SSH连接到Ubuntu虚拟机失败“找不到ssh安装”问题解决
笔记·vscode·单片机·嵌入式硬件·学习·ubuntu·ssh
冲上云霄的Jayden17 小时前
ubuntu 22一步步 安装docker和配置使用国内源
linux·ubuntu·docker·国内源
Java水解18 小时前
Nginx平滑升级与location配置案例详解
后端·nginx
阿巴~阿巴~18 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos
心灵宝贝1 天前
nginx-1.16.1-2.p01.ky10.sw_64.rpm 安装教程(详细步骤,适用于Kylin V10/SW64架构)
nginx·架构·kylin