Photo by Solen Feyissa on Unsplash
Google 的 Google Cloud Platform (GCP) 的免費主機方案 f1-mirco 方案,在免費期間或試用期結束後,只要不超過指定用量限制,都可以永久免費使用 GCP 指定的服務項目。
利用這個免費方案架設小型個人部落格,只要流量控制好,若不花錢可能不容易,但可以花費很少的支出就可以用到 GCP 這個高富帥產品。
另外,免費方案雖然不可以使用台灣的節點,選擇美西的節點 (us-west1-a),與其他的 VPS 託管商機房比較,google 的網路速度還是最快的,可參考下圖測試。
既然 google 推出這麼好的方案,就要能看得到也能吃得到,試試折騰一台主機,一個月會花費多少網路費用。免費方案的規定如下圖:
內容目錄:
- 建立執行個體
- 開啟 TCP BBR
- 設置 SWAP 交換分區
- 安裝 Nginx + php7.0 + MySQL5.6
- 安裝 WordPress
每月一個 f1-mirco 執行個體 (1 個共用 vCPU 0.6 GB 記憶體)、30GB 硬碟、5GB 快照備份空間、1GB 網路流量。
以這樣的規格來看,不要使用爆表而被強迫升級的話,有幾點要注意:
- 不能安裝控制面板的程序
- 選擇使用 CentOS 6 系統
- 設置 SWAP 交換分區
- 不能使用快照備份空間
使用教學 (以 Google Compute Engine 來做說明):
建立執行個體
- 區域:us-west1-a (美西結點)
- 機器類型:微型 (1 個共用 vCPU 0.6G)
- 開機磁碟:CentOS 6 / 20 GB 標準永久磁碟
- 身分及 API 存取權:允許所有 Cloud API 的完整存取權
- 防火牆:允許 HTTP / HTTPS 流量都打勾
點取「建立」,等待幾分鐘製作系統。
建立好 VM 後,別忘了去「VPC 網路」選項,改為靜態 IP。
GCP 防火牆設置:打開 21 端口
好了之後,點取 SSH (再瀏覽器中直接開啟),因為要方便使用,直接修改 sshd_config 文件,用 root 登入。
sudo su - # 更改為 root 權限
passwd root # 設置 root 密碼
修改權限以 root 登入
vi /etc/ssh/sshd_config
PermitRootLogin yes # 改為 yes
PasswordAuthentication yes # 改為 yes
service sshd restart # 重啟 sshd
修改權限後,就可以用 PuTTY 或 Xshell 5 登入你的主機。
開啟 TCP BBR
這是 google 提出的 tcp 擁塞控制算法,既然是用 google 自家的產品,當然就開啟 BBR。
詳細開啟的方法,可以參考我這一篇 – 開啟 TCP BBR 擁塞控制算法為 VPS 網路加速
https://yungke.me/tcp-bbr-vps-network-speed/
設置 SWAP 交換分區
SWAP 交換分區對小記憶體的主機很重要,安裝系統能不能順利完成,以後使用當中可以弭補一下記憶體的不足。
可以參考我之前寫的 – 如何在 Vultr 中添加 SWAP 交換分區
https://yungke.me/how-vultr-swap
SWAP 開個 512MB 就夠了,不需要太多,如果你連 512MB 都不夠用,就要考續升級到 1.7G 方案,就不要在 0.6G 方案中硬撐了。
安裝 Nginx + php7.0 + MySQL5.6
小記憶體的主機,建議安裝 Nginx 系統,Apache 在小記憶體主機中,效能不會很好;資料庫安裝 MySQL5.6 就好,若要用 MySQL5.7 或 MariaDB-10.1,都需要至少 1G 的記憶體主機。
建議使用 OneinStack 安裝包或 lnmp.org 安裝包,這兩個系統安裝包都可以在小記憶體主機中順利安裝。
我以 OneinStack 做說明:
Please input SSH port(Default: 22): 21234
Do you want to enable iptables? [y/n]: n
Do you want to install Web server? [y/n]: y
Please select Nginx server:
1. Install Nginx
2. Install Tengine
3. Install OpenResty
4. Do not install
Please input a number:(Default 1 press Enter) 1
Please select Apache server:
1. Install Apache-2.4
2. Install Apache-2.2
3. Do not install
Please input a number:(Default 3 press Enter) 3
Please select tomcat server:
1. Install Tomcat-8
2. Install Tomcat-7
3. Install Tomcat-6
4. Do not install
Please input a number:(Default 4 press Enter) 4
Do you want to install Database? [y/n]: y
Please select a version of the Database:
1. Install MySQL-5.7
2. Install MySQL-5.6
3. Install MySQL-5.5
4. Install MariaDB-10.2
5. Install MariaDB-10.1
6. Install MariaDB-10.0
7. Install MariaDB-5.5
8. Install Percona-5.7
9. Install Percona-5.6
10. Install Percona-5.5
11. Install AliSQL-5.6
Please input a number:(Default 2 press Enter) 2
Please input the root password of database: 12345
Please choose installation of the database:
1. Install database from binary package.
2. Install database from source package.
Please input a number:(Default 1 press Enter) 1
Do you want to install PHP? [y/n]: y
Please select a version of the PHP:
1. Install php-5.3
2. Install php-5.4
3. Install php-5.5
4. Install php-5.6
5. Install php-7.0
6. Install php-7.1
Please input a number:(Default 4 press Enter) 5
Do you want to install opcode cache of the PHP? [y/n]: y
Please select a opcode cache of the PHP:
1. Install Zend OPcache
3. Install APCU
Please input a number:(Default 1 press Enter) 1
Do you want to install ionCube? [y/n]: n
Do you want to install ImageMagick or GraphicsMagick? [y/n]: n
Do you want to install Pure-FTPd? [y/n]: y
Do you want to install phpMyAdmin? [y/n]: y
Do you want to install redis? [y/n]: n
Do you want to install memcached? [y/n]: n
Do you want to install HHVM? [y/n]: n
說明:
- SSH port 22 端口改掉,1024 ~ 65535 之間的端口都可。
- 不安裝 iptables,因為 GCP 已經有防火牆配置了。
- 安裝 Nginx,不安裝 Apache、Tomcat
- 安裝 MySQL-5.6
- 安裝 opcode cache
- 安裝 Pure-FTPd 及 phpMyAdmin
- ionCube、ImageMagick、redis、memcached 都不要安裝,減少主機的記憶體負載。
最後 Enter 之後,就可以去喝杯咖啡,安裝過程 2.5H – 3H 之久,如圖:
如果有修改 SSH 端口,在回到 GCP 控制台 → 防火牆,將修改的端口加進去。
安裝 WordPress
安裝好系統後,開好虛擬主機後及建立資料庫後,可以利用 ssh 登入,以指令快速安裝 WordPress。
指令:
cd /data/wwwroot/example.com/
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* .
rm -rf wordpress
rm -rf latest.tar.gz
修改文件權限:
chown -R www.www /data/wwwroot/example.com/
結語
在小記憶體主機的調整中,my.cnf 文件可以修改 max_connections 最大連接數為 100,減少 MySQL 吃掉太多的記憶體。
Nginx php-fpm 的優化也不能省略,也以節省 CPU 及 RAM 使用為目的,以我的設置為參考:
pm = dynamic
pm.max_children = 9
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 9
pm.max_requests = 2048
pm.process_idle_timeout = 10s
request_terminate_timeout = 120
request_slowlog_timeout = 0
GCP f1-mirco 像這樣的配置,使用 WordPress 上,在後台寫文章或調整,都還是很順暢,安裝個 Performance Plugin 優化後,CPU 負載都不會太高。
以我這幾天測試下來,除了導入 xml 資料外會跳 502 外,安裝佈景、外掛及寫文章,都很正常,速度也不慢。以個人部落格來使用,流量也不多的話,一個月不會花到多少錢,就能用到 GCP VM 主機了。
探針:
如果您有更好的建議,歡迎回覆,大家一起研究。
測試網站:muzike.xyz
使用 CSSIgniter 主題,Cache Enabler + Optimus + Heartbeat Control 外掛,關閉 admin-ajax.php
2020/03/04 補充:
現在 VPS 主機都便宜了,隨便一個主機方案都有 1G 的記憶體,資料庫不太需要去調整,都可以應付大部分的網站,所以現在已很少有小記憶體的調校文章。
早期的 VPS 貴森森,很多大神用 64MB 或 128MB 記憶體就可以架起一台 VPS 主機,資料庫的 my.cnf 文件就得調整,不然一下子記憶體就要爆了。
64MB VPS 上優化 MySQL
發佈留言