在伺服器的選擇上,我們選擇LEMP (Linux, Nginx, MariaDB, 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
你好
我在編輯 NGINX 組態檔 , 加入敘述後測試組態檔是否正常 出現錯誤語句
nginx [emerg] unknown directive “server” in /etc/nginx/nginx.conf:66
請問要如何解決.
問題已解決
老师抽空建议您可以搞下HTTPS啦
推荐let us encrypt
好喔!有空時玩玩