前面国庆节的时候写过一个简易的爬虫。php
《Python 简易爬虫实战》html
还没看过的同窗能够先看一下,这只爬虫主要用来爬取各个博客平台的阅读量等数据,一直以来都是天天晚上我本身手动在本地电脑运行,中间也有过几回忘记运行了,致使没有当天的统计数据。前端
固然最好的办法就是把这只爬虫部署在服务器上,让服务器定时去运行,这样就不须要我天天人工运行了,还有另一件事就是以前也说了要作一个统计页面,本身挖的坑,要本身填起来。java
正好最近各个云服务厂商都在搞双十一的活动,小编一眼看下去,都是新用户才能享受优惠,还好,小编在京东云仍是新用户,购买了京东云的服务。python
这个价格实在是太!贵!了!mysql
通常本身测试使用不必买和我同款的机器,小编买这个是为了后面有一些其余的服务也能够部署在上面。linux
闲话很少说,咱们正式开始吧。nginx
新机器拿到手,除了上面装好了一个 CentOS
之外,啥都没有了,第一步固然是先把环境装起来啊。c++
先列举下咱们要装的软件:git
先装这么多吧,后续有补充的话再接着装。
首先什么是 Docker 请各位同窗本身摆渡好吧,我简单解释一下 Docker 是一个容器,这个容器中能够运行不少的程序,这些程序之间互不干扰,若是其中那个程序在使用的过程当中配置不对搞不定了,只须要将对应的 container 中止掉删除掉从新启动一个便可,从这一点上来说相似于一个沙盒环境。这一点上尤为是数据库,本人拥有者丰富的在本地安装 Mysql 把 Mysql 玩脱了从新安装的经验。仍是 Docker 好用。
开始安装 Docker ,首先时用本身喜欢的工具链接到远程的服务器上(小编这里使用的是 xshell ),或者也能够本身本地安装对应的 CentOS 虚拟机(win 环境下安装 CentOS 虚拟机又能够写一篇教程了,尤为是其中的网络配置,第一次安装的同窗十有八九都卡在这里,有须要的同窗能够在公众号给我留言)。
链接成功后以下图:
好像把 ip 露出来了,emmmmmmmmmmmmm ,各位大佬,没事干别攻击小编的机器,拜谢。
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo systemctl start docker
若是 Linux 是使用 root 帐号登陆,命令中无需添加 sudo
,这个关键字的含义是使用管理员权限执行命令。
Docker 默认的镜像源在遥远的太平洋的另外一端,能够配置国内的镜像加速来加块咱们的拉取速度,小编这里选择的是阿里云的镜像加速,配置方式以下:
# 建立文件夹 sudo mkdir -p /etc/docker # 写入配置内容 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://12ofullf.mirror.aliyuncs.com"] } EOF # 重启服务 sudo systemctl daemon-reload sudo systemctl restart docker
至此,Docker 安装配置就完成了,可使用以下命令查看 Docker 的相关信息来验证 Docker 正常安装:
docker info
页面正常打印以下:
Mysql 能够有两种安装方式,一种是直接在 CentOS 上进行安装,另外一种是在 Docker 中进行安装,这里小编选择后一种,别问为啥,问就是简单、方便、快捷。
小编这里安装的 Mysql 选择版本为 5.7 ,安装命令以下:
docker pull mysql:5.7
等进度条走完,好了,咱们已经装好了 Mysql ,是否是很简单。
固然,咱们刚才只是把 Mysql 的景象给 pull 下来了,接下来的启动才是关键。
docker run --name mysql --restart=always -p 3306:3306 -v /www/mysql/conf.d:/etc/mysql/conf.d -v /www/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d -v /www/mysql/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:5.7
这个命令稍微有点长,不过不要紧,直接 Copy 就 Ok。
稍微解释下其中的含义吧:
--restart
标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
--restart
的参数说明:
--restart=on-fialure:5
表示当容器退出代码为非0时,Docker会尝试自动重启该容器,最多5次。-v 容器内的 /var/lib/mysql 在宿主机上 /www/mysql/datadir 作映射
-e MYSQL_ROOT_PASSWORD 初始密码
-p 将宿主机3306的端口映射到容器3306端口
接下来咱们测试下刚才安装的 Mysql ,固然是使用本地的链接工具看下是否能正常链接啊,这里的工具小编选择了 Navicat 这一经典的 Mysql 链接工具。
测试连接成功,咱们的 Mysql 安装完成。
Nginx 是一款优秀的反向代理工具,详细的信息各位同窗能够摆渡,简单描述下使用场景的话就是我一台服务器上能够启动多个服务,经过 Nginx 反向代理,能够映射多个域名,使用不一样的域名访问不一样的服务,固然 Nginx 的功能远不止这些。
首先,打开 Nginx 的官网( http://nginx.org/en/download.... ),选择一个你喜欢的版本,Copy 到它的下载连接:
而后咱们使用 wget 命令来下载它。
cd /opt/ wget http://nginx.org/download/nginx-1.17.5.tar.gz
小编这里选择的 Nginx 的版本为 1.17.5 。
等待进度条走完,这时咱们获得了一个 Nginx 的压缩包,接下来解压它。
tar -xvzf nginx-1.17.5.tar.gz
而后咱们须要安装 nginx 的编译环境:
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
等待进度条走完。
进入咱们刚才解压的目录:
cd nginx-1.17.5
开始配置、编译、安装:
./configure make && make install
一小段时间的等待。
等待执行完成后,能够看到 Nginx 已经帮咱们安装到 /usr/local/nginx/
这个目录下了,接下来咱们能够建立一个软链接,让咱们在任何目录均可以直接执行 nginx 的命令:
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx 相关命令
# 启动 nginx # 中止 nginx -s quit 或者 nginx -s stop # 重启 nginx -s reload
咱们启动 nginx ,打开浏览器访问直接访问ip,如图:
Nginx 已经安装完成,反向代理的配置咱们后面用到了再聊,这里先酱。
统计报表服务小编这里计划使用 Java 来写,固然 Java 程序也能够放入 Docker 中运行,不过配置 Java 环境就是一件顺手的事情,顺便作了吧:)
首先同样,先下载 JDK8 ,而且将 JDK8 放入 /opt/ 目录中。
由于小编这里本地有下好的,就不去下载了,你们能够访问 Oracle 的官网下载。
小编这里给一个下载连接:https://www.oracle.com/techne...
回到咱们的 CentOS :
cd /opt/ ll
小编这里使用的 jdk 的版本是 8u221 。
直接解压:
tar -xvzf jdk-8u221-linux-x64.tar.gz
好了,咱们又安装完了,固然还须要配置下环境变量,直接编辑 /etc/profile
这个文件,在文件中加入咱们的环境变量:
# 编辑 vi /etc/profile
写入环境变量以下:
# 先按 i 开启插入模式,写入如下内容 export JAVA_HOME=/opt/jdk1.8.0_221 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
退出保存时先按 esc 键,输入 :wq
,再按回车键 enter
。
这时须要刷新下配置文件:
source /etc/profile
咱们来测试刚才配置的 jdk 环境变量是否生效:
# 输入 java -version # 输出 java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) # 输入 javac -version # 输出 javac 1.8.0_221
jdk 安装完成
终于到了最重要的 Python3 的安装了 。
首先同样,去 Python 的官网,找到对应版本的 Python3 的下载地址,进入 /opt/
目录进行下载:
官网下载连接:https://www.python.org/downlo...
小编这里选择的是截止目前最新发布的 3.8.0 版本。
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
下载完成后直接解压:
tar -xvzf Python-3.8.0.tgz
解压后编译安装:
# 建立安装目录 mkdir /usr/local/python3 cd Python-3.8.0 # 检查配置 ./configure --prefix=/usr/local/python3 # 编译、安装 make && make install # 建立软链接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
测试安装结果:
# 输入 python3 -V # 输出 Python 3.8.0
至此,前置环境已经搭建完成~~~
咱们前面写的爬虫是一个 .py
,先把这个文件上传至服务器,目录本身喜欢就好,小编通常放置在 /opt/
目录下。
因为咱们的爬虫引用了一些第三方的模块,这里须要先安装这些模块:
pip3 install lxml pymysql
安装完成后咱们执行一下以前的脚本:
# 输入 python3 /opt/pythonproject/spider-demo.py # 输出 ---------CSDN 数据写入完成--------- ---------掘金 数据写入完成--------- ---------CNBLOG 数据写入完成---------
能够看到执行成功,接下来,咱们要为 CentOS 设置定时任务,暂时先设置成天天的整点执行一次咱们的 Python 爬虫,便于咱们分辨当前的任务是否执行。
定时任务咱们是使用 crontab 来完成的,若是当前的 CentOS 不含有 crontab ,能够先进行安装:
yum install crontabs -y
几个基础命令了解一下:
/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //从新载入配置 查看crontab服务状态:service crond status
咱们先配置定时任务:
# 进入任务计划设置 crontab -e # 计划内容 0 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * python3 /opt/pythonproject/spider-demo.py # 保存退出 :wq
任务配置完成后,从新载入一下配置,或者重启一下服务都是能够的。
接下来就是静静的等待一小时后看下数据有没有正常的写入数据库。
统计报表使用 Java 来完成,后端使用技术为 SpringBoot + Mybatis + Thymeleaf 。前端设计技术为 Vue + Element(饿了么前端组件库)。
具体实现就不列举了,有兴趣的同窗能够访问代码仓库获取。
成品大体是酱紫滴:
Java 程序发布大体介绍一下吧,在服务器上建立一个本身喜欢的目录,将本地的程序打包后拖上去,执行下面的命令:
nohup java -jar /opt/project/tongji.jar >tongji.out 2>&1 &
就启动成功了。固然也能够将这个程序打成 Docker 镜像(这个后续有机会再聊吧),经过 Docker 来启动 Java 服务。
你觉得这就完了么?怎么可能,咱们还有 Nginx 没有用呢,下面来介绍如何经过 Nginx 来反向代理一个域名。
首先,你要有一个域名,小编的域名是在腾讯云购买的,而且完成了备案,能够为所欲为的使用啦~~~~
首先,自定义一个域名指向咱们的服务器,大体是这样滴:
稍微等一会,等 DNS 生效。而后咱们访问域名:http://tongji.geekdigging.com/ ,这时能够看到页面跳转至 Nginx 的首页:
接下来咱们要配置 Nginx 的反向代理了。
首先在 /usr/local/nginx/conf/nginx.conf
这个文件的最后增长一句话:
include /etc/nginx/vhost/*.conf;
由于咱们后面可能会配置不少域名,这里直接将全部的域名相关的配置文件都放在 /etc/nginx/vhost/
这个目录下,方便管理, nginx 自身的配置文件咱们很少作修改。
咱们在 /etc/nginx/vhost/
建立 tongji.conf
文件,其中内容以下:
server { listen 80; autoindex on; server_name tongji.geekdigging.com; access_log off; # access_log /usr/local/nginx/logs/fuhui_access.log combined; error_log /usr/local/nginx/logs/fuhui_error.log error; index index.html index.htm index.jsp index.php; if ( $query_string ~* ".*[\;'\<\>].*" ){ return 404; } location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Forward-For $remote_addr; } }
完成后重启 Nginx :
nginx -s reload
而后咱们就能经过域名访问本身的统计报表了,如图:
具体连接为:http://tongji.geekdigging.com/ ,感兴趣的小伙伴能够本身试试看,有不清楚的地方能够在公众号留言问我。
本系列的全部代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便你们取用。
https://yq.aliyun.com/article...
https://blog.csdn.net/d124067...
若是个人文章对您有帮助,请扫码关注下做者的公众号:获取最新干货推送:)