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的random模块及加权随机算法的python实现方法
Jan 04 Python
Python 列表理解及使用方法
Oct 27 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
基于python requests库中的代理实例讲解
May 07 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Python Django view 两种return的实现方式
Mar 16 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
anaconda python3.8安装后降级
Jun 11 Python
Python如何用re模块实现简易tokenizer
May 02 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.MVC的模板标签系统(五)
2006/09/05 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
Node.js简单入门前传
2017/08/21 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
python制作一个桌面便签软件
2015/08/09 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
java字符串格式化输出实例讲解
2021/01/06 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
机械工程系毕业生求职信
2013/09/27 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
七一活动主持词
2015/06/29 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
mybatis 获取更新记录的id
2022/05/20 Java/Android