linux之python項(xiàng)目部署

linux之python項(xiàng)目部署

一、安裝linux(centos7,redhat)/xshell/xftp

二、部署項(xiàng)目

yum 源準(zhǔn)備(可以在xshell或者linux虛擬機(jī)中)

1、更新一下yum:

sudo yum -y update

2、安裝yum-utils 【一組擴(kuò)展和補(bǔ)充yum的實(shí)用程序和插件】

sudo yum -y install yum-utils

3、安裝CentOS開(kāi)發(fā)工具 【用于允許您從源代碼構(gòu)建和編譯軟件】

sudo yum -y groupinstall development

安裝Python3(可以在xshell或者linux虛擬機(jī)中)

1、安裝EPEL:

sudo yum -y install epel-release

2、安裝IUS軟件源:

sudo yum -y installhttps://centos7.iuscommunity.org/ius-release.rpm

3、安裝Python3.6:

sudo yum -y install python36u

4、安裝pip3:

sudo yum -y install python36u-pip

5、檢查一下安裝情況,分別執(zhí)行命令查看:

python3.6 -V

pip3.6 -V


在 /usr/lib/目錄下可以看到Python3.6的文件夾


添加軟鏈接

使用python3去使用Python3.6:

ln -s /usr/bin/python3.6 /usr/bin/python3

復(fù)制代碼pip3.6同理:

ln -s /usr/bin/pip3.6 /usr/bin/pip3

我們可以看到,軟鏈接是創(chuàng)建成功了的。


創(chuàng)建普通用戶(wuchangjing,將項(xiàng)目部署到該用戶下)

首先需確保當(dāng)前登錄用戶有創(chuàng)建新用戶的權(quán)限,建議輸入“cat /etc/passwd |cut -f 1 -d :”查看當(dāng)前已存在用戶。

?? ??? ??? 輸入“useradd userfor2015”并回車(chē),添加一個(gè)名為“userfor2015”的帳號(hào),默認(rèn)會(huì)添加一個(gè)同名的組,并在/home新建一個(gè)同名目錄。

??? ?注意:此時(shí)帳號(hào)“userfor2015”處于鎖定狀態(tài)。

輸入“passwd userfor2015”并回車(chē)修改用戶“userfor2015”密碼(Linux不顯示密碼),需輸入相同密碼兩次。

輸入“su - userfor2015”切換到用戶(userfor2015)下即可使用。


可輸入“useradd -D”查看此命令的默認(rèn)設(shè)置


添加用戶到sudoer列表(讓普通用戶可執(zhí)行sudo命令)

?? ??? ??? ?Linux默認(rèn)是沒(méi)有將用戶添加到sudoers列表中的,需要root手動(dòng)將賬戶添加到sudoers列表中,才能讓普通賬戶執(zhí)行sudo命令。

?? ??? ??? ?root 賬戶鍵入visudo即可進(jìn)入sudo配置,這個(gè)命令要比vim /etc/sudoers要好很多,因?yàn)槭褂胿isudo進(jìn)行sudo配置,將會(huì)得到很多提示.

?? ??? ??? ?鍵入visudo后,在編輯器下鍵入 /root 尋找root,找到第三個(gè)root的那一行

?????? ??? ??? ?root????ALL=(ALL)???????ALL

?? ??? ??? ?按yyp鍵復(fù)制并在粘貼在下一行,在這一行的 root處輸入cw將root替換為你所需要添加用戶的賬戶名,比如Blinux,結(jié)果就是

?????? ??? ??? ?root????ALL=(ALL)???????ALL

?????? ??? ??? ?blinux??ALL=(ALL)???????ALL

?? ??? ??? ?如果你希望之后執(zhí)行sudo命令時(shí)不需要輸入密碼,那么可以形如

?????? ??? ??? ?root????ALL=(ALL)???????ALL

?????? ??? ??? ?blinux??ALL=(ALL)???????NOPASSWD:ALL

?? ??? ??? ?輸入:wq保存即可。

?? ??? ??? ?之后執(zhí)行sudo命令時(shí)直接在命令前端鍵入sudo 空格即可,比如sudo shutdown -h now執(zhí)行立即關(guān)機(jī)命令.

?? ??? ??? ?如果需要輸入口令,則輸入用戶密碼即可,而不是root密碼.

?????? ??? ??? ?注:如果用戶不在sudoers列表中,將會(huì)得到以下提示.

????? ??? ??? ??Blinux is not in the sudoers file.??This incident will be reported.、

將windows中的host文件中的內(nèi)容添加到linux中

找到win中的host文件:C:\Windows\System32\drivers\etc\hosts

復(fù)制host文件中的ip地址

添加到linux中

解決ssh登錄linux速度慢以及l(fā)inux下載慢的問(wèn)題(以centos7為例)

?? ??? ??? 解決步驟:

?? ??? ??? ?先備份/etc/ssh/sshd_config,備份命令為:# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

?? ??? ??? ?1.# su空格(以root用戶登錄)

?? ??? ??? ?2.# vi /etc/ssh/sshd_config??????(編輯配置文件)

?? ??? ??? ?3.輸入 / ,查找GSSAPIAuthentication 賦值為no

?? ??? ??? ?4.輸入 /,查找UseDNS,賦值為 no(該項(xiàng)默認(rèn)不啟用的,要把前面的#刪除掉)

?? ??? ??? ?5.最后輸入 !wq保存文件并退出

??6.重啟 # systemctl restart sshd

將python項(xiàng)目拖動(dòng)到 xftp中的home/wuchangjing/目錄下

將前端項(xiàng)目代碼拖動(dòng)到xftp中的home/wuchangjing/目錄下(刪除其中存在的node_modules文件夾,否則解壓安裝nodejs會(huì)出現(xiàn)問(wèn)題)

配置虛擬環(huán)境env

?? ??? ??? ?安裝( 我的環(huán)境中既有python2,也有python3,這里使用python3的pip安裝virtualenv)

? ? ? ? ? ? # pip3 install virtualenv

?? ??? ??? ?新建python3的虛擬環(huán)境

? ? ? ? ? ? # virtualenv --python=python3 env

?? ??? ??? ?激活虛擬環(huán)境(根據(jù)所在目錄填寫(xiě)路徑)

? ? ? ? ? ? env存在與當(dāng)前目錄中:

?? ??? ??? ??? ?# source env/bin/activate?

?? ??? ?? ? env不在當(dāng)前目錄中:?

# source/home/wuchangjing/multi-analysis/env/bin/activate

?? ??? ?? ? 在env目錄中:

?? ??? ??? ??? ?#?source ./bin/activate

?? ??? ??? ??? ?? ? ps:Linux中的bin/activate沒(méi)有執(zhí)行權(quán)限,需要使用source執(zhí)行。

?? ??? ??? ?退出虛擬環(huán)境(deactivate直接在虛擬環(huán)境中執(zhí)行即可,不需到bin目錄下(bin目錄下也沒(méi)有這個(gè)文件))

? ? ? ? ? ? # deactivate

下載項(xiàng)目的requments.txt文件中的依賴(lài)到env中

?? ??? ?? ? #?cd env

?? ??? ?? ? #?source ./bin/activate

?? ??? ??? ?安裝依賴(lài)清單里的庫(kù)

?? ??? ?? ? #?pip3 install -r requirements.txt

?? ??? ??? ?列出當(dāng)前虛擬環(huán)境所安裝的依賴(lài)庫(kù)

?? ??? ?? ? #?pip3 list


截至目前應(yīng)該可以運(yùn)行python.py文件了。在激活虛擬環(huán)境后運(yùn)行:python3 相對(duì)路徑/multi-analysis.py,【ctrl + c 】可以殺死進(jìn)程,停止運(yùn)行當(dāng)前程序

安裝最新版gcc(為安裝nodejs做準(zhǔn)備)

?? ??? ?? ?查看gcc版本(centos自帶的編譯器版本太舊):

?? ??? ?? ? #?gcc -v

?? ??? ?? ? 進(jìn)入放置gcc文件的目錄:

?? ??? ??? ?#?cd /usr/local/src

手動(dòng)下載安裝最新gcc(不能通過(guò)yum進(jìn)行升級(jí),https://ftp.gnu.org/gnu/gcc/gcc-9.2.0/):

#?wgethttps://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz

?? ??? ?? ? 解壓安裝包:

?? ??? ??? ?#?tar -xvf gcc-9.2.0.tar.gz

?? ??? ?? ? 進(jìn)入解壓后的文件夾,下載供編譯需求的依賴(lài)項(xiàng):

?? ??? ?? ? #?cd gcc-9.2.0

?? ??? ?? ? #?./contrib/download_prerequisites

?? ??? ?? ? 建立文件夾存放編譯文件:

?? ??? ?? ? #?mkdir gcc-build-9.2.0

?? ??? ?? ? #?cd gcc-build-9.2.0

?? ??? ?? ? 生成Makefile文件(此過(guò)程非常久):

?? ??? ?? ? #?make

?? ??? ?? ? 安裝:

?? ??? ?? ? #?sudo make install

?? ??? ?? ? 查找編譯gcc時(shí)生成的最新動(dòng)態(tài)庫(kù)(最新庫(kù)如圖所指):

?? ??? ?? ? #?find / -name "libstdc++.so*"


?? ??? ??? ?將找到的動(dòng)態(tài)庫(kù)libstdc++.so.6.0.27復(fù)制到/usr/lib64:

?? ??? ?? ? #?cp?/usr/local/src/gcc-9.2.0/gcc-build-9.2.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.27?/usr/lib64

?? ??? ??? ?切換工作目錄至/usr/lib64,刪除原來(lái)的軟連接, 將默認(rèn)庫(kù)的軟連接指向最新動(dòng)態(tài)庫(kù):

?? ??? ?? ? #?cd /usr/lib64

? ? ? ??? ??#?rm -rf libstdc++.so.6

?? ??? ?? ? #?ln -s libstdc++.so.6.0.27 libstdc++.so.6

?? ??? ?? ? 重啟服務(wù)器,驗(yàn)證版本:

?? ??? ??? ?# reboot

?? ??? ?? ? #?gcc -v


?? ??? ??? ?安裝nodejs

?? ??? ??? ?進(jìn)入放置nodejs文件的目錄:

?? ??? ?? ? #?cd /usr/local/src

下載最新版nodejs(鏈接可以從官網(wǎng)https://npm.taobao.org/mirrors/node/v10.16.3/查找):

#?wget?https://npm.taobao.org/mirrors/node/v10.16.3/node-v10.16.3-linux-x64.tar.gz

?? ??? ?? ? 解壓安裝包:

?? ??? ?? ? #?tar -xvf node-v10.16.3-linux-x64.tar.xz

?? ??? ?? ? #?mv node-v10.16.3-linux-x64 nodejs

?? ??? ?? ? 進(jìn)入解壓后的文件夾,檢查安裝包是否有問(wèn)題(出現(xiàn)版本號(hào)說(shuō)明沒(méi)有問(wèn)題):

?? ??? ?? ? # cd nodejs

?? ??? ?? ? # ./node -v

?? ??? ??? ?建立軟連接,變?yōu)槿郑?/p>

?? ??? ??? ?ln -s /usr/local/src/nodejs/bin/npm /usr/local/bin/

?? ??? ??? ?ln -s /usr/local/src/nodejs/bin/node /usr/local/bin/

?? ??? ?? ? 將/usr/local/src/nodejs/bin 這個(gè)目錄放進(jìn)環(huán)境變量中,這樣在其他目錄下執(zhí)行node命令時(shí),才能成功,否則找不到命令,執(zhí)行su ,輸入密碼切換到root用戶,執(zhí)行命令:

?? ??? ?? ? # vi /etc/profile

?? ??? ?? ? 搜索export PATH,輸入/export PATH ,回車(chē)

?? ??? ?? ? 按鍵盤(pán)【i】進(jìn)入編輯模式

?? ??? ?? ??在export PATH的上一行添加如下內(nèi)容:

?? ??? ??? ?PATH=$PATH:/usr/local/src/nodejs/bin

?? ??? ?? ? 保存并強(qiáng)制退出輸入:

?? ??? ?? ? :wq!回車(chē)

?? ??? ?? ? 讓環(huán)境變量立即生效:

?? ??? ?? ? #?source /etc/profile

?? ??? ??? ?查看環(huán)境變量是否生效(看剛添加的的目錄是否在環(huán)境變量中):

?? ??? ?? ? #?echo $PATH

?? ??? ??? ?? ? ps:執(zhí)行source /etc/profile 只是讓變量臨時(shí)生效,重新開(kāi)一個(gè)終端的話就失效了,要重啟或者注銷(xiāo)

?? ??? ??? ?查看安裝的版本:

?? ??? ??? ?# node -v

?? ??? ??? ?v10.16.3

?? ??? ?? ? #?npm -v

?? ??? ??? ?6.9.0

運(yùn)行項(xiàng)目程序:

進(jìn)入前端代碼目錄:

# cd /home/wuchangjing/multi-analysis-front

進(jìn)入項(xiàng)目虛擬環(huán)境:

# source/home/wuchangjing/multi-analysis/env/bin/activate

執(zhí)行前端代碼以及python程序:

# npm run dev & python3/home/wuchangjing/multi-analysis/multi-analysis.py

瀏覽器訪問(wèn):http://【linux的ip地址】:【前端代碼端口】



執(zhí)行node -v報(bào)錯(cuò)如下時(shí):

[root@bogon ~]# node -v node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

先加載所有安裝包

# yum repolist

查看哪個(gè)安裝包包含該庫(kù):

# yum provides libstdc++.so.6

執(zhí)行結(jié)果:

[root@bogon ~]# yum whatprovides libstdc++.so.6

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base:mirrors.njupt.edu.cn

* extras:mirrors.163.com

* updates:mirrors.njupt.edu.cn

libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library

Repo????????: base

Matched from:

Provides????: libstdc++.so.6

可以看到安裝包 libstdc++-4.8.5-36.el7.i686

安裝libstdc++-4.8.5-36.el7.i686

# yum -y install libstdc++-4.8.5-28.el7.x86_64

報(bào)錯(cuò):

???????...you can also use --setopt=protected_multilib=false to remove this checking, however this is almost never the correct thing to do as something else is very likely to go wrong (often causing much more problems).Protected multilib versions: libstdc++-4.8.5-36.el7.i686 !=libstdc++-4.8.5-28.el7.x86_64

解決辦法:

1、升級(jí)安裝包

# yum??update libstdc++-4.8.5-28.el7.x86_64 -y

2、修復(fù)/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory問(wèn)題

# yum install glibc.i686 -y

3、 修復(fù)error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

# yum install zlib.i686 -y

4、修復(fù)error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

先查找這個(gè)庫(kù)存在于哪個(gè)安裝包中

# yum whatprovides libstdc++.so.6

執(zhí)行結(jié)果:

[root@bogon ~]# yum whatprovides libstdc++.so.6

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base:mirrors.njupt.edu.cn

* extras:mirrors.163.com

* updates:mirrors.njupt.edu.cn

libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library

Repo????????: base

Matched from:

Provides????: libstdc++.so.6

可以看到包??libstdc++-4.8.5-36.el7.i686

安裝libstdc++-4.8.5-36.el7.i686

# yum install libstdc++-4.8.5-36.el7.i686 -y

到此就解決了缺少共享庫(kù)到問(wèn)題

遇到瀏覽器不能進(jìn)行訪問(wèn)linux程序問(wèn)題:

1.防火墻開(kāi)著會(huì)導(dǎo)致不能連接,解決辦法有兩種:關(guān)閉防火墻或者開(kāi)放所用到的端口。

針對(duì)方法一:

查看防火墻是否打開(kāi)(root)

#?sudo systemctl status firewalld

看到active(running)就意味著防火墻打開(kāi)了

解決辦法:

通過(guò) # sudo systemctl stop firewalld 關(guān)閉防火墻(可行但不建議)。

通過(guò) #?sudo systemctl start firewalld 打開(kāi)防火墻。

以上的打開(kāi)和關(guān)閉防火墻都是臨時(shí)的,重啟虛擬機(jī)后又會(huì)恢復(fù)到默認(rèn)的狀態(tài)(我的默認(rèn)狀態(tài)是打開(kāi))。

通過(guò) # sudo systemctl disable firewalld 命令,重啟后防火墻還是處于關(guān)閉的狀態(tài)。

通過(guò) # sudo systemctl enable firewalld命令,重啟后防火墻還是處于開(kāi)啟的狀態(tài)。

針對(duì)方法二:

在執(zhí)行項(xiàng)目的情況下:

# npm run dev & python3/home/wuchangjing/multi-analysis/multi-analysis.py

暫停并退出當(dāng)前:

【ctrl+z】

將程序放入后臺(tái)繼續(xù)執(zhí)行:

# bg??

查詢程序是否在后臺(tái)中進(jìn)行:

# ps -a

查詢服務(wù)器tcp端口的使用情況:

#?netstat -ntpl


通過(guò)上圖可以看出當(dāng)前項(xiàng)目所需要用到的tcp端口有22,5000,8000

查看端口的開(kāi)放情況(yes表開(kāi)啟;no表未開(kāi)啟):

# firewall-cmd --query-port=端口號(hào)/tcp

對(duì)外開(kāi)放指定端口:

firewall-cmd --add-port=端口號(hào)/tcp --permanent

重載入添加的端口:

firewall-cmd --reload

查詢指定端口是否開(kāi)啟成功:

firewall-cmd --query-port=端口號(hào)/tcp

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容