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判断操作系统类型代码分享
Nov 22 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
Golang与python线程详解及简单实例
Apr 27 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
分享vim python缩进等一些配置
Jul 02 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
Django logging配置及使用详解
Jul 23 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
python套接字socket通信
Apr 01 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微信开发之关键词回复功能
2018/06/13 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
Maps Javascript
2007/01/22 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python字符串转换成浮点数函数分享
2015/07/24 Python
用Python实现KNN分类算法
2017/12/22 Python
python递归函数绘制分形树的方法
2018/06/22 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python speech模块的使用方法
2020/09/09 Python
高二地理教学反思
2014/01/24 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
北京申奥口号
2014/06/19 职场文书
2019销售早会主持词
2019/06/27 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
Pandas-DataFrame知识点汇总
2022/03/16 Python