在Debian 9上安裝LEMP架構的WordPress
一直想製作個人blog很久了,這次在新工作前的空檔終於把這個網站架出來了。
這篇文章記錄一下架設本網站的流程,包含:Gandi域名申請、Linode空間申請、在Debian 9上使用LEMP架構(Linux, Nginx, MariaDB, PHP)的網路伺服器架設,以及WordPress的架設,另外還追加了使用https的設定方法。
為什麼要使用Linode,主要原因是他真的很便宜,最便宜的方案一個月只要5鎂。但是最大的缺點是,它沒有像很多有提供一鍵WordPress的功能,伺服器的部分都要自己設定,也因此不太適合對Linux不熟的用戶。
如果對Linux有基本操作能力,Linode或許很適合你。基本上Debian把各種套件都包得很好,安裝只要使用apt-get都能輕鬆達成,跟著這篇文章大概都能沒有問題地把網站架設完成。
申請網域名稱
首先跟任何一家域名供應商申請你的網域,基本上選便宜的就好。如果不需要自己網域的可以跳過這一步。這次在Gandi上購買strangechu.com網域花了我大概13.8鎂,是可接受的價格。本文會以Gandi的設定為例子,不過各家設定方式大同小異。
申請Linode空間
申請linode帳號時可以輸入周圍朋友的促銷碼,你朋友可以收到優惠。如果沒朋友(誤)歡迎點這個連結使用我的促銷碼幫我省錢^.^
建立好帳戶後我們進入控制台建立新的主機,選擇Debian 9以及日本地區(離你最近的)。
繼續往下拉,接著選擇方案以及設定root密碼,這邊我們選擇最便宜的5鎂方案。
創建後到左方Menu選擇剛剛建立的linode,按下Boot按鈕之後,主機就成功開始運作了!
Domain設定
這時候我們已經有了我們的主機以及固定IP了,接著要把這個主機連結到你的網域。
進入你的Gandi網域控制台,在域名分頁內找到你申請的域名,名稱伺服器欄位設定改為linode的名稱伺服器,要填五個。
接著回到Linode控制台,進入Domain分頁,新增你申請的域名,填入你的信箱。
如此你的域名就由Linode代管了。
接著設定Domain的A name,如果有子網域就在這邊設定,如果沒有特別就輸入空白和主機IP。
接著要來設定主機了。
連線到主機
可以使用任何ssh連線方式連線到主機,我是在Windows上使用putty連線。Linode自己也提供瀏覽器上能使用的Linode shell,可以直接在瀏覽器上連接主機,透過控制台上的Launch console按鈕即可以使用。第一次登入我們使用root的密碼登入主機。
設定主機名稱
把你申請的網域名稱設定進主機。
echo "strangechu.com" > /etc/hostname
hostname -F /etc/hostname
設定系統時區
dpkg-reconfigure tzdata
選擇你所在的時區
新增使用者
新增使用者,把新使用者加入sudo群組。
adduser %username%
usermod -a -G sudo %username%
以新使用者重新登入主機,之後的操作改成由新使用者的身分執行。
之後我們跳過設定SSH和防火牆等安全性步驟,直接進入LEMP伺服器的建置。想詳細了解如何加強安全性可以參考這篇文章後半段。
安裝Nginx
sudo apt-get install nginx
網頁資料會放在/var/www/html/內,如果正常安裝,使用瀏覽器連到你的網域應該可以看到nginx的預設首頁。
太好了,我們現在有網頁了!接著進入下一步。
安裝MariaDB
sudo apt-get install mariadb-server mariadb-client
接著做一些安全性的設定。
sudo mysql_secure_installation
這邊會要你輸入root密碼,輸入後的選項基本都選預設就好,不斷按Enter直到流程結束。
安裝PHP-FPM
sudo apt-get install php-fpm php-mysql
更改Nginx設定讓Nginx和PHP-FPM連動。
sudo vim /etc/nginx/sites-available/default
修改以下原本是註解的部分(3+1行)。
記得下括號也要拿掉註解,不然會大爆炸。
重新啟動Nginx。
sudo service nginx restart
測試PHP是否正常運作,建立一個PHP頁面然後用瀏覽器嘗試瀏覽該頁面。
sudo echo "<?php phpinfo(); ?>" > /var/www/html/infopage.php
看的到PHP資訊頁面代表成功了。
建立WordPress用的資料庫
現在我們把地基都打好了,終於能來開始建立WordPress的資料庫了!首先以root登入MariaDB,輸入安裝時設定的密碼。
sudo mysql -u root -p
接著設定用戶、創建資料庫、給予用戶權限、刷新權限,以上四個步驟四行完成。
MariaDB [(none)]> CREATE USER `wpuser`@`localhost` IDENTIFIED BY `wppassword`;
MariaDB [(none)]> CREATE DATABASE wp_database;
MariaDB [(none)]> GRANT ALL ON `wp_database`.* TO `wpuser`@`localhost`;
MariaDB [(none)]> FLUSH PRIVILEGES;
確認權限是否設定正確
MariaDB [(none)]> SELECT User, Db, Host from mysql.db;
MariaDB [(none)]> show grants for `wpuser`@`localhost`;
離開MariaDB
MariaDB [(none)]> exit;
安裝WordPress
進入主機上你想下載WordPress的任意位置,用wget下載最新的WordPress,這個網址應該是不會變動。
wget https://wordpress.org/latest.tar.gz
解壓縮安裝檔案。
tar xpf latest.tar.gz
將解壓縮的wordpress資料夾整個複製取代掉/var/www/html。
sudo rm -rf /var/www/html
sudo cp -r wordpress /var/www/html
更改網頁資料夾擁有者為用戶www-data,以及更改檔案權限:資料夾為755,檔案為644。
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
修改Nginx的設定檔,讓index.php會成為首頁。
sudo vim /etc/nginx/sites/available/default
index欄位新增index.php。
重新啟動Nginx。
sudo service nginx restart
接著開啟瀏覽器,連到自己的網域後,出現WordPress安裝畫面,代表成功了!
在安裝畫面選擇語言後,輸入MariaDB中建立的WordPress資料庫的資訊。
大功告成!我們可以開始玩WordPress了!
WordPress我也還是新手,可以玩的東西太多了,希望走到這步的人可以玩得愉快~
附錄1:使用https連線
把你的連線從http變成https
這次我們使用Let’s Encrypt的免費憑證,一切操作在主機上就能進行。
首先安裝certbot
sudo apt-get install python-certbot-nginx
產生憑證,逐次輸入你要認證的網域。
sudo certbot --nginx -d %yourdomain.com% -d %www.yourdomain.com%
安裝時這裡選擇2,強制使用https。
設定完後它會自動幫你更改Nginx的設定,之後開啟瀏覽器測試網站是https就完成囉!
附錄2:Nginx上才有的永久連結顯示404問題
第一次新增此文章時發現顯示404錯誤。查了一下發現是Nginx的問題。由於WordPress不會直接修改Nginx的內容設定,我們必須手動更改Nginx的設定檔以解決此問題
sudo vim /etc/nginx/sites-available/default
修改location / 的欄位中的tryfile。在讓Nginx尋找網頁時會多尋找index.php?$args這項規則。修改後應該要後長這樣。
location / {
try_files $uri $uri/ /index.php?$args =404;
}
修改後重啟Nginx,文章的連結就可以正常使用了。