除了幾年前在當 intern 時,因為沒有環境可以架站,所以用了幾年的 virtual private server (VPS),後來開始工作,家裡有網路後,又在家裡弄了台主機。
前幾年去參加 MOPCON 時,知道了雲高這個機房在高雄的公司,雖然很想支持台灣在地企業,但自己用不到那個量,價格也稍高了些(300 NTD/month)。後來 Amazon 推出 Lightsail 攪亂一池 VPS 春水後,又再度升起想搬家的念頭,而臨門一腳的是看到一位醫學資料處理高手 Gbanyan 的轉 GCP 心得,便開始 survey 一些可行的方案。
選擇
Service | Price | Memory | CPU | SSD | Network |
---|---|---|---|---|---|
Amazon Lightsail | $5 | 512 MB | 1 core | 20 GB | 1 TB |
Scaleway | €2.99 | 2 GB | 2 cores | 50 GB | Unmetered |
Vultr | $2.5 | 512 MB | 1 core | 20 GB | 500 GB |
Linode | $5 | 1 GB | 1 core | 20 GB | 1 TB |
Google Cloud Platform 的價錢計算比較複雜一些,除了 CPU 和 memory 是定額的之外,SSD, network 都是以量計價,如果是以上列最差的規格來算,當然是不划算的,不過以我的用量,加上 GCP 最近更加碼推出了 Always Free 的方案,算起來就是最便宜的了(f1-micro, 3 GB SSD, 5 GB network 大概差不多 1 USD/month),不過這是在我已經搬完家的事了。
我最大的考量是網路的速度,理論上在台灣有機房的 GCP 應該是最快的,次之就是考慮東京有機房的 (ping 值約 45 ms),例如 Vultr, Linode,再來美國西岸矽谷或洛杉磯 (ping 值約 140 ms),新加坡雖然平均快一些 (120 ms 上下),但總覺得不太穩定,沒什麼信心。
一些公司有提供 speedtest 可以測試:
綜合考量下,我選的是 Linode 東京機房 (Tokyo 2, Japan)
安裝
- 開 Tokyo 2 機器
- 裝 OS,我習慣用的是 Ubuntu 16.04 LTS
- 設定 FQDN
- 除了 domain name -> IP 正解外,也可以把 IP -> domain name 的反解設上,變成 FQDN,設定在
Remote Access
»Reverse DNS
裡。
- 除了 domain name -> IP 正解外,也可以把 IP -> domain name 的反解設上,變成 FQDN,設定在
- 開新 user、設定 SSH
- 可以參考官方文件 Securing Your Server
- 裡面比較有趣的是可以搭配 Fail2Ban 來封鎖失敗的 login,官方文件可參考 Securing Your Server with Fail2ban
- 裝 LAMP
- 設定 Lets encrypt、設定 HTTPS
- 設定 HTTP2
- 雖然 Ubuntu 16.04 LTS 內的 Apache2 是 2.4.18, 理論上有支援 HTTP2 (只要 > 2.4.17 就有內建),但目前還被歸在 experimental,所以沒有被包進 binary package 裡,有兩個方法可以啟用,一個是拿 source 來重編,另一個是用個人包好的 PPA, 例如 Ondřej Surý 的,第二個方法比較簡單一些,也有不少人採用,應該是沒什麼問題才是:
sudo add-apt-repository ppa:ondrej/apache2 sudo apt-get update sudo apt-get install apache2 sudo a2enmod http2
在 <VirtualHost>
conf 裡加上
Protocols h2 http/1.1
可以用線上驗證工具 (例如 https://tools.keycdn.com/http2-test) 測試是不是已開啟 HTTP/2 支援。
Blog 搬家的部份沒有什麼太大的問題,把 WordPress 的檔案 copy 過去,mysql 資料 import 進去,DNS 設好就 OK 了。
目前用了一個多禮拜來,覺得還 OK,速度雖然沒有到秒開的狀態,但還是比原本放在家裡的 NAS 上很有感的升級,有一些小細節可能還要微調,不過大致上是這樣了。