用了 6 年的 Sakura Server,由於發生一些問題只好為網站找新家,看來看去套裝的 Web Server 都價格不菲,只好花時間自己安裝及配置網頁環境,再移轉 WordPress 到新的 Server。
Web Server
至於為何選用 Linode 則是因為他有最划算的入門方案:Nanode 1GB,配置如下。
月費 | RAM | CPUs | Storage |
$5美金 | 1GB | 1 | 25GB |
Image 的部分多年前開過一個 CentOS 7 感覺頗穩定,於是沒想太多就選了新版的 CentOS 8(簡直挖坑自己跳)。
Region 地區就選離台灣最近的日本伺服器 Tokyo 2。
Installation of Web Server
伺服器跑起來之後就SSH進去開始安裝網站環境啦~我選用的是:NGINX + PHP-FPM + MySQL 組合,想當初開始學網頁的時候自己電腦裝的是 Apache + PHP + MySQL 的組合,但因為 Apache 設定檔太複雜,之後都改用 NGINX。
裝都很簡單,就是跟著文章敲敲指令。但這邊先名詞解釋一下
第一個雷:SELinux,這好像是新版 Linux 新增的功能,提供「更」安全的伺服器機制,其實我還沒搞懂但總之看到這個詞要特別注意,一定要安裝所需相關 Package。
第二個名詞:dnf
,就把他當成 yum
即可,相當於 Debian 中的 apt-get
,相當於 Python 中的 pip
,即 Package 管理程式。
好了,可以開始安裝網站環境了。
1. NGINX
How to Install NGINX on CentOS 8 (希望這篇文章可以長長久久)
安裝完要記得看一下 /etc/nginx/nginx.conf
中設定的 user 名稱,後面在設定 PHP 的時候記得寫同個人才不會遇到一些權限 Permission 的問題。
為了之後串接 PHP-FPM,需要確保你 NGINX 的 conf 設定中包含:
location ~* \.php$ {
#...
fastcgi_pass unix:/run/php-fpm/www.sock;
}
防火牆那個步驟一定要啟用 http 和 https,否則 NGINX 啟動之後使用者(沒錯就是你)也連不進去。
其他問題:
- [日常問題] 解决 Nginx -s reload 時 炸出 /var/run/nginx.pid failed 的問題
- 突然無法重啟nginx – nginx:[emerg] open()”/usr/share/nginx/on”
- Why does Nginx return a 403 even though all permissions are set properly?
2. PHP-FPM
How to Install and Configure FastCGI and PHP-FPM on CentOS 8
本次使用 NGINX 所以《Configure Apache with PHP-FPM》這段可以跳過不用看,最後一段《Configuring PHP Pools》中遇到設定檔時 user 和 group 都請寫步驟 1 中 NGINX 的設定值。
3. MySQL
How to Install MySQL on CentOS 7
《Harden MySQL Server》那段在執行 sudo mysql_secure_installation
時建議選擇 MySQL Password Policy=LOW 選項,否則你設定的密碼很容易被視為不安全就無法下一步。如果不幸選錯了,就只能先設定困難密碼之後再修改。
Adminer – Database管理工具
應該比較有名的是 PhpMyAdmin,但他太肥了所以我都用 Adminer,下載完2個檔案(adminer.php
+ admirer.css
)就 OK,功能幾乎一樣,上傳到網頁根目錄就可以用了。
如果遇到「缺少 mysqli⋯擴充套件」的問題:
$ yum install php-mysqli
如果重複遇到「您的 Session 過期」問題:
$ chown -R nginx:nginx /var/lib/php
為求迅速及方便,可以先用 root
登入之後再慢慢新增使用者就好~
SFTP
你不會想要用 vim
(Linux 內建的文字編輯器)敲完整個網站,所以需要安裝 SFTP,這樣就可以快樂的用 FileZilla 上傳/下載檔案。這邊提供 2 個安裝流程:
最後別忘記防火牆一定要設定允許 22/tcp
這個 SFTP 用的 Port!
Installation of WordPress
歡呼,我們的主角終於來了,這邊我就不再贅述 WordPress 的安裝方法,相信對於能夠走到這裡的人不過是裝個 WordPress 簡直小菜一碟、一塊蛋糕。
不過這次 MySQL 的 Host 欄位,localhost
似乎在前面步驟被鎖了,只好改填 /var/lib/mysql/mysql.sock
即可。
我因為是搬家所以有用到 WordPress 的外掛 Duplicator,搬家過程相當輕鬆愉快⋯⋯才有鬼。
Error Handle
如果遇到 In PHP 7.0 Fatal error: Uncaught Error: Call to undefined function json_encode()。
$ yum install php-json
如果遇到 Fatal error: Call to undefined function mb_strtolower()。
$ yum install php-mbstring
如果遇到PHP Short Tag語法<??>
問題,開啟 /etc/php.ini
,找到 short_open_tag
並改成 On
。
short_open_tag = On
改完要記得重啓 PHP-FPM:
$ sudo systemctl restart php-fpm
遇到 WordPress 媒體庫當掉,安裝了外掛 Media Library Recovery 修復。
遇到缺乏 imagick 或 gd 無法生成圖片縮圖之類的問題:
$ dnf install php-gd
請勿安裝不支援 CentOS 8 的 imagick
,絕對是自找麻煩。
如果還有其他PHP-FPM相關問題,可以參考CentOS 8 安裝與設定 LEMP (NGINX、MariaDB、PHP) 和 phpMyAdmin《故障排除》段落。
Finally…
寫到這邊,網站搬家也總算是告一個段落,能夠重新看到後台的登入畫面頗感動。對於那些有需要自幹伺服器的人,希望本篇對你、對未來的我都有些小小的幫助,不要再踩自己踩過的雷。
搞定!