架站基本觀念:AWS EC2 + Linux, Apache, MySQL, PHP (LAMP) + phpMyAdmin + SSL 憑證 + 設置 Virtual Hosts
TWGD / 2019-01-19
前言:
之前已經部署過一次 AWS EC2,用的是 Amazon Linux 2 ( Amazon 自己家改過的 Linux ),但怕之後不在 Amazon 部署的話就不會裝其他 Linux,也想說可以自己練習寫個 api 來串,乾脆就再來部署一台吧 ~ (不過都是用 AWS EC2,我要記得不要兩台都開著,免得超過免費額度 XD )
版本:
- Ubuntu 18.04
其實我有一點懶,只想記錄個基本的伺服器部署觀念就好:
大概就是: 買好主機 -> 安裝 web server (Apache, PHP) 、database (MySQL) -> 再加個 phpMyAdmin
就差不多了,其他的進一步觀念、安全性等等設定,可以再自行看文件研究,結束,謝謝大家。 XDDD 開玩笑的,還是再多記錄一下好了。
首先,要買好主機
這邊要買的是 VPS,有獨立 IP、獨立作業系統…。 反正貨比三家後挑自己開心的就好,我是因為 AWS EC2 有第一年的免費額度,所以就先用用看吧。
選好主機商之後,我認為最重要的就是去瀏覽官方文件 ( 官方文件都有詳細的做法說明 ): AWS EC2 Linux 執行個體使用者指南
這個階段主要是做幾件事情:
- 建立跟啟動機器:例如:選擇建立 Ubuntu 18.04 & 其他設定
- 知道如何連接到機器:例如:用 SSH 連到機器
- 記下 IP 位置
Domain 也先買好吧
網域也是到網域商 ( 例如:Gandi、Namecheap、GoDaddy ) 挑個順眼喜歡的下手就好。 ( 不過選擇障礙如我,這種小事倒是常常挑很久XD )
DNS (Domain Name System) 對應:
買好主機跟 Domain 之後,就可以先把 Domain 跟 IP 位置給對應起來了。
網域商通常就有提供 DNS 託管,不過我是另外移到 Cloudflare,一起用它們的 DNS 跟 CDN 服務。
安裝 LAMP
LAMP 就是 Linux, Apache, MySQL, PHP 的簡稱:
通常要部署一台可以運行『動態網站』的機器,需要有:『作業系統、伺服器、後端語言、資料庫』,而 LAMP 是最常一起被安裝的組合。
前面已經先買好主機跟安裝好作業系統了 ( Linux 的 Ubuntu 18.04 ),剩下的就是安裝: 『伺服器 <–> 後端語言 <–> 資料庫』
在安裝之前,記得先升級一下系統。
安裝 web 伺服器:Apache
為什麼需要安裝 web 伺服器?因為要有一個伺服器來處理 Request 跟 Response。 其他 web 伺服器還有:Nginx 等等。
安裝資料庫:MySQL
有了web 伺服器處理 Request 跟 Response 之後,還要有『資料庫』可以儲存資料。 其他資料庫還有:MariaDB、PostgreSQL、MongoDB、Redis (NoSQL) 等等。
安裝後端語言:PHP
而 web 伺服器與資料庫怎麼溝通呢? 需要有後端程式語言來處理程式碼、連接資料庫取得資料、返回資料。 例如:Apache 呼叫 php 處理 Request 並且回傳 Response。
詳細的安裝過程我覺得 DigitalOcean 寫得好清楚,直接參考它們的 教學 就可以了。
有多個網域想要部署在這台 server 怎麼辦?
通常我們之後可能會有多個網域,如果這台 server 只讓一個網域使用,那真是太不方便 ( 划算XD ) 了。 以 Apache 為例,支援 virtual hosts,讓我們可以配置不只一個 domain 在主機上。
配置 Virtual Hosts
我們知道預設的網站根目錄是 /var/www/html,要配置 Virtual Hosts 大概有幾個步驟:
- 新增一個在
/var/www底下的路徑給 yourdomain.com 使用:/var/www/yourdomain.com/html - 設定
/var/www/yourdomain.com資料夾權限 755。 - 新增 configuration 檔案:路徑是
/etc/apache2/sites-available/yourdomain.com.conf - 設定 configuration 檔案:設定
DocumentRoot、ServerAdmin、ServerName、ServerAlias。 - enable
yourdomain.com.conf檔案並重啟 Apache。
詳細的過程 DigitalOcean 的 教學 寫得非常清楚。
安裝 SSL/TLS 憑證,透過 HTTPS 連線到網站
透過 HTTPS 連線的網站,瀏覽器會顯示為安全連線 ( 例如:Google Chrome 網址列的綠色鎖頭 ),代表這個網站建立的是安全連線、資料有經過加密處理、不易被非法竊取。而且搜索引擎會將 HTTPS 網站的搜索結果放在更前面的位置。
如何安裝 Let’s Encrypt 免費的 SSL/TLS 憑證
步驟如下:
- 安裝 Certbot 套件。
- 防火牆記得允許 HTTPS。
- 利用 Certbot 下載及安裝憑證:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com - 確認一下 Certbot 的自動更新憑證:
sudo certbot renew --dry-run因為 Let’s Encrypt 憑證的期限是 90 天,需要定期更新,而 Certbot 可以幫我們自動更新。
詳細的過程 DigitalOcean 的 教學 寫得非常清楚。
安裝 phpMyAdmin
phpMyAdmin 讓我們可以透過網頁介面更方便操作 MySQL。 而 phpMyAdmin 很常成為攻擊的目標,盡量不要透過 HTTP 來連線,確保安裝好 SSL/TLS 憑證之後再來安裝 phpMyAdmin。
安裝 phpMyAdmin 並強化安全性的過程 DigitalOcean 的 教學 寫得非常清楚。
參考資料:
- https://help.ubuntu.com/lts/serverguide/index.html
- https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04
- https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04#step-5-—-setting-up-virtual-hosts-(recommended)
- https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04
- https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-18-04