Django 部署Apache

文章目录

  • 1、我的环境
  • 2、建立Python与Apache的链接
  • 3、为Django新建配置文件

1、我的环境

OS: Ubuntu 14.04

Apache: Apache2.4
sudo apt-get install apache2 #安装Apache
apachectl -v #检查Apache版本,ubunt 14.04没经过其他设置,默认应该是Apache2.4

Python: Python3.5.2

Django: Django1.11.7
pip install Django==1.11.7

2、建立Python与Apache的链接

sudo apt-get install libapache2-mod-wsgi #Python2
sudo apt-get install libapache2-mod-wsgi-py3 #Python3

3、为Django新建配置文件

大致可以分为四步:
1)将Django工程放在/var/www/html/下;
2)sudo vi /etc/apache2/sites-available/xhqdtz.conf 修改配置文件;
3)sudo a2ensite xhqdtz.conf 配置文件生效;
4)sudo service apache2 restart 重启Apache

新建一个网站配置文件:
sudo vi /etc/apache2/sites-available/xhqdtz.conf

内容如下:

<VirtualHost *:80>
ServerName www.xhqdt.com
#ServerAlias otherdomain.com
#ServerAdmin [email protected]
Alias /media/ /var/www/html/xhqdtz/media/
            
Alias /static/ /var/www/html/xhqdtz/static/                
<Directory /var/www/html/xhqdtz/static></Directory>                  
    Require all granted
</Directory>
WSGIScriptAlias / /var/www/html/xhqdtz/xhqdtz/wsgi.py   
<Directory /var/www/html/xhqdtz/xhqdtz></Directory>                  
<Files wsgi.py>
    Require all granted
</Files>
</Directory>
</VirtualHost>

通过修改上面的文件,你就可以让Apache找到你的Django工程,上边可以修改的内容包括:
80:修改80为其他数字,可以更改你的端口号,国内的电信貌似把80端口给封了(如果你的域名没有备案的话)。注意,还要修改/etc/apache2/port.conf文件中的Listen port
ServerName:后边改成你自己的域名,如果没有的话就用IP代替。注意,如果改成了域名,还需要修改Django工程下的seeting.py文件,将其ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=[‘www.yourdomain.com’;],多个域名可以通过逗号隔开。
ServerAlias:你的其他域名或IP

让配置文件生效,你需要运行:sudo a2ensite xhqdtz.conf
让配置文件失效,你需要运行:sudo a2dissite xhqdtz.conf

4、修改Django的wsgi.py文件

修改上面说的/var/www/ProjectName/ProjectName/wsgi.py为如下格式

    import os
    from os.path import join,dirname,abspath
    PROJECT_DIR = dirname(dirname(abspath(__file__)))
    import sys
    sys.path.insert(0,PROJECT_DIR)
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "examsys.settings")
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

5、收集静态文件

进入manage.py 目录
运行:python3 manage.py collectstatic

你可能感兴趣的:(apache,Python3,Django)