博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下nginx+python+fastcgi部署总结(django版)
阅读量:5885 次
发布时间:2019-06-19

本文共 4230 字,大约阅读时间需要 14 分钟。

hot3.png

最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx+fastcgi,此文是整个搭建的步骤,主要留作备忘,也希望对大家有所帮助。

注意:虽然本文成功的搭建了django运行fastcgi的实例,但是在实际运行中发现了很多问题,比如程序执行异常,进程在每次请求之后退出之类的。可能是我机器的问题,也可能是程序本身bug,大家如果用来搭建外网环境,请务必多多测试。

一.编译nginx

在网上买了一本《实战nginx-取代Apache的高性能服务器》,写的比较浅,主要是些配置方面的东西,不过却正是目前我所需要的。由于需要支持https和rewrite,所以除了nginx的源码之外,又下载了 openssl-0.9.8r.tar.gz 和 pcre-8.12.tar.gz,把他们和nginx-1.0.4.tar.gz放到同一个目录。
为了方便编译,笔者写了一个脚本,代码如下:

123456789101112131415161718192021222324252627282930313233343536373839
#!/bin/bash  #============================================================================= #脚本所在绝对目录 abs_path(){
local path=$1 local basename=$( basename $path ) local dirname=$( dirname $path ) cd $dirname if [ -h $basename ]; then path=$( readlink $basename ) abs_path $path else pwd fi }  #============================================================================= #依赖的目录 src_base_dir=$( abs_path $ ) src_openssl_dir=$src_base_dir'/openssl-0.9.8r' src_pcre_dir=$src_base_dir'/pcre-8.12' src_nginx_dir=$src_base_dir'/nginx-1.0.4'  #============================================================================= #目标的目录 dest_base_dir=$src_base_dir'/release' dest_nginx_dir=$dest_base_dir'/nginx'  #============================================================================= #把所有的tar.gz解压 find . -name "*.tar.gz" | xargs -IX tar zxvf X #============================================================================= #编译nginx cd $src_nginx_dir chmod u+x ./configure./configure --with-http_stub_status_module --with-http_ssl_module --with-openssl=$src_openssl_dir --with-pcre=$src_pcre_dir --prefix=$dest_nginx_dir make && make install

编译完成后,我们就需要来配置nginx了

二.配置nginx

在server配置项下增加

12345678910111213141516171819202122232425
location / {
#fastcgi_pass 127.0.0.1:9001; fastcgi_pass unix:django.sock;   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_pass_header Authorization; fastcgi_intercept_errors off; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; }  location /admin_media/ {
alias /usr/local/lib/python2.7/site-packages/django/contrib/admin/media/; break; }  location /site_media/ {
alias /home/dantezhu/htdocs/ngx_django/media/; break; }

这里的3个location配置分别解决了,与python进程通信、django后台管理端样式存放、网站样式存放的问题。对照着apache的配置来看,就很容易明白了

12345678910111213141516171819202122232425262728293031
WSGIPythonEggs /tmp
ServerName fuload.qq.com WSGIScriptAlias / /home/dantezhu/htdocs/fuload/conf/setting.wsgi
Options FollowSymLinks AllowOverride Order allow,deny Allow from all
Order Deny,Allow Deny from all
Alias /admin_media "/usr/local/lib/python2.7/site-packages/django/contrib/admin/media"
Order allow,deny Options Indexes Allow from all IndexOptions FancyIndexing
  #AliasMatch /site_media/(.*\.(css|gif|png|jpg|jpeg)) /home/dantezhu/htdocs/fuload/media/$1 Alias /site_media /home/dantezhu/htdocs/fuload/media/
Order allow,deny Options Indexes Allow from all IndexOptions FancyIndexing

三.安装fastcgi依赖

需要到 下载安装,之后fastcgi才能够正常启动。

四.启动django

创建django project的过程我们就不说了,只列出启动/停止的命令:
启动:

12
#python manage.py runfcgi daemonize=true pidfile=`pwd`/django.pid host=127.0.0.1 port=9001 maxrequests=1 & python manage.py runfcgi daemonize=true pidfile=`pwd`/django.pid socket=/home/dantezhu/nginx/sbin/django.sock maxrequests=1 &

停止:

1
kill -9 `cat django.pid`

五.启动nginx

启动:

1
./nginx -p /home/dantezhu/nginx/

停止:

1
kill -QUIT `cat ../logs/nginx.pid`

重新载入配置:

12
./nginx -t -c `pwd`/../conf/nginx.confkill -HUP `cat ../logs/nginx.pid`

成功显示了django的后台界面:

OK,到此为止,大功告成!

原创文章,版权所有。转载请注明:转载自 [  ]

本文链接地址: 

转载于:https://my.oschina.net/tenking/blog/29596

你可能感兴趣的文章
form表单下的button按钮会自动提交表单的问题
查看>>
那些年追过的......写过的技术博客
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
C/C++ 多线程机制
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
2010技术应用计划
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
SQL语句的执行过程
查看>>
详解Linux中Load average负载
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>
如何将lotus 通讯簿导入到outlook 2003中
查看>>
WinForm 应用程序中开启新的进程及控制
查看>>
js replace,正则截取字符串内容
查看>>