首頁>技術>

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 serveryum 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 --permanentfirewall-cmd --reload

最後,下載VNC Viewer,使用「IP 地址 + 埠號 + 登入密碼」遠端連線伺服器

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

解壓後,上傳到伺服器的「 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 自動化指令碼部署伺服器的步驟流程進行了闡述

需要指出的是,伺服器上的視覺化除錯測試確實很有必要,它可以幫助我們提前定位相容性問題

21
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 一文讀懂 SuperEdge 分散式健康檢查 (邊端)