比较喜欢django,前段时间忙着学习django的基本使用。没有时间研究怎么通过Apache 来访问Django项目,总是使用自带的light server来测试程序。今天研究了下怎么使用Apache+WSGI的方式,实现稳定访问,因为mod_python已经停止支持,所以就不考虑了。
假设 django项目已经存在并可以正常访问,Apache2已经安装完毕,并且访问通畅。
1. 安装Apache的WSGI 模块, sudo apt-get install libapache2-mod-wsgi .
可以使用a2enmod wsgi来验证是不是已经安装成功。
2. 配置Apache端.
直接修改/etc/Apache2/sites-available/default
a.可以直接在 默认的virtualhost里加上
WSGIScriptAlias / "/home/jester/django/opex/opex.wsgi"
<Directory "/home/jester/django/opex">
Order deny,allow
Allow from all
</Directory>
b.也可以直接新建virtualhost.并使用不同的端口。
Listen 8003
NameVirtualHost *:8003
<VirtualHost *:8003>
ServerAdmin [email protected]
ServerName 10.5.210.230
DocumentRoot /home/jester/django/opex
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
WSGIScriptAlias / "/home/jester/django/opex/opex.wsgi"
<Directory "/home/jester/django/opex">
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
3. 在相应项目地下创建.wsgi文件,要和virtualhost的‘WSGIScriptAlias’ 保持完全一致才行。
/home/jester/django/opex/opex.wsgi
#-- coding:utf-8 --
import os,sys
os.environ['DJANGO_SETTINGS_MODULE']='opex.settings'
os.environ['PYTHON_EGG_CACHE']='/tmp/.python-eggs'
current_dir=os.path.dirname(__file__)
if current_dir not in sys.path:
sys.path.append(current_dir)
import django.core.handlers.wsgi
application=django.core.handlers.wsgi.WSGIHandler()
4. 重启apache2. sudo /etc/init.d/apache2 restart.
里面的某些参数改为和自己实际一致即可。。。