聊聊 Python 自動化腳本部署服務器全流程
本文轉載自微信公眾號「AirPython」,作者星安果。轉載本文請聯系AirPython公眾號。
1. 前言
大家好,我是安果!
日常編寫的 Python 自動化程序,如果在本地運行穩定后,就可以考慮將它部署到服務器,結合定時任務完全解放雙手
但是,由于自動化程序與平臺兼容性有關聯,有一些依賴庫在服務器運行需要做特殊處理
本篇文章以一段 Selenium 編寫的 Python 自動化程序,聊聊腳本部署服務器的詳細過程
2. 操作步驟
以 CentOS 服務器為例
2-1 安裝桌面環境
PS:如果已經安裝,可以跳到下一步
我們需要先安裝一個桌面環境「 以 GNOME 為例 」,設置以圖形模式啟動,并開啟圖形界面
- # 安裝 GNOME 桌面環境
- yum groupinstall -y "GNOME Desktop"
- # 設置以圖形模式啟動
- systemctl set-default graphical.target
- # 開啟圖形界面
- startx
2-2 安裝配置遠程桌面
以最常見的 VNC 為例
首先,在服務器上安裝 VNC Server,并設置登錄密碼
- # 安裝vnc server
- yum install tigervnc-server -y
- # 設置登錄密碼,用于vnc viewer登錄密碼
- vncpasswd
然后,啟動 VNC Server,并開啟對應的端口號
- # 開啟VNC服務
- systemctl start vncserver@:1
- # 設置開機自啟
- systemctl enable vncserver@:1
- # 查看VNC服務的端口
- netstat -lnpt|grep Xvnc
- # 開啟端口號
- firewall-cmd --add-port=5901/tcp --permanent
- firewall-cmd --reload
最后,下載 VNC Viewer,使用「 IP 地址 + 端口號 + 登錄密碼 」遠程連接服務器
下載地址:
https://www.realvnc.com/en/connect/download/viewer/
PS:VNC Server 顯式指定 IP 地址 + 端口號
2-3 安裝 Chrome 瀏覽器
服務器默認安裝的瀏覽器為 FireFox,Chrome 瀏覽器需要自己手動安裝
- # 下載最新的Chrome瀏覽器
- wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
- # 安裝瀏覽器
- yum install google-chrome-stable_current_x86_64.rpm
- # 檢查Chrome瀏覽器的版本
- google-chrome -version
安裝完成之后,發現使用 Root 用戶啟動 Chrome 瀏覽器失敗PS:服務器 Chrome 瀏覽器不支持直接使用,需要以 --no-sandbox 參數啟動
- # 以--no-sandbox方式啟動Chrome瀏覽器
- # 方式一:命令行啟動
- /usr/bin/google-chrome-stable --no-sandbox
- # 方式二:修改Chrome瀏覽器快捷圖標的啟動方式
- # 啟動方式:--no-sandbox
2-4 配置 Chrome Driver 及授權
在官網下載 Chrome 瀏覽器對應版本的 Chrome Driver
下載地址:
http://chromedriver.storage.googleapis.com/index.html
解壓后,上傳到服務器的「 usr/bin 」目錄下
最后,對 chromedriver 文件授予可執行的權限
- [root@localhost xh]# cd /usr/bin
- # 授予可執行的權限
- [root@localhost bin]# sudo chmod +x chromedriver
2-5 可視化運行測試
將自動化腳本上傳到服務器,設置以有頭模式運行
注意:由于服務器的 Chrome 需要配置以 no-sandbox 模式啟動,因此自動化腳本需要添加設置屬性
- option = webdriver.ChromeOptions()
- # 以無頭模式運行
- #option.add_argument('headless')
- option.add_argument('no-sandbox')
- option.add_argument('disable-dev-shm-usage')
- option.add_experimental_option('useAutomationExtension', False)
- option.add_experimental_option('excludeSwitches', ['enable-automation'])
- browser = webdriver.Chrome(chrome_options=option)
「 有頭模式 」測試運行正常后,就可以開啟「 無頭模式 」,編寫定時任務,將自動化腳本與定時任務關聯上
3. 最后
文中以 Selenium 自動化腳本部署服務器的步驟流程進行了闡述
需要指出的是,服務器上的可視化調試測試確實很有必要,它可以幫助我們提前定位兼容性問題