linux之python项目部署

linux之python项目部署

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

二、部署项目

yum 源准备(可以在xshell或者linux虚拟机中)

1、更新一下yum:

sudo yum -y update

2、安装yum-utils 【一组扩展和补充yum的实用程序和插件】

sudo yum -y install yum-utils

3、安装CentOS开发工具 【用于允许您从源代码构建和编译软件】

sudo yum -y groupinstall development

安装Python3(可以在xshell或者linux虚拟机中)

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、检查一下安装情况,分别执行命令查看:

python3.6 -V

pip3.6 -V


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


添加软链接

使用python3去使用Python3.6:

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

复制代码pip3.6同理:

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

我们可以看到,软链接是创建成功了的。


创建普通用户(wuchangjing,将项目部署到该用户下)

首先需确保当前登录用户有创建新用户的权限,建议输入“cat /etc/passwd |cut -f 1 -d :”查看当前已存在用户。

           输入“useradd userfor2015”并回车,添加一个名为“userfor2015”的帐号,默认会添加一个同名的组,并在/home新建一个同名目录。

     注意:此时帐号“userfor2015”处于锁定状态。

输入“passwd userfor2015”并回车修改用户“userfor2015”密码(Linux不显示密码),需输入相同密码两次。

输入“su - userfor2015”切换到用户(userfor2015)下即可使用。


可输入“useradd -D”查看此命令的默认设置


添加用户到sudoer列表(让普通用户可执行sudo命令)

            Linux默认是没有将用户添加到sudoers列表中的,需要root手动将账户添加到sudoers列表中,才能让普通账户执行sudo命令。

            root 账户键入visudo即可进入sudo配置,这个命令要比vim /etc/sudoers要好很多,因为使用visudo进行sudo配置,将会得到很多提示.

            键入visudo后,在编辑器下键入 /root 寻找root,找到第三个root的那一行

                root    ALL=(ALL)       ALL

            按yyp键复制并在粘贴在下一行,在这一行的 root处输入cw将root替换为你所需要添加用户的账户名,比如Blinux,结果就是

                root    ALL=(ALL)       ALL

                blinux  ALL=(ALL)       ALL

            如果你希望之后执行sudo命令时不需要输入密码,那么可以形如

                root    ALL=(ALL)       ALL

                blinux  ALL=(ALL)       NOPASSWD:ALL

            输入:wq保存即可。

            之后执行sudo命令时直接在命令前端键入sudo 空格即可,比如sudo shutdown -h now执行立即关机命令.

            如果需要输入口令,则输入用户密码即可,而不是root密码.

                注:如果用户不在sudoers列表中,将会得到以下提示.

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

将windows中的host文件中的内容添加到linux中

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

复制host文件中的ip地址

添加到linux中

解决ssh登录linux速度慢以及linux下载慢的问题(以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(该项默认不启用的,要把前面的#删除掉)

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

  6.重启 # systemctl restart sshd

将python项目拖动到 xftp中的home/wuchangjing/目录下

将前端项目代码拖动到xftp中的home/wuchangjing/目录下(删除其中存在的node_modules文件夹,否则解压安装nodejs会出现问题)

配置虚拟环境env

            安装( 我的环境中既有python2,也有python3,这里使用python3的pip安装virtualenv)

            # pip3 install virtualenv

            新建python3的虚拟环境

            # virtualenv --python=python3 env

            激活虚拟环境(根据所在目录填写路径)

            env存在与当前目录中:

                # source env/bin/activate 

            env不在当前目录中: 

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

            在env目录中:

                # source ./bin/activate

                    ps:Linux中的bin/activate没有执行权限,需要使用source执行。

            退出虚拟环境(deactivate直接在虚拟环境中执行即可,不需到bin目录下(bin目录下也没有这个文件))

            # deactivate

下载项目的requments.txt文件中的依赖到env中

            # cd env

            # source ./bin/activate

            安装依赖清单里的库

            # pip3 install -r requirements.txt

            列出当前虚拟环境所安装的依赖库

            # pip3 list


截至目前应该可以运行python.py文件了。在激活虚拟环境后运行:python3 相对路径/multi-analysis.py,【ctrl + c 】可以杀死进程,停止运行当前程序

安装最新版gcc(为安装nodejs做准备)

           查看gcc版本(centos自带的编译器版本太旧):

            # gcc -v

            进入放置gcc文件的目录:

            # cd /usr/local/src

手动下载安装最新gcc(不能通过yum进行升级,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

            进入解压后的文件夹,下载供编译需求的依赖项:

            # cd gcc-9.2.0

            # ./contrib/download_prerequisites

            建立文件夹存放编译文件:

            # mkdir gcc-build-9.2.0

            # cd gcc-build-9.2.0

            生成Makefile文件(此过程非常久):

            # make

            安装:

            # sudo make install

            查找编译gcc时生成的最新动态库(最新库如图所指):

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


            将找到的动态库libstdc++.so.6.0.27复制到/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,删除原来的软连接, 将默认库的软连接指向最新动态库:

            # cd /usr/lib64

            # rm -rf libstdc++.so.6

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

            重启服务器,验证版本:

            # reboot

            # gcc -v


            安装nodejs

            进入放置nodejs文件的目录:

            # cd /usr/local/src

下载最新版nodejs(链接可以从官网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

            进入解压后的文件夹,检查安装包是否有问题(出现版本号说明没有问题):

            # cd nodejs

            # ./node -v

            建立软连接,变为全局:

            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 这个目录放进环境变量中,这样在其他目录下执行node命令时,才能成功,否则找不到命令,执行su ,输入密码切换到root用户,执行命令:

            # vi /etc/profile

            搜索export PATH,输入/export PATH ,回车

            按键盘【i】进入编辑模式

            在export PATH的上一行添加如下内容:

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

            保存并强制退出输入:

            :wq!回车

            让环境变量立即生效:

            # source /etc/profile

            查看环境变量是否生效(看刚添加的的目录是否在环境变量中):

            # echo $PATH

                ps:执行source /etc/profile 只是让变量临时生效,重新开一个终端的话就失效了,要重启或者注销

            查看安装的版本:

            # node -v

            v10.16.3

            # npm -v

            6.9.0

运行项目程序:

进入前端代码目录:

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

进入项目虚拟环境:

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

执行前端代码以及python程序:

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

浏览器访问:http://【linux的ip地址】:【前端代码端口】



执行node -v报错如下时:

[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

查看哪个安装包包含该库:

# yum provides libstdc++.so.6

执行结果:

[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

报错:

       ...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、升级安装包

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

2、修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory问题

# yum install glibc.i686 -y

3、 修复error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

# yum install zlib.i686 -y

4、修复error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

先查找这个库存在于哪个安装包中

# yum whatprovides libstdc++.so.6

执行结果:

[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

到此就解决了缺少共享库到问题

遇到浏览器不能进行访问linux程序问题:

1.防火墙开着会导致不能连接,解决办法有两种:关闭防火墙或者开放所用到的端口。

针对方法一:

查看防火墙是否打开(root)

# sudo systemctl status firewalld

看到active(running)就意味着防火墙打开了

解决办法:

通过 # sudo systemctl stop firewalld 关闭防火墙(可行但不建议)。

通过 # sudo systemctl start firewalld 打开防火墙。

以上的打开和关闭防火墙都是临时的,重启虚拟机后又会恢复到默认的状态(我的默认状态是打开)。

通过 # sudo systemctl disable firewalld 命令,重启后防火墙还是处于关闭的状态。

通过 # sudo systemctl enable firewalld命令,重启后防火墙还是处于开启的状态。

针对方法二:

在执行项目的情况下:

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

暂停并退出当前:

【ctrl+z】

将程序放入后台继续执行:

# bg  

查询程序是否在后台中进行:

# ps -a

查询服务器tcp端口的使用情况:

# netstat -ntpl


通过上图可以看出当前项目所需要用到的tcp端口有22,5000,8000

查看端口的开放情况(yes表开启;no表未开启):

# firewall-cmd --query-port=端口号/tcp

对外开放指定端口:

firewall-cmd --add-port=端口号/tcp --permanent

重载入添加的端口:

firewall-cmd --reload

查询指定端口是否开启成功:

firewall-cmd --query-port=端口号/tcp

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容