搭建背景

  • 有时候我们需要把基于selenium的爬虫放到服务器上跑的时候,就需要这样一套运行环境,其中VNC是虚拟的显示模式,用于排查定位线上问题以及实时运行情况。

搭建流程

  1. 安装虚拟输出设备:sudo apt-get install xvfb
  2. 下载google-chrome-stable deb包,由于网上大部分链接没法下载,我这里下载了一个上传到github上了,wget https://raw.githubusercontent.com/wycm/md-image/master/2019-03-14/google-chrome-stable_69.0.3497.100-1_amd64.deb
  3. 安装:sudo dpkg -i google-chrome-stable_69.0.3497.100-1_amd64.deb
  4. 安装对应依赖:apt-get -f install
  5. 下载对应的chromedriver,wget https://raw.githubusercontent.com/wycm/md-image/master/2019-03-14/chromedriver_linux64.zip
  6. 解压:unzip chromedriver_linux64.zip
  7. 启动虚拟化输出设备Xvfb :99 -ac -screen 0 1280x1024x24 &
  8. 设置输出设备:export DISPLAY=:99
  9. 执行chrome.py脚步(需要安装:selenium:pip install selenium),代码如下:

    from selenium import webdriver
    import time
    
    if __name__ == '__main__':
        options = webdriver.ChromeOptions()
        options.add_argument("--no-sandbox")
        //刚刚解压的chromedriver路径
        driver = webdriver.Chrome("/root/wy/chromedriver",chrome_options=options)
        driver.get('https://www.baidu.com')
        print(driver.title)
        time.sleep(1)
        driver.close()
  10. 测试环境是否安装成功,能正确执行说明基本的运行环境已经搭建成功,如下图1.png

VNC安装

  1. 以上基本的运行环境虽然搭建好了,有时候需要用于线上问题定位和调试的时候,那就需要有可视化输出,VNC就是用于可视化的。具体安装步骤如下
  2. 安装VNC需要的桌面环境:sudo apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal -y
  3. 安装VNC server:sudo apt-get install vnc4server -y
  4. 启动server,并设置输出设备号为1:vncserver :1,首次运行会提示你设置密码。用于在后面使用客户端登录时需要。
  5. 指定接下来的进程的输出设备号为1(就为上一步指定设备号)。export DISPLAY=:1
  6. 打开mac的屏幕共享,然后连上这台远程server,输入刚刚设置的密码。然后执行python chrome.py就能看到这台server的实时输出了。如下图2.png
  7. 如果用于线上运行的时候,就没必要运行VNC server了,直接输出到Xvfb虚拟设备就可以了,节省资源。

版权声明
作者:wycm
出处:https://www.cnblogs.com/w-y-c-m/p/10533361.html
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
一个程序员日常分享,包括但不限于爬虫、Java后端技术,欢迎关注

转载于:https://www.cnblogs.com/w-y-c-m/p/10533361.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐