1. 程式人生 > 實用技巧 >linux上部署python本地開發環境

linux上部署python本地開發環境

將本地開發環境的依賴專案生成清單檔案

1.在本地的開發環境中,env下執行:

1
pip3 freeze >requirements.txt

清單檔案將會生成在當前專案目錄下,內容如下所示

1
2
3
4
5
certifi==2018.4.16
chardet==3.0.4
idna==2.7
requests==2.19.1
urllib3==1.23

將生成後的檔案上傳到linux伺服器

2.將Python專案上傳到伺服器

1
#略...

第三步:在linux伺服器上為專案建立虛擬環境,並安裝專案所需的依賴

1.切換到pip3所在的目錄 /usr/local/python/bin,執行以下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安裝虛擬環境
pip3 install virtualenv

# 建立虛擬環境 ENV
virtualenv ENV

# 切換到虛擬環境所在的目錄
cd ENV

# 啟用虛擬環境
source ./bin/activate

# 安裝依賴清單裡的庫
pip3 install -r requirements.txt

# 列出當前虛擬環境所安裝的依賴庫
pip3 list

第四步:新增自定義系統服務(很重要)

1
2
# 這樣的命令在ssh終端退出後,python程序也會被殺掉
python xxx.py &

需要建立一個自定義的系統服務,來保證python程式能夠在後臺執行。

1.建立系統服務

1
vim /usr/lib/systemd/system/robot.service

內容如下:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=robot
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &
PrivateTmp=true

[Install]
WantedBy=multi-user.target

ExecStart為服務啟動時執行的命令,不能用相對路徑, 一定要全路徑。
這裡也可以將命令寫到任意的.sh檔案中,這裡寫.sh檔案的全路徑也是可以的。

2.啟用自定義系統服務

1
systemctl enable robot

3.啟動服務

1
systemctl start robot

可以檢視程序,確認一下服務是否啟動

1
ps aux|grep robot

完畢!