分享如何將Flask專案部署到ec2上,計劃將這個專案部署上去
首先要去申請一個aws帳號,按照官方步驟執行即可。
接著可以進入建置流程
啟用Instance,連上EC2
- 作業系統建議選擇 Ubuntu Server 或 Red Hat Enterprise Linux 或任何其他 Linux 作業,個人使用Ubuntu
- AMI機器等級選擇 t2.micro 享有⼀年的免費額度。
- Key pair name請不要有空格,這個名稱在後續進入終端機時會需要。Create key pair後,會自動下載一個檔案,這個檔案是進入ec2會用到的鑰匙,請妥善保存,也不要放到Github之類的公開資源上。
cd desktop
先來到桌面,因為我的鑰匙在桌面上,確切位置要看pem檔放在哪裡ssh -i "Key_pair_name.pem" [ubuntu@ec2-52-197-169-187.ap-northeast-1.compute.amazonaws.com]
執行這串就連上雲端伺服器,這串代碼在aws後台可以找到。 路徑:EC2 > Instances >點擊Instances ID > 點擊connect,就可以找到這段程式碼。
EC2上安裝程式
我在專案中有用到Python、MySQL及Git,所以要安裝這三個
Python安裝完後要將所有需要用到的python套件都安裝完畢,這邊跟在自己電腦裡安裝Python套件方法一樣:
pip install (套件名稱)
- 安裝python3
sudo apt-get install python3
- 檢查是否安裝成功:
python3 --version
- Python安裝套件
- python套件管理工具:
sudo apt update && sudo apt install python3-pip
pip3 install mysql-connector-python
pip3 install python-dotenv
pip3 install -U Flask
- python套件管理工具:
- 安裝python3
- 安裝Git,安裝完畢後可以試著去
git clone
github上的專案 - MySQL安裝,這步驟當時遇到比較多問題
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql
- MySQL安裝完成後,你可能會想執行命令
mysql -u root -p
登錄到MySQL服務器。如果你登錄到Ubuntu的用戶不是root用戶你將不能訪問MySQL服務器。
如果你嘗試使用密碼登錄也將被拒絕連接,MySQL root用戶默認是沒有密碼。
- MySQL安裝完成後,你可能會想執行命令
- sudo mysql
- 將身份驗證方法從auth_socket更改為mysql_native_password 可以通過運行以下ALTER USER SQL語句命令來做到
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '想要設定的密碼'; FLUSH PRIVILEGES;
- 最後運行
mysql -u root -p
登入就好了- ⚠️ ec2的資料我是從Github Clone過來的,所以當時github中沒有.env檔紀錄帳號密碼 所以另外上傳至ec2或直接在雲端伺服器建立.env檔案。
linux建立檔案指令:touch 檔案名稱
,以及vi 檔案名稱
修改檔案內容。
- ⚠️ ec2的資料我是從Github Clone過來的,所以當時github中沒有.env檔紀錄帳號密碼 所以另外上傳至ec2或直接在雲端伺服器建立.env檔案。
指定Port
我本身在flask中有指定port,要另外去security group rule設定
嘗試執行程式
以上都完成後嘗試在ec2上執行python程式,有問題根據跳出的錯誤碼慢慢排除。
網址要用下方的網址,終端機跳出的網址會連不上喔!
Elastic IP
在EC2管理介面上,申請一個Elastic IP,並且將此 IP 與你的 Instance 建立關連。
綁定Elastic IP後,終端機會被重啟,因為要執行的程式碼會變不一樣,ip那段會改變。
⚠️申請Elastic IP後,一定要記得Associate,不然會被收錢喔!
nohup執行
必須在背景執⾏ Python 程式,要使用nohup,讓程式可以在本機端的終端機關閉後繼續執行。 nohup python3 /home/ubuntu/depoly_Ec2_test/app.py &