在 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以保持系统安全和稳定。

相关推荐
吴声子夜歌6 小时前
Nginx应用与运维——Nginx HTTP模块详解(数据处理功能模块)
运维·nginx·http
zhangrelay6 小时前
机械臂末端规划智能模型的误区演示
linux·笔记·学习·ubuntu·ros2
水饺编程6 小时前
第1章,了解乌班图环境,使用浏览器和邮箱
c语言·汇编·ubuntu
吴声子夜歌9 小时前
Nginx应用与运维——Nginx HTTP模块详解(访问控制功能模块)
运维·nginx·http
吴声子夜歌16 小时前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
吴声子夜歌17 小时前
Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
运维·前端·nginx
ken223218 小时前
ubuntu 24.04, audacity 4 AppImage 加载 libavdevice.so.62 /.61 /.63 失败:依赖缺失?
linux·运维·ubuntu
小小、码农19 小时前
Ubuntu / Linux 软件安装完整笔记
linux·笔记·ubuntu
PC2005-cloud19 小时前
Nginx 学习笔记:URL Rewrite 从入门到实战,让链接更优雅、更SEO友好
nginx
吴声子夜歌20 小时前
Nginx应用与运维——Nginx Web服务应用实战(HTTPS安全服务器的搭建)
运维·前端·nginx