杰瑞科技汇

linux安装nginx详细教程

目录

  1. 准备工作
  2. 使用包管理器安装(推荐新手)
    • 在 CentOS/RHEL 上使用 yumdnf
    • 在 Ubuntu/Debian 上使用 apt
  3. 从源码编译安装(推荐高级用户和定制化需求)
    • 安装编译依赖

      linux安装nginx详细教程-图1
      (图片来源网络,侵删)
    • 下载 Nginx 源码

    • 配置编译选项

    • 编译和安装

  4. Nginx 基本操作
    • 启动
    • 停止
    • 重启
    • 重新加载配置
    • 查看状态
    • 开机自启
  5. 配置 Nginx 示例(搭建一个简单的静态网站)
    • 创建网站目录
    • 编写配置文件
    • 测试配置并重载
    • 放行防火墙
    • 访问验证
  6. 总结与建议

准备工作

在开始安装之前,请确保你的系统满足以下条件:

linux安装nginx详细教程-图2
(图片来源网络,侵删)
  • 一台已经安装好的 Linux 服务器(推荐 CentOS 7/8 或 Ubuntu 20.04/22.04)。
  • 拥有 sudo 权限的非 root 用户,或者直接使用 root 用户。
  • 系统已经连接到互联网。
  • 系统的防火墙(如 firewalldufw)已经正确配置,或者暂时关闭以避免安装过程中的网络问题。

检查系统架构:

# 对于 CentOS/RHEL
uname -m
# 对于 Ubuntu/Debian
uname -m

Nginx 支持 x86_64 (64位) 和 aarch64 (ARM64) 等架构。


方法一:使用包管理器安装(推荐新手)

这是最简单、最快速的方式,包管理器会自动处理依赖关系和更新。

在 CentOS/RHEL 上使用 yumdnf

CentOS 7 和旧版本使用 yum,CentOS 8/RHEL 8/Fedora 使用 dnf,它们的用法基本相同。

linux安装nginx详细教程-图3
(图片来源网络,侵删)

安装 EPEL 仓库(如果尚未安装) EPEL (Extra Packages for Enterprise Linux) 提供了 Nginx 的官方稳定版。

# 对于 CentOS 7
sudo yum install epel-release
# 对于 CentOS 8/RHEL 8
sudo dnf install epel-release

安装 Nginx

# 使用 yum (CentOS 7)
sudo yum install nginx
# 使用 dnf (CentOS 8/RHEL 8/Fedora)
sudo dnf install nginx

验证安装 安装完成后,可以检查 Nginx 的版本。

nginx -v

输出类似:nginx version: nginx/1.20.1

在 Ubuntu/Debian 上使用 apt

更新软件包列表 这是一个好习惯,确保你获取的是最新的软件包信息。

sudo apt update

安装 Nginx

sudo apt install nginx

验证安装

nginx -v

输出类似:nginx version: nginx/1.18.0


方法二:从源码编译安装(推荐高级用户和定制化需求)

编译安装可以让你选择性地添加或移除模块,以定制 Nginx 的功能,例如添加 http_v2_modulengx_brotli 模块等。

安装编译依赖 你需要安装 C 编译器、pcrezlibopenssl 等开发库。

对于 CentOS/RHEL:

sudo yum groupinstall "Development Tools"
sudo yum install pcre-devel zlib-devel openssl-devel

对于 Ubuntu/Debian:

sudo apt update
sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev

下载 Nginx 源码 访问 Nginx 官方下载页面 获取最新的稳定版源码包,这里以 24.0 为例。

# 进入临时目录
cd /tmp
# 下载源码包
wget http://nginx.org/download/nginx-1.24.0.tar.gz
# 解压
tar -zxvf nginx-1.24.0.tar.gz
# 进入解压后的目录
cd nginx-1.24.0

配置编译选项 这是最关键的一步,运行 configure 脚本来设置 Nginx 的安装路径和功能模块。

  • --prefix=/usr/local/nginx:指定 Nginx 的安装目录。
  • --with-http_ssl_module:启用 HTTPS 支持。
  • --with-http_v2_module:启用 HTTP/2 支持。
  • --with-http_gzip_static_module:启用 gzip 压缩。
  • --with-pcre:启用 pcre 正则表达式支持。
  • --with-http_stub_status_module:用于查看 Nginx 的状态。
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-pcre \
--with-http_stub_status_module

如果不需要某个模块,直接去掉对应的 --with-xxx 即可。

编译和安装 这个过程可能需要几分钟时间。

# 编译
make
# 安装
sudo make install

验证安装 检查安装目录是否存在。

ls /usr/local/nginx

你应该看到 conf, html, logs, sbin 等目录。


Nginx 基本操作

包管理器安装的 Nginx

服务名称通常是 nginx

  • 启动

    # CentOS/RHEL
    sudo systemctl start nginx
    # Ubuntu/Debian
    sudo systemctl start nginx
  • 停止

    sudo systemctl stop nginx
  • 重启 (先停止再启动)

    sudo systemctl restart nginx
  • 重新加载配置 (平滑重启,不中断连接)

    sudo systemctl reload nginx
  • 查看状态

    sudo systemctl status nginx
  • 开机自启

    sudo systemctl enable nginx

源码编译安装的 Nginx

编译安装的 Nginx 没有被注册为系统服务,你需要手动管理。

  • 启动

    /usr/local/nginx/sbin/nginx
  • 停止

    # 快速停止
    /usr/local/nginx/sbin/nginx -s stop
    # 优雅停止
    /usr/local/nginx/sbin/nginx -s quit
  • 重新加载配置

    /usr/local/nginx/sbin/nginx -s reload
  • 验证配置文件语法

    /usr/local/nginx/sbin/nginx -t

配置 Nginx 示例(搭建一个简单的静态网站)

假设我们要在服务器上部署一个名为 mywebsite.com 的静态网站。

创建网站目录

# 创建网站根目录
sudo mkdir -p /var/www/mywebsite.com/html
# 给当前用户设置目录权限,避免使用 sudo 编辑文件
sudo chown -R $USER:$USER /var/www/mywebsite.com/html

编写一个测试页面

echo "<h1>Hello from Nginx!</h1><p>Welcome to mywebsite.com</p>" | tee /var/www/mywebsite.com/html/index.html

编写 Nginx 配置文件 Nginx 的主配置文件在 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf,我们通常在 conf.dsites-available 目录下创建独立的站点配置文件。

对于包管理器安装的 Nginx (CentOS/RHEL):

sudo vim /etc/nginx/conf.d/mywebsite.com.conf

对于包管理器安装的 Nginx (Ubuntu/Debian):

sudo vim /etc/nginx/sites-available/mywebsite.com.conf

对于源码编译安装的 Nginx:

vim /usr/local/nginx/conf/conf.d/mywebsite.com.conf

粘贴到文件中:

server {
    listen 80;
    server_name mywebsite.com www.mywebsite.com;
    root /var/www/mywebsite.com/html;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
}
  • listen 80;:监听 80 端口。
  • server_name;:你的域名,替换成你自己的。
  • root;:网站根目录。
  • index;:默认首页文件。
  • location / { ... }:处理所有请求的规则。

测试配置并重载

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

如果配置正确,会看到 syntax is oktest is successful 的提示。

放行防火墙 如果开启了防火墙,需要放行 80 (HTTP) 和 443 (HTTPS) 端口。

对于 CentOS/RHEL (firewalld):

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

对于 Ubuntu/Debian (ufw):

sudo ufw allow 'Nginx Full'

访问验证 在浏览器中输入你的服务器 IP 地址或域名 http://<你的服务器IP>http://mywebsite.com,你应该能看到 "Hello from Nginx!" 的页面。


总结与建议

特性 包管理器安装 源码编译安装
优点 简单快速,自动处理依赖,易于升级/卸载,由系统包管理器统一管理。 高度定制化,可添加/移除模块,性能可能因优化而更高。
缺点 版本可能不是最新的,定制化程度低。 过程复杂,需要手动解决依赖,升级/卸载麻烦,需要手动管理服务。
推荐场景 绝大多数用户,新手,生产环境 需要特定模块、追求极致性能或学习 Nginx 内部原理的用户。

给你的建议:

  • 如果你是 初学者 或只是需要一个 稳定、标准的 Nginx 环境,请毫不犹豫地选择 包管理器安装
  • 如果你是一名 开发者或系统管理员,需要根据项目需求定制 Nginx 功能,或者需要使用到官方包里没有的第三方模块,源码编译安装 是你的不二之选。

希望这份详细的教程能帮助你成功安装并运行 Nginx!

分享:
扫描分享到社交APP
上一篇
下一篇