Apache上部署Django

1. 安装apache

sudo apt-get install apache2
如果之前安装配置过apache2的并且配置很乱,无法修复,建议还是完全卸载之后在安装。完全卸载的命令:
sudo apt-get --purge remove apache-common
sudo apt-get --purge remove apache*

apache2相关的操作:
启动:sudo service apache2 start
停止:sudo service apache2 stop
重启:sudo service apache2 restart

配置文件的位置:
可执行程序:/usr/sbin/apache2
配置文件:/etc/apache2
网站文件:/var/www
(网站的默认位置可以在/etc/apache2/sites-available/default中更改,修改DocumentRoot /var/www改成自己的网站存放地址即可)

2. 安装mod_wsgi.so

2.x python:
sudo apt-get install libapache2-mod-wsgi
3.x python:
sudo apt-get install libapache2-mod-wsgi-py3

#若数据库为mysql,需要连接器
sudo apt-get install mysql-server mysql-client
sudo apt-get install python-mysqldb

3. 安装Django

sudo apt-get install python-pip
sudo pip install django

4. 设置apache文件夹权限

cd /etc/apache2
sudo nano apache2.conf
找到
<Directory />
Options FollowSymLinks
AllowOverride None
#Require all denied
Allow from all
</Directory>
加井号 & Alow from all

5. 上传Django工程

不建议建在/var/www,如果系统设置问题导致不识别.py为网页文件时,/var/www作为Apache默认Web文件夹,.py源文件将可以被下载而泄漏。

比如创建Django工程(网页文件夹)
cd /home/djangoapps/work
django-admin startproject mysite
完成代码后在随便哪里建wsgi,比如
sudo nano /home/djangoapps/work/mysite/apache/django.wsgi

import os
import sys
path = ‘/home/djangoapps/work/mysite‘
if path not in sys.path:
sys.path.insert(0, ‘/home/djangoapps/work/mysite‘)
os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘mysite.settings‘
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

path是刚创建的工程文件夹位置,对应"mysite"的地方都是对应那个工程的名字。

6. 建站点设置文件

cd /etc/apache2/sites-available
sudo nano mysite.conf

<VirtualHost *:80>
#ServerName hello.djangoserver
DocumentRoot /home/djangoapps/work/mysite
<Directory /home/djangoapps/work/mysite>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess mydjangosite processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup mydjangosite
WSGIScriptAlias / /home/djangoapps/work/mysite/apache/django.wsgi
</VirtualHost>

7. 启动站点

别离开/etc/apache2/sites-available
sudo a2ensite mysite
sudo service apache2 reload
Django站点已经配置好了,但是这时访问127.0.0.1看到的是apache页面。

关于端口
在/etc/apache2/sites-available可以看到000-default.conf,这个就是apache默认的站点,对应/var/www/html
如果都用80端口的话,访问到的是apache,而不是刚建的django。
可以关闭这个站点,
sudo a2dissite 000-default
sudo service apache2 reload
这时就能正常访问刚建的django站点了。

也可以换个端口,在mysite.conf文件中,<VirtualHost *:80>改成<VirtualHost *:xxxx>自己要的端口,比如8000。
然后改ports.conf
cd /etc/apache2
sudo nano ports.conf
看到Listen 80了吧,下面加一行 Listen 8000,就能用8000端口了。

sudo service apache2 reload
这样127.0.0.1访问的是apache站点,127.0.0.1:8000访问的就是我们的django站点了

PS.出错的话,一定要多看看apache2的err log。
命令行输入: tail /var/log/apache2/error.log

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。