如何把python項(xiàng)目部署到linux服務(wù)器
最近用Python寫了個外掛,需要部署到Linux環(huán)境的服務(wù)器上,由于之前本地開發(fā)時使用virtualenv,使用這個虛擬環(huán)境有個好處是項(xiàng)目中依賴的庫不會是全局的,只在當(dāng)前項(xiàng)目的目錄下有效,因?yàn)槲沂荕ac系統(tǒng),virtualenv環(huán)境下的庫文件和linux上所需要的庫不通用,所以不能簡單的將整個env拷貝到服務(wù)器運(yùn)行,需要做一些額外的工作。
一般每個不同的項(xiàng)目都會依賴各自的庫,有些庫的版本不一樣會引起沖突,為了解決這個問題,需要使用虛擬環(huán)境,Python可以在每個項(xiàng)目目錄下創(chuàng)建各自的虛擬環(huán)境,項(xiàng)目所依賴的包就在環(huán)境目錄下,這樣避免了庫版本的沖突,也方便相同操作系統(tǒng)間可以快速的拷貝項(xiàng)目運(yùn)行。
我使用的是Python3編寫的項(xiàng)目,CentOS 7的服務(wù)器上只有Python2,所以需要先安裝一下Python3的環(huán)境
第一步:安裝Python3環(huán)境
1.首先安裝編譯環(huán)境(后續(xù)需要從python官網(wǎng)獲取Python3的源碼自己編譯python)
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
2.從官網(wǎng)下載python3的源碼
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
3.依次執(zhí)行 解壓>進(jìn)入解壓后的目錄>編譯安裝
tar -xvJf Python-3.6.2.tar.xz
cd Python-3.6.2
./configure prefix=/usr/local/python3
make && make install
4.安裝完畢,創(chuàng)建軟連接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
# 執(zhí)行命令
python -V #將會看到python3的版本
# 執(zhí)行命令
python2 -V #將會看到python2的版本
5.后續(xù)工作,由于執(zhí)行CentOS的yum命令需要使用自帶的python2的版本,所以需要做兩處修改
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
#將 這兩個文件的 #! /usr/bin/python修改為 #! /usr/bin/python2
第二步:將本地開發(fā)環(huán)境的依賴項(xiàng)目生成清單文件
1.在本地的開發(fā)環(huán)境中,env下執(zhí)行:
pip3 freeze >requirements.txt
清單文件將會生成在當(dāng)前項(xiàng)目目錄下,內(nèi)容如下所示
certifi==2018.4.16
chardet==3.0.4
idna==2.7
requests==2.19.1
urllib3==1.23
將生成后的文件上傳到linux服務(wù)器
2.將Python項(xiàng)目上傳到服務(wù)器
第三步:在linux服務(wù)器上為項(xiàng)目創(chuàng)建虛擬環(huán)境,并安裝項(xiàng)目所需的依賴
1.切換到pip3所在的目錄 /usr/local/python/bin,執(zhí)行以下命令
# 安裝虛擬環(huán)境
pip3 install virtualenv# 創(chuàng)建虛擬環(huán)境 ENV
virtualenv ENV# 切換到虛擬環(huán)境所在的目錄
cd ENV# 啟用虛擬環(huán)境
source ./bin/activate# 安裝依賴清單里的庫
pip3 install -r requirements.txt# 列出當(dāng)前虛擬環(huán)境所安裝的依賴庫
pip3 list
第四步:添加自定義系統(tǒng)服務(wù)(很重要)
# 這樣的命令在ssh終端退出后,python進(jìn)程也會被殺掉
python xxx.py &
需要創(chuàng)建一個自定義的系統(tǒng)服務(wù),來保證python程序能夠在后臺運(yùn)行。
1.創(chuàng)建系統(tǒng)服務(wù)
vim /usr/lib/systemd/system/robot.service
內(nèi)容如下:
[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為服務(wù)啟動時執(zhí)行的命令,不能用相對路徑, 一定要全路徑。
這里也可以將命令寫到任意的.sh文件中,這里寫.sh文件的全路徑也是可以的。
2.啟用自定義系統(tǒng)服務(wù)
systemctl enable robot
3.啟動服務(wù)
systemctl start robot
可以查看進(jìn)程,確認(rèn)一下服務(wù)是否啟動
ps aux|grep robot
完畢!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運(yùn)行的方法(圖解))
- Linux服務(wù)器上安裝Python3的兩種方式
- python 讀取Linux服務(wù)器上的文件方法
- python和shell監(jiān)控linux服務(wù)器的詳細(xì)代碼
- 詳解Python下ftp上傳文件linux服務(wù)器
- Linux下安裝Python3和django并配置mysql作為django默認(rèn)服務(wù)器方法
- Linux服務(wù)器網(wǎng)卡流量查看方法 shell和Python各一枚
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- python下paramiko模塊實(shí)現(xiàn)ssh連接登錄Linux服務(wù)器
- Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法
相關(guān)文章
使用Python實(shí)現(xiàn)微信提醒備忘錄功能
最近工作比較繁雜,經(jīng)常忘事,有時候記了備忘錄結(jié)果卻忘記看備忘錄,但是微信是每天都會看的,于是就想到寫 一個基于微信的提醒系統(tǒng)。這篇文章主要介紹了使用Python實(shí)現(xiàn)微信提醒備忘錄功能,需要的朋友可以參考下2018-12-12ITK 實(shí)現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例
這篇文章主要介紹了ITK 實(shí)現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python 已知平行四邊形三個點(diǎn),求第四個點(diǎn)的案例
這篇文章主要介紹了python 已知平行四邊形三個點(diǎn),求第四個點(diǎn)的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式
這篇文章主要給大家介紹了如何通過一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-08-08