Linux环境Nginx安装:新手也能轻松搞定 – wiki大全


Linux 环境 Nginx 安装:新手也能轻松搞定

Nginx(发音为 “engine-x”)是一款高性能的开源 Web 服务器、反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。它以其卓越的性能、稳定性、丰富的功能集和低资源消耗而广受欢迎,广泛应用于互联网领域的各个角落。

对于初次接触 Linux 和 Web 服务器的开发者或系统管理员来说,安装 Nginx 可能看起来有些复杂。但实际上,借助现代 Linux 发行版的包管理器,这个过程可以非常简单。本文将为您提供一份详细的新手友好型 Nginx 安装指南,涵盖主流 Linux 发行版(如 Ubuntu/Debian 和 CentOS/RHEL)。

前提条件

在开始安装之前,请确保您具备以下条件:

  1. 一台运行 Linux 操作系统的服务器或虚拟机: 本教程将以 Ubuntu 和 CentOS 为例。
  2. 具有 sudo 权限的用户账户: 安装和配置系统服务通常需要管理员权限。
  3. 基本的 Linux 命令行操作知识: 例如,如何打开终端、执行命令等。
  4. 服务器的公共 IP 地址: 用于在浏览器中验证 Nginx 是否成功启动。

一、安装 Nginx

Nginx 可以通过各个 Linux 发行版提供的包管理器进行安装,这是最推荐和最便捷的方式。

1. 在 Ubuntu/Debian 系统上安装 Nginx

Ubuntu 和 Debian 系列的 Linux 系统使用 apt 包管理器。

步骤 1:更新软件包列表
在安装任何新软件之前,始终建议先更新系统的软件包列表,以确保您能获取到最新版本的软件包信息。

bash
sudo apt update

步骤 2:安装 Nginx
Nginx 在 Ubuntu 的默认软件仓库中是可用的,因此您可以直接使用 apt install 命令进行安装。

bash
sudo apt install nginx

步骤 3:验证 Nginx 安装
安装完成后,Nginx 服务通常会根据系统配置自动启动。您可以通过以下两种方式验证它是否成功运行:

  • 命令行验证: 检查 Nginx 服务的运行状态。
    bash
    sudo systemctl status nginx

    如果看到 active (running) 字样,则表示 Nginx 正在运行。
  • 浏览器验证: 打开您的 Web 浏览器,在地址栏中输入您的服务器的公共 IP 地址(例如 http://192.168.1.100http://your_domain_name)。如果一切顺利,您将看到 Nginx 的默认欢迎页面,通常显示 “Welcome to nginx!”。

2. 在 CentOS/RHEL 系统上安装 Nginx

CentOS 和 RHEL(及其衍生版如 Fedora)系统使用 yum 或较新的 dnf 包管理器。Nginx 通常不在这些系统的默认仓库中,因此需要先添加 EPEL (Extra Packages for Enterprise Linux) 仓库。

步骤 1:安装 EPEL 仓库
运行以下命令来安装 EPEL 仓库:

“`bash

对于 CentOS/RHEL 7 及更早版本

sudo yum install epel-release -y

对于 CentOS/RHEL 8 / Fedora 及更高版本,也可以使用 dnf

sudo dnf install epel-release -y
“`

步骤 2:安装 Nginx
安装 EPEL 仓库后,现在您可以使用 yumdnf 安装 Nginx 了:

“`bash

对于使用 yum 的系统

sudo yum install nginx -y

对于使用 dnf 的系统

sudo dnf install nginx -y
“`

步骤 3:验证 Nginx 安装
在 CentOS/RHEL 系统中,Nginx 安装后通常不会自动启动。您需要手动启动它并设置开机自启。

  • 启动 Nginx 服务:
    bash
    sudo systemctl start nginx
  • 设置 Nginx 开机自启:
    bash
    sudo systemctl enable nginx

    这会确保您的服务器在重启后 Nginx 服务也能自动运行。
  • 命令行验证: 检查 Nginx 服务的运行状态。
    bash
    sudo systemctl status nginx

    确认服务状态为 active (running)
  • 浏览器验证: 同样,在浏览器中输入您的服务器的公共 IP 地址,您应该能看到 Nginx 的欢迎页面。

二、配置防火墙

为了让外部用户能够访问您的 Nginx Web 服务器,您需要确保系统的防火墙允许 HTTP (80 端口) 和 HTTPS (443 端口) 流量通过。

1. Ubuntu/Debian (使用 UFW)

Ubuntu 默认使用 UFW (Uncomplicated Firewall) 作为其防火墙管理工具。

步骤 1:检查 UFW 状态
bash
sudo ufw status

如果 UFW 处于非活动状态,您需要先启用它。

步骤 2:允许 Nginx 流量
Nginx 在 UFW 中注册了几个预定义的应用程序配置文件,方便您快速配置:

  • Nginx HTTP: 仅允许 80 端口 (HTTP) 流量。
  • Nginx HTTPS: 仅允许 443 端口 (HTTPS) 流量。
  • Nginx Full: 允许 80 和 443 端口 (HTTP 和 HTTPS) 流量。

通常,如果您只提供 HTTP 服务,选择 Nginx HTTP;如果未来可能提供 HTTPS,选择 Nginx Full 更为方便。

“`bash

允许 HTTP 流量

sudo ufw allow ‘Nginx HTTP’

如果您也需要 HTTPS,可以允许 HTTP 和 HTTPS 流量

sudo ufw allow ‘Nginx Full’

“`

步骤 3:启用 UFW (如果未启用)
如果 UFW 之前处于非活动状态,请启用它:

bash
sudo ufw enable

系统可能会提示您确认,输入 y 并回车。

步骤 4:再次检查 UFW 状态
确认规则已添加并生效:

bash
sudo ufw status

2. CentOS/RHEL (使用 firewalld)

CentOS 和 RHEL 系统通常使用 firewalld

步骤 1:检查 firewalld 状态
bash
sudo systemctl status firewalld

确保 firewalld 服务正在运行。如果未运行,请启动它:sudo systemctl start firewalld,并设置开机自启:sudo systemctl enable firewalld

步骤 2:允许 HTTP 和 HTTPS 服务
firewalld 允许您通过服务名称而非端口号来添加规则,这更具可读性。

“`bash

允许 HTTP 流量(80 端口)

sudo firewall-cmd –permanent –add-service=http

允许 HTTPS 流量(443 端口),如果需要的话

sudo firewall-cmd –permanent –add-service=https
``–permanent` 选项表示规则在防火墙重启后依然有效。

步骤 3:重新加载 firewalld 配置
应用新的防火墙规则:

bash
sudo firewall-cmd --reload

步骤 4:验证服务是否已添加
bash
sudo firewall-cmd --list-all

在输出中,您应该能看到 services: http https(如果都添加了)或者 services: http

三、管理 Nginx 服务常用命令

掌握如何管理 Nginx 服务对于日常维护至关重要。

  • 启动 Nginx:
    bash
    sudo systemctl start nginx
  • 停止 Nginx:
    bash
    sudo systemctl stop nginx
  • 重启 Nginx: (完全停止并重新启动服务,可能会导致短暂的服务中断)
    bash
    sudo systemctl restart nginx
  • 重新加载 Nginx 配置: (在不中断服务的情况下应用配置更改,推荐在修改配置文件后使用)
    bash
    sudo systemctl reload nginx
  • 检查 Nginx 状态:
    bash
    sudo systemctl status nginx
  • 设置 Nginx 开机自启:
    bash
    sudo systemctl enable nginx
  • 禁用 Nginx 开机自启:
    bash
    sudo systemctl disable nginx
  • 检查 Nginx 配置文件语法: (在重新加载或重启 Nginx 前,检查配置文件的语法错误非常重要)
    bash
    sudo nginx -t

    如果输出显示 syntax is oktest is successful,则表示配置文件没有语法错误。

四、Nginx 基本配置概述

Nginx 的强大之处在于其灵活的配置文件。了解其基本结构对于后续的网站托管和反向代理配置至关重要。

  • 主配置文件位置:

    • Ubuntu/Debian: /etc/nginx/nginx.conf
    • CentOS/RHEL: /etc/nginx/nginx.conf
  • 网站配置文件(虚拟主机)位置:

    • Ubuntu/Debian:
      • /etc/nginx/sites-available/: 存放所有可用的网站配置文件。
      • /etc/nginx/sites-enabled/: 存放已启用的网站配置。通常通过在 sites-available 目录中的文件创建软链接到此目录来启用。
    • CentOS/RHEL: 通常在 /etc/nginx/conf.d/ 目录下创建以 .conf 结尾的单独配置文件。

Nginx 配置文件的基本结构示例

一个典型的 nginx.conf 文件包含几个主要块:

“`nginx

全局块:配置影响 Nginx 服务器整体运行的指令

user nginx; # 运行 Nginx 进程的用户
worker_processes auto; # 工作进程数,推荐设置为 CPU 核心数或 ‘auto’

error_log /var/log/nginx/error.log warn; # 错误日志路径和级别
pid /var/run/nginx.pid; # Nginx 主进程的 PID 文件

events {
# events 块:配置影响 Nginx 服务器或与用户的网络连接的特性
worker_connections 1024; # 每个工作进程的最大连接数
# use epoll; # 在 Linux 系统上,epoll 是高性能事件驱动的首选模型
}

http {
# http 块:HTTP 服务器的核心配置,可以包含多个 server 块
# 配置代理、缓存、日志定义、Gzip 压缩等绝大多数 HTTP 相关功能

include       /etc/nginx/mime.types; # 引入 MIME 类型映射文件
default_type  application/octet-stream; # 默认的文件类型

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"'; # 定义日志格式

access_log  /var/log/nginx/access.log  main; # 访问日志路径和格式

sendfile        on; # 开启高效文件传输模式
keepalive_timeout  65; # 客户端连接的超时时间

# gzip  on; # 开启 Gzip 压缩,可以提高传输效率

# 引入外部配置文件,通常用于网站的虚拟主机配置
include /etc/nginx/conf.d/*.conf; # CentOS/RHEL 常用
# include /etc/nginx/sites-enabled/*; # Ubuntu/Debian 常用

server {
    # server 块:定义一个虚拟主机(网站)的配置
    listen       80; # 监听端口,HTTP 默认是 80
    server_name  localhost; # 域名或 IP 地址,可以设置为您的实际域名

    #charset koi8-r; # 字符集设置

    location / {
        # location 块:根据 URL 路径匹配请求并进行处理
        root   /usr/share/nginx/html; # 网站的根目录,即静态文件存放的位置
        index  index.html index.htm; # 默认的索引文件,当访问目录时 Nginx 会尝试查找这些文件
    }

    # 错误页面配置
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # 其他常见的配置,例如反向代理、PHP-FPM 配置等,通常会在 location 块中完成
    # 例如,配置 PHP 应用:
    # location ~ \.php$ {
    #     root           html;
    #     fastcgi_pass   127.0.0.1:9000; # 假设 PHP-FPM 运行在 9000 端口
    #     fastcgi_index  index.php;
    #     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #     include        fastcgi_params;
    # }
}

# 可以在这里添加更多的 server 块来配置其他网站或服务

}
“`

小贴士:

  • 在修改任何 Nginx 配置文件后,务必先运行 sudo nginx -t 检查语法,然后使用 sudo systemctl reload nginx 命令重新加载配置,以使更改生效。
  • 默认的网站根目录通常是 /usr/share/nginx/html (CentOS/RHEL) 或 /var/www/html (Ubuntu/Debian),您可以在 location 块中的 root 指令进行修改。

五、测试您的 Nginx

安装并启动 Nginx 后,最重要的步骤就是进行测试以确认一切正常运行。

  1. 浏览器访问:
    打开您的 Web 浏览器,在地址栏中输入您服务器的公共 IP 地址。如果安装和防火墙配置都正确,您应该会看到 Nginx 的默认欢迎页面。

恭喜您!至此,您已经成功在 Linux 环境中安装并运行了 Nginx。现在您可以开始配置您的网站、设置反向代理、负载均衡或利用 Nginx 的其他强大功能来构建您的 Web 服务了。随着您对 Nginx 的深入了解,您会发现它是一个极其灵活和高效的工具。

滚动至顶部