AWS: EC2 part 2

今晚,我要來點網站!

AWS EC2: 架站

既然 EC2 是雲端板虛擬機,那架站就和在虛擬機一樣裝 XAMP 就是了。Amazon Linux 是 RPM 系的,所以安裝步驟大略上與 RHEL, Fedora 大同小異: yumDNF 啥的黃狗狗

$ sudo dnf update
$ sudo dnf install httpd php php-mysqli mariadb105

然後設定權限:

$ sudo usermod -a -G apache ec2-user
$ exit # 出去後再登入才能反應變更
$ groups # 應該有 ec2-user adm wheel apache systemd-journal 之類的

最後開啟 apache:

$ systemctl start httpd
$ systemctl enable httpd

疑難排解:防火牆

你可能發現 http 連不了。這可能是因為 AWS 防火牆擋住了。這時候要在 AWS 設定安全群組 (security group)放行 22(SSH), 80(HTTP), 443(HTTPS) port 就可以了。去 AWS 的 VPC security group 設定吧。

疑難排解:HTTPS憑證

AWS 本身沒有直接實裝 https 憑證,所以放行 443 port 不會直接連成。還需要憑證才可以。如果沒錢可以用 Let's Encrypt 服務簽發憑證。一般來說會用到 Certbot ACME 來完成簽發。

$ sudo dnf install certbot python3-certbot-apache
$ sudo certbot --apache --agree-tos --email {電子郵件}
$ sudo certbot --apache -n -d {註冊網域} -cert-name {註冊網域}

如果沒有同意授權條款,或沒提供電子郵件,會收到 You should register before running non-interactively, or provide --agree-tos and --email <email_address> flags.

Let's Encrypt 不接受使用 AWS 網域簽發憑證。如果試圖用 AWS 網域憑證,會收到 Error creating new order :: Cannot issue for "**.**.amazonaws.com": The ACME server refuses to issue a certificate for this domain name, because it is forbidden by policy 訊息。

好……我免費仔,所以做完對外連線,我就要結束我的 EC2 了。

疑難排解:Access-Control-Allow-Origin

AWS 官方支援 Access-Control-Allow-Origin header,但需要設定,所以我決定不幹。就這樣。

結語

EC2 講完了就趕緊 terminate 吧。那需要錢啊。

參考資料