環境:
macOS Catalina 10.15.7
選用:
AWS EC2
映像檔:Ubuntu
註冊 AWS 帳號
註冊 AWS 會員步驟
點選「建立帳戶」:
註冊成功之後,進入「AWS 管理主控台」後:
- 可以點選主機地區,如果主要服務是在台灣的話,可以選東京或新加坡,但是收費比較貴,若免費的話,就不影響,所以也可以點選美東或美西地區,地點比較遠,有時候速度會稍慢。
- 點選「EC2」
建立 Amazon EC2 免費雲端虛擬主機
- 第一步:選取哪一種虛擬光碟來安裝 server
IMAGE 為映像檔,有點像是虛擬光碟,使用哪種虛擬光碟來安裝,有 Amazon Linux、Ubuntu 的 server 可以選擇。
第二步:選擇一個 instance type
勾選 Free tier eligible 的主機,另外,種類上的 t2.nano 比 t2.micro 更便宜
第三步:逐個步驟設定講解
step. 4 ~ step. 5 不用設定,在以下做講解:
step. 4: add storage
:可以設定主機硬碟(size)要多大,還可以決定要不要加密(encryption)。
step. 5: add tags
:使用標籤,可以方便管理主機。
step. 6: configure security group
: 設定及新增 AWS 上的防火牆。
防火牆上有兩個,一個是主機上的防火牆,另一個是 AWS 的防火牆,目前在 AWS 只限定 SSH 連線,且 source 為 0.0.0.0/0
所有 IP 都可連線,在這邊可以加上 HTTP、HTTPS 連進主機。
step. 7: preview instance launch
:確認設定之後,點選按鈕 Launch,會有下方視窗出現,需要產生一組檔案形式的金鑰,來記住很長的金鑰密碼,這組密碼用於連線我設定的 AWS 虛擬主機,然後將這個產生的金鑰檔案下載到筆電 / 電腦裡。
然後點選右下角「Launch」
將虛擬主機開機
進入執行個體控制台
這樣就設定好虛擬主機囉,接下來要使用 SSH 連線至主機。
使用 SSH 連線至主機
連線教學:AWS 網站教學提供的 SSH 指令
此處的:
ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com
的x-xx-xxx-xxx
是 AWS 該主機的「公有 IPv4 地址」
- 勾選剛設定好的主機後,點選上方的「連線」按鈕:
- 點選「SSH session」:
(1) 先在 terminal cd 到金鑰檔案(jean01.pem)的路徑位置:
(3) 針對 jean01.pem 進行權限更改:Jean-Lu-2:w14_server_setup jeanlu$ pwd /Users/jeanlu/document/github/w14_server_setup Jean-Lu-2:w14_server_setup jeanlu$ ls jean01.pem
chmod
可以修改檔案的讀取(w,權重為 4)、寫入(r,權重為 2)、執行(x,權重為 1)權限,所以有三組使用者 rwx,三組分別為:檔案擁有者、加入此群組的使用者、非前述兩組本人及群組的使用者,可以以代號來表示檔案權限(rwx),例如:rwx
是可以讀取、寫入、執行(其權重比為 4+2+1 = 7),rw-
可以讀取及寫入(權重比為 4+2 = 6)。
原本的金鑰權限為rw-r--r--
,檔案擁有者可以讀寫,群組使用者及非前述的本人及群組使用者可以進行寫入金鑰檔案,chmod 400
就是第一組使用者權重比 4(可以讀取),該群組使用者及非前述兩組使用者權重比為 0,即不可以讀取、寫入、執行該金鑰檔案。
更改好金鑰檔案的檔案權限後,就可以使用 SSH 指令連到剛設好的主機,那 SSH 指令要怎麼打才可以連線呢?可以參考 AWS 提供的 SSH 指令:$ ls -al -rw-r--r--@ 1 jeanlu staff 1704 7 20 13:32 jean01.pem $ chmod 400 jean01.pem $ ls -al -r--------@ 1 jeanlu staff 1704 7 20 13:32 jean01.pem
如果選的伺服器為 Amazon Linux AMI ,使用者名稱:ec2-user
若選擇 Ubuntu Server LTS 使用者名稱:ubuntu
SSH 連線:ssh -i ~/路徑/xxx.pem ubuntu@<公有 IPV4>
如果沒有修改金鑰的檔案權限,就使用 SSH 連線,會發生以下情況:
大概就是說金鑰 too open 太開放,沒有受到保護,叫我要更改金鑰的權限(從rw-r--r--
變成r--------
)-rw-r--r--@ 1 jeanlu staff 1704 7 20 13:32 jean01.pem $ ssh -i "jean01.pem" ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com The authenticity of host 'ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com (x.xx.xxx.xxx)' can't be established. ECDSA key fingerprint is SHA256:xdxxxxx5DxxxxxtBeixxivxxx5vxxxxxlxxC4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com' (ECDSA) to the list of known hosts. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'jean01.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "jean01.pem": bad permissions ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com: Permission denied (publickey).
修改好金鑰的權限後,成功連線 SSH:
$ chmod 400 jean01.pem # 將金鑰權限改成只有檔案擁有者本人可以讀取。 $ ls -al -r--------@ 1 jeanlu staff 1704 7 20 13:32 jean01.pem $ ssh -i "jean01.pem" ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com ubuntu@ip-xxx-xx-x-xx:~$
成功連線:
$ ssh -i "jean01.pem" ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1045-aws x86_64) # 歡迎來到 Ubuntu server
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Tue Jul 20 06:57:27 UTC 202 # 一些主機設定
System load: 0.0 Processes: 92
Usage of /: 14.9% of 7.69GB Users logged in: 0
Memory usage: 22% IP address for eth0: 172.31.7.90
Swap usage: 0%
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
0 packages can be updated.
0 of these updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
問題思考:
思考一:AWS 在選擇 Ubuntu 映像檔下載時,有一個 64-bit(x86)
與 64-bit(arm)
的選項
查了一下, macbook pro 的 intel 晶片以 x86 為架構, M1 晶片以 arm 為架構。
思考二:為什麼要在 security group 加上 HTTP ( port 80 ) 及 HTTPS ( port 443 ) ?
在 AWS 防火牆上增加可以使用 HTTP 及 HTTPS 連線到主機的連接埠,
思考三:什麼是 Putty?
Putty 讓在 windows 的平台上連線 ssh 的一套免費軟體。在 Mac 上可以透過內建的 terminal(終端機)連線 SSH。
思考四:在 AWS EC2 建立好 Ubuntu 的 server,那要怎麼使用剛剛下載的金鑰及 SSH 連線登入呢?
詳見上方步驟。
思考五:SSH 連線所需要的 IPV4 到底是哪一個呢?是 IPV6?公有 IPv4 地址?私有 IPv4 地址?公有 IPv4 DNS?私有 IPv4 DNS?
後來發現有兩種連線方式:
- 第一種連線方式是複製 AWS 提供的 SSH 連線指令
ssh -i "jean01.pem" ubuntu@ec2-x-xx-xxx-xxx.us-east-2.compute.amazonaws.com
- 第二種連線方式是:
ssh -i <剛剛下載的金鑰路徑> ubuntu@<公有 IPv4 地址>
,舉例:ssh -i /Users/jeanlu/document/github/w14_server_setup/estella.pem ubuntu@3.xxx.65.xxx
。 - 補充:在金鑰路徑後面的
使用者名稱@<公有 IPv4 地址>
的使用者名稱指的是當初建立主機時,所選的映像檔 AMI(amazon machine image)的使用名稱,我選擇的是ubuntu server
,所以使用者名稱就是unbuntu
,如果選的是 Amazon Linux AMI 的主機,使用者名稱就是ec2-user
。
思考六:使用 SSH 連線上主機之後,要幹嘛?
在 Linux 上面要達成網頁伺服器需要 Apache 這套伺服器軟體吶!不過 Apache 僅能提供最基本的靜態網站資料而已,想要達成動態網站的話,那麼最好還是需要 PHP 與 MySQL 的支援才好。(參考自:鳥哥私房菜)
在伺服器裡建立一個 LAMP 環境( LAMP=Linux
+ Apache
+ MySQL
+ PHP
),可幫助我們達成動態與靜態網站的環境需求,有 Apache 可以提供最基本靜態網站,而需要建立動態網站的話,就需要 PHP 跟 MySQL 的支援。。
思考七:知道為什麼要建立一個 LAMP 環境後,那要怎麼安裝 LAMP 呢?
推薦:
如果想要更瞭解 AWS EC2 可以參考這篇:第一次在 AWS EC2 執行 Docker 就上手,新手入門之實作教學 & 心得分享