python項目部署到linux系統


引用: https://www.cnblogs.com/grimm/p/11104562.html   https://www.cnblogs.com/zhongyehai/p/10619917.html

 

第一步:安裝Python3環境

1.首先安裝編譯環境(后續需要從python官網獲取Python3的源碼自己編譯python)

1
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

 

2.從官網下載python3的源碼

1
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

 

3.依次執行 解壓>進入解壓后的目錄>編譯安裝

1
2
3
4
tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure prefix=/usr/local/python3
make && make install

 

4.安裝完畢,創建軟連接

1
2
3
4
5
ln -s /usr/local/python3/bin/python3 /usr/bin/python
# 執行命令
python -V #將會看到python3的版本
# 執行命令
python2 -V #將會看到python2的版本

 

5.后續工作,由於執行CentOS的yum命令需要使用自帶的python2的版本,所以需要做兩處修改

1
2
3
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
#將 這兩個文件的 #! /usr/bin/python修改為 #! /usr/bin/python2

 

第二步:將本地開發環境的依賴項目生成清單文件

1.在本地的開發環境中,env下執行, 導出當前環境下所有的包:

1
pip3 freeze >requirements.txt

如果只想導出當前項目下引用的包:   進入項目的根目錄下執行  pipreqs ./  如果文件已存在  --force  覆蓋原來文件

 

清單文件將會生成在當前項目目錄下,內容如下所示

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

2.如果沒有安排pip:

wget https://bootstrap.pypa.io/get-pip.py

 

運行腳本python get-pip.py

 

查看版本pip -V

 

如果pip -V,出現notfound,把pip加到環境變量

[finance@finance-06 bin]$ echo 'export PATH=/usr/local/python3/bin:$PATH' >>~/.bashrc
[finance@finance-06 bin]$ source ~/.bashrc

 

 

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

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 /data/python/main.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM