在 Ubuntu 上安装 Nginx 的详细指南

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

前提条件

  1. 更新系统包列表

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

    复制代码
    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为例,请根据最新版本替换):

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

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

步骤二:配置编译选项

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

复制代码
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. 编译源码

    复制代码
    sudo make

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

  2. 安装Nginx

    复制代码
    sudo make install

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

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

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

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

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

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

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

  1. 创建Systemd服务文件

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

    复制代码
    [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守护进程

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

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

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

    复制代码
    sudo systemctl status nginx

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

步骤六:配置防火墙

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

  1. 如果使用UFW防火墙

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

    复制代码
    sudo ufw reload

步骤七:验证安装

  1. 访问Nginx默认页面

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

  2. 检查Nginx版本

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

    输出类似于:

    复制代码
    nginx version: nginx/1.24.0

步骤八:管理Nginx

  • 启动Nginx

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

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

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

    复制代码
    sudo systemctl reload nginx

附加步骤:配置Nginx

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

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

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

复制代码
sudo systemctl reload nginx

注意事项

  1. 更新Nginx

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

  2. 卸载Nginx

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

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

    以及删除Systemd服务文件:

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

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

总结

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

相关推荐
神也佑我橙橙17 分钟前
Ubuntu 22.04 安装英伟达驱动
linux·ubuntu·nvidia
不喝水的鱼儿23 分钟前
Ubuntu 25.04安装搜狗输入法
linux·运维·ubuntu
一只小阿乐1 小时前
window 服务器上部署前端静态资源以及nginx 配置
运维·服务器·nginx
Linux运维技术栈1 小时前
Nginx 动静分离原理与工作机制详解:从架构优化到性能提升
运维·nginx·架构
鼠鼠我捏,要死了捏10 小时前
PostgreSQL性能优化实践指南:从原理到实战
postgresql·performance·tuning
云游11 小时前
利用外部Postgresql及zookeeper,启动Apache Dolphinscheduler3.1.9
分布式·postgresql·zookeeper·apache·工作流任务调度
guygg8812 小时前
ubuntu手动编译VTK9.3 Generating qmltypes file 失败
linux·运维·ubuntu
诗意亭序14 小时前
ubuntu16.04 虚拟机与电脑共用wifi
ubuntu
scilwb15 小时前
Isaac Sim 4.5中iRobot Create 3机器人LightBeam传感器系统完整实现教程
ubuntu
applebomb20 小时前
没合适的组合wheel包,就自行编译flash_attn吧
python·ubuntu·attention·flash