神秘菜鸟

好吧其实一点也不神秘但菜是真的

如何在Debian上安装Nginx

大纲
  1. 1. 介绍
  • 先决条件
  • 步骤1 - 安装Nginx
  • 步骤 2 – 调整防火墙
  • 步骤 3 – 检查 Web 服务器
  • 步骤4 - 管理Nginx进程
  • 步骤 5 – 设置服务器块
  • 步骤6 - 熟悉重要的Nginx文件和目录
    1. 1. 网页内容
    2. 2. 服务器配置
    3. 3. 服务器日志
  • 完结
  • 介绍

    Nginx是世界上最受欢迎的Web服务器之一负责托管互联网上一些最大和流量最高的网站在大多数情况下它比Apache更资源友好可以用作Web服务器或反向代理

    在本指南中我们将讨论如何在 Debian 10 服务器上安装 Nginx

    先决条件

    在开始本指南之前你应该有一个配置了 sudo 权限的常规非 root 用户和激活防火墙的服务器可以通过遵循 Debian 10 的初始服务器设置指南来学习如何设置

    当你有可用的账户时以非 root 用户身份登录以开始使用

    步骤1 - 安装Nginx

    因为 Nginx 在 Debian 的默认仓库中可用所以可以使用包管理器apt从仓库中安装它

    由于这是我们在本会话中与系统的第一次交互因此让我们首先更新本地包索引以便我们可以访问最新的包列表

    sudo apt update
    

    我们现在开始安装nginx

    sudo apt install nginx
    

    当系统提示你确认安装时Y键继续将 Nginx 和任何必需的依赖项安装到你的服务器上

    步骤 2 – 调整防火墙

    在测试Nginx之前需要调整防火墙软件以允许访问该服务

    查看ufw已知应用集成方法是键入

    sudo ufw app list
    

    你应该会获得应用程序配置文件的列表如下

    Output
    Available applications:
    ...
      Nginx Full
      Nginx HTTP
      Nginx HTTPS
    ...
    

    如你所见Nginx有三种配置文件可用

    建议你启用限制性最强的配置文件该配置文件仍将允许已配置的流量由于在本指南中我们尚未为服务器配置SSL因此我们只需要在端口上允许HTTP的流量

    你可以通过键入以下内容来启用此功能

    sudo ufw allow 'Nginx HTTP'
    

    你可以通过键入以下内容来验证更改

    sudo ufw status
    

    你应该会在显示的输出中看到允许的 HTTP 流量

    Output
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere                  
    Nginx HTTP                 ALLOW       Anywhere                  
    OpenSSH (v6)               ALLOW       Anywhere (v6)             
    Nginx HTTP (v6)            ALLOW       Anywhere (v6)
    

    步骤 3 – 检查 Web 服务器

    在安装过程结束后Debian 10 会启动 NginxWeb 服务器应该已经启动并正在运行

    我们可以使用 init 系统进行检查以确保服务正在运行方法是键入

    systemctl status nginx
    
    Output
    ● nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
         Docs: man:nginx(8)
     Main PID: 3942 (nginx)
        Tasks: 3 (limit: 4719)
       Memory: 6.1M
       CGroup: /system.slice/nginx.service
               ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
               ├─3943 nginx: worker process
               └─3944 nginx: worker process
    

    如上所示该服务似乎已成功启动但是测试是否成功的最佳方法是从Nginx实际请求一个页面

    你可以访问默认的Nginx页面通过浏览器输入服务器的IP地址来确认软件是否正常运行如果你不知道服务器的 IP 地址请尝试在服务器的命令提示符处键入以下内容

    ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
    

    当你拥有服务器的 IP 地址时请将其输入到浏览器的地址栏中

    http://your_server_ip
    

    你应该会看到默认的Nginx登录页面

    Nginx 默认页面

    此页面是Nginx的默认主页以向你显示服务器是否正常运行

    步骤4 - 管理Nginx进程

    现在Web 服务器已启动并运行让我们回顾一些基本的管理命令

    要停止 Web 服务器请键入

    sudo systemctl stop nginx
    

    要启动 Web 服务器请键入

    sudo systemctl start nginx
    

    要重启 Web 服务器请键入

    sudo systemctl restart nginx
    

    如果只是进行配置更改Nginx通常可以在不断开连接的情况下重新加载为此请键入

    sudo systemctl reload nginx
    

    默认情况下Nginx会开机自启如果这不是你想要的则可以通过键入以下内容来禁用此行为

    sudo systemctl disable nginx
    

    要重新启用开机自启可以键入

    sudo systemctl enable nginx
    

    步骤 5 – 设置服务器块

    使用Nginx作为Web服务器时服务器块类似于Apache中的虚拟主机可用于封装详细配置信息并在单个服务器上托管多个域我们将设置一个名为 your_domain 的域

    Debian 10 上的 Nginx 默认启用了一个服务器块该服务器块会读取位于/var/www/html下的Web页面虽然这适用于单个站点但如果你托管多个站点则可能会变得难以管理与其修改默认的页面不如为 your_domain 网站创建一个新的Web目录如果客户端请求与任何其他站点不匹配才访问这个默认的网站页面/var/www/html

    按如下所示创建 your_domain 网站使用标志-p创建任何必需的父目录

    sudo mkdir -p /var/www/your_domain/html
    

    接下来使用环境变量分配目录的所有权$USER变量应引用你当前的系统用户

    sudo chown -R $USER:$USER /var/www/your_domain/html
    

    如果你尚未修改umask则 Web 根的权限应该是正确的但你可以通过键入以下内容来确保

    sudo chmod -R 755 /var/www/your_domain
    

    接下来使用你喜欢的编辑器创建示例页面

    nano /var/www/your_domain/html/index.html
    

    在里面添加以下示例

    <html>
        <head>
            <title>Welcome to your_domain</title>
        </head>
        <body>
            <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
            <p>This is a sample page.</p>
        </body>
    </html>
    

    完成后保存并关闭该文件

    为了让Nginx显示这些内容我们需要创建一个服务器块其中包含指向我们的网站目录的正确指令与其直接修改默认配置文件不如新增一个/etc/nginx/sites-available/your_domain的网站配置

    sudo nano /etc/nginx/sites-available/your_domain
    

    粘贴以下配置块该配置块类似于默认配置但针对我们的新网站目录和域名进行了更新

    server {
            listen 80;
            listen [::]:80;
    
            root /var/www/your_domain/html;
            index index.html index.htm index.nginx-debian.html;
    
            server_name your_domain www.your_domain;
    
            location / {
                    try_files $uri $uri/ =404;
            }
    }
    

    注意看我们用root设置了新的根目录并用server_name更新了我们的域名

    然后让我们通过建立一个软链接把 sites-available 的配置指向 sites-enabled 来启用此服务器块Nginx在启动的时候会从sites-enabled目录读取网站配置

    sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
    

    接下来进行测试以确保Nginx文件中没有语法错误

    sudo nginx -t
    

    如果没有任何问题你将看到以下输出

    Output
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    配置测试通过后重新启动Nginx以应用你的更改

    sudo systemctl restart nginx
    

    现在你应该可以通过http://your_domain来访问到刚才新建的网页内容了

    Nginx 服务器块

    步骤6 - 熟悉重要的Nginx文件和目录

    现在你已经知道如何管理Nginx服务器还应该花几分钟时间熟悉一些重要的目录和文件

    网页内容

    服务器配置

    服务器日志

    完结

    现在你已经安装了 Web 服务器你可以尽情地向互联网展示你的个人网站了