一直在思索到底要一篇打完,還是說要分成幾篇,最後還是選擇前者,因為懶得分開修改哈哈,相信也有人想一次看完不想分開。
Part 1 – GCP Server (Google)
Part 1 這部分主要是參照這份筆記(超連結!),GCP 在新用戶享有 3 個月有 $300 的試用,該連結分享是教大家如果已經過了試用期還能享有免費 GCP 的使用,那到目前為止都還是能夠享有免費的!下面是我 1 個月使用的帳單。

會是先計價完才做費用折抵。

建立 VM 的部分可以查看那份筆記分享!這邊就不多做贅述,那每次要下指令都要到登入 google 進到 GCP 開啟 CLI 介面才能嗎?完全不用!
Windows 的話開啟 CMD,MacOS/Linux 開啟 Terminal,執行以下指令,並一路 enter 跳過。
ssh-keygen -t rsa
接著進到 .ssh 資料夾,應該會是在家目錄的下方,執行時會顯示存放路徑。會發現 id_rsa.pub 公鑰,等等要放上 GCP;id_rsa 私鑰,要自己保存好,但通常也不會去動它。
然後查看 id_rsa.pub 並從 ssh-rsa 反白到底複製起來。
cat id_rsa.pub
接著在 GCP 左方選單的最下面 > 中繼資料 > 安全殼層金鑰 > 新增項目。

將剛剛複製的公鑰貼上並儲存。

然後在 CMD 或 Terminal ssh GCP 外部 IP 就能連上了!btw 這個外部 IP 後面設定 Cloudflare DNS 還會用到 ~


之後就能直接透過 ssh 來操作你的 Server 啦,是不是很方便!
那麼第一部分就結束了,讓我們來進到第二部分。
Part 2 – LAMP (WordPress)
Part 3 – Domain Name (Cloudflare)
Part 3 這部分我是直接選擇在 Cloudflare 購買我的 domain name,要在其他地方購買也可以的。
登入後可以直接在左邊選單 > 網域註冊 > 註冊網域,選擇你想要的 domain name 做購買,便宜跟貴的都有,以我的 luckyfish.app 為例,一年只要 $14.2 大概 NT$450,如果只是像我弄個小網站或者開發,應該還是負擔得起的,以下就省略購買過程。

購買後在左邊選單 > 網域註冊 > 管理網域,在你購買的網域清單,點擊管理

右邊選單 > 快速動作 > 更新 DNS 設定

接下來要設定 DNS 紀錄跟 server,大家才能使用你的網址照訪你的網站。
首先設定 DNS,這邊我已經有新增三個紀錄,基本上就是點擊 “新增紀錄” 做新增動作,Proxy 狀態都選擇開啟,比較安全,註解可以不設定。

第一種,這邊以我 luckyfish.app 做舉例,若想要網站為 luckyfish.app 作為網址,類型選擇 A,名稱設定為 @,填上前面有提到的 GCP Server 外部 IP(也就是 SSH 作連線的 IP),儲存後就設定完成了!

第二種,接下來你希望有人輸入 www.luckyfish.app 也能連到 luckyfish.app 的話,”再” 新增一個紀錄,類型選擇 CNAME,名稱設定為 www,目標設定為 luckyfish.app,那麼只要輸入 www.luckyfish.app 也能連到 luckyfish.app 這個網站啦!

第三種就是你希望購買的域名不只有一個網站,像是作為 api、dev 等等,稱為子域名。”再” 新增一個紀錄,類型一樣選擇 A,名稱設定為 api、dev 等等,填上 GCP Server 外部 IP 一樣不更動,儲存後就完成了。
像這邊我設定了一個 dev.luckyfish.app 供自己做開發使用,只是我有用 403 擋下來。

DNS 的設定完成了,接下來就是 Server 的部分,Server 的部分很簡單,只需要修改設定檔內的網址,並重新啟動就完成了。
設定檔的路徑為 /etc/apache2/sites-available,選擇你前面所設定的設定檔,基本依照下面檔案更改 domain name 即可。
# 80 → 全站改用 HTTPS + 收 www
<VirtualHost *:80>
ServerName luckyfish.app
ServerAlias www.luckyfish.app
Redirect permanent / https://luckyfish.app/
</VirtualHost>
# 443 正站(luckyfish.app)
<VirtualHost *:443>
ServerName luckyfish.app
DocumentRoot /var/www/html/wordpress
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/public.pem
SSLCertificateKeyFile /etc/apache2/ssl/private.key
<Directory /var/www/html/wordpress>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/luckyfish_error.log
CustomLog ${APACHE_LOG_DIR}/luckyfish_access.log combined
</VirtualHost>
# 443 的 www → 301 到 apex(保險作法)
<VirtualHost *:443>
ServerName www.luckyfish.app
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/public.pem
SSLCertificateKeyFile /etc/apache2/ssl/private.key
Redirect permanent / https://luckyfish.app/
</VirtualHost>
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
最後重新載入 apache2,就完成了!
sudo systemctl reload apache2