目录[-]

系统环境:Ubuntu 16.04.2 LTS

完整网站:放在/home/wwwroot下,myblog

一、运行流程

1、运行原理

2、相关包安装

#安装 apache2
sudo apt-get install apache2

# Python 2 安装mod_wsgi
sudo apt-get install libapache2-mod-wsgi

# Python 3 安装mod_wsgi
sudo apt-get install libapache2-mod-wsgi-py3

#确认安装的apache2版本号,最好在2.4以上
apachectl -v

二、Apache2配置

ubuntu的apache2所有配置文件在 /etc/apache2/ 下,在sites-available下自定义myblog.conf配置文件,名称myblog可自定义:

sudo vi /etc/apache2/sites-available/myblog.conf

配置文件如下:

<VirtualHost *:80>
    ServerName www.isky.top
    ServerAlias isky.top
    ServerAdmin 123@163.com

    #上传文件存储文件夹
    Alias /media/ /home/wwwroot/myblog/media/
    #网站静态文件夹,通过collectstatic命令收集的CSS、JS、IMAGE等文件
    Alias /static/ /home/wwwroot/myblog/static/

    <Directory /home/wwwroot/myblog/media>
        Require all granted
    </Directory>

    <Directory /home/wwwroot/myblog/static>
        Require all granted
    </Directory>

    #配置Django网站的wsgi.py文件路径,
    #把Apache2和你的Django网站项目联系起来
    WSGIScriptAlias / /home/wwwroot/myblog/myblog/wsgi.py
    <Directory /home/wwwroot/myblog/myblog>
    <Files wsgi.py>
        Require all granted
    </Files>

    #如果使用virtualenvs部署网站,
    #需配置 WSGIDaemonProcess 和WSGIProcessGroup两项
    # WSGIDaemonProcess isky.top python-path= /home/wwwroot/myblog
    # WSGIProcessGroup isky.top 

    </Directory>
</VirtualHost>

三、wsgi配置

注意:如果使用virtualenvs部署网站,这一步可以跳过,即可以不配置 wsgi.py 文件。

    import os
    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["DJANGO_SETTINGS_MODULE"] = "blog.settings"       # 7

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

第 #3,#4,#5 行为新加的内容,作用是让脚本找到django项目的位置;如果一台服务器有多个django project时,一定要添加第 #7 行内容,加载项目配置,避免不同网站项目之间访问混乱。

四、文件夹权限

注意:如果在配置FTP服务器时,已经设置了权限,可跳过此步。否则需要添加写的权限。

cd /home/tu/
sudo chmod -R 755 myblog

如果考虑安全性问题,可另外设置账户。

五、激活网站

使用以下命令,即可启动网站

sudo a2ensite myblog.conf

六、错误处理

如果访问网站出错,这时你可以把settings.py更改

DEBUG = True

重启服务器

sudo service apache2 restart

再访问网站,来查看具体的出错信息。

1、Apache2配置文件加载失败

如果访问网站显示Apache默认界面(如下),表示Apache安装正确可运行,但配置未加载:

  

可根据启动网站时的提示,查看错误日志:

journalctl -xe

也可以查看apache2的错误日志

vi /var/log/apache2/error.log

2、界面显示混乱

网站打开很乱,没有布局,多半是静态文件没有生效。

1.  确保你的配置文件中的路径是正确的

2.  确保你的settings.py中的文件设置正确

3.  确保已经收集静态文件

python manage.py collectstatic

七、扩展

部署时文件对应关系:


myblog.conf --> wsgi.py --> settings.py


明白了上面的关系, 一个 Django project 使用多个域名或让app使用子域名很简单,只要新建一个 wsgi.py 文件,更改里面对应的settings文件,新的settings文件可以对应新的urls.py,从而做到访问与原来不同的地址!