Python网页服务器的搭建,Python网页架构主流配置由WSGI模块、Apache网页服务器、Django或Web.py框架构成(框架方面其实选择很多,个人比较喜欢DJANGO和Web.py)。
在这里,主要说明如何在Windows下构建Apache的Python平台,模块选择WSGI,框架使用Django。软件版本的选择:Windows7 + Python 2.7 + Apache 2.2.22 + Mod_wsgi 3.3。
Mod_Python模块其实也可以搭建类似的服务器,但是它只能支持Python 2.5,到后来的更新已经没有了。
软件上面,基本上都比较好找,选择最新版的就行。不过,操作系统方面选择了Windows 7,mod_wsgi官网的版本则不支持64位系统,因此这里列出了64位支持的mod_wsgi,非官方的版本,由加利福尼亚大学荧光光谱实验室提供,因此安全上值得信任。
软件下载地址:
- Python 2.7 http://www.python.org/download/releases/2.7.5/
- Apache 2.2.22 http://apache.websitebeheerjd.nl//httpd/binaries/win32/
- mod_wsgi 3.3
- Django 1.5(目前) https://www.djangoproject.com/download/
软件安装和配置:
软件安装上面基本上都比较简单,从上面地址下载和操作系统对应的程序,安装即可。比较复杂的就是在Apache中配置WSGI运行环境和连接Django的问题,我们这里主要讲这个问题。
Python 2.7默认安装目录C:Python27
Apache 2.2.22默认安装目录C:Program FilesApache Software FoundationApache2.2
*Apache安装并运行,可以进入http://127.0.0.1查看是否正常,如果正常会显示”It works!”
这个来自于C:Program FilesApache Software FoundationApache2.2htdocs的文件index.html
Django 1.5默认安装目录C:Python27Libsite-packagesdjango
mod_wsgi 3.3模块安装:
- 下载mod_wsgi模块文件,
- 修改文件名为“mod_wsgi.so”
- 保存至Apache模块目录C:Program FilesApache Software FoundationApache2.2modules
安装步骤就到这里,是不是很简单?
接下来需要配置在Apache中配置WSGI,并且和Django连接,首先我们来配置wsgi在apache下的环境:
1. 进入C:Program FilesApache Software FoundationApache2.2conf,在Apache配置文件“httpd.conf”中添加以下内容:
LoadModule wsgi_module modules/mod_wsgi.so #这里的路径C:/www/,是用来存放代码的文件夹,app.wsgi是程序代码。 WSGIScriptAlias / C:/www/app.wsgi <Directory "C:/www"> Order allow,deny Allow from all </Directory>
以上内容,你需要通过管理员权限打开文件,否则无法保存,这里我们提供了另外一种方法来来解决这个问题,在C:www文件夹下面创建apache_wsgi.conf,在上面的的文件httpd.conf和apache_wsgi.conf文件里分别设置如下:
LoadModule wsgi_module modules/mod_wsgi.so #链接apache_wsgi.conf文件 Include "C:wwwapache_wsgi.conf"
WSGIScriptAlias / "C:/www/app.wsgi" <Directory "C:/www"> Order allow,deny Allow from all </Directory>
要检查是否运行正常,请在刚刚创建的文件app.wsgi中写入以下代码,并重启Apache后进入127.0.0.1查看,正常的话,会出现”Hello World!”
def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
ok,接下来,我们需要链接Django
在C:Python27Libsite-packagesdjangobin中找到django_admin.py文件,这里是是Django的初始工作,通过在命令行执行以下代码来创建一个名为www的项目
python C:Python27Libsite-packagesdjangobindjango_admin.py startproject C:www
这个文件夹里面包含了
wsgi.py里面包含了可以和Apache中的wsgi直接链接的内容,因此只需要修改apache的配置文件即可,这里我们修改刚刚新创建的扩展文件apache_wsgi.conf:
WSGIScriptAlias / "C:/www/www/wsgi.py" WSGIPythonPath "C:/www" <Directory "C:/www/www"> Order allow,deny Allow from all </Directory>
需要提出的是,据我说知,在windows环境下,WSGIPythonPath只能使用在httpd.conf文档中,上面使用的扩展文件apache_wsgi.conf也支持,但是不能运行在<VirtualHost *:80></VirtualHost>之内。
一周以前,我还如此写道“我还没有找到能够在一个windows服务器下运行多个DJANGO程序的方式。”,但是今天查看WSGIPythonPath说明档后,找到了解决方式,”虚拟机运行多个django程序的配置”,将上面单机的内容全部删除修改为下面内容:
#如果路径中间有空格的话,需要将路径以双引号标注。 WSGIPythonPath C:/mysite1;C:/mysite2 #vhosts 这里指的是虚拟机配置文件 Include C:/vhosts/httpd-vhosts.conf
“httpd-vhosts.conf”是一个Apachec的虚拟机文件,具体的内容的配置可以查看其它网站,这里给出一些简单的配置来支持双DJANGO项目的运行
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@mysite1.com ServerName mysite1 ServerAlias www.mysite1.com *.mysite1.com mysite1.com WSGIScriptAlias / "c:/mysite1/mysite1/wsgi.py" <Directory C:/mysite1/mysite1> Order deny,allow Allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@mysite2.com ServerName mysite2 ServerAlias www.mysite2.com *.mysite2.com mysite2.com WSGIScriptAlias / "c:/mysite2/mysite2/wsgi.py" <Directory C:/mysite2/mysite2> Order deny,allow Allow from all </Directory> </VirtualHost>
这样,整个环境就算配置好了,那么让我们测试一下写一个Hello World吧,
在C:wwwwww下创建views.py文件,内容:
from django.http import HttpResponse def hello(request): return HttpResponse("Hello World!")
修改同目录下的urls.py:
from django.conf.urls import patterns, include, url import www.views urlpatterns = patterns('', url(r'^$', "views.hello"),
hello
你这篇文章给我很大帮助,我的apache 和mod_wsgi 终于正常了,但是还有一个问题:
我已经建立了一个django的网站,叫做space,结构是这样的:
/mysite
manage.py
mysite
settings.py
urls.py
views.py
wsgi.py
space
urls.py
views.py
admin.py
models.py
htmls
……等网站文件夹
请问,按照你的方法,接下来我想显示我的网站,该怎么做呢?
我用python 自带的server 都是正常的,也就是
python manage.py runserver
在127.0.0.1 下能看见我的网站。
这个你需要在APACHE的配置文件指定你的wsgi.py文件即可。