上次弄了个机器人,反响挺不错的,我也挺满意的,因为这个我也初步了解了服务器这个东西,懂得了如何将自己的脚本代码放到服务器上运行了,妈妈再也不怕我每天都得开着电脑才能运行脚本了,不过说实话,这个服务器真贵,不过有阿里云学生机,想尝试了解下的可以去试试,非常建议去折腾下,可以学到的东西很多。

如果你还没有了解我的机器人,可以看看为了你们,我用一天时间做了一个机器人!,也欢迎大家加我进群哈,大家一起交流学习!

当时为了将代码放到服务器上运行,也花了很多时间,所以避免还有不会的小白同学,记录下此过程,让他们少走点坑。

1. 购买服务器

如果你是学生的话,想折腾的可以去阿里云那里购买,因为有学生机优惠,只需要9.9一个月,但是只能购买一次,在下一次购买需要做任务才可以继续享用学生机优惠。如果你是土豪的话,可以直接忽略这个。

因为这次我只需要把机器人脚本运行就可以了,所以直接选择学生机的配置就够用了。

阿里云的学生机购买链接:https://promotion.aliyun.com/ntms/act/campus2018.html?spm=5176.10695662.1244717.1.605c4804V5gfhs

点击购买即可。

这个密码是你登陆上服务器的密码,需要记住,登陆用户名就是 root。

接下来就是扫码支付了。

购买了点击阿里云控制台,点击云服务器ECS,就可以看到你刚才购买的服务器了。

再点击下面的云服务器,你就可以看到这个服务器的相关配置了

连接服务器可以在这个页面的右边的远程连接进行连接,这个第一次点进去会有个远程连接密码,需要记住,因为每次在这里进行远程连接的时候都需要填入这个密码。

连接成功就会显示一个黑色框,这里连接服务器虽然可以,但是不太方便,这里推荐大家一个在 window 的免费 ssh 连接工具 putty

2. 在服务器上配置 Python 环境

需要在服务器上运行 Python 脚本 ,就必须要在服务器上有 Python 的环境,在阿里云购买的学生机默认就装有 Python 的,不过版本是 2.7.5。这里我们重新安装 Python3,是这个服务器上可以多个版本共存。

先在 putty 上连接我们的服务器。

上面的 ip 地址就是我们购买的服务器的共有ip地址,使用 ssh连接就行了。不过还得设置一个东西,不设置的话,如果超过一段时间不动终端的话,就会自动断开,又得重新连接。

这里设置成 60 秒就可以了,原理我现在不太记得了,如果有读者知道的话,可以在留言区说下。

点击 open,然后填写用户名 root 和自己之前设置的密码即可登陆成功,如上图。

接下来就是开始安装我们的 Python3 环境了。

先查看下 centos 服务器的已安装的 Python 版本

1
python -V

我这里是 3.6.8 版本,因为我重新配置了,如果你第一次使用,这个结果是 python 2.7.5

查看 python 可执行文件的路径

可以看到所在的目录,进入这个 bin 目录,并查看 python 文件

可以看到我这里的 python 指向了 python3 这个文件,但是你们第一次的会指向 python2.7 这个文件,接下来就是将 python 这个软连接指向 python3 就行了。如果怕弄坏的,想备份原来 python2 的文件可以执行 mv python2.7 python.bak 就可以将文件备份到当前目录了。

1)先安装相关包

1
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

需要需要确认时直接输入 y 即可

2)下载 python 3.6.8 源码包

如果觉得下载网速有点慢的话,可以更换阿里云源,可以参考这个连接:https://blog.csdn.net/qq_37274323/article/details/81107958

下载 python 3.6.8 包

1
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz

解压 python 3.6.8 源码包

1
tar xf Python-3.6.8.tar.xz -C /usr/local/src/

这个是将 python 源码包解压到文件夹 /usr/local/src 内,这里你也可以自己指定解压目录,你自己记得解压位置即可。

安装 python3

1
./configure --prefix=/usr/local/python3

这里的地址需要指定为自己的 python 源码包解压地址。

编译

1
make && make install

这时候可以说安装 python3 成功了,我们可以使用这个命令查看

1
/usr/local/python3/bin/pip3 list

更新 pip 版本

1
/usr/local/python3/bin/pip3 install --upgrade pip

也可以查看一下是否更新成功

1
/usr/local/python3/bin/pip3 list

3)建立软连接

现在就是需要将 python3 这个文件建立软连接,使 python 指向 python3 即可。

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

执行之后查看 python 版本

1
python -V

成功之后就会看到 python 指向了 python 3.6.8 版本,如果出错了

1
bash: python: command not found...

这个是你建立软连出问题了,可能指定的 python3 安装路径不正确,这时候将 python 这个软连接删除重新创建即可。

你可以进入 。/usr/bin 目录,查看是否创建软连接成功

若找到 python 这个指向为红色显示的,证明创建错误了,python3 的地址错误了。

这时就删除这个 python 软连接

再重新创建 python 软连接即可

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

这前面的地址就是 python3 的安装路径,就是有 python3 这个文件的目录。

4)修改 yum 配置

因为 yum 原来是使用 python2 的,改了 python3 之后可能会出错,所以需要重新配置。

修改 yum 文件

1
vi /usr/bin/yum

把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7保存,然后按esc,输入 :wq 退出即可

修改 urlgrabber-ext-down 文件

1
vi /usr/libexec/urlgrabber-ext-down

第一行改为#!/usr/bin/python2.7,然后按esc,输入 :wq 退出即可

现在就完成了 python 环境的配置了。

3. 下载相关库

为了方便管理,我这里使用了虚拟环境,防止每个脚本运行时所需要的库进行冲突,如果你暂时没有想那么复杂,只是想运行一次脚本而已,也可以不必要使用虚拟环境,不过还是建议使用虚拟环境的,毕竟始终都需要用到的。

1)下载 virtualenv 库

这个是创建 虚拟环境使用的库。

1
pip3 install virtualenv

注意:这里使用的是 pip3,若是直接使用 pip 则对应的是 python2 版本的。

2)下载 virtualenvwrapper-win 库

这个库是为了方便管理虚拟环境使用的

1
pip3 install virtualenvwrapper-win

下载完了还需要配置环境变量

1
 vim ~/.bashrc

在末尾添加上这两句

1
export WORK_HOME=$HOME/.virtualenvssource /usr/local/python3/bin/virtualenvwrapper.sh

第一句是固定的,第二句为指定 virtualenvwrapper 安装的路径

激活配置

1
source ~/.bashrc

然后进入你想创建虚拟环境的路径,输入以下命令

1
mkvirtualenv py3_test

创建成功之后会自动进入该虚拟环境

但是这里默认使用的是 python2 版本指定的虚拟环境,需要使用 python3 版本可以指定版本创建

指定 python 版本创建虚拟环境

1
mkvirtualenv py3 --python=python

上面使用 –python 参数来指定 python 版本,因为 python 这个文件是指向 python3 的,所以可以这样使用,当然你也可以填上你 python3 版本的位置,这时虚拟环境的 python 版本就是 3 了。

3. 下载机器人相关库

这里就是在虚拟环境中使用 pip3 安装 itchat 和 requests 库(用于爬虫获取早报)即可

4. 上传脚本到服务器

由于服务器上原本就带有 ftp 服务器的,所以我们只需要在本地安装个 fileZilla 客户端进行连接即可,自己去官网下载即可。

这里填上自己的服务器 ip 地址和连接账号和密码 ,点击连接即可

连接成功之后,左边就是我们服务器上面的文件了,右边就是本地文件,右击需要上传的文件选择上传即可。上传成功之后即可在服务器上看到相关文件。

接下来就是运行脚本了。

5. 在服务器上运行脚本

可以直接像在本地一样运行脚本

1
python robot.py

这样就可以 运行成功了,但是我们在关闭连接之后,这个脚本就停止了,那岂不是还是需要开着电脑挂机?

别急,我们可以在后台运行脚本啊,这样即使关闭连接,也一样在运行。使用命令如下:

1
nohup python robot.py

这时你可以查看进程

1
ps -ef | grep python

就会看到我们刚才 robot 代码已经运行起来了,这个就是在后台运行,关闭连接之后一样会运行,这下就放心了。

但是,如果发生错误的话,我们是无法知道哪里出错的,这时我们指定日志输出文件

1
nohup python -u robot.py > robot.log 2>&1 &

-u 就是指定实时的日志输出目录,而 & 符号是使程序在后台运行,一边运行还可以一边查看日志输出文件,这里的 robot.log 就是我们的日志输出文件。

还有一个问题,我想停止机器人怎么办?可以使用这个命令

1
kill PID

这里 PID 为 linux 系统上的进程号,要想停止哪个后台程序就填上它对应的 PID 即可,查看 PID

1
ps -ef | grep python

箭头所指就是 PID 了。

最后

由于我现在的知识水平有限,暂时只能说明这么多,这些都是我当初在第一次使用时所做的记录,如有错误,还请帮忙指出。同时还参考了几篇文章:

最后码字不易,如果对你有用的话,分享给你的朋友一起学习!