[ week14 ] 部署 AWS EC2 linux + LAMP Web Server +Sequel Pro +gandi


Posted by vick12052002 on 2020-10-08

這篇文章記錄部署主機,紀錄自己在部署網站時,遇到的一些問題、步驟

前提

爬文看到很多部署虛擬伺服器的心得是使用 AWS EC2 的「Ubuntu Server 18.04 LTS (HVM), SSD Volume Typ」伺服器,秉持著自己的實驗精神,加上沒想太多(也沒查太多),就直些選 Amazon Linux AMI,既然沒人紀錄過,那就自己來寫紀錄吧!

硬體設備:MAC

備註:
Ubuntu 是以桌面應用為主的 Linux 發行版,Ubuntu由Canonical公司發布。它是基於自由軟體,對於剛接觸 Linux 的新手來說是非常友善的環境。

建立 aws 帳號

點擊右上角,建立 aws 帳號
示範

建立帳戶
建立帳戶

驗證完帳號後,登入並回到首頁,選則 EC2 的服務
EC2示意圖

選擇主機的區域

調整右上主機位置(靠本地越近越快,所以我選 tokyo 的主機),轉換區域會收到電子郵件的認證,需要一點時間
tokyo 的主機

建立雲端 server

點擊 launch instance 建立新的個體
launch instance

選擇伺服器-選擇 「 Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type - ami-0b2c2a754d5b4da22 」
選擇伺服器-Amazon Linux AMI 2018.03.0 (HVM)

選擇 Type(伺服器規格)
因為是練習所以我們就選擇 free 的規格吧
Type

步驟三~五
因為沒有什麼特別要調整,所以直接下一步

設定安全群組(伺服器可對外開放的端口,非常重要!)
除本來的 SSH 的 port 22 外,在要新增 HTTP 與 HTTPS ,基本上選完 type ,就會直接更改成對應的 port
設定安全群組

最後確認沒問題,就建立完成
建立完成

選擇使用金鑰
可以選擇已擁有的金鑰或在新建立一組鑰匙
選擇使用金鑰
如果是建立一組新的鑰匙,就會需要你幫鑰匙命名並下載檔案
新的鑰匙

恭喜建立完成!

連線主機

以下步驟依照連線到您的執行個體

回到 EC2 的主控台,選擇左側 instance
instance

勾選剛剛建立的 server,在點擊右上 actiin ,選擇 connect
跳轉 connect 頁面

連線有好幾種方式,我們選擇用 SSH 金鑰的方式連線
首先,選擇 SSH client 分頁,在桌面上建立一個 remote 資料夾 ,並打開 Terminal

mkdir remote

將剛剛下載的鑰匙檔案移到 remote 的資料夾中

mv aws-key.pem remote

在 Terminal 上進入 remote 資料夾

cd remote

確認鑰匙移入到 remote 中

ls -al

連線說明

在 Terminal 輸入chmod 400 你的金鑰名稱
改變檔案權限權限( 400-file 只能讓 Owner 讀取),下次登入就不用再輸入這個指令

chmod 400 你的金鑰名稱

再輸入ssh -i "你的金鑰名稱" 使用者名稱@公開的DNS

ssh -i "你的金鑰名稱" 使用者名稱@公開的DNS

基本上就是複製他的example 貼到 Terminal 就可以如期登入到你的伺服器了
順利登入會收到這樣的畫面
虛擬伺服器登入

備註:
chmod 指令說明請參考 如何改變檔案屬性與權限

建置 LAMP 環境

想再 linux 的系統中,建立靜態網站需要依靠 Apache 這個伺服器軟體來達成的,而動態網站就需要資料庫的存取,於是有了 LAMP (Linux + Apache + MySQL + PHP)。

關於LAMP 詳細的介紹可參考鳥哥的 Linux 私房菜-第二十章、WWW 伺服器

以下步驟依照使用 Amazon Linux AMI 安裝 LAMP Web 伺服器

在虛擬伺服器上運用 Terminal 來操控
首先,確認主機上版本是否為最新版

sudo yum update -y

確認完伺服器的環境為最新的後,安裝 Apache Web 伺服器、MySQL 和 PHP 軟體套件。
使用 yum install 可以同時安裝多個軟件

sudo yum install -y httpd24 php72 mysql57-server php72-mysqlnd

啟動 Apache Web 伺服器

sudo service httpd start

會收到Starting httpd: [ OK ] 的回覆

Starting httpd:                                            [  OK  ]

使用 chkconfig 命令來設定 Apache Web 伺服器在每次系統開機時啟動。

sudo chkconfig httpd on

如果要確認 httpd 是否啟用,可以執行

chkconfig --list httpd

收到回覆會長這樣,正常情況: 2、3、4、5 的 httpd 為 on

httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

測試是否正常,在瀏覽器中輸入你的Public IPv4 DNS 或是 Public IPv4 address
如果 /var/www/html 中沒有內容,您應該會看到 Apache 測試頁,如下
測試頁

Public IPv4 DNS 與 address 可在 Instances 中找到
Public IPv4 DNS 位置

原始情況下 /var/www/html 中沒有內容,由 root 擁有
將使用者新增至 apache 群組,即可擁有更改 /var/www 目錄的所有權,使用者名稱可到 connect 那頁更改

sudo usermod -a -G apache 使用者名稱

改完權限後,離開(登出)再重新登入

exit

重新登入後,驗證資格

 groups

正常回覆為

使用者名稱 wheel apache

將 /var/www 的群組所有權及其內容變更為 apache 群組

sudo chown -R ec2-user:apache /var/www

測試 LAMP 伺服器

在 /var/www/html/ 中建立 index.php 檔

touch index.php

編輯 index.php 檔,輸入‘hi 我成功了’

vim index.php

重新整理 Public IPv4 address 的頁面
成功的頁面

保護資料庫

啟動 MySQL 伺服器

sudo service mysqld start

等待會長這樣

Initializing MySQL database:  
...

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
...

Starting mysqld:                                           [  OK  ]

執行 安全系統

sudo mysql_secure_installation

特別注意,輸入 root 密碼時,root 並無預設密碼,因此只需按 enter 即可
輸入Y後,在輸入兩次「 新的密碼 」,密碼千萬要記得!
後續分別為「 移除匿名使用者帳戶、停用遠端根登入、來移除測試資料庫、載入使用者權限資料表並儲存您的變更 」

設定方式:輸入Y是確認,任意輸入則是 NO
設定完成後,可選擇 MySQL 伺服器在每次系統開機時啟動

sudo chkconfig mysqld on

使用 Sequel Pro 連線資料庫

你也可以選擇在 server 上安裝 phpMyAdmin,可參考(選用) 安裝 phpMyAdmin

Sequel Pro 示意圖

就可以順利連線囉~

gandi 設定域名

使用 gandi 購買域名後,點選已啟用的域名
域名清單

選擇區域檔紀錄
區域檔紀錄

將類型 A 的值改為你的 IP
示意圖
示意圖

恭喜~完成部署!

結論

對於新手來說,從零到一部署一個虛擬 server,需要一些時間,有太多的文件可以看,很容易看得眼花撩亂,而且每台電腦的執行環境又不同,很容易噴出錯誤訊息,已導致新手退卻,不過這次練習,擴充了很多小知識,希望記錄下來也可以幫助到其他人。

有幾點要注意:

  1. 在 Amazon Linux AMI 的環境下請使用「 yum 」來安裝軟體
    sudo yum install git-all

參考資料:
Connecting to Databases via SSH with Sequel Pro


#LAMP #apache #aws ec2 #server







Related Posts

iOS SwiftUI-2 Core Data資料庫使用

iOS SwiftUI-2 Core Data資料庫使用

Python -「快速」算出兩排序數列中重複的次數

Python -「快速」算出兩排序數列中重複的次數

iOS SwiftUI-問題1 Button背景透明無法點擊

iOS SwiftUI-問題1 Button背景透明無法點擊


Comments