一、 环境说明:
ubuntu:14.04
apache:2.4
python:3.4
Django:2.0.3
二、 apache 预备知识
tips:了解本块知识有助于在你配置失败的时候知道dubug的方向(大佬可直接跳过)
1. 可执行程序所在目录 /usr/sbin/apache2
2. 配置文件所在目录 /etc/apache2/
3. Windows和linux下的apache配置的区别:
- linux的配置文件并不都在apache2.conf下,而是分散在不同的文件,所以有时候在apache2.conf下重复配置的话会出现module reload这种warning。
- windows下的httpd.conf相当于linux下的/etc/apache2/apache2.conf
- 端口配置:/etc/apache2/ports.conf
- 模块的导入:/etc/apache2/mods-enabled/(该目录下有好多文件夹,每一个模块都是用一个对应的load文件来单独配置的)
- windows下的httpd-vhosts.conf相当于/etc/apache2/sites-available/default.conf,但是一般不修改自带的default.conf文件,会另外新建一个自己项目的conf文件,例如reID.conf。
三、 安装apache2.4+Django2.0+Python3
- 安装python3:$sudo apt-getinstall python3
- 安装pip3:$sudo apt-getinstall python3-pip
- 安装django:$pip3 installdjango==2.0.3
- 安装apache2:$sudo apt-get install apache2 (tips:$apachectl-v查看apache版本)
- 安装mod_wsgi模块:$sudo apt-get install libapache2-mod-wsgi-py3
四、 Apache+Django配置(重头戏!!!):
1. 修改端口:$vim /etc/apache2/port.conf,将Listen80改成Listen 10.141.4.188:8080
2. 检查 /etc/apache2/mods-enabled目录下有没有wsgi.load文件,
没有的话新建这个文件($sudo vim wsgi.load),并添加一行:
LoadModule wsgi_module/usr/lib/apache2/modules/mod_wsgi.so
3. 虚拟主机配置:
$cd /etc/apache2/sites-available
$ sudo vim reID.conf
添加如下内容:
<VirtualHost *:8080>
DocumentRoot /home/imc/fql/Bonnacon
DirectoryIndex login.html
WSGIScriptAlias //home/imc/fql/Bonnacon/grad/wsgi.py
<Directory/home/imc/fql/Bonnacon/grad>
<Files wsgi.py>
Require all granted
</Files>
AllowOverride none
Require all denied
</Directory>
Alias /static//home/imc/fql/Bonnacon/reID/static/
<Directory/home/imc/fql/Bonnacon/reID/static>
Require all granted
</Directory>
DocumentRoot/home/imc/fql/Bonnacon/reID/templates
<Directory /home/imc/fql>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
4. 配置主配置文件:
$vim /etc/apache2/apache2.conf
添加如下内容:
ServerName 10.141.4.188:8080
#IncludeOptional sites-enabled/*.conf
IncludeOptionalsites-available/reID.conf
5. 修改django项目里的wsgi文件:
import os
import sys
sys.path.append('/home/imc/fql/Bonnacon/')#项目所在目录
from django.core.wsgi importget_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE","grad.settings")
application = get_wsgi_application()
五、 更新配置
$sudo a2ensite reID.conf # enable该站点
$sudo service apache2 reload # 重新加载Apache服务器配置
六、 启动apache
$sudo service apache2 restart
tips:apache错误日志所在目录:/var/log/apache2/error.log