在 Ubuntu 上安装 Nginx 的详细指南

embedded/2024/12/22 12:15:19/

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


http://www.ppmy.cn/embedded/147812.html

相关文章

抽象之诗:C++模板的灵魂与边界

引言 在计算机科学的浩瀚长河中,C模板如同一颗璀璨的星辰,以其独特的泛型编程方式为程序设计注入了灵魂。它是抽象的艺术,是类型的舞蹈,是效率与灵活性的交响乐。模板不仅是一种技术工具,更是一种哲学思考&#xff0c…

电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据

电商数据采集可以通过多种方式完成,其中包括人工采集、使用电商平台提供的API接口、以及利用爬虫技术等自动化工具。以下是一些常用的电商数据采集方法: 人工采集:人工采集主要是通过基本的“复制粘贴”的方式在电商平台上进行数据的收集&am…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样,安装到2%一定会卡住,如果你不幸用了这个那真是遭老罪了 环境&#xf…

分布式专题(6)之MongoDB复制(副本)集实战及其原理分析

一、MongoDB复制集结构 在生产环境中,不建议使用单机版的MongoDB服务器。原因如下: 单机版的MongoDB无法保证可靠性,一旦进程发生故障或是服务器宕机,业务将直接不可用。一旦服务器上的磁盘损坏,数据会直接丢失&#x…

AdminJS - 现代化的 Node.js 管理面板框架详解

AdminJS - 现代化的 Node.js 管理面板框架详解 什么是 AdminJS? AdminJS 是一个自动化的管理面板框架,专为 Node.js 应用程序设计。它可以让开发者快速构建功能强大的管理后台界面,而无需编写大量重复的代码。 主要特点 自动 CRUD 操作 自动生成增删…

基于Spring Boot的医院质控上报系统

一、系统背景与意义 医院质控上报系统旨在通过信息化手段,实现医院质量控制的标准化、流程化和自动化管理。该系统能够帮助医院实时监控医疗质量数据,及时发现和处理潜在的质量问题,从而确保医疗服务的安全性和有效性。同时,系统…

【Rust自学】4.2. 所有权规则、内存与分配

4.2.0 写在正文之前 在学习了Rust的通用编程概念后,就来到了整个Rust的重中之重——所有权,它跟其他语言都不太一样,很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节: 所有权&#xff1…

基于SSM+Vue的个性化旅游推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会经济的快速发展和人民生活水平的不断提高,旅游业逐渐成为我国国民经济的重要支柱产业。然而,在旅游市场日益繁荣的背景下,游客对于旅游产品和服务的需求逐渐呈现出多样化和个性化的趋…