不用開著電腦,如何將指令碼程式碼放到伺服器上?
作者 | sergiojune
轉載自公眾號日常學python(ID:daily_learn)
程式設計師轉行學什麼語言?
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
上次弄了個機器人,反響挺不錯的,我也挺滿意的,因為這個我也初步瞭解了伺服器這個東西,懂得了如何將自己的指令碼程式碼放到伺服器上執行了,媽媽再也不怕我每天都得開著電腦才能執行指令碼了,不過說實話,這個伺服器真貴,不過有阿里雲學生機,想嘗試瞭解下的可以去試試,非常建議去折騰下,可以學到的東西很多。
當時為了將程式碼放到伺服器上執行,也花了很多時間,所以避免還有不會的小白同學,記錄下此過程,讓他們少走點坑。
1. 購買伺服器
如果你是學生的話,想折騰的可以去阿里雲那裡購買,因為有學生機優惠,只需要9.9一個月,但是隻能購買一次,在下一次購買需要做任務才可以繼續享用學生機優惠。如果你是土豪的話,可以直接忽略這個。
因為這次我只需要把機器人指令碼執行就可以了,所以直接選擇學生機的配置就夠用了。
阿里雲的學生機購買連結:
https://promotion.aliyun.com/ntms/act/campus2018.html?spm=5176.10695662.1244717.1.605c4804V5gfhs
點選購買即可。
這個密碼是你登陸上伺服器的密碼,需要記住,登陸使用者名稱就是 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 就可以將檔案備份到當前目錄了。
安裝 python3.6.8 版本
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_37274323/article/details/81107958
下載 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 list
3)建立軟連線
現在就是需要將 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/.virtualenvs
source /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/sanduzxcvbnm/p/5984352.html
-
https://blog.csdn.net/miner_zhu/article/details/81315974
-
https://blog.csdn.net/eastmount/article/details/79321822
-
如何挑戰百萬年薪的人工智慧!
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
(本文為 AI科技大本營轉載文章,轉載請聯絡原作者)
群招募
掃碼新增小助手微信,回覆:公司+研究方向(學校+研究方向),邀你加入技術交流群。技術群稽核較嚴,敬請諒解。
推薦閱讀:
❤點選“閱讀原文”,檢視歷史精彩文章。
相關文章
- 將js/css指令碼放到png圖片中的實踐。JSCSS指令碼
- 程式碼上線的shell指令碼指令碼
- 檢測不同伺服器上程式碼差別的shell的指令碼伺服器指令碼
- windows 將bat exe 指令碼執行檔案放到window 當做服務WindowsBAT指令碼
- 使用vb指令碼讓電腦自動加入域原始碼指令碼原始碼
- win10如何給電腦設定開機密碼 win10電腦開機密碼設定Win10密碼
- 想寫程式碼?離開你的電腦吧!
- 如何將開源專案部分程式碼作為private放在github上?Github
- 如何scp不用密碼密碼
- 電腦上如何開啟heic檔案?
- 如何在電腦上多開微信?(windows)Windows
- win10怎麼給電腦設定開機密碼 win10電腦如何設定開機密碼Win10密碼
- 電腦小技巧:怎麼取消電腦開機密碼密碼
- 使ssh不用輸入密碼(指令碼執行scp)密碼指令碼
- 如何用git將專案程式碼上傳到githubGithub
- 怎麼取消電腦開機密碼 取消電腦開機密碼的步驟詳解密碼
- win7如何修改電腦密碼_windows7在哪裡更改電腦密碼Win7密碼Windows
- 同步線上伺服器程式碼到web節點指令碼伺服器Web指令碼
- 如何更改電腦的“圖片密碼”?密碼
- 上傳程式碼到伺服器伺服器
- win10怎麼把此電腦放在桌面 windows10將此電腦放到桌面的步驟Win10Windows
- win10更改電腦開機密碼 聯想win10如何更改開機密碼Win10密碼
- 如何在batch指令碼中嵌入python程式碼BAT指令碼Python
- 如何將Arduino當電腦用UI
- 如何使用 Shell 指令碼掩蓋 Linux 伺服器上的操作痕跡?指令碼Linux伺服器
- 如何改進你的指令碼程式指令碼
- linux 指令碼切換使用者不用輸入密碼Linux指令碼密碼
- 如何取消win10開機密碼_win10怎麼取消電腦開機密碼Win10密碼
- win10怎麼把此電腦放到桌面_w10如何把此電腦新增到桌面Win10
- 使用Git將程式碼上傳至Gitee碼雲中Gitee
- Mac電腦如何修改Wi-Fi新密碼?Mac密碼
- 電腦連線伺服器步驟 電腦如何連線伺服器?伺服器
- 如何在遺留程式碼基礎上開發
- 例解如何下載CVS伺服器上的程式碼伺服器
- 不用寫程式碼的爬蟲爬蟲
- 電腦藍色畫面程式碼大全解析
- 在零程式碼開發平臺上如何開發應用程式
- Github上如何找開原始碼Github原始碼