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 多线程抓取图片效率对比
Feb 27 Python
python 将md5转为16字节的方法
May 29 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Python之时间和日期使用小结
Feb 14 Python
python Pillow图像处理方法汇总
Oct 16 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Python模块的制作方法实例分析
Dec 21 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
python随机打印成绩排名表
Jun 23 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模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
python获取外网ip地址的方法总结
2015/07/02 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python如何读写json数据
2018/03/21 Python
python中pika模块问题的深入探究
2018/10/13 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
新闻学毕业生自荐信
2013/11/15 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
目标管理责任书
2014/04/15 职场文书
初中学校对照检查材料
2014/08/19 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
详解Python中下划线的5种含义
2021/07/15 Python
golang语言指针操作
2022/04/14 Golang