架站基本觀念: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 )
版本:
其實我有一點懶,只想記錄個基本的伺服器部署觀念就好:
❗ unsupported type: quote就差不多了,其他的進一步觀念、安全性等等設定,可以再自行看文件研究,結束,謝謝大家。 XDDD 開玩笑的,還是再多記錄一下好了。
首先,要買好主機
這邊要買的是 VPS,有獨立 IP、獨立作業系統...。 反正貨比三家後挑自己開心的就好,我是因為 AWS EC2 有第一年的免費額度,所以就先用用看吧。
選好主機商之後,我認為最重要的就是去瀏覽官方文件 ( 官方文件都有詳細的做法說明 ): AWS EC2 Linux 執行個體使用者指南
這個階段主要是做幾件事情:
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。
❗ unsupported type: quote有多個網域想要部署在這台 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。/etc/apache2/sites-available/yourdomain.com.conf
DocumentRoot
、ServerAdmin
、ServerName
、ServerAlias
。yourdomain.com.conf
檔案並重啟 Apache。安裝 SSL/TLS 憑證,透過 HTTPS 連線到網站
透過 HTTPS 連線的網站,瀏覽器會顯示為安全連線 ( 例如:Google Chrome 網址列的綠色鎖頭 ),代表這個網站建立的是安全連線、資料有經過加密處理、不易被非法竊取。而且搜索引擎會將 HTTPS 網站的搜索結果放在更前面的位置。
如何安裝 Let's Encrypt 免費的 SSL/TLS 憑證
步驟如下:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
sudo certbot renew --dry-run
因為 Let's Encrypt 憑證的期限是 90 天,需要定期更新,而 Certbot 可以幫我們自動更新。安裝 phpMyAdmin
phpMyAdmin 讓我們可以透過網頁介面更方便操作 MySQL。 而 phpMyAdmin 很常成為攻擊的目標,盡量不要透過 HTTP 來連線,確保安裝好 SSL/TLS 憑證之後再來安裝 phpMyAdmin。
❗ unsupported type: quote