在 Linux 上安装 Nginx 的详细步骤 – wiki基地

在 Linux 上安装 Nginx 的详细步骤

Nginx (发音为 “engine-x”) 是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。许多高流量网站都依赖 Nginx 来提供快速、可靠的内容。

本文将详细介绍在各种主流 Linux 发行版上安装 Nginx 的步骤,包括:

  • 使用包管理器安装 (推荐):这是最简单、最常用的方法,适用于大多数用户。我们将涵盖 Ubuntu/Debian、CentOS/RHEL/Fedora 和 openSUSE。
  • 从源代码编译安装:这种方法提供了更大的灵活性,允许你自定义 Nginx 的配置和模块,但需要更多的技术知识。
  • 安装后的配置和管理:包括启动、停止、重启 Nginx,配置虚拟主机,以及基本的安全设置。

1. 使用包管理器安装 (推荐)

这种方法利用了 Linux 发行版自带的包管理器,简化了安装过程,并确保了软件的兼容性和自动更新。

1.1. Ubuntu/Debian

Ubuntu 和 Debian 使用 apt 包管理器。

  1. 更新软件包列表:

    在安装任何新软件之前,最好先更新本地软件包索引。打开终端并运行以下命令:

    bash
    sudo apt update

  2. 安装 Nginx:

    使用 apt install 命令安装 Nginx:

    bash
    sudo apt install nginx

    系统将提示你确认安装。输入 y 并按 Enter 键继续。

  3. 验证安装:

    安装完成后,Nginx 服务通常会自动启动。你可以通过以下命令检查其状态:

    bash
    sudo systemctl status nginx

    如果看到 “active (running)”,则表示 Nginx 正在运行。

    你也可以在浏览器中输入服务器的 IP 地址或域名来访问 Nginx 的默认欢迎页面。如果看到 “Welcome to nginx!” 页面,则表示安装成功。

1.2. CentOS/RHEL/Fedora

CentOS、RHEL 和 Fedora 使用 yum (CentOS 7 及更早版本) 或 dnf (CentOS 8 及更高版本,Fedora) 包管理器。

  1. 更新软件包列表 (可选):

    虽然不是必需的,但更新软件包列表通常是一个好习惯:

    “`bash

    对于 yum (CentOS 7 及更早版本)

    sudo yum update

    对于 dnf (CentOS 8 及更高版本,Fedora)

    sudo dnf update
    “`

  2. 安装 Nginx:

    使用 yumdnf 安装 Nginx:

    “`bash

    对于 yum (CentOS 7 及更早版本)

    sudo yum install nginx

    对于 dnf (CentOS 8 及更高版本,Fedora)

    sudo dnf install nginx
    如果安装失败,提示找不到nginx安装包,说明nginx不在默认的yum或dnf仓库中,则先执行下列命令,安装epel仓库:bash

    对于 yum (CentOS 7 及更早版本)

    sudo yum install epel-release

    对于 dnf (CentOS 8 及更高版本,Fedora)

    sudo dnf install epel-release
    “`
    安装完epel仓库,再执行上述安装nginx的命令。

    系统将提示你确认安装。输入 y 并按 Enter 键继续。

  3. 启动 Nginx 并设置为开机启动:

    安装完成后,你需要手动启动 Nginx,并将其设置为在系统启动时自动启动:

    bash
    sudo systemctl start nginx
    sudo systemctl enable nginx

  4. 验证安装:

    与 Ubuntu/Debian 类似,你可以使用以下命令检查 Nginx 的状态:

    bash
    sudo systemctl status nginx

    并在浏览器中访问服务器的 IP 地址或域名来验证。

1.3. openSUSE

openSUSE 使用 zypper 包管理器。

  1. 更新软件包列表:

    bash
    sudo zypper refresh

  2. 安装 Nginx:

    bash
    sudo zypper install nginx

    系统将提示你确认安装。输入 y 并按 Enter 键继续。

  3. 启动 Nginx 并设置为开机启动:

    bash
    sudo systemctl start nginx
    sudo systemctl enable nginx

  4. 验证安装:

    同样,使用 systemctl status nginx 检查状态,并在浏览器中访问服务器来验证。

2. 从源代码编译安装

从源代码编译安装 Nginx 提供了最大的灵活性,允许你自定义 Nginx 的配置和模块。但这种方法需要你对编译过程有一定的了解。

2.1. 准备工作

  1. 安装依赖项:

    在编译 Nginx 之前,你需要安装一些必要的依赖项。这些依赖项可能因你的 Linux 发行版而异。以下是一些常见的依赖项:

    • GCC 编译器: 用于编译 C 代码。
    • PCRE 库: 用于支持正则表达式。
    • zlib 库: 用于支持 gzip 压缩。
    • OpenSSL 库 (可选): 用于支持 HTTPS。

    你可以使用以下命令安装这些依赖项 (以 Ubuntu/Debian 为例):

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

    对于 CentOS/RHEL/Fedora,可以使用:

    bash
    sudo yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    或者
    bash
    sudo dnf install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    对于 openSUSE,可以使用:

    bash
    sudo zypper install gcc pcre-devel zlib-devel openssl-devel

  2. 下载 Nginx 源代码:

    访问 Nginx 官方网站 (nginx.org) 下载最新的稳定版源代码包。你可以使用 wget 命令直接下载:

    bash
    wget http://nginx.org/download/nginx-1.25.3.tar.gz # 将版本号替换为最新版本

  3. 解压源代码包:

    使用 tar 命令解压下载的源代码包:

    bash
    tar -xzvf nginx-1.25.3.tar.gz # 将文件名替换为实际的文件名

    这将创建一个名为 nginx-1.25.3 的目录 (目录名可能因版本而异)。

2.2. 配置和编译

  1. 进入源代码目录:

    bash
    cd nginx-1.25.3 # 将目录名替换为实际的目录名

  2. 配置 Nginx:

    使用 ./configure 脚本配置 Nginx。你可以使用各种选项来自定义安装,例如:

    • --prefix=PATH:指定 Nginx 的安装路径 (默认为 /usr/local/nginx)。
    • --sbin-path=PATH:指定 Nginx 可执行文件的路径。
    • --conf-path=PATH:指定 Nginx 配置文件的路径。
    • --with-http_ssl_module:启用 HTTPS 支持。
    • --with-http_v2_module:启用 HTTP/2 支持。
    • --with-mail:启用邮件代理功能。
    • --with-stream:启用 TCP/UDP 流量代理功能。

    一个基本的配置示例:

    bash
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module

    运行 ./configure --help 可以查看所有可用的配置选项。

  3. 编译 Nginx:

    运行 make 命令编译 Nginx:

    bash
    make

  4. 安装 Nginx:

    运行 make install 命令安装 Nginx:

    bash
    sudo make install

2.3. 启动和管理

从源代码安装的 Nginx 通常不会自动创建 systemd 服务文件。你需要手动创建它们,或者使用 Nginx 提供的初始化脚本。

  1. 创建 systemd 服务文件 (可选):

    创建一个名为 /etc/systemd/system/nginx.service 的文件,并添加以下内容:

    “`
    [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 stop # 根据你的安装路径修改
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target
    “`

    保存文件后,重新加载 systemd 配置:

    bash
    sudo systemctl daemon-reload

    现在你可以使用 systemctl 命令来管理 Nginx:

    bash
    sudo systemctl start nginx
    sudo systemctl stop nginx
    sudo systemctl restart nginx
    sudo systemctl status nginx
    sudo systemctl enable nginx

  2. 使用 Nginx 初始化脚本 (可选):

    Nginx 源代码中通常包含一个名为 nginx.init 的初始化脚本。你可以将其复制到 /etc/init.d/ 目录,并赋予执行权限:

    bash
    sudo cp nginx.init /etc/init.d/nginx
    sudo chmod +x /etc/init.d/nginx

    然后你可以使用以下命令来管理 Nginx:

    bash
    sudo /etc/init.d/nginx start
    sudo /etc/init.d/nginx stop
    sudo /etc/init.d/nginx restart

3. 安装后的配置和管理

无论你使用哪种方法安装 Nginx,安装完成后都需要进行一些基本的配置和管理。

3.1. Nginx 配置文件

Nginx 的主配置文件通常位于以下位置:

  • 使用包管理器安装:
    • Ubuntu/Debian:/etc/nginx/nginx.conf
    • CentOS/RHEL/Fedora:/etc/nginx/nginx.conf
    • openSUSE:/etc/nginx/nginx.conf
  • 从源代码编译安装: 默认情况下是 /usr/local/nginx/conf/nginx.conf,但可以在编译时通过 --conf-path 选项指定。

Nginx 的配置文件使用一种简单的、类似 JSON 的语法。以下是一些常见的配置指令:

  • user:指定 Nginx 工作进程的用户。
  • worker_processes:指定 Nginx 工作进程的数量。通常设置为 CPU 核心数。
  • error_log:指定错误日志文件的路径。
  • pid:指定 Nginx 主进程的 PID 文件路径。
  • events:配置事件处理模型。
  • http:配置 HTTP 服务器。
  • server:配置虚拟主机。
  • location:配置 URL 匹配规则。

3.2. 配置虚拟主机

虚拟主机允许你在同一台服务器上托管多个网站。每个虚拟主机都有自己的域名、根目录和配置文件。

  1. 创建虚拟主机配置文件:

    通常,虚拟主机的配置文件位于以下目录:

    • Ubuntu/Debian:/etc/nginx/sites-available/
    • CentOS/RHEL/Fedora:/etc/nginx/conf.d/
    • openSUSE:/etc/nginx/vhosts.d/

    创建一个新的配置文件,例如 example.com.conf (将 example.com 替换为你的域名):

    bash
    sudo nano /etc/nginx/sites-available/example.com.conf # Ubuntu/Debian
    sudo nano /etc/nginx/conf.d/example.com.conf # CentOS/RHEL/Fedora

  2. 添加虚拟主机配置:

    在配置文件中添加以下内容 (将 example.com 替换为你的域名,并将 /var/www/example.com 替换为你的网站根目录):

    “`nginx
    server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;

    index index.html index.htm;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    # 可选:添加其他配置,例如 SSL、PHP 支持等
    

    }
    “`

  3. 启用虚拟主机:

    • Ubuntu/Debian: 创建一个符号链接到 /etc/nginx/sites-enabled/ 目录:

      bash
      sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

    • CentOS/RHEL/Fedora: 配置文件会自动加载。

    • openSUSE 将虚拟主机配置文件放置到/etc/nginx/vhosts.d/

  4. 测试配置并重启 Nginx:

    bash
    sudo nginx -t # 测试配置文件语法
    sudo systemctl restart nginx # 重启 Nginx

3.3. 基本安全设置

  1. 防火墙:

    确保你的防火墙允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量通过。

    • Ubuntu/Debian (ufw):

      bash
      sudo ufw allow 'Nginx Full' # 允许 HTTP 和 HTTPS

    • CentOS/RHEL/Fedora (firewalld):

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

      * openSUSE (firewalld):

      与CentOS/RHEL/Fedora操作相同。

  2. SELinux (CentOS/RHEL):

    如果启用了 SELinux,你可能需要调整一些设置才能使 Nginx 正常工作。
    如果遇到网站访问不了,可以尝试暂时关闭SELinux
    bash
    setenforce 0

  3. 隐藏 Nginx 版本号:

    在 Nginx 配置文件 (nginx.conf) 的 http 块中添加以下指令:

    nginx
    server_tokens off;

    这将隐藏 Nginx 在 HTTP 响应头中显示的版本号,有助于提高安全性。

  4. 限制访问敏感文件:

    在 Nginx 配置文件中添加以下 location 块,禁止访问隐藏文件和目录 (例如 .git.svn):

    nginx
    location ~ /\. {
    deny all;
    }

    重新加载nginx的配置,使设置生效。

3.4 常用命令

启动nginx: sudo systemctl start nginx

停止nginx: sudo systemctl stop nginx

重启nginx: sudo systemctl restart nginx

重新加载配置(不中断服务): sudo nginx -s reloadsudo systemctl reload nginx

测试配置文件: sudo nginx -t

查看nginx进程: ps aux | grep nginx

查看nginx监听端口: netstat -tulnp | grep nginxss -tulnp | grep nginx

总结

本文详细介绍了在 Linux 上安装 Nginx 的两种方法:使用包管理器和从源代码编译。无论你选择哪种方法,都需要进行一些基本的配置和管理,包括配置虚拟主机和进行基本的安全设置。希望这篇文章能帮助你成功地在你的 Linux 系统上安装和配置 Nginx。如果你有任何问题,请随时提问。

发表评论

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

滚动至顶部