在伺服器的選擇上,我們選擇LEMP (Linux, NginxMariaDB, PHP-FPM)架構,另一種常用的架構是LAMP (Linux-Apache-MySQL-PHP)。

Installing Nginx

sudo apt-get install nginx

系統會自動在/var/www/html/路徑中產生index.nginx-debian.html用來測試是否安裝成功,所以可以測試一下會看到安裝完成的提示頁

也可以用指令來測試是否安裝完成

sudo nginx -v

預設的Nginx已經有很好的優化,我們只需要做幾個小小的調整,但是在調整Nginx以前我們需要先知道伺服器的CPU內核數量和打開文件的限制。

關於CPU內核的部分,我們是購買Linode最便宜的方案,只有一個core。也可以用指令來確認

sudo grep processor /proc/cpuinfo | wc -l

查看同一時間可以打開檔案的數量我們使用

ulimit -n

因為權限的問題,使用ulimit時需要su成為root。在我們租用的伺服器上得到的數據是有一個core以及同時可以開啟1024個檔案。

開啟Nginx的組態設定檔

sudo nano /etc/nginx/nginx.conf

首先需要調整是user,因為www-data是給 web servers 使用的特定 user/group,目的說是希望 web servers 不要有太高的權限。但是全世界的人都知道有這個ID,所以相對來說並不安全。如果你的伺服器只有一個網站,可以考慮將它改成你目前login的username。建議對權限觀念有較清楚了解的人以及對Security比較要求的人再改這個設定,否則維持不變就好。

worker_processes選項改成CPU core的數目,在我的伺服器上為1。

將worker_connections改成剛才查到的檔案數量,這裡為1024。

將multi_accept on前面的#拿掉,意思是可以接受同時接受多條連線的要求。預設值是一次只能接受一條連線的要求。

keepalive_timeout改成15,預設值是65(秒)

server_tokens off前面的#拿掉,可以避免將Nginx的版本編號在某些錯誤訊息中的response header中被送出去,可提高網站的安全性。

因為WordPress會下載較大的檔案,譬如Theme或是Plugin,需要修改 Nginx 的上傳限制,這個可以透過 Nginx 的 client_max_body_size 設定。
可以在 http,server 或 location 其中一個 block 加入 client_max_body_size 的設定,例如我想改為 64MB就加上:

client_max_body_size 64m;

在Gizp Settings部分:

拿掉gzip_proxied any;前面的#

拿掉gzip_comp_level 6;前面的#,同時將數值改成2

拿掉gzip_types前面的#

然後存檔離開。

為了要能夠正確地提供PHP服務,我們還需要確認fastcgi_param SCRIPT_FILENAME這個路徑是正確的設定好

sudo nano /etc/nginx/fastcgi_params

找到fastcgi_param SCRIPT_FILENAME這個參數,如果沒有就自己加上去

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

修改預設的Nginx的Server block,現在我們拜訪網站的時候會出現一個預設的Nginx Welcome Page,我們想改掉這個畫面,改成回應444錯誤

首先將下面兩行敘述改名為default_bak

sudo mv /etc/nginx/sites-available/default  /etc/nginx/sites-available/default_bak
sudo mv /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default_bak

編輯Nginx組態檔

sudo nano /etc/nginx/nginx.conf

找到下面的敘述

include /etc/nginx/sites-enabled/*;

在這個敘述下面加上:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 444;
}

最後再測試組態檔是否正常

sudo nginx -t

如果一切OK則重新啟動Nginx

sudo service nginx restart

 

安裝MariaDB

安裝MariaDB以前你需要先去找到適當的repository,可以在這個連結裡面找到

執行

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.2/debian stretch main'
sudo apt-get update

因為我們的伺服器在日本,所以在選擇repository的時候也可以選擇在日本的mirror

'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.2/debian stretch main'

安裝mariadb-server

sudo apt-get install mariadb-server -y

安裝完成以後會請你輸入MariaDB的root密碼

加強MariaDB的安全性,會有一些安全性選項讓你選,譬如是否接受anonymous login,基本上都使用預設值就好。這個指令也可以用來修改root密碼

sudo mysql_secure_installation

安裝PHP-FPM

更新repository

sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update

安裝PHP

sudo apt-get install php7.1-fpm php7.1-mysqlnd

如果版本上有一些警告訊息說套件未驗證,還是打Yes繼續安裝

測試是否安裝完成

php-fpm7.1 -v

如果在上面設定Nginx的組態檔時有修改user選項,則在PHP設定裡面也需要修改,將www-data都改成你的username

sudo nano /etc/php/7.1/fpm/pool.d/www.conf

修改php設定檔php.ini

sudo nano /etc/php/7.1/fpm/php.ini

upload_max_filesize = 2M 修改成 64M  (和Nginx組態中的client_max_body_size值相同)

將post_max_size = 8M 也修改成 64M

將max_file_uploads設為300,一般來說不會用到那麼大量的檔案,但是在處理WordPress搬家需要匯入/匯出資料庫的時候有機會會碰到。

驗證組態檔

sudo php-fpm7.1 -t

沒有問題後重新啟動PHP

sudo systemctl restart php7.1-fpm

可以用top指令來看目前正在執行的程序,找找看nginx和php-fpm是否正在執行。

top

當top執行時可以按下shift+M應該會比較容易找到php-fpm7.1和nginx

在Linode上安裝Wordpress (一):虛擬伺服器購買

在Linode上安裝WordPress (二):主機基本設定

在Linode上安裝WordPress (三):ftp server

在Linode上安裝WordPress (四):安裝Nginx、PHP、以及MariaDB

在Linode上安裝WordPress (五):網站設置

This Post Has 4 Comments

  1. Ken

    你好
    我在編輯 NGINX 組態檔 , 加入敘述後測試組態檔是否正常 出現錯誤語句
    nginx [emerg] unknown directive “server” in /etc/nginx/nginx.conf:66
    請問要如何解決.

    1. Ken

      問題已解決

  2. 下站见

    老师抽空建议您可以搞下HTTPS啦
    推荐let us encrypt

發佈留言