【python3】用apache2部署django项目,个博成功案例和问题集锦

正常部署的过程是按照自强学院的,接近官方,这里注明,在搜集信息阶段需要注意信息源头的加权,找最可靠的,事半功倍;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 [email protected]

    #实际作用是给后边的静态文件地址起一个别名

    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/

 

【python3】用apache2部署django项目,个博成功案例和问题集锦