教你如何将自己的脚本代码放到服务器上运行
上次弄了個機器人,反響挺不錯的,我也挺滿意的,因為這個我也初步了解了服務器這個東西,懂得了如何將自己的腳本代碼放到服務器上運行了,媽媽再也不怕我每天都得開著電腦才能運行腳本了,不過說實話,這個服務器真貴,不過有阿里云學生機,想嘗試了解下的可以去試試,非常建議去折騰下,可以學到的東西很多。
如果你還沒有了解我的機器人,可以看看為了你們,我用一天時間做了一個機器人!,也歡迎大家加我進群哈,大家一起交流學習!
當時為了將代碼放到服務器上運行,也花了很多時間,所以避免還有不會的小白同學,記錄下此過程,讓他們少走點坑。
1. 購買服務器
如果你是學生的話,想折騰的可以去阿里云那里購買,因為有學生機優惠,只需要9.9一個月,但是只能購買一次,在下一次購買需要做任務才可以繼續享用學生機優惠。如果你是土豪的話,可以直接忽略這個。
因為這次我只需要把機器人腳本運行就可以了,所以直接選擇學生機的配置就夠用了。
阿里云的學生機購買鏈接:https://promotion.aliyun.com/...
點擊購買即可。
這個密碼是你登陸上服務器的密碼,需要記住,登陸用戶名就是?root。
接下來就是掃碼支付了。
購買了點擊阿里云控制臺,點擊云服務器ECS,就可以看到你剛才購買的服務器了。
再點擊下面的云服務器,你就可以看到這個服務器的相關配置了
連接服務器可以在這個頁面的右邊的遠程連接進行連接,這個第一次點進去會有個遠程連接密碼,需要記住,因為每次在這里進行遠程連接的時候都需要填入這個密碼。
連接成功就會顯示一個黑色框,這里連接服務器雖然可以,但是不太方便,這里推薦大家一個在 window 的免費 ssh 連接工具?putty
2. 在服務器上配置 Python 環境
需要在服務器上運行 Python 腳本 ,就必須要在服務器上有 Python 的環境,在阿里云購買的學生機默認就裝有 Python 的,不過版本是 2.7.5。這里我們重新安裝 Python3,是這個服務器上可以多個版本共存。
先在 putty 上連接我們的服務器。
上面的 ip 地址就是我們購買的服務器的共有ip地址,使用 ssh連接就行了。不過還得設置一個東西,不設置的話,如果超過一段時間不動終端的話,就會自動斷開,又得重新連接。
這里設置成 60 秒就可以了,原理我現在不太記得了,如果有讀者知道的話,可以在留言區說下。
點擊 open,然后填寫用戶名 root 和自己之前設置的密碼即可登陸成功,如上圖。
接下來就是開始安裝我們的 Python3 環境了。
先查看下 centos 服務器的已安裝的 Python 版本
python?-V
我這里是 3.6.8 版本,因為我重新配置了,如果你第一次使用,這個結果是 python 2.7.5
查看 python 可執行文件的路徑
可以看到所在的目錄,進入這個 bin 目錄,并查看 python 文件
可以看到我這里的 python 指向了 python3 這個文件,但是你們第一次的會指向 python2.7 這個文件,接下來就是將 python 這個軟連接指向 python3 就行了。如果怕弄壞的,想備份原來 python2 的文件可以執行?mv python2.7 python.bak?就可以將文件備份到當前目錄了。
1)先安裝相關包
yum?install?zlib-devel?bzip2-devel?openssl-devel?ncurses-devel?sqlite-devel?readline-devel?tk-devel?gcc?make
需要需要確認時直接輸入 y 即可
2)下載 python 3.6.8 源碼包
如果覺得下載網速有點慢的話,可以更換阿里云源,可以參考這個連接:https://blog.csdn.net/qq_3727...
下載 python 3.6.8 包
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
解壓 python 3.6.8 源碼包
tar?xf?Python-3.6.8.tar.xz?-C?/usr/local/src/這個是將 python 源碼包解壓到文件夾 /usr/local/src 內,這里你也可以自己指定解壓目錄,你自己記得解壓位置即可。
安裝 python3
./configure?--prefix=/usr/local/python3這里的地址需要指定為自己的 python 源碼包解壓地址。
編譯
make?&&?make?install這時候可以說安裝 python3 成功了,我們可以使用這個命令查看
/usr/local/python3/bin/pip3?list
更新 pip 版本
/usr/local/python3/bin/pip3?install?--upgrade?pip也可以查看一下是否更新成功
/usr/local/python3/bin/pip3?list3)建立軟連接
現在就是需要將 python3 這個文件建立軟連接,使 python 指向 python3 即可。
ln?-s?/usr/local/python3/bin/python3?/usr/bin/python執行之后查看 python 版本
python?-V
成功之后就會看到 python 指向了 python 3.6.8 版本,如果出錯了
bash:?python:?command?not?found...這個是你建立軟連出問題了,可能指定的 python3 安裝路徑不正確,這時候將 python 這個軟連接刪除重新創建即可。
你可以進入 。/usr/bin 目錄,查看是否創建軟連接成功
若找到 python 這個指向為紅色顯示的,證明創建錯誤了,python3 的地址錯誤了。
這時就刪除這個 python 軟連接
再重新創建 python 軟連接即可
ln?-s?/usr/local/python3/bin/python3?/usr/bin/python這前面的地址就是 python3 的安裝路徑,就是有 python3 這個文件的目錄。
4)修改 yum 配置
因為 yum 原來是使用 python2 的,改了 python3 之后可能會出錯,所以需要重新配置。
修改 yum 文件
vi?/usr/bin/yum把文件頭部的#!/usr/bin/python改成#!/usr/bin/python2.7保存,然后按esc,輸入 :wq 退出即可
修改 urlgrabber-ext-down 文件
vi?/usr/libexec/urlgrabber-ext-down第一行改為#!/usr/bin/python2.7,然后按esc,輸入 :wq 退出即可
現在就完成了 python 環境的配置了。
3. 下載相關庫
為了方便管理,我這里使用了虛擬環境,防止每個腳本運行時所需要的庫進行沖突,如果你暫時沒有想那么復雜,只是想運行一次腳本而已,也可以不必要使用虛擬環境,不過還是建議使用虛擬環境的,畢竟始終都需要用到的。
1)下載 virtualenv 庫
這個是創建 虛擬環境使用的庫。
pip3?install?virtualenv注意:這里使用的是 pip3,若是直接使用 pip 則對應的是 python2 版本的。
2)下載 virtualenvwrapper-win 庫
這個庫是為了方便管理虛擬環境使用的
pip3?install?virtualenvwrapper-win下載完了還需要配置環境變量
?vim?~/.bashrc在末尾添加上這兩句
export?WORK_HOME=$HOME/.virtualenvssource?/usr/local/python3/bin/virtualenvwrapper.sh第一句是固定的,第二句為指定 virtualenvwrapper 安裝的路徑
激活配置
source?~/.bashrc
然后進入你想創建虛擬環境的路徑,輸入以下命令
mkvirtualenv?py3_test創建成功之后會自動進入該虛擬環境
但是這里默認使用的是 python2 版本指定的虛擬環境,需要使用 python3 版本可以指定版本創建
指定 python 版本創建虛擬環境
mkvirtualenv?py3?--python=python上面使用 --python 參數來指定 python 版本,因為 python 這個文件是指向 python3 的,所以可以這樣使用,當然你也可以填上你 python3 版本的位置,這時虛擬環境的 python 版本就是 3 了。
3. 下載機器人相關庫
這里就是在虛擬環境中使用 pip3 安裝 itchat 和 requests 庫(用于爬蟲獲取早報)即可
4. 上傳腳本到服務器
由于服務器上原本就帶有 ftp 服務器的,所以我們只需要在本地安裝個?fileZilla 客戶端進行連接即可,自己去官網下載即可。
這里填上自己的服務器 ip 地址和連接賬號和密碼 ,點擊連接即可
連接成功之后,左邊就是我們服務器上面的文件了,右邊就是本地文件,右擊需要上傳的文件選擇上傳即可。上傳成功之后即可在服務器上看到相關文件。
接下來就是運行腳本了。
5. 在服務器上運行腳本
可以直接像在本地一樣運行腳本
python?robot.py這樣就可以 運行成功了,但是我們在關閉連接之后,這個腳本就停止了,那豈不是還是需要開著電腦掛機?
別急,我們可以在后臺運行腳本啊,這樣即使關閉連接,也一樣在運行。使用命令如下:
nohup?python?robot.py這時你可以查看進程
ps?-ef?|?grep?python
就會看到我們剛才 robot 代碼已經運行起來了,這個就是在后臺運行,關閉連接之后一樣會運行,這下就放心了。
但是,如果發生錯誤的話,我們是無法知道哪里出錯的,這時我們指定日志輸出文件
nohup?python?-u?robot.py?>?robot.log?2>&1?&-u 就是指定實時的日志輸出目錄,而 & 符號是使程序在后臺運行,一邊運行還可以一邊查看日志輸出文件,這里的 robot.log 就是我們的日志輸出文件。
還有一個問題,我想停止機器人怎么辦?可以使用這個命令
kill?PID這里 PID 為 linux 系統上的進程號,要想停止哪個后臺程序就填上它對應的 PID 即可,查看 PID
ps?-ef?|?grep?python
箭頭所指就是 PID 了。
最后
由于我現在的知識水平有限,暫時只能說明這么多,這些都是我當初在第一次使用時所做的記錄,如有錯誤,還請幫忙指出。同時還參考了幾篇文章:
- https://www.cnblogs.com/sandu...
- https://blog.csdn.net/miner_z...
- https://blog.csdn.net/eastmou...
最后碼字不易,如果對你有用的話,那就拍拍雙手點個「好看」吧,或者分享給你的朋友一起學習!
總結
以上是生活随笔為你收集整理的教你如何将自己的脚本代码放到服务器上运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS:盒模型
- 下一篇: Object构造函数的方法