Linux系统安装Nginx的具体步骤和方法有哪些?

nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯程序员Igor Sysoev开发,因其轻量级、高并发、低资源消耗的特点被广泛应用于Web服务、负载均衡、反向代理等场景,在Linux系统上安装nginx是搭建基础服务的关键操作,本文将详细介绍主流Linux发行版下通过包管理器和源码编译两种方式安装nginx的步骤,以及安装后的基础配置与问题排查。

linux如何安装nginx

安装前准备:系统更新

无论采用何种安装方式,建议先更新系统包列表和已安装的软件包,确保依赖库的版本兼容性,避免因依赖版本不匹配导致安装失败。

  • Ubuntu/Debian系统:执行sudo apt update && sudo apt upgrade -y,更新包列表并升级已安装包。
  • CentOS/RHEL 7+系统:执行sudo yum update -y(CentOS 8+使用sudo dnf update -y),更新系统软件包。

通过包管理器安装(推荐新手)

包管理器安装是最简单的方式,适合快速部署,但版本可能略滞后于官方最新版,主流发行版的安装步骤如下:

Ubuntu/Debian系统

Ubuntu和Debian系统使用apt包管理器,nginx已包含在官方软件源中,直接安装即可:

sudo apt install nginx -y  # 安装nginx及依赖

安装完成后,启动nginx服务并设置开机自启:

sudo systemctl start nginx  # 启动服务
sudo systemctl enable nginx  # 设置开机自启

检查服务状态:

sudo systemctl status nginx  # 显示active (running)表示成功

默认配置文件路径:/etc/nginx/nginx.conf,网站根目录:/var/www/html,欢迎页面文件:/var/www/html/index.nginx-debian.html

CentOS/RHEL系统

CentOS 7+默认的yum源可能不包含nginx,需先安装EPEL(Extra Packages for Enterprise Linux)仓库;CentOS 8+的dnf源已包含nginx,可直接安装。

  • CentOS 7
    sudo yum install epel-release -y  # 安装EPEL仓库
    sudo yum install nginx -y        # 安装nginx
  • CentOS 8+
    sudo dnf install nginx -y        # 直接安装(无需EPEL)

启动服务并设置开机自启(命令同Ubuntu):

sudo systemctl start nginx
sudo systemctl enable nginx

默认配置文件路径:/etc/nginx/nginx.conf,网站根目录:/usr/share/nginx/html

不同系统安装命令对比

为方便查阅,以下是主流系统的安装命令汇总:

linux如何安装nginx

系统 包管理器 安装EPEL仓库(CentOS需) 安装nginx命令
Ubuntu/Debian apt 不需要 sudo apt install nginx -y
CentOS 7 yum sudo yum install epel-release -y sudo yum install nginx -y
CentOS 8+ dnf 不需要(dnf源包含nginx) sudo dnf install nginx -y

源码编译安装(适合高级用户)

源码编译安装可自定义模块(如HTTP/2、SSL等)并使用最新版本,但需手动处理依赖,步骤稍复杂。

安装编译依赖

编译nginx需安装gcc、make、pcre、zlib、openssl等开发库:

  • Ubuntu/Debian
    sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y
  • CentOS/RHEL
    sudo yum install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

下载nginx源码

访问nginx官网获取最新稳定版tarball,使用wget下载(以1.25.3版本为例):

wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz  # 解压
cd nginx-1.25.3                 # 进入源码目录

配置编译选项

通过./configure脚本指定安装路径和模块,常用选项如下:

选项 说明
--prefix=/path/to/install 指定安装目录,默认/usr/local/nginx
--with-http_ssl_module 支持HTTPS(需OpenSSL)
--with-http_v2_module 支持HTTP/2
--with-http_gzip_static_module 支持GZIP压缩
--with-pcre 启用PCRE正则表达式支持
--with-http_stub_status_module 启用状态页(用于监控)

示例配置(安装到/usr/local/nginx,启用SSL和HTTP/2):

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-pcre

编译并安装

make          # 编译源码(耗时较长,耐心等待)
sudo make install  # 安装到指定目录

配置环境变量并启动

编辑~/.bashrc文件,添加nginx可执行文件路径到环境变量:

echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> ~/.bashrc
source ~/.bashrc  # 立即生效

启动nginx服务:

sudo /usr/local/nginx/sbin/nginx  # 默认加载/usr/local/nginx/conf/nginx.conf

检查版本:nginx -v,显示版本号表示安装成功。

安装后配置与测试

修改默认配置

编辑默认配置文件(如Ubuntu的/etc/nginx/sites-available/default),修改listen(监听端口)和root(网站根目录):

server {
    listen 80;
    root /var/www/mywebsite;  # 自定义网站目录
    index index.html index.htm;
}

创建测试页面:

linux如何安装nginx

sudo mkdir -p /var/www/mywebsite
echo "Hello, Nginx!" | sudo tee /var/www/mywebsite/index.html

测试配置语法

修改配置后,需测试语法是否正确:

sudo nginx -t  # Ubuntu/CentOS包管理器安装
sudo /usr/local/nginx/sbin/nginx -t  # 源码编译安装

返回“syntax is ok”和“test is successful”表示配置正确。

重载配置并开放端口

重载配置使修改生效:

sudo nginx -s reload  # 包管理器安装
sudo /usr/local/nginx/sbin/nginx -s reload  # 源码编译安装

防火墙开放端口(确保外部可访问):

  • Ubuntu(ufw)
    sudo ufw allow 'Nginx Full'  # 开放80(HTTP)和443(HTTPS)
  • CentOS(firewalld)
    sudo firewall-cmd --permanent --add-service=http  # 开放HTTP
    sudo firewall-cmd --permanent --add-service=https # 开放HTTPS
    sudo firewall-cmd --reload  # 重载防火墙规则

访问测试

浏览器输入服务器IP地址(如http://192.168.1.100),若显示“Welcome to nginx!”或自定义页面,表示安装成功。

常见问题排查

  • 服务启动失败:检查端口是否被占用(netstat -tuln | grep 80),或配置文件语法错误(nginx -t)。
  • 无法访问:确认防火墙已开放端口,SELinux(CentOS)是否拦截(临时关闭sudo setenforce 0测试)。
  • 源码编译找不到模块:重新运行./configure并添加所需模块选项,再执行make clean && make && make install

相关问答FAQs

问题1:安装后浏览器访问服务器IP无法显示nginx欢迎页面,怎么办?
解答:首先检查nginx服务状态(sudo systemctl status nginx),确保服务正在运行;其次检查防火墙设置,确认80(HTTP)或443(HTTPS)端口已开放(Ubuntu用sudo ufw status,CentOS用sudo firewall-cmd --list-ports);然后检查SELinux状态(CentOS下getenforce),若为enforcing可临时关闭测试(sudo setenforce 0);最后确认配置文件语法正确(sudo nginx -t),并检查网站根目录文件是否存在(如/var/www/html/index.nginx-debian.html)。

问题2:如何升级nginx到最新版本?
解答:若通过包管理器安装,Ubuntu/Debian执行sudo apt update && sudo apt upgrade nginx -y,CentOS/RHEL执行sudo yum update nginx -ysudo dnf update nginx -y;若源码编译安装,需下载新版本源码(重复“源码编译安装”步骤),注意先备份配置文件(/usr/local/nginx/conf/nginx.conf),安装完成后可通过nginx -v查看版本号确认升级成功。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31562.html

(0)
酷番叔酷番叔
上一篇 2025年9月28日 03:38
下一篇 2025年9月28日 03:57

相关推荐

  • Linux系统中如何正确卸载已安装的程序?

    Linux系统卸载程序的方法因安装方式和发行版的不同而有所差异,与Windows系统通过“控制面板”统一卸载不同,Linux依赖包管理器来管理软件,因此卸载时需根据程序最初安装的方式选择对应的工具,本文将详细介绍Linux系统中不同类型程序的卸载方法,包括基于APT、YUM/DNF、Pacman包管理器的发行版……

    2025年9月27日
    4000
  • 如何用8种命令高效查看Linux文件?

    基础查看命令cat一次性输出)cat filename.txt特点:直接显示整个文件内容(适合小文件)致命缺陷:大文件会导致终端刷屏(可用Ctrl+C中断)高级技巧: cat -n filename.txt # 显示行号cat file1 file2 > combined.txt # 合并多个文件less……

    2025年7月19日
    6700
  • 为什么绝对路径被推荐?

    为什么需要执行特定目录的程序?自定义脚本/工具:用户编写的脚本(如备份脚本)通常存放在家目录(~/scripts)或项目目录,第三方软件:从源码编译的程序(如 ~/apps/myapp)或下载的二进制文件(如 ~/downloads/),临时测试:开发过程中需频繁运行当前目录的测试程序,执行前的关键步骤:添加可……

    2025年7月13日
    6600
  • cdlinux如何制作u盘启动?步骤与方法详解?

    CDLinux是一款轻量级的Linux发行版,专注于系统维护、数据恢复、网络诊断等场景,因其体积小、功能丰富而受到许多技术爱好者的青睐,通过U盘启动CDLinux,无需将其安装到硬盘中,即可在任意电脑上运行,特别适合应急处理或临时使用,以下是详细的CDLinux U盘启动步骤,涵盖准备工作、制作启动盘、BIOS……

    2025年8月23日
    5400
  • Linux运行JAR文件的最佳实践?

    核心准备工作:安装 Java 环境JAR 文件需 Java 运行时环境(JRE)或开发工具包(JDK)才能运行:检查现有 Java 版本:java -version若显示 “command not found” 或版本低于要求,需安装 Java,安装 JDK/JRE(以 OpenJDK 为例):Ubuntu/D……

    2025年7月27日
    6600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信