这段时间在做scrapy爬虫,对爬出来的数据基于Django做了统计与可视化,本想部署在腾讯云上玩玩,但是因为以前没有经验遇到了一些问题,在这里记录一下:
首先说下Django的创建与配置:
1. 创建Django项目: 无论想要将项目创建在哪个文件夹下,都只需要cd到制定的文件夹下执行该命令即可:django-admin startproject babel_scrapy ("babel_scrapy"是项目名称)
2当然,仅仅创建一个项目是远远不够的,一个Django项目的目录最起码应该是这样的:
1>最上边那个是项目根目录,下边有一个和项目名称同名的文件夹,这个是伴随你项目的创建而同时生成的。
2>下边那个bscrapy文件夹是项目app,创建项目后是没有的,需要自行创建,整个项目的后台逻辑基本上都在app中实现。
创建app时,首先应该cd到我们的django项目文件夹下,执行:python manage.py startapp bscrapy ("bscrapy"是我创建的app名称)
3>在下面有一个staic文件夹,这个文件夹用来存放项目的一些静态文件比如我们导入的js文件,layui文件,或者我们写的css与js文件,
这个static最开始也是没有的,不过创建这个文件夹不需要命令,只要在项目名上边右键new-->Directory,然后将名称写成static即可,
当然,创建好的static是无法使用的,需要进行关联配置,这个下边再讲。
4>下边还有一个templates文件夹用来存放我们写的html模板文件,也需要我们自行创建自行配置。
5>最后还有个manage.py 这是整个项目的启动文件,是随项目创建时而生成的,一般不需要我们去管,但是如果想要在启动Django项目时掉用某些方法时,可以在manage.py中调用,不过不推荐。
3下面我们说说配置:
首先,我们Django启动后肯定是想要访问我们写好的页面,但是html模板文件又在templates文件夹下,所以先配置他:
我们需要将“ os.path.join(BASE_DIR, "bscrapy/../templates") ” 放在babel_scrapy文件夹下的settings.py的这个地方:
这样,就可以找到这个文件夹了。
然后再配置babel_scrapy下的urls.py文件,这个文件,顾名思义,做路由转发的。
再urls.py中 首先得导入一个文件,就是我们创建得bscrapy这个app下有一个views.py,这个py文件主要是负责后台逻辑实现的。
在urls.py 这样导入这个views.py from bscrapy import views
然后在这里写路由转发:
这个index 是浏览器上的访问路径,比如 127.0.0.1:8000/index
这时请求就发到了urls.py处,找到这个index,然后在bscrapy这个app下的views下找这个index方法
在views.py中先导入这样一句: from django.shortcuts import render 用来重定义,
然后再写入这个方法,意思是重定向到index.html文件,这时,项目就会找到templates文件夹,在里边找到index.html文件,将其呈现到浏览器上,这是一个页面的访问就结束了
当然,使用bscrapy这个app时,也需要配置,还是在settings.py中,像这样加进去就好了:
最后,因为html页面有时需要用到类似于layui之类的东西,所以还要配置static文件夹:
在settings中这样写就可以了:
这样的话,一个Django项目就搭建起来了
下面时我这次遇到的一些问题和使用到的命令。
1:centos7关闭与开启防火墙:
关闭: systemctl stop firewalld
开启: systemctl start firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
重载models数据库的命令:
python manage.py makemigrations
python manage.py migrate
2: Django项目首先需要设定哪些ip可以通过浏览器访问该项目
在 项目同名的文件夹下的settings.py 中:
ALLOWED_HOSTS = [] 这个列表中可以填写允许访问该项目的ip,如果写“*”就说明允许任意ip访问该项目。
3: 在启动Django项目时 一半情况下是: python manage.py runserver 这样仅仅本机可以访问该项目
python manage.py runserver 0.0.0.0:443 这样的话是允许所有ip访问该项目。
而且有一点需要注意,为什么我的端口是443呢?写445行吗? 当然不行,因为我腾讯云上的安全组的安全组规则设置的是对外开放的web服务端口是80和443
所以应该是只有端口指定为这两个其中之一,才可以访问web服务的,当然,你也可以调整腾讯云上的安全组规则。
如果这三点都注意到了的话,应该你的Django项目也可以正常访问了的。
4: 刚刚写完博客 就出现问题了。。。很无奈
我在xshell上启动了项目,但是当我关掉xshell后 项目就宕掉了。。。
#nohup python3 /root/babel_scrapy/manage.py runserver 0.0.0.0:443 >manage.log 2>&1 </dev/null &
这样执行后,退出xshell后程序就不会宕掉了