Skip to content

分布式爬虫环境配置

wpm edited this page Jul 2, 2017 · 15 revisions

这几天有用户反应环境配置比较麻烦,所以写了一篇文章,专门介绍如何搭建环境。

配置msyql

下面记录了如何在ubuntu16.04上安装mysql5.7的方法。


sudo apt install mysql-server

安装时会让你输入mysql root用户的密码,并确认密码

sudo apt install mysql-client

然后可以通过

ps aux|grep mysql

查看mysql是否安装成功并且已经启动

再通过

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改

bind-address = 127.0.0.1

bind-address = 0.0.0.0

这样的话,mysql才能监听远程的请求

一般,生产环境中,不建议直接使用root,我们通过mysql客户端新建一个用户weibospider,并给它赋予权限

mysql -u root -p

然后输入 安装mysql的时候输入的密码,进入mysql命令行后

grant all on *.* to weibospider@'%' identified by '123456';

这里我们并未先创建一个用户,而是直接运行赋权限的语句,它在执行的时候会先看有不有weibospider这个用户,有就使用,没有就创建,这里我们给该用户设置的密码是123456,权限*.*表示所有权限

然后再在mysql命令行中刷新一下

flush privileges;

最后重启mysql使之生效

sudo /etc/init.d/mysql restart


上述是mysql5.7的安装过程,顺利的话,我们已经可以连接并且使用mysql了,但是由于mysql server默认编码是latin1,我们还需要做一些修改。先通过

show VARIABLES LIKE '%char%';

查看mysql编码,发现

character_set_server latin1

character_set_database latin1

我们先通过

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]域下加上以下内容

character-set-server=utf8mb4

最后,在该文件默认添上下面内容

[mysql]
default-character-set=utf8mb4

然后重启mysql即可

sudo /etc/init.d/mysql restart

建议大家使用可视化工具(比如navicat或者datagrip)来操作mysql数据库


centos上安装mysql可以参考这篇文章

安装好后,mysql的root默认密码可以通过

grep "temporary password" /var/log/mysqld.log

来获取。然后再通过

SET PASSWORD = PASSWORD('yourpassword');

设置新密码。注意这里需要设置复杂密码,否则设置不会成功。

配置redis

好像大家的疑问都集中在redis的配置上,下面我详细说说

  1. 在要安装redis的目录下载好redis,比如我的路径是/home/ubuntu/program/,先需要切换到该目录(通过cd /home/ubuntu/program切换),然后通过wget进行下载

wget http://download.redis.io/releases/redis-3.2.9.tar.gz

  1. 解压下载好的压缩包

tar xzf redis-3.2.9.tar.gz

  1. 进入解压的目录

cd redis-3.2.9/

  1. 通过make编译,它会自己执行make install

make

如果make出错,检查是否安装了gcc,如果报jemalloc/jemalloc.h: No such file or directory,则执行

make MALLOC=libc

  1. 启动redis看是否成功

src/redis-server

如果不成功就给我提issue,成功了就往下面看

  1. ctrl+c 停止redis,在redis-3.2.9/这个目录下修改redis.conf配置文件,主要是改这几点:(1)为redis设置密码 (2)让redis监听所有请求 (3)把redis进程改为守护进程

vim redis.conf

# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1

后面加一行

bind 0.0.0.0

它的作用是让redis监听所有ip请求

然后在

# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared

这里添加一行

requirepass weibospider

这里的作用是为redis设置密码,我设置的密码是weibospider,你们可以根据实际情况设置

然后在这里

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize no

daemonize no改成 daemonize yes

然后再将改动保存,退出。(这里我并没介绍vim的操作,大家如果这里操作有难度,可以自行google解决啊)

  1. 这次通过配置文件启动redis,同样在redis-3.2.9/这个目录下,通过

src/redis-server redis.conf

启动redis

  1. 其实,到这里,redis就已经启动了。可以通过

ps aux|grep redis

查看redis进程是否存在

安装python3

一般linux平台都带有python3,如果没有的话,可按照如下过程安装(这里我以centos为例)

  1. 先下载python3

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

  1. 再解压

tar -zxvf Python-3.5.2.tgz

  1. 再切换到解压后的目录

cd Python-3.5.2

  1. 切换到Module目录下,去掉关于SSL模块的注释

cd Modules

vim Setpy.dist

找到下面这段代码

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
# SSL=/usr/local/ssl
# _ssl _ssl.c \
#      -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#      -L$(SSL)/lib -lssl -lcrypto

修改为下面所示

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
# SSL=/usr/local/ssl
 _ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

如果是没有安装openssl-devel的话,还需要安装openssl-devel包

yum install openssl-devel -y

  1. 编译安装python

cd ..

./configure

make && make install

如果没安装gcc的话,编译会失败,安装方式如下

yum install gcc

  1. 给Python3.52建立软连接

rm -f /usr/bin/python

ln -s /usr/local/bin/python3 /usr/bin/python

至此,关于Python3.5的安装的整个过程就结束了。


使用这种方式升级Python的话会导致yum不能使用,原因是yum默认使用系统自带的python版本,解决方法如下 修改yum文件:

vi /usr/bin/yum

将文件头部的

#!/usr/bin/python

改为如下内容

#!/usr/bin/python2.7

这里python2.7我的服务器系统自带的python版本,所以大家需要根据自身情况改成自己系统自带的python版本