安裝 Nginx

更新系統套件

sudo apt-get update

安裝 Nginx

使用 Ubuntu 內建的 nginx 套件安裝,安裝完後預設的 nginx 設定檔是 /etc/nginx/sites-available/default,網站目錄會在 /usr/share/nginx/html

sudo apt-get install nginx

設定虛擬主機 Virtualhost 設定

編輯新的 virtualhost 設定檔案

在這裡通常我會用主機網域名稱當作他的檔案名稱,如果我有一個網域是 kejyun.dev,則我就會用 kejyun.dev 當作虛擬主機設定檔名稱

sudo vim /etc/nginx/sites-available/kejyun.dev

設定 Listen 的 port

設定主機要使用哪一個 port 傾聽 HTTP 請求

listen 80;

設定服務主機名稱

設定你申請的網域名稱,nginx 會以 HTTP Request 的網域不同導向不同的 Virtualhost,所以一定要設定,以下以 kejyun.dev 為例

server_name kejyun.dev;

設定網站根目錄路徑

我們將 Laravel 5 的程式放在使用者 kejyun 的家目錄下,而我們必須要將網站路徑指定到 Laravel 專案下的 public 目錄下才可以正常執行 Laravel 專案

root "/home/kejyun/laravel52/public";

設定 Log 路徑

設定當 Request 發生錯誤的時候,本 Virtualhost 要將 Log 存放在哪個檔案

error_log  /var/log/nginx/kejyun.dev-error.log error;

完整虛擬主機設定

設定檔中有包括設定 php 檔案處理方式,在這邊我們可以先設定,等之後安裝完 php 7 時就可以直接使用

server {
    # 設定 Listen 的 port
    listen 80;

    # 設定服務主機名稱
    server_name kejyun.dev;

    # 設定網站根目錄路徑
    root "/home/kejyun/laravel52/public";

    # 設定讀取檔案優先順序
    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; }

    access_log off;
    # 設定 Log 路徑
    error_log  /var/log/nginx/kejyun.dev-error.log error;

    sendfile off;

    client_max_body_size 100m;

    # 設定 php 檔案處理方式
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }
}

連結虛擬主機 Virtualhost 設定

Nginx 虛擬主機設定主要是讀取 /etc/nginx/sites-enabled/ 目錄下的所有檔案,如果要讓此設定檔案啟用,則必須要將原設定檔目錄 /etc/nginx/sites-available/ 的設定檔案使用軟連結連結過去

sudo ln -s /etc/nginx/sites-available/kejyun.dev /etc/nginx/sites-enabled/kejyun.dev

重新啟動 nginx

重新啟動 nginx 以讀取新的設定

sudo service nginx restart

這樣我們就完成了 Nginx Server 的設定了!!

參考資料

KeJyun 最新新書推薦
- Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站
- Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。

雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。

本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。

Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站

購書連結

Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

購書連結

comments powered by Disqus