# COVEpidemic **Repository Path**: adiaoyc/COVEpidemic ## Basic Information - **Project Name**: COVEpidemic - **Description**: 新冠肺炎疫情大数据统计 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: http://cov.diaoyc.cn/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-29 - **Last Updated**: 2021-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目演示地址:http://cov.diaoyc.cn/ # 个人博客:https://www.diaoyc.cn/ # 相关配置 ### 一、配置服务端python环境 安装环境: CentOS7 python3 查看python版本命令: ```python python3 --version #查看python3安装版本 ``` #### 1.安装依赖 ```python yum install epel-release ``` #### 2.安装python3,目前支持python3.6.8(最高) ```python yum install -y python36 ``` #### 3.不过安装后执行python时显示版本还是2.7,这是因为为了多版本兼用/usr/bin/python一般是链接文件,链接到所用版本的文件,如原版执行文件是/usr/bin/python2.7,通过python链接到python2.7,这样同时存在高低版本也不会产生文件冲突的问题。而yum安装时是不会改变它的链接目标的,因此直接调用python是相当于还是调用python2.7。因此需要手动更改为链接python3.6. ```python cd /usr/bin/ rm python ln -s python3.6 python ``` ### 二、配置数据库 #### 1.服务器安装mysql略过 #### 2.创建数据库表 连接进入mysql ```mysql mysql -u root -p ``` 创建数据库 ```mysql create database cov; ``` 将cov.sql的SQL语句导入数据库 ```mysql use cov source 后面跟上脚本路径 ``` #### 3.创建mysql 用户 1.创建用户(covuser) 命令: ```mysql CREATE USER 'covuser'@'localhost' IDENTIFIED BY 'Cov2019.#@!'; ``` 2.授权 命令: ```mysql GRANT all ON cov.* TO 'covuser'@'localhost'; ``` 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令: ```mysql GRANT privileges ON cov.* TO 'username'@'localhost' WITH GRANT OPTION; ``` 3.设置与更改用户密码 命令: ```mysql SET PASSWORD FOR 'covuser'@'host' = PASSWORD('Cov2019.#@!'); ``` 4.最重要的一步 刷新权限: ```mysql FLUSH PRIVILEGES; ``` ### 三、配置运行 #### 1.将开发包上传至服务器 #### 2.安装依赖包 ```shell cd COVEpidemic/ pip3 install -r requirements.txt ``` #### 3.修改文件中的数据库信息 ```shell cd COVEpidemic/ vim utils.py cd COVEpidemic/Crawldata/ vim dboperation/DbOperation.py 修改上面两个文件中的数据库连接信息为自己配置的信息 ``` #### 4.运行项目 ```python python3 app.py & ``` #### 5.使用WSGI服务器 WSGI应用服务器--gunicorn 部署flask应用程序时 通常使用WSGI服务器和NGINX作为反向代理 5.1 安装NGINX ```shell 1、添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 2、安装Nginx 通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。 sudo yum install -y nginx 3、启动Nginx并设置开机自动运行 sudo systemctl start nginx.service sudo systemctl enable nginx.service ``` 5.2 安装Gunicorn ```shell pip3 install gunicorn ``` 启动Gunicorn ```shell cd COVEpidemic/ gunicorn -b 127.0.0.1:9090 -D app:app ``` my_app:app 需要根据实际项目进行替换 my_app是启动的文件名 app是启动文件里面的实例化的App对象的名称 -D 意思是以守护进程方式运行 5.3 编辑NGINX配置文件 vim /etc/nginx/nginx.conf ```shell http { ## 协议级别 include mime.types; default_type application/octet-stream; keepalive_timeout 65; gzip on; sendfile on; ##指定nginx是否调用sendfile函数(zero copy)来输出文件,对于普通应用必须设为on; ##如果用来进行下载等应用磁盘I/O重负载应用,可设置为OFF,以平衡磁盘与网络I/O处理速度,降低系统的uptime autoindex on; ##开启目录列表访问,适合下载服务器,默认关闭 upstream myserver{ ##负载均衡配置 server 127.0.0.1:8080 weight=1; server 192.168.1.4:8080 weight=1; server 192.168.1.5 weight=1; } server { ##服务器级别,每一个server类似于httpd中的一个 listen 80; server_name localhost; location / { ##请求级别,类似与httpd中的,用于定义URL与本地文件系统的映射关系 proxy_pass http://myserver; } } } ``` #### 6.部署定时爬虫 1.用到了selenium爬取百度热搜词,所以需要配置Chrome环境 Linux安装Chrome ```shell yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm yum list installed | grep chrome # 查看安装的Chrome版本 ``` 下载Chromedriver https://npm.taobao.org/mirrors/chromedriver 给Chrome执行权限 ```shell cd COVEpidemic/Crawldata/hotkey chmod 777 chromedriver ``` 2.使用crontab执行定时任务 格式:* * * * * 指令 5个星号分别代表 分、时、日、月、周 ```shell crontab -e # 创建定时任务 crontab -l # 查看定时任务 ``` ```shell 30 * * * * python3 /root/COVEpidemic/spider.py up_his >> /root/COVEpidemic/covlog/log_his 2>&1 & 3 */2 * * * python3 /root/COVEpidemic/spider.py up_hot >> /root/COVEpidemic/covlog/log_hot 2>&1 & */5 * * * * python3 /root/COVEpidemic/spider.py up_det >> /root/COVEpidemic/covlog/log_det 2>&1 & ``` 3.获取历史数据 ```shell python3 spider.py in_his ``` centos7 关闭防火墙 sudo systemctl stop firewalld 临时关闭 sudo systemctl disable firewalld ,然后reboot 永久关闭 sudo systemctl status firewalld 查看防火墙状态。