汇总:爬取简书全站文章并生成 API(四)
优采云 发布时间: 2020-11-23 12:04抓取Jianshu整个网站文章并生成API(四)
简书
通过前面的介绍,可以说这个小项目已经基本完成。当然,剩下要做的就是代码重构,功能的不断改进和错误修复。最后,部署是联机的。如第一节所述,将有两种部署和联机方式。本节首先介绍第一种方法,使用nginx + uwsgi + django +超级用户进行环境部署。
nginx + uwsgi + django +环境部署主管
我使用Django已有一段时间了,但是它一直在本地进行测试并且尚未部署。我认为根据其他人博客的教程进行部署应该很容易,但是在阅读了十多个有关百度和Google的教程之后,部署仍然没有成功。我真的很失望。最后,在其他人的帮助下完成了部署,因此我进行了部署。该过程失败了,包括部署过程中遇到的许多问题。在安装之前,让我向大家介绍基本知识。
以下安装环境为CentOS7 x86_64 + python2.7.10 + Django1.9,CentOS 6也适用。
1.安装
首先,安装环境,除了nginx以外,其他两个可以通过pip安装:
# pip install django
# pip install uwsgi
可以使用yum直接安装nginx,有关编译和安装,请参阅编译和安装nginx。
# yum install nginx -y
创建Django应用程序。由于使用了nginx,因此最好将应用程序放置在nginx根目录中:
# django-admin startproject jianshu_api
# cd jianshu_api/
# django-admin startapp jianshu
然后在配置文件settings.py中设置要连接的数据库,将DEBUG = True更改为DEBUG = False,设置* ALLOWED_HOSTS = [''] **,并在末尾添加以下配置:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
然后运行并自动生成一个静态目录:
# python manage.py collectstatic
或直接将静态文件复制到相应目录:
# cp -r /root/.pyenv/versions/2.7.10/lib/python2.7/site-packages/rest_framework /usr/html/jianshu/static/
# cp -r /root/.pyenv/versions/2.7.10/lib/python2.7/site-packages/django/contrib/admin/static/* /usr/html/jianshu/static/
如果未正确设置,则在访问网站时无法加载相应的静态文件,如下所示:
无法加载静态文件
2.配置服务首先配置nginx:
server {
listen 8080;
#server_name jianshuapi ;
access_log /var/log/nginx/api.log;
# app 根目录
root /usr/html/jianshu;
index index.py index.htm;
location / {
# nginx 收到请求会就转发到 9001 端口
uwsgi_pass 127.0.0.1:9001;
include /etc/nginx/uwsgi_params;
}
#设定静态文件所在目录
location ^~ /static {
alias /usr/html/jianshu/static;
}
}
检查语法并重新启动:
# nginx -t
# nginx -s reload
配置uWSGi:
首先为uWSGI操作创建配置文件jianshu.ini:
# mkdir -p /etc/uwsgi && cd /etc/uwsgi
[uwsgi]
chdir = /usr/html/jianshu
socket = 127.0.0.1:9001
master = true
uid = root
wsgi-file = /usr/html/jianshu/jianshu_api/wsgi.py
processes = 2
threads = 4
chmod-socket = 666
chown-socket = root:nginx
vacuum = true
测试uWSGi是否可以正常工作:
# uwsgi /etc/uwsgi/jianshu.ini
然后在命令行中访问:8080 /:
api测试
现在您可以看到部署已成功。但是通常我们使用主管来管理
uwsgi和nginx,因此操作起来更加方便。
3.使用主管
有关主管的详细用法,请参阅:使用主管来管理流程。
首次安装主管:
# pip install supervisor
然后生成配置文件:
# echo_supervisord_conf > /etc/supervisord.conf
开始监督:
# supervisord
提供uwsgi配置文件,打开/etc/supervisord.conf并在底部添加:
[program:jianshu] ; 添加 uwsgi 的配置示例
command=/root/.pyenv/shims/uwsgi --ini /etc/uwsgi/jianshu.ini
directory=/usr/html/jianshu/
stdout_logfile=/var/log/supervisor/%(program_name)s_access.log
stderr_logfile=/var/log/supervisor/%(program_name)s_err.log
startsecs=10
stopwaitsecs=0
autostart=true
autorestart=true
[program:nginx] ;nginx 配置示例
directory=/
command=/usr/sbin/nginx -c /etc/nginx/nginx.conf
user=root
stdout_logfile=/var/log/supervisor/%(program_name)s_access.log
stderr_logfile=/var/log/supervisor/%(program_name)s_err.log
autostart=true
autorestart=true
startsecs=10
然后重新加载主管配置:
# supervisorctl reload
查看主管的状态:
# supervisorctl status
jianshu RUNNING pid 19466, uptime 0:07:08
nginx RUNNING pid 19490, uptime 0:07:05
再次访问api界面:8080/。
Jianshu API
-终于完成了部署,非常高兴,欢迎每个人使用该API,但不要随意使用它,毕竟服务器资源有限!
-下一节将介绍如何使用docker进行部署。