python之(6)如何把python項目部署到linux服務器上


 

 

一、背景

用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秒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM