
一、背景
用Python寫了個腳本,需要部署到Linux環境的服務器上,由於服務器linux系統(centos,redhat等)自帶的是python2,現在的python萌新都是從python3開始學習,所以需要給服務器配置一個python3環境,一番摸索過后,踩過一些坑,也總結了一下經驗,故留此文。
二、主要應用技術
2.1、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秒