Python Scrapy 爬虫(三):部署环境搭建

当我们的爬虫程序开发完成后,应该考虑的事情就是如何将我们的爬虫程序部署到我们的服务器上来运行了。

下面就以 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 的虚拟环境管理工具的安装,接下来将继续分享如何在服务器上搭建项目运行所需的第三方库,如何使用脚本将开发好的程序通过代码托管仓库拉取到服务器上并直接运行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容