正常部署的过程是按照自强学院的,接近官方,这里注明,在搜集信息阶段需要注意信息源头的加权,找最可靠的,事半功倍;CSDN上看了很多都不行,最后找官方文档的时候,搜到了下边这个
了解静态文件:https://code.ziqiangxuetang.com/django/django-static-files.html
Django部署过程:https://code.ziqiangxuetang.com/django/django-deploy.html
附一个我项目的目录结构(放在/home下了):
| mysite
| —— manage.py
| —— mysite
| —— | —— settings
| —— | —— …
| —— blog
| —— |—— ...
| —— | —— templates
| —— | —— | —— index.html
| —— | —— | —— static
| —— | —— | —— | —— css
| —— | —— | —— |—— images
过程中出现的问题:
1.首先报403
这个主要是我把东西放到/root下了,这个需要权限,所以挪到/home下重新部署
2.然后报ImportError: No module named 'django'
解决方法是把之前的卸载了,又重新装了一个
pip3 uninstall django
sudo -H pip3 install django==1.11.9
3.ALLOWED_HOSTS = ['*']
我还在settings.py里加了一个允许所有,不知道是不是可以不加,有空试一下
4.然后发现网站上边的图片没有显示出来
搜集静态文件没有收集完
apache配置文件更改静态文件地址到自己写的静态文件的部分
<VirtualHost *:80>
ServerName 106.12.103.233
ServerAlias qcwebtest.com
ServerAdmin 752716886@qq.com
#实际作用是给后边的静态文件地址起一个别名
Alias /static/ /home/mysite/blog/templates/static/
<Directory /home/mysite/blog/templates/static/>
Require all granted
</Directory>
WSGIScriptAlias / /home/mysite/mysite/wsgi.py
<Directory /home/mysite/mysite/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
5.settings.py里边的设置
STATIC_URL = '/static/'
#运行 python3 manage.py collectstatic 的时候
#STATIC_ROOT文件夹 就会将所有STATICFLILE_DIRS中所有文件夹中的文件,以及app中static中的文件都复制
过来
#将这些文件放在一起是为了apache等部署的时候更方便
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
#可以用来存放项目中共用的静态文件,以及app中static中的文件复制过来
#如果不想用可以不用,都放在app 中 static 里就可以,通过下边的finder会自动找到的
#STATICFILES_DIRS = (
# os.path.join(BASE_DIR, "common_static"),
# '/blog/templates/static/', # 用不到的时候可以不写这一行
#)
#默认设置,Django 默认会在STATUIC_DIRS中的文件夹和 各个app下的static文件夹找文件
#注意有先后顺序,找到了就不会再找了
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)
6.wsgi.py里边的设置
import os
from django.core.wsgi import get_wsgi_application
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))#3
import sys # 4
sys.path.insert(0,PROJECT_DIR) # 5
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
7.一个很好用的日志查看命令,出问题记得查看日志
cat /var/log/apache2/error.log
8.最后我的blog(完成了框架和对了一个接口)
POST : http://106.12.103.233/index/