部署selenuim + phantomjs自动化脚本

内容概要

本地系统为Ubuntu 16.04LTS, 服务器系统为Centos x86_64

ssh登录远程linux系统

Windows下登录远程linux系统使用PuTTY
Linux系统下使用ssh(Secure Shell)登录
前提,需要事先知道linux服务器用户名的账号密码,如登录root用户,则需要知道root的密码。之前买了搬瓦工的vps翻墙,流量1000G/月,网速限制下怎么也用不完这么多,正好可以用来部署。
首先,通过SSH登录linux服务器root用户, -p后为服务器提供的SSH端口号,
$ ssh root@<server-IP> -p port
然后会要求输入root用户密码,正确输入后就能进入服务器shell

安装脚本依赖

因为脚本用到了phantomJS,需要下载phantomJS驱动。PhantomJS其实就是没有GUI的浏览器,可以实现普通浏览器相同的功能。
通过官网找到linux64版本的链接下载地址(可以用过chrome调试模式,查看<a href="url">),然后通过wget命令下载
$ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
等待下载完后,解压
$ tar -xvf $(find phantom*)
phantomjs文件复制到/usr/bin目录

$ cd phantomjs-2.1.1-linux-x86_64/bin
$ cp phantomjs /usr/bin

在shell中输入phantomjs查看是否能正确运行
$ phantomjs hello.js
我遇到了如下错误

error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

通过安装fontconfig可以解决
yum intall fontconfig

文件传输

怎么将本地的脚本传输到linux服务器呢,可以通过scp,使用方式和cp差不多,都是scp localfile <user>@<remote_server>:<path/to/save>,但是这里需要注意的是要带上SSH端口号,否则
默认会用22端口进行连接,但是服务器各个服务器ssh端口不同,所以需注明具体端口。
$ scp -P <port> muji.py root@<server_ip>:~/Downloads
这里我选择将文件拷贝到~/Dowmloads文件目录中,端口命令注意为大写P

运行脚本

准备将脚本运行在virtualenv环境中又遇到了问题,在python3.4中创建virtualenv时遇到了类似错误
Error: Command '['/some/directories/bin/python3.4', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
google到了解决方案

pyvenv-3.4 --without-pip myvenv
source ./myvenv/bin/activate
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-3.4.4.tar.gz
tar -vzxf setuptools-3.4.4.tar.gz
cd setuptools-3.4.4
python setup.py install
cd ..
wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz
tar -vzxf pip-1.5.6.tar.gz
cd pip-1.5.6
python setup.py install
cd ..
deactivate
source ./myvenv/bin/activate

创建virtualenv时不要包含pip包,然后手动从pypi上下载。