[ 紀錄 ] 部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin


Posted by krebikshaw on 2020-09-15

註冊 AWS 會員

  1. 填妥個人資料,地址要轉換成英文地址,可以利用中文地址英譯系統
  2. 填寫信用卡資訊(用的是免費方案,但是註冊都需要填寫信用卡資訊)
  3. 驗證手機(會發送簡訊做驗證)

進入主控台

註冊完成後,進入「免費方案」的主控台

選擇「啟動虛擬主機」(使用 EC2)

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

選有「綠色」標章的,免費方案

從 step3 開始,一路按「Next」,按到看到 step6 出現就煞住。

step6 這邊要按「Add Rule」,新增兩個欄位,選擇「HTTP 跟 HTTPS」,後面的資料它會自己幫你帶入,新增完之後就可以按下右下角的「 Review and Launch 」

這裡會跟你確認剛剛做的設定,按下右下角「 Launch 」進入下一步

接著會跳出這個選擇私鑰的視窗
我們要建立一個新的,選則「create a new key pair」,自行輸入底下的名稱,按下「Download Key Pair」下載下來的檔案要保存起來

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

右下角「View Instances」回到管理介面

這邊可以看到你的 Server 已經在啟動狀態了,把畫面往右拉,找到「IPv4 Public IP」 把這組 IP 記起來就完成了

連線囉!


畫面上方,有一個 Connect 的按鈕,裡面有讓你從 CLI 連線的兩行指令

chmod 400 <私鑰檔案路徑>

ssh -i "<私鑰檔案路徑>" ubuntu@ec2-< IPv4 位置>.us-east-2.compute.amazonaws.com

輸入完成看到下面這個畫面就代表連線成功囉~

設定 LAMP:

  1. 更新 ubuntu 的系統
    $ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
    
    跳出訊息,是否安裝?或佔用空間 xxx,記得輸入:y
    (會跳出紫色選項,選擇 keep the local version currently installed)
  2. 安裝 Tasksel
    $ sudo apt install tasksel
    
    跳出訊息,是否安裝?或佔用空間 xxx。輸入:y
  3. 用 Tasksel 下載 lamp-server
    $ sudo tasksel install lamp-server
    
    (會跑一個下載中的紫色框)

這時候,就可以到瀏覽器,輸入 IP 位置,看看剛出生的伺服器

設定 phpmyadmin

  1. 下載 phpmyadmin
    $ sudo apt install phpmyadmin
    
  2. 連接 apache2(按空白鍵,有顯示*字號,再按 Enter)
  3. 設定密碼(設定完成後,按下方向鍵,OK 字樣會反紅,就可以按 Enter 繼續)
  4. 完成密碼設置

設置密碼

  1. 改變 phpmyadmin 登入的設定,改成可以用密碼登入
    $ sudo mysql -u root mysql
    
    輸入:
    $ UPDATE user SET plugin='mysql_native_password' WHERE User='root';
    $ FLUSH PRIVILEGES;
    
    離開 sql 指令
    $ exit
    
  2. 設定 root 的密碼
    $ sudo mysql_secure_installation
    
  3. 是否設定密碼? $ y
    這時候會跳出選擇密碼強度,然後才設定密碼
    有三個選項,建議直接選 0(選了 1 之後中英文大小寫+符號混用還要一定的長度)
    所以除非是需要很注重安全性,否則選 0 之後繼續
  4. 輸入符合規定的密碼。
    直接輸入 預設置密碼 這時候密碼不會顯示所以不要認為沒有輸入成功。
    確定設這個密碼嗎? $ y
    幾個設定的問題都可以選 yes
    最後會出現 All Done!
  5. 就可以在瀏覽器輸入自己的 IPv4/phpmyadmin 就看到登入畫面了
    帳號:root
    密碼:前面設定的密碼

故障排除

這邊我嘗試在瀏覽器輸入自己的 IPv4/phpmyadmin,會出現 404 Not Found 頁面
在 Google 下關鍵字「ec2 phpmyadmin not found」搜尋有找到解決方式:

  1. 方法1:(我用這個解決的)
    The requested URL /phpmyadmin was not found on this server.
    在 CLI 下這段命令,
    sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
    
    再重新於瀏覽器上刷新 phpmyadmin 頁面
  2. 方法2:
    // link configure file to apache
    $ sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
    // restart apache
    $ sudo /etc/init.d/apache2 restart
    
  3. 方法3: 關於phpmyadmin的問題
    重新設定你的「phpmyadmin」:
    sudo dpkg-reconfigure phpmyadmin
    

排除故障後,就可以看到登入畫面了

測試檔案

現在來測試把檔案放上去。輸入 cd .. 兩次,退到根目錄底下,
可以用 ls 找到 var 資料夾。

然後連進去

cd var/www/html

嘗試 touch 裡面的檔案

touch index.php

會發現權限不夠,所以要來修改一下權限

$ sudo chown ubuntu /var/www/html

修改完成後就可以成功的編輯檔案了,在這邊先用 vim 測試改成 hello, world

vim index.php

<?php
  echo 'hello, world';
?>

接著可以到瀏覽器上,在網址輸入

IPv4/index.php

可以成功看到剛剛輸入的 hello, world 囉

設定域名

先連至 gendi.net 註冊帳號(記得進入信箱收取驗證信)

註冊完成後,我們要開始購買網域,點選購物,可以看到下面這個畫面,我們要選「域名」

輸入自己想要的域名,並且加入購物車之後,就要來填寫購買資訊了

進入結帳流程之前,要先同意所有合約,「若是有折扣碼,可以在此填寫」

這樣就完成囉,官方會在交易完成後再寄送一封認證信到信箱,要記得去驗證

接下來就要設定域名了,回到首頁之後重新登入,就可以看到下面這個畫面,點選左邊的「域名」

在區域檔紀錄底下,把 A 的 IPv4 改成 AWS 的 IP 就可以囉

恭喜你成功部署好自己的 Server ,只要在網址打上

<域名>/index.php

就可以看到之前設定的 hello, world 了!

最後一步!開始將寫好的程式部署到 Server

放檔案的方式有很多種,目前先嘗試用熟悉的 GitHub 來操作看看

  1. 在 GitHub 上面開設一個 repository
  2. 把 repository 的網址複製起來
  3. 回到本地端,把要上傳的資料獨立到同一個資料夾
    (建議先上傳一個簡單的 hello world 程式,並且先把 .gitignore 的檔案傳上去,等成功了之後再來上傳其他完整的程式。若想直接上傳完整程式,一定要先把 conn.php 拿掉,因為 .gitignore 檔案還沒上傳之前,並不會讓 conn.php 被忽略)
  4. CLI,切換到該資料夾,輸入:
    git remote add origin [GitHub 網址]
    
  5. 接著按照下面步驟把資料弄上新的 repository:
  6. 開分支 git branch "branch-name"
  7. 切到該分支 git branch "branch-name"
  8. 上傳 git commit -am "test"
  9. git push origin branch-name
  10. 然後 GitHub 上面 marge。

回到 server 端

在 CLI 處於 var/www/html 的情況下,把 repository 整個 clone 下來

git clone <GitHub 網址>

(如果剛剛是直接把忽略 conn.php 的完整程式上傳,此時需要手動在 CLI 把 conn.php 建立回去)

成功上傳伺服器之後。就可以通過 域名/對應路徑/index.php 看看網頁是否可以正常運行啦。

File Zilla 設定

參考[AWS] 透過 FileZilla 使用 key-pairs 登入 AWS EC2 存取檔案


#aws #LAMP #PHP







Related Posts

Fetch 與 Promise (二):錯誤處理

Fetch 與 Promise (二):錯誤處理

GIT branch 分支

GIT branch 分支

Cospaces 六堂課程程式概念教學

Cospaces 六堂課程程式概念教學


Comments