基于目前学习python中,在架设网站时,准备使用python的web框架。考虑到服务器配置可怜,选择了轻量级的开源系统,web服务器使用nginx。最好的搭配是nginx + uWSGI + django。但遗憾的是uWGSI好像没Windows版本,所以只好选用nginx + Flup + Django组合。信息流程是: browser <=> web服务器( nginx ) <=>FastCGI <=> Flup <=> WSGI <=> Django 。其中Flup充当在FastCGI接口规范和WSGI接口规范的适配器角色。本文即是对以上配置的一个安装记录及教程。
1、安装python
下载最新的python版本,在本文撰写时为 python 3.5.1, 下载地址:https://www.python.org/,找到合适的版本下载。下载完成后点击运行,完成python安装,和一般windows程序一样,安装时注意选择安装目录(如c:/python).
配置python路径支持,右键“计算机”=》“属性”=》“高级系统设置”=》“高级”=》“环境变量”=》“系统变量”=>"Path"=>"编辑",在后面追加";c:\python"。这样,就可以在命令行窗口下直接运行"python.exe"。运行"cmd",打开一个控制台窗口,运行"python -V",显示“Python 3.5.1"即表示成功。
2、安装Django
下载最新版 Django 1.9.7,下载地址: https://www.djangoproject.com,选择合适版本下载安装即可。下载完成后解压(例如解压到"C:\Django")。运行"cmd"打开控制台窗口,切换到"C:\django",运行"setup.py install",安装完成后启动python,输入"import django;print(django.VERSION)" 显示对应版本号。
另外一个简单一些的办法,是直接在命令行下使用pip install django命令,即可完成安装过程。
配置django路径支持,右键“计算机”=》“属性”=》“高级系统设置”=》“高级”=》“环境变量”=》“系统变量”=>"Path"=>"编辑",在后面追加";C:\Python\Lib\site-packages\django\bin"。这样,就可以在命令行窗口下直接运行django命令。打开控制台窗口,输入"django-admin.py -h"显示帮助信息表示成功。
注意要支持python3.x系列的 flup1.0.3。解压后如果运行解压根目录下的setup.py会显示下载setuptools错误。所以直接提取子目录(flup)并拷贝 到python第三方软件目录下(C:\Python\Lib\site-packages)目录下即可。
启动python,运行"import flup;flup",显示flup版本及安装路径。
理论上也可以使用pip install flup命令进行安装,但是我用pip时报错了,可能是因为pip默认版本的不兼容。
4、安装nginx
下载最新的 nginx ,,下载地址:http://nginx.org/。下载后解压到一个特定目录(如C:\nginx)即可。
运行nginx,打开浏览器,输入"127.0.0.1",显示" Welcome to nginx!"即表示成功。
nginx在windows下是以程序还不是以服务方式运行。这一点多少让人觉得有点不靠谱。
运行"cmd"打开控制台窗口,输入"d:"(假设项目目录为d:\mysite)切换到d盘。输入"django-admin.py startproject mysite",这样就建立了一个名为"mysite"的项目.
6、重定向nginx静态文件到"mysite"
编辑"C:\nginx\conf\nginx.conf"文件,将其中第一个"… root html;…"更改为“root d:/mysite/html”。运行"c:\nginx\nginx.exe -s reload"重新加载nginx。打开浏览器,输入“127.0.0.1”,显示“404”错误。这是因为"d:\mysite\html"目录及文件不存在。新建"d:\mysite\html"目录,并在此目录下新建一个"hello.html"文件。输入"<html><body>Hello</body></html>",保存。打开浏览器,输入"127.0.0.1/hello.html",应该会显示"hello"信息。
7、运行django fastcgi服务
打开控制台,进入"d:\mysite"目录,运行"manage.py runfcgi method=threaded host=127.0.0.1 port=8008".启动FastCGI服务。
8、修改nginx配置文件“nginx.conf",
在第一个server(listen 80)组,做一下修改
#1、注释默认的页面位置:
#location / {
# root html;
# index index.html index.htm;
#}
#2、添加 定向所有页面请求到FastCGI
location / {
root d:/mysite;
fastcgi_pass 127.0.0.1:8008;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
#3、定向静态页面请求到页面目录中
location ~* \.(gif|jpg|jpeg|html|js|css|png)$ {
root d:/mysite/html;
index index.html index.htm;
}
运行"nginx -s reload"更新配置。
在目录(d:\mysite\html)下添加页面文件"hello.html".在浏览器中输入localhost/hello.html将显示该静态页面内容。
9、在浏览器中键入"localhost"将显示django欢迎页面。
补充,安装时偶有setup.py命令报错的状况,解决方案见http://www.weizhiyong.cn/archives/88