一、背景

用Python写了个脚本,需要部署到Linux环境的服务器上,由于服务器linux系统(centos,redhat等)自带的是python2,现在的python萌新都是从python3开始学习,所以需要给服务器配置一个python3环境,一番摸索过后,踩过一些坑,也总结了一下经验,故留此文。

二、主要应用技术

2.1、linux 命令

 
linux命令速查表

三、实施步骤

3.1、安装python3

开始安装之前先看一下机器的环境,主要看一下操作系他的环境和python版本。
查看环境
操作系统:

[root@reportweb]#  cat /etc/redhat-release
CentOS release 6.5 (Final)

查看python版本:

[root@reportweb]# python -V
Python 2.6.6
[root@reportweb]# python3 -V
-bash: python3: command not found

可以看到操作系统是CentOS 6.5 ,python此时只有一个python2,没有python 3 。

下面开始进入正式安装:
第1步:下载python安装包,准备编译环境:

[root@reportweb]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

第2步:下载python源码

[root@reportweb src]# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

第3步:解压

[root@reportweb src]# tar -zxvf Python-3.6.6.tgz

第4步:安装,编译

[root@reportweb src]# cd Python-3.6.2
[root@reportweb Python-3.6.2] # mkdir /usr/local/python3.6
[root@reportweb Python-3.6.2] # ./configure --prefix=/usr/local/python3.6
[root@reportweb Python-3.6.2] # make
[root@reportweb Python-3.6.2] # make install

第5步:建立软链

[root@reportweb Python-3.6.2] # ln -s /usr/local/python3.6/bin/python3.6  /usr/bin/python3

第6步:查询python版本

[root@reportweb]# python3 -V
Python 3.6.6
[root@reportweb]# python -V
Python 2.6.6

至此,python3安装完毕。

3.2、安装pip3

下面开始安装pip3的步骤。
第1步:安装setuptools

[root@reportweb src]# wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

第2步:解压

[root@reportweb src]# tar -zxvf setuptools-19.6.tar.gz

第3步:编译,安装

[root@reportweb src] # cd setuptools-19.6/
[root@reportweb setuptools-19.6] # python3 setup.py build
[root@reportweb setuptools-19.6] # python3 setup.py install

第4步:建立软链

[root@reportweb setuptools-19.6] #  ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3

第5步:查看pip3版本

[root@reportweb] # pip3 -V
pip 8.0.2 from /usr/local/python3.6/lib/python3.6/site-packages/pip-8.0.2-py3.6.egg (python 3.6)

第6步:更新

[root@reportweb] # pip3 install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 172kB/s
Installing collected packages: pip
Found existing installation: pip 8.0.2
Uninstalling pip-8.0.2:
Successfully uninstalled pip-8.0.2
Successfully installed pip-19.3.1
[root@reportweb]# pip3 -V
pip 19.3.1 from /usr/local/python3.6/lib/python3.6/site-packages/pip (python 3.6)

至此,pip3安装完毕。

3.3、启动服务

启动服务分为前台启动和后台启动。

前台启动,就是应用直接由窗口运行,能在窗口直接打印出日志信息,如果手动 ctrl + C 打断时,应用停止。当使用前台启动时,如果我们退出终端,服务就会停止。
后台启动,就是用nohup等命令,执行应用,在窗口关闭后,或者 执行其他命令时,该应用仍然可以再后台运行。

使用前台启动python项目:

[root@reportweb]# python3 test.py
2020-01-02 16:00:47 读取原日志信息:00:00:01.560 [http-nio-8605-exec-5] [DEBUG] Bound request context to thread: org.apache.catalina.connector.RequestFacade@2dc071e6 org.springframework.boot.web.filter.OrderedRequestContextFilter [RID:] [TID:] [MID:]
2020-01-02 16:00:47 转换格式前信息:00:00:01.560 [http-nio-8605-exec-5] [DEBUG] Bound request context to thread: org.apache.catalina.connector.RequestFacade@2dc071e6 org.springframework.boot.web.filter.OrderedRequestContextFilter [RID:] [TID:] [MID:]
^CTraceback (most recent call last):
File "test.py", line 174, in <module>
read_rawlog()
File "test.py", line 79, in read_rawlog
line_json = log_data_to_json(line_temp)
File "test.py", line 120, in log_data_to_json
logger = re.findall(logger_rule, line)
File "/usr/python3/lib/python3.6/re.py", line 222, in findall
return _compile(pattern, flags).findall(string)
KeyboardInterrupt
[root@reportweb data]#

前台会输出正常的日志信息,直到你按下 ctrl + c 打断它,就会报KeyboardInterrupt。
下面演示后台启动python文件:

[root@reportweb data]# nohup python3 test.py &

简单介绍一下nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。nohup 执行 默认会自动生成一个 nohup.out 记录文件。

3.4、停止服务

前台启动的服务,直接 ctrl + c 停止服务,或者退出终端,服务就会停止。

后台启动的服务,用命令查看pid,然后 kill -9 pid 杀死任务。

[root@reportweb]# ps -ef|grep python
root 9233 2598 95 16:22 pts/0 00:00:16 python3 test.py
root 9244 2598 0 16:22 pts/0 00:00:00 grep python
[root@reportweb]# kill -9 9233
[root@reportweb]# ps -ef|grep python
[root@reportweb]# ps -ef|grep python
root 9257 2598 0 16:23 pts/0 00:00:00 grep python
[1]+ 已杀死 nohup python3 test.py

3.5、查看python执行的日志

查看前10行命令:
[root@reportweb]# head -n 10 nohup.out 查看后10行命令:
[root@reportweb]# tail -n 10 nohup.out 显示文件 nohup.log 的内容,从第 20 行至文件末尾:
[root@reportweb]# tail +20 nohup.out 要跟踪名为 nohup.log 的文件的增长情况,请输入以下命令:
[root@reportweb]# tail -f nohup.out

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

命令格式:
tail [参数] [文件]
参数:

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

案例 (一)如何把python项目部署到linux服务器上的更多相关文章

  1. 把 web 项目部署到 Linux 服务器上

    1.打开 eclipse,在已经完成的 web 项目上面点击右键,选择 export,然后选择导出成 war 包. 以部署 SMBMS 项目为例   2.项目打包成 war ,选择项目导出到的位置. ...

  2. 简单将Springboot项目部署到linux服务器上

    1.使用springboot的jar包方式 直接使用maven工具按照步骤点击就可以直接打包 2.到target目录下找到 jar包 3.将jar包放到linux的任意文件夹下(此项目是之前的kafk ...

  3. 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上

    很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...

  4. 43-将javaweb项目部署到Linux服务器

    这是第二次弄了,感觉由于上次积累了点资源,这次要少走很多弯路了,再次记录下来吧. 第一次的记录:将本地的javaweb项目部署到Linux服务器的一般操作 1. 在Linux上建立数据库,我是将本地的 ...

  5. springboot 定时任务部署至linux服务器上后会执行两次问题

    springboot定时任务在本地运行时,正常执行且只执行一次,但是在maven打包成war包,部署至linux服务器上之后,定时任务奇怪的执行了两次. 由于未做负载均衡,所以可以先排除是因为多台服务 ...

  6. vue项目部署到IIS服务器上

    前端Vue项目需要部署到IIS服务器上: 准备工作: 1:部署IIS服务器 2:项目npm run build打包生成需要部署的文件(dist文件夹)我的是manage文件夹 开始部署: 1:复制文件 ...

  7. ASP.NET项目部署到Linux服务器出现服务器错误

    在Linux系统中安装了Mono和Apache作为Web服务器,使用Visual Studio开发的ASP.NET Web应用或者API应用,在部署到Linux服务器后出现服务器错误,其中一个原因是由 ...

  8. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  9. ireport部署到Linux服务器上遇到的问题解决

    ireport报表在本地Windows环境运行正常,一旦部署到Linux环境上出现了如下问题: 1.打开报表,后台直接报net.sf.jasperreports.engine.util.JRFontN ...

随机推荐

  1. Python爬虫入门(基础实战)—— 模拟登录知乎

    模拟登录知乎 这几天在研究模拟登录, 以知乎 - 与世界分享你的知识.经验和见解为例.实现过程遇到不少疑问,借鉴了知乎xchaoinfo的代码,万分感激! 知乎登录分为邮箱登录和手机登录两种方式,通过 ...

  2. 大数据hbase分布式安装及其部署。

    大数据hbase分布式安装及其部署. 首先要启动Hadoop以及zookeeper,可以参考前面发布的文章. 将hbase的包上传至master节点 这里我使用的是1.3.6的版本,具体的根据自己的版 ...

  3. 使用 GoLand 启动 运行 Go 项目

    来源:https://my.oschina.net/u/3744526/blog/3085468 在使用本博客经验之前 需配置好 GOPATH 跟 GOROOT 创建好本地工作路径之后,使用 GoLa ...

  4. Discuz的文件目录解析

    最近在学习discuz,对这个不了解的 可以参考 http://www.cnblogs.com/hgj123/p/4641845.html

  5. linux的p0f检测,分析抓包信息

    p0f是一个纯粹的被动指纹识别工具,它在不干涉双方通信的情况下,通过嗅探的方式来分析流经某一网卡的流量以达到指纹识别的目的 P0f是继Nmap和Xprobe2之后又一款远程操作系统被动判别工具.它支持 ...

  6. (四)PL/SQL运算符

    运算符是一个符号,告诉编译器执行特定的数学或逻辑操作. PL/SQL语言有丰富的内置运算符,运算符提供的以下几种类型: 1.算术运算符 2.关系运算符 3.比较运算符 4.逻辑运算符 5.字符串运算符 ...

  7. Eclipse插件svn和TortoiseSvn版本对应关系

    2019独角兽企业重金招聘Python工程师标准>>> 先说一下今天碰到问题,自己在建svn仓库和导入,导出时因为版本不一致导致的错误. 因此一定要保证Eclipse中svn插件版本 ...

  8. python操作ftp文件

    from ftplib import FTP ftp = FTP('ftp.abc.com') ftp.login(user='username', passwd='********') ftp.cw ...

  9. RedHat Enterprise Linux 5.8 升级openssl

    RedHat Enterprise Linux 5.8升级openssl,遇到以下问题,做下标记: 由于之前安装RedHat Enterprise Linux 5.8 时候只安装了服务器环境,没有安装 ...

  10. Codeforces Round #587

    题目链接:Round #587 题目答案:官方Editorial.My Solution A. Prefixes 题意:给一字符串,只含有'a'或'b',需要改变某些位置('a'变'b'或'b'变'a ...