Skip to content

Latest commit

 

History

History
95 lines (62 loc) · 3.36 KB

09. 手动部署 - 配置 Nginx 站点.md

File metadata and controls

95 lines (62 loc) · 3.36 KB

手动部署 - 配置 Nginx 站点

在先前的小节中,我们已经成功地完成了手动部署中所需要的「安装运行环境」、「部署应用代码」,还差最后临门一脚「配置运行环境」。

Nginx 站点配置

根据 Laravel 5.8 部署文档 的说明,我们可直接拿到一份现成的 Nginx 配置文件,稍作调整即可:

server {
    listen 80;
    server_name laravel-deployment.wi1dcard.cn; # 此为必修改项,请替换为服务器公网 IP 或域名
    root /var/www/deployment/public; # 此为必修改项,请注意指向站点根目录的 public 子目录

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # 请注意核对 PHP 版本
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

提示:关于以上 Nginx 配置项的解析,可参见 这篇博客

通常我们仅需修改 server_namerootfastcgi_pass;请注意阅读 # 后的注释。

我们将以上内容保存到本地文件(例如 deployment.conf)内,使用 SCP 即可上传至服务器:

$ scp ~/deployment.conf root@laravel-deployment.wi1dcard.cn:/etc/nginx/sites-enabled/

提示:如果你熟悉 vi 等文本编辑器,也可以直接在服务器上操作,此处不再展开。

其中:

  • ~/deployment.conf 请替换为配置文件的实际保存路径,该路径位于本地。
  • /etc/nginx/sites-enabled/ 为存放 Nginx 站点配置的目录,该目录位于服务器。

重载 Nginx

配置完成后,请务必重启(Restart)或重载(Reload)Nginx。

什么是 重载?实际上,直接重启 Nginx 是不安全的。原因有二:

  • 在 Nginx 进程结束再重新运行的过程中,将造成极短时间的闪断。虽然这一时间通常很短(一般来说在秒级别),但倘若面对大量并发,还是极易造成一部分请求无法访问,即服务中断。
  • 在重启的过程中,若此时 Nginx 恰好正在处理请求,与客户端的 TCP 连接将会断开,客户端无法收到正确响应,造成前后端信息不一致。

在之前的小节中,已经提到重启 Nginx 的方法;

$ service nginx restart

同样地,亦可使用 service 命令重载 Nginx:

$ service nginx reload

另一种等效的方法是:

$ nginx -s reload

最终效果

在浏览器内输入服务器公网 IP 或域名并访问,你将会看到 Laravel 应用的默认主页:

是的,跟之前一毛一样,我也是复制过来的截图 :P

恭喜你,部署成功。