当我们的爬虫程序开发完成后,应该考虑的事情就是如何将我们的爬虫程序部署到我们的服务器上来运行了。
下面就以 CentOS 作为我们的爬虫程序的部署环境来介绍部署爬虫的第一步:部署环境搭建
一、CentOS 6.x 上安装 Python3
注:以下安装过程默认使用 root 用户安装,这样所有用户都能使用 python 3。但如果你刚好有特殊情况,比如:公司的服务器只给开发人员提供了普通账号,而没有 root 账号权限。那么也可以使用普通用户安装
1 环境介绍
由于 CentOS 6.x 中自带的是 python 2.6.6,并且有些系统级的服务使用了 python 功能,因此我们尽量不要去卸载系统中已经存在的 python2,以避免系统中其他需要 python2 执行的程序异常。
因此,我们的目标便是在已经存在 python2 的 CentOS 6.x 环境上安装 python3
2 系统环境
系统环境查看
可执行如下命令查看当前服务器系统的环境情况,由于不同的 Linux 系统发行版间的差异性。因此,以下的安装方法只适合同一发行版本或仅供参考用。
[root@lab1 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@lab1 ~]# uname -a
Linux lab1 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@lab1 ~]# python -V
Python 2.6.6
安装系统依赖
由于是编译安装,因此,需要依赖一些 gcc 相关的编译工具以及其他相关的依赖工具,可使用如下一条命令安装所有 python 3 所需要依赖。
[root@lab1 python]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel readline-devel tk-devel python-devel mysql-devel gcc make sqlite-devel _sqlite3
注:
(1) 此步骤必须是在编译安装之前进行,即执行 ./configure 之前
(2) _sqlite3 该库是 scrapy 运行所需的系统第三方库。因此,如果该系统库没有安装,那么 scrapy 的运行将会报错。
3 python 3.6 的安装方法
下载程序包
[root@lab1 python]# pwd
/data/software/python
[root@lab1 python]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
解压程序包
[root@localhost install]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
[root@localhost install]# tar -zxf Python-3.4.4.tgz
编译安装
[root@lab1 Python-3.6.4]# ./configure --prefix=/usr/local
[root@lab1 Python-3.6.4]# make && make install
注:
(1) 如果 ./configure 没有带后面的参数 --prefix=${INSTALL_PATH} ,那么 Python 默认安装在 /usr/local/bin/python3,建议指定目录安装。
(2) 如果你有特殊版本需要,如 3.5.1,那么你只需要将上述操作中的 3.6.4 换成 3.5.1 即可,其他部分的安装方法一致
4 测试安装
执行如下命令查看 python3 的版本信息以及 pip3 的 python 第三方库管理工具的版本信息
[root@lab1 Python-3.6.4]# which python3
/usr/local/bin/python3
[root@lab1 Python-3.6.4]# python3 -V
Python 3.6.4
[root@lab1 Python-3.6.4]# pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
注:
(1) 如果编译安装完成后执行上面的命令提示找不到 python3 或者 pip3,那么请确保你指定的安装目录位于系统的环境变量 PATH 中,可执行 echo $PATH 命令查看当前的 PATH 变量中有哪些目录,是否包含安装 python 时指定的安装目录(不指定安装目录时默认安装在 /usr/local/bin/python3,而 /usr/local/bin 默认是在 PATH 中的)
[root@lab1 Python-3.6.4]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_80/bin:/developer/apache-maven-3.0.5/bin:/root/bin
(2) 如果指定的安装目录不在 PATH 环境变量中,如安装目录在 /root/python 下。要想正常使用 python3,解决方法如下:
配置 PATH
编辑 /etc/profile 目录(vi /etc/profile),在文件末尾添加如下内容,其中 /root/python 表示指定的安装目录,bin 为必须添加,并保存退出
##### python3 config #####
export PATH=/root/python/bin:$PATH
执行如下命令使环境变量生效
[root@lab1 bin]# source /etc/profile
[root@lab1 bin]# pip3 -V
pip 9.0.1 from /root/python/lib/python3.6/site-packages (python 3.6)
总结,到此为止,我们已经成功在 CentOS 6.x 上安装了 python3 的程序。以后执行 python3 开发的程序就可以使用 python3 程序名去执行了。
二、安装 python3 对应的虚拟环境
下面将记录在同时拥有 python2 与 python3 的 CentOS 6.x 中安装与使用 python3 对应的 virtualenvwrapper
1 相关环境
centos 6.8
python 2.6.6(系统自带)
python 3.6.4
pip 9.0.1
注:以下操作都是基于 root 用户的环境
2 virtualenv 安装
[root@lab1 bin]# pip3 install virtualenv -i https://pypi.douban.com/simple
3 virtualenvwrapper 安装
[root@lab1 bin]# pip3 install virtualenvwrapper -i https://pypi.douban.com/simple
4 配置 virtualenvwrapper
(1) 修改 /usr/local/bin/virtualenvwrapper.sh
执行如下命令:
[root@lab1 ~]# vi /usr/local/bin/virtualenvwrapper.sh
将
# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
改为:
# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
fi
修改 virtualenvwrapper.sh 中的 python 版本
(2) 配置环境变量
修改 /etc/profile (系统环境变量文件,需要 root 权限 ),或者其他用户的【~/.bash_profile、.bashrc 或者 ZSH 之后的 .zshrc】,在文件的末尾添加如下语句,并保存退出:
### python virtualenvwrapper ###
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
然后运行如下命令使环境变量生效,出现如下信息表示配置生效。
[root@lab1 ~]# source /etc/profile
virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /root/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /root/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/get_env_details
5 常用命令
命令
描述
workon
查看当前已经创建的 virtualenv 列表
deactivate
退出当前虚拟环境
mkvirtualenv test
创建运行环境 test
workon test
进入 test 环境或从其它环境切换到 test 环境
rmvirtualenv test
删除运行环境 test
mkproject my-project
创建 my-project 项目和运行环境 my-project (需要设置 PROJECT_HOME 环境变量)
mktmpenv
创建临时运行环境
lsvirtualenv
列出可用的运行环境
lssitepackages
列出当前环境安装了的包
总结,到此为止,我们完成了在 CentOS 服务器上的 python3 以及 python3 的虚拟环境管理工具的安装,接下来将继续分享如何在服务器上搭建项目运行所需的第三方库,如何使用脚本将开发好的程序通过代码托管仓库拉取到服务器上并直接运行。