当前位置: 首页 > 后端技术 > Python

小白Python爬虫部署Linux

时间:2023-03-25 22:56:09 Python

前言国庆写了一个简单的爬虫。《Python 简易爬虫实战》没看过的小伙伴可以先看看。本爬虫主要用于爬取各种博客平台的阅读量等数据。我一直都是每天晚上在本地电脑上手动运行,中间有几次忘记运行,导致当天没有统计数据。当然,最好的办法就是把这个爬虫部署在服务器上,让服务器定时运行,这样我就不用每天手动运行了。还有一个就是我之前也说过,想做一个统计页面,自己去挖。坑还得自己填。恰好最近各个云服务商都在举办双十一活动。乍一看,只有新用户才能享受优惠。幸运的是,我还是京东云的新用户,购买了京东云的服务。价格太贵了!昂贵的!向上!一般不需要自己买一台和我一样型号的机器自己测试使用。我买这台机器是为了以后也可以在上面部署一些其他的服务。事不宜迟,让我们开始吧。前期环境准备新机器到手的时候,除了安装了一个CentOS,什么都没有。第一步当然是先安装环境。先列出我们要安装的软件:DockerMysqlPython3Java8Nginx先安装这么多,后面有补充再安装。Docker首先,什么是Docker?同学们,请摆渡自己。我简单说明一下,Docker是一个容器。许多程序可以在这个容器中运行。这些程序不会相互干扰。如果在使用过程中,其中一个程序的配置不正确,想不通,只需要停止相应的容器,删除它,然后重启即可。从这个角度来看,它类似于沙盒环境。对于数据库尤其如此。在本地安装Mysql和重装Mysql不用重装,我有丰富的经验。Docker仍然易于使用。开始安装Docker,先用自己喜欢的工具连接远程服务器(小编这里用的是xshell),也可以在本地安装对应的CentOS虚拟机(也可以在win环境下自己写一个CentOS虚拟机)就可以了一个教程,特别是网络配置,大部分第一次安装的同学都卡在这里了,需要的同学可以给我留言公众号)。连接成功后如下图:好像ip暴露了,emmmmmmmmmmmmm,请大家没事别攻击小编的机器,谢谢。#第一步:安装一些必要的系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#第二步:添加软件源信息sudoyum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#第三步:更新安装Docker-CEsudoyummakecachefastsudoyum-yinstalldocker-ce#第四步:启动Docker服务sudosystemctlstartdocker如果linux使用root账号登录,命令中不需要加sudo。这个关键字的意思是用管理员权限执行命令。Docker默认的镜像源是在遥远的太平洋的另一边。可以配置国内镜像加速来提高我们的拉取速度。小编这里选择阿里云的图片加速。配置方法如下:#创建文件夹sudomkdir-p/etc/docker#写入配置内容sudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://12fullf.mirror.aliyuncs.com"]}EOF#重启服务sudosystemctldaemon-reloadsudosystemctlrestartdocker至此Docker安装配置完成,可以使用如下命令查看Docker的相关信息验证Docker安装是否正常:dockerinfo页面正常打印如下:MysqlMysql可以通过两种方式安装,一种是直接在CentOS上安装,一种是在Docker中安装。在这里,小编选择了后者。别问为什么,简单、方便、快捷。小编这里安装的Mysql选择的版本是5.7,安装命令如下:dockerpullmysql:5.7等到进度条走完,好了,Mysql我们就安装好了,是不是很简单呢?当然,我们刚才只是拉取了Mysql镜像,接下来的启动才是关键。dockerrun--namemysql--restart=always-p3306: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-eMYSQL_ROOT_PASSWORD=123456-eTZ=Asia/Shanghai-dmysql:5.7这个命令有点长,但是不没关系,只是复制就可以了。让我们稍微解释一下它的含义:--restart标志将检查容器的退出代码,并根据它决定是否重新启动容器。默认是不重启。--restart的参数说明:always:不管容器的退出码是什么,Docker都会自动重启容器。on-failure:只有当容器的exitcode为非零值时才会自动重启。此外,该参数还接受一个可选的重启次数参数,--restart=on-fialure:5表示当容器退出代码非零时,Docker会尝试自动重启容器,最多5次。-v将容器中的/var/lib/mysql映射到宿主机上的/www/mysql/datadir-eMYSQL_ROOT_PASSWORD初始密码-p将宿主机的3306端口映射到容器的3306端口接下来我们测试刚才的Mysql安装好了,当然是用本地连接工具看看能不能正常连接。这里的工具小编选择了经典的Mysql连接工具Navicat。测试链接成功,我们的Mysql安装完成。NginxNginx是一个优秀的反向代理工具。详细信息,同学们可以摆渡。使用场景简单描述一下,我可以在一台服务器上启动多个服务。通过Nginx反向代理,可以映射多个域名。使用不同的域名访问不同的服务。当然,Nginx的功能远不止这些。首先,打开Nginx的官网(http://nginx.org/en/download....),选择一个你喜欢的版本,复制到它的下载地址:然后我们使用wget命令下载。cd/opt/wgethttp://nginx.org/download/nginx-1.17.5.tar.gz这里小编选择的Nginx版本是1.17.5。等待进度条走完,我们就得到一个Nginx压缩包,然后解压。tar-xvzfnginx-1.17.5.tar.gz然后我们需要安装nginx编译环境:yuminstall-ygcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel等待进度条完成。进入我们刚刚解压的目录:cdnginx-1.17.5开始配置编译安装:./configuremake&&makeinstall稍等片刻。等待执行完成后,我们可以看到/usr/local/nginx/目录下已经为我们安装好了Nginx。接下来我们可以创建一个软连接,这样就可以在任意目录下直接执行nginx命令:ln-s/usr/local/nginx/sbin/nginx/usr/local/sbin/nginx相关命令#启动nginx#停止nginx-squitornginx-sstop#重启nginx-sreload我们启动nginx,打开浏览器访问直接访问ip,如图:Nginx已经安装好了,后面会用到反向代理的配置,所以先来说说吧。这里的Java8统计报表服务编辑器打算用Java编写。当然,Java程序也可以放到Docker中运行,不过配置Java环境是一件得心应手的事情。顺便说一下:)首先,先下载JDK8,安装JDK8放在/opt/目录下。因为这里小编在本地有很好的下载,就不下载了。可以到Oracle官网下载。这里小编给出了一个下载链接:https://www.oracle.com/techne...回到我们的CentOS:cd/opt/ll这里小编使用的jdk版本是8u221。直接解压:tar-xvzfjdk-8u221-linux-x64.tar.gzOK,我们又安装完成了,当然我们还需要配置环境变量,直接编辑/etc/profile文件,添加我们的环境变量到文件中:#编辑vi/etc/profile写入环境变量如下:#先按i打开插入模式,写入如下内容exportJAVA_HOME=/opt/jdk1.8.0_221exportJRE_HOME=${JAVA_HOME}/jreexportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexportPATH=${JAVA_HOME}/bin:$PATH退出保存时,先按esc键,输入:wq,再按回车键进入。这个时候需要刷新配置文件:source/etc/profile我们来测试一下刚刚配置的jdk环境变量是否生效:#输入java-version#输出java版本"1.8.0_221"Java(TM)SERuntimeEnvironment(build1.8.0_221-b11)JavaHotSpot(TM)64-BitServerVM(build25.221-b11,mixedmode)#Inputjavac-version#Outputjavac1.8.0_221jdk安装完成Python3终于到了最重要的安装蟒蛇3。首先,进入Python官网,找到Python3对应版本的下载地址,进入/opt/目录下载:官网下载链接:https://www.python.org/downlo..小编这里选择截止日期目前最新发布的是3.8.0版本。wgethttps://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz下载后直接解压:tar-xvzfPython-3.8.0.tgz解压后编译安装:#createinstallation目录mkdir/usr/local/python3cdPython-3.8.0#检查配置./configure--prefix=/usr/local/python3#编译安装make&&makeinstall#创建软连接ln-s/usr/local/python3/bin/python3/usr/bin/python3ln-s/usr/local/python3/bin/pip3/usr/bin/pip3测试安装结果:#输入python3-V#输出Python3.8.0至此,pre-环境已经搭建完成~~~部署爬虫我们前面写的爬虫是一个.py,先把这个文件上传到服务器,你喜欢的目录就好了,小编一般都放在/opt/目录下。由于我们的爬虫引用了一些第三方模块,所以需要先安装这些模块:pip3installlxmlpymysql安装完成后,执行之前的脚本:#输入python3/opt/pythonproject/spider-demo.py#输出----------CSDN数据写入完成----------------掘金数据写入完成----------------CNBLOG数据写入iscomplete----------可以看到执行成功。接下来,我们需要为CentOS设置定时任务。暂时将其设置为每天整点执行一次我们的Python爬虫。方便我们区分当前任务是否执行。我们使用crontab来完成定时任务。如果当前的CentOS不包含crontab,可以先安装:yuminstallcrontabs-y几个基本命令了解一下:/sbin/servicecrondstart//启动服务/sbin/servicecrondstop//关闭服务/sbin/servicecrondrestart//重启服务/sbin/servicecrondreload//重新加载配置查看crontab服务状态:servicecrondstatus我们先配置定时任务:#进入任务计划设置crontab-e#planContent00,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程序发布。在服务器上新建一个自己喜欢的目录,将本地程序打包拖到里面,执行如下命令:nohupjava-jar/opt/project/tongji.jar>tongji.out2>&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{listen80;自动索引;server_nametongji.geekdigging.com;access_log关闭;#access_log/usr/local/nginx/logs/fuhui_access.日志合并;error_log/usr/local/nginx/logs/fuhui_error.log错误;indexindex.htmlindex.htmindex.jspindex.php;如果($query_string~*".*[\;'\<\>].*"){返回404;}location/{proxy_passhttp://127.0.0.1:8080;proxy_set_header主机$http_host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_header客户端IP$remote_addr;proxy_set_headerX-Forward-For$remote_addr;}}完成后重启Nginx:nginx-sreload然后我们就可以通过域名访问自己的统计报告了,如图:具体链接为:http://tongji.geekdigging.com/,感兴趣的朋友可以自己尝试一下,有什么问题可以在公众号留言问我。示例代码本系列所有代码编辑器都会放在代码管理仓库Github和Gitee上,方便大家使用。示例代码-Github示例代码-Gitee参考https://yq.aliyun.com/article...https://blog.csdn.net/d124067...如果我的文章对您有帮助,请扫码前往关注下作者的公众号:获取最新干货推送:)