Windows系统下使用flup搭建Nginx和Python环境的方法


Posted in Python onDecember 25, 2015

首先确保你的电脑里已经安装了Python和Django,接下来我们还需要两个组件,nginx服务器和flup(Python的FastCGI组件)
nginx下载地址:http://nginx.org/en/download.html
flup下载地址:http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
与Linux下不同的是,nginx在windows下是以一个应用程序的方式运行,而不是以一个服务运行(难怪没人在windows服务器上用nginx)
把刚刚下载好的两个压缩包都解压到C:\nginx\, C:\flup\(目录可自己选择,这里只做个演示)然后用python setup.py install 命令

安装flup,接着就要配置nginx了,打开C:\nginx\conf\nginx.conf,我的配置文件如下,大家可根据需要自行修改:

#user nobody; 
worker_processes 1; 
 
#error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 
 
#pid    logs/nginx.pid; 
 
 
events { 
  worker_connections 1024; 
} 
 
 
http { 
  include    mime.types; 
  default_type application/octet-stream; 
 
  #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
  #         '$status $body_bytes_sent "$http_referer" ' 
  #         '"$http_user_agent" "$http_x_forwarded_for"'; 
 
  #access_log logs/access.log main; 
 
  sendfile    on; 
  #tcp_nopush   on; 
 
  #keepalive_timeout 0; 
  keepalive_timeout 65; 
 
  #gzip on; 
 
  server { 
    listen    80; 
    server_name localhost; 
 
    #charset koi8-r; 
 
    #access_log logs/host.access.log main; 
 
    location / { 
      root  html; 
      index index.html index.htm; 
    } 
 
    #error_page 404       /404.html; 
 
    # redirect server error pages to the static page /50x.html 
    # 
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
    # 
    #location ~ \.php$ { 
    #  proxy_pass  http://127.0.0.1; 
    #} 
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    # 
    #location ~ \.php$ { 
    #  root      html; 
    #  fastcgi_pass  127.0.0.1:9000; 
    #  fastcgi_index index.php; 
    #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
    #  include    fastcgi_params; 
    #} 
 
    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    #location ~ /\.ht { 
    #  deny all; 
    #} 
     
    # 静态资源 
    location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|js)$ 
    { 
      root e:/gin/gin/; 
      expires 30d; 
      break; 
    } 
 
    location ~ ^/static/ { 
      root e:/gin/gin/; 
      expires 30d; 
      break; 
    }  
 
    location ~ ^/ { 
      # 指定 fastcgi 的主机和端口 
      fastcgi_pass 127.0.0.1:8051; 
      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_param SERVER_PROTOCOL $server_protocol; 
      fastcgi_param SERVER_PORT $server_port; 
      fastcgi_param SERVER_NAME $server_name; 
      fastcgi_pass_header Authorization; 
      fastcgi_intercept_errors off; 
    } 
  } 
 
  # another virtual host using mix of IP-, name-, and port-based configuration 
  # 
  #server { 
  #  listen    8000; 
  #  listen    somename:8080; 
  #  server_name somename alias another.alias; 
 
  #  location / { 
  #    root  html; 
  #    index index.html index.htm; 
  #  } 
  #} 
 
 
  # HTTPS server 
  # 
  #server { 
  #  listen    443; 
  #  server_name localhost; 
 
  #  ssl         on; 
  #  ssl_certificate   cert.pem; 
  #  ssl_certificate_key cert.key; 
 
  #  ssl_session_timeout 5m; 
 
  #  ssl_protocols SSLv2 SSLv3 TLSv1; 
  #  ssl_ciphers HIGH:!aNULL:!MD5; 
  #  ssl_prefer_server_ciphers  on; 
 
  #  location / { 
  #    root  html; 
  #    index index.html index.htm; 
  #  } 
  #} 
 
}

需要注意的是,对于不需要url rewrite的目录,比如存放css和图片的目录,需要在配置文件里指明,否则将无法访问这些文件

location ~ ^/static/ {
      root e:/gin/gin/;
      expires 30d;
      break;
    }

最后一步就是运行nginx服务器,并且用FastCGI运行你的Django项目了
进入nginx的目录:

cd c:\nginx\
  start nginx

然后在浏览器里访问http://loaclhost/ 就应该可以看到nginx的欢迎界面了。最后进入你的Django项目的根目录,然后用一下命令来运行服务器:

python manage.py runfcgi method=threaded host=127.0.0.1 port=8051

刷新localhost页面,你就能看到你的项目主页啦~~
补充一点windwos下nginx操作的命令(来自官方文档)

nginx -s stop quick exit
nginx -s quit graceful quit
nginx -s reload changing configuration, starting a new worker, quitting an old worker gracefully
nginx -s reopen reopening log files

大功告成,开始django之旅,ohye!!!

Python 相关文章推荐
Python线程详解
Jun 24 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
Python比较2个时间大小的实现方法
Apr 10 Python
pytorch 数据集图片显示方法
Jul 26 Python
用Python逐行分析文件方法
Jan 28 Python
详解python中@的用法
Mar 27 Python
为什么说Python可以实现所有的算法
Oct 04 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
使用python实现多维数据降维操作
Feb 24 Python
Python安装OpenCV的示例代码
Mar 05 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 #Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 #Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 #Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 #Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 #Python
在Mac OS上搭建Python的开发环境
Dec 24 #Python
详解Python字符串对象的实现
Dec 24 #Python
You might like
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
python实现聊天小程序
2018/03/13 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python获取txt文件词向量过程详解
2019/07/05 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
Android面试宝典
2013/08/06 面试题
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
《长征》教学反思
2014/04/27 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
投资入股合作协议书
2014/10/28 职场文书
小班教师个人总结
2015/02/05 职场文书
地道战观后感400字
2015/06/04 职场文书
python中的sys模块和os模块
2022/03/20 Python