部署 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin

在跟著學長姐的紀錄部署完主機之後,想寫一篇文鞭策自己了解每一步都在做什麼而非傻傻跟著做,於是就有這篇文的誕生

楊智堯 ( Kevin Yang )
凱文的日常點滴

--

這是 Huli 程式導師計畫第十四周的作業,以下會就邊操作邊出現的問題來個自問自答,如果是單純想要 Step by Step 操作的話請參考以下兩篇文
>文字版:部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin
>圖文版:部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin
每個問題參考來源連結附在問題上或更多來源連結

一、AWS EC2 雲端主機

Step 1:註冊完 AWS 帳號之後進入主控台,點選啟動虛擬機器(使用 EC2)

問題:EC2 是什麼?為什麼要選擇 EC2?

instance 在 EC2中也就是我們的機器規格, 應該可以算是機器本身吧!

AMI 就是一種虛擬電腦使用特殊事先設定好的虛擬作業系統和虛擬應用程式, AMI 特別被使用在 EC2 之中

Amazon EC2 也就是一個虛擬的電腦, 要控制他必須使用他提供的 web service interface 也就是 Amazon ,這也是它的優點之一

Step2:AMI 選擇「Ubuntu Server 18.04 LTS (HVM), SSD Volume Typ」

問題:Ubuntu 是什麼?

Ubuntu 是以桌面應用為主的 Linux發行版,也是目前最多使用者的 Linux 版本。

備註:Linux發行版 為一般使用者預先整合好的 Linux作業系統 及各種應用軟體。

Step3:選綠色免費的那個

Step4:一直按右下角 Next 直到第六步,按 Add Rule 加入 HTTP/HTTPS,允許連線來源後,按到最後點選 Launch

Step5:選擇「create a new key pair」,底下的名稱隨意輸入,按下「Download Key Pair」下載下來的檔案要保存起來

下載好之後就可以按「 Launch Instances」來啟動設置

問題:key-pair 是什麼?用來幹嘛的?

金鑰對 (由私密金鑰和公開金鑰組成) 是一組安全性登入資料,您可以在連線至執行個體時用來證明身份。Amazon EC2 儲存公開金鑰,並儲存私密金鑰。您可以使用私密金鑰 (, 而非密碼 ) 來安全地存取執行個體。任何擁有您私密金鑰的人都可以連線到您的執行個體,因此請務必將私密金鑰存放在安全的位置。

> 所以我們下載的那個檔案是私密金鑰

Step6:看到自己 IPv4 複製起來

二、安裝 Lamp server

問題: Lamp server 是什麼?

LAMP 是 Linux 系統上的開源架站組合,從名稱來看,「L」表示「Linux」作業系統,「A」表示「Apache」網頁伺服器,「M」表示「MySQL」資料庫,「P」表示「PHP」程式語言

Step1:ssh 連線到遠端主機

$ ssh -i 下載的金鑰檔案的路徑 ubuntu@IPv4
舉例: ex ssh -i ~/Documents/key.pem ubuntu@123.123.11.22

問題一、ssh 是什麼?

SSH 是 Secure SHell protocol 的簡寫 (安全的殼程式協定),它可以透過資料封包加密技術,將等待傳輸的封包加密後再傳輸到網路上

Step2:更新 ubuntu 的系統

$ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade

問題一、Sudo 是什麼?

Sudosubstitute user)是 Unix/Linux 平臺上的一個非常有用的工具,它允許系統管理員分配給一般用戶合理的權限,讓他們執行一些只有系統管理員或其他特定帳號才能完成的任務,不僅減少了 root 使用者的登錄次數和管理時間,也提高了系統安全性。

問題二、這些指令都在做什麼?

apt update :更新軟體的最新資訊及列表

apt upgrade:更新目前已安裝的軟體到最新版本

apt dist-upgrade:跟上面的 upgrade 很像,差異是 dist-upgrade 如果有相依性問題, 需要 安裝/移除 新的 Package,就會試著去 安裝/移除

問題三、apt 跟 apt-get 差異?

apt 是 Ubuntu 管理套件的程式,apt命令的引入就是為了解決命令過於分散的問題,它包括了apt-get命令出現以來使用最廣泛的功能選項,以及apt-cacheapt-config命令中很少用到的功能。

簡單來說就是:apt = apt-get、apt-cache 和apt-config 中最常用命令選項的集合。

問題四、為什麼一開始就要更新?

Ubuntu 安裝完畢之後,必須進行更新,以獲得最新的軟體與系統程式,平常也要經常更新,以保持系統在最穩定、最安全的狀態。

問題五:為什麼是 $ 字號開頭?

錢字號($)代表此行為 command line 開始

Step3:安裝 tasksel

$ sudo apt install tasksel

問題、Taskel 是什麼?

tasksel 是一款可以讓我們快速安裝 DNS serverlamp,等等應用的軟體包,所以

這個軟體在 server 版是預裝的,而在桌面版裡是不預裝的,桌面版必須要一下子面指令先安裝後,才可以使用

Step4:用 Tasksel 下載 lamp-server

$ sudo tasksel install lamp-server

到這邊基本上已經把網站架好,只是有個圖形化介面去操作資料庫總是比較方便,於是才要安裝 phpMyAdmin

三、設定 phpmyadmin

Step1:下載 phpmyadmin

$ sudo apt install phpmyadmin

Step2:連結 apache2(要按空白鍵,有顯示*字號)

Step 3:設定密碼(設定完成後,按下方向鍵,OK 字樣會反紅,就可以按 Enter 繼續)

備註:這個密碼是在 mysql 新增一個使用者來管理 phpmyadmin 專用的管理帳號,並不是 mysql 的帳號密碼

Step 4:改變 phpmyadmin 登入的設定,改成可以用密碼登入

進入 sql
$ sudo mysql -u root mysql
輸入
$ UPDATE user SET plugin='mysql_native_password' WHERE User='root';
//為了提供更安全的密碼加密,MySQL8.0 的首選默認認證插件是 caching_sha2_password,而不是 mysql_native_password
輸入
$ FLUSH PRIVILEGES; // 刷新 MySQL 的系統權限相關表
離開 sql 指令
$ exit

Step 5:設定 root 的密碼

$ sudo mysql_secure_installation

Step 6:就可以在瀏覽器輸入自己的 IPv4/phpmyadmin 就看到登入畫面了

帳號:root
密碼:步驟 5設定的那組

Step 7 :放自己的檔案,結束後大功告成

進到 /var/www/html
$ cd /var/www/html
改變權限
$ sudo chown ubuntu /var/www/html
從 github 上複製檔案
$ git clone 網址

架設後心得

真的是很感謝有前人的支援才不用從零開始。可是想想之後好險自己還是有碰到坑,在第一次架站的時候遇到問題,多學了一對重設或刪掉再次安裝的指令。雖然最後還是無疾而終只好再重開一台 EC2,相對於第二次的順利,回頭看發現自己真的完全不知道自己在幹嘛反正就跟著照做。

打完這篇文章算是理解自己每一行的邏輯跟緣由,終於可以開心的把第十四周給 PASS 了哈哈~

--

--

楊智堯 ( Kevin Yang )
凱文的日常點滴

從電商及科技業務跳船的資訊研究生|期許在不同領域激起的浪花點綴成最美的一副人生圖。嘗試讓文字承載一些能量, 讓這世界或自己都因分享而更加勇敢。LinkedIn: https://www.linkedin.com/in/yangchihyao/