回到文章列表

架站基本觀念: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

  • 其實我有一點懶,只想記錄個基本的伺服器部署觀念就好:

    ❗ unsupported type: quote

    就差不多了,其他的進一步觀念、安全性等等設定,可以再自行看文件研究,結束,謝謝大家。 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。

    ❗ 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。
  • 新增 configuration 檔案:路徑是 /etc/apache2/sites-available/yourdomain.com.conf
  • 設定 configuration 檔案:設定 DocumentRootServerAdminServerNameServerAlias
  • enable yourdomain.com.conf 檔案並重啟 Apache。
  • ❗ unsupported type: quote

    安裝 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 可以幫我們自動更新。
  • ❗ unsupported type: quote

    安裝 phpMyAdmin

    phpMyAdmin 讓我們可以透過網頁介面更方便操作 MySQL。 而 phpMyAdmin 很常成為攻擊的目標,盡量不要透過 HTTP 來連線,確保安裝好 SSL/TLS 憑證之後再來安裝 phpMyAdmin。

    ❗ unsupported type: quote

    參考資料:

  • 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