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中使用PIPE操作Linux管道
Feb 04 Python
Python CSV模块使用实例
Apr 09 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
python的依赖管理的实现
May 14 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python之京东商品秒杀的实现示例
Jan 06 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中的Session和Cookie
2013/06/21 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
php生成excel文件的简单方法
2014/02/08 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python实现简单遗传算法
2020/09/18 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
某公司.Net方向面试题
2014/04/24 面试题
防汛通知
2015/04/25 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers