Nginx 相關筆記

前言

第一次碰到 nginx 是在使用 laradock 時,一個輕量設定又簡單的好東西
查了一下發現 nginx 在大流量的服務上比起 apache 可以更有效率的處理 request

好 nginx 不用嗎

環境

  • OS : Debian 10
  • VMware Workstation 15 Player

安裝 nginx

  • 安裝 nginx

    1
    apt-get install -y nginx
  • 確認是否成功啟用

    1
    systemctl status nginx
  • 前往本地IP位置

    • 確認當前VM IP

      1
      ip addr
    • 在瀏覽器打上 http://{你的VM IP}

    • 看到此畫面就表示 nginx 成功啟動

設定 nginx 以 larveal 為例

  • 先安裝 laravel 可以參考這篇
  • 把 laravel 專案放到 /var/www/html
  • /etc/nginx/site-available
    • 可以看到 default 檔案,這就是預設的設定檔
  • 打開 default 可以看到 server 的設定,先講常用的設定
    • root 是用來設定指向到的專案路徑
    • index 是指定入口檔案有哪些
    • server_name 可以設定特定 host 指向到當前設定的路徑
  • 複製一個新的設定檔
    • cp default laravel
    • 編輯設定檔
      • 先把 server 中的 default_server 移除
      • 把 root 指向到自己專案底下的 public
      • 調整 server_name 為自己的 host name
      • fastcgi_pass 指向到安裝的 php 版本
      • 最後設定檔如下
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html/laravel/public;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html index.php;

        server_name leo-laravel.com;

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

        # pass PHP scripts to FastCGI server
        location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        }
        }
  • 如果有調整設定檔,記得要要 reload 設定才會生效
    • sudo nginx -s reload
  • 這時打開瀏覽器輸入 http://leo-laravel.com/api/hello
    • 如果是找不到網頁,表示 host 沒有設定
      • vim /etc/hosts 加入 127.0.0.1 leo-laravel.com
    • 如果是出現 500 server error
      • 我在安裝時碰到這個問題時的解法是調整 storage 和 bootstrap 的權限
        1
        2
        3
        cd /var/www/html/laravel
        chmod -R 777 storage
        chmod -R 775 bootstrap
    • 然後就可以成功看到瀏覽器上印出 hello 了

      參考

  • 在Ubuntu 16.04 上架設Nginx + PHP 7
  • Fixing HTTP ERROR 500 (nginx) for every Laravel route