linux系统上nginx python的web.py与django框架环境 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

  1.编译nginx

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

  为了方便编译,笔者写了一个脚本,代码如下:

  ?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#!/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 $0 )

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

  2.配置nginx

  在server配置项下增加

  ?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

location / {

#这两种方法都可以,只不过spawn-cgi启动的方法不同

#fastcgi_pass 127.0.0.1:9002;

fastcgi_pass unix:webpy.sock;

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 gateway_interface cgi/1.1;

fastcgi_param server_software nginx/$nginx_version;

fastcgi_param remote_addr $remote_addr;

fastcgi_param remote_port $remote_port;

fastcgi_param server_addr $server_addr;

fastcgi_param server_port $server_port;

fastcgi_param server_name $server_name;

fastcgi_param server_protocol $server_protocol;

fastcgi_param script_filename $fastcgi_script_name;

fastcgi_param path_info $fastcgi_script_name;

}

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

  ?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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

  3.安装fastcgi依赖

  需要到 http://trac.saddi.com/flup下载安装,之后fastcgi才能够正常启动。

  4.启动django

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

  启动:

  ?


1

2

#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`

  重新载入配置:

  ?


1

2

./nginx -t -c `pwd`/../conf/nginx.conf

kill -hup `cat ../logs/nginx.pid`

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

  ppppppppppppppppppppp1

  5.部署web.py版

  安装依赖

  spawn-cgi

  flup

  配置nginx

  在server配置项下增加

  ?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

location / {

#这两种方法都可以,只不过spawn-cgi启动的方法不同

#fastcgi_pass 127.0.0.1:9002;

fastcgi_pass unix:webpy.sock;

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 gateway_interface cgi/1.1;

fastcgi_param server_software nginx/$nginx_version;

fastcgi_param remote_addr $remote_addr;

fastcgi_param remote_port $remote_port;

fastcgi_param server_addr $server_addr;

fastcgi_param server_port $server_port;

fastcgi_param server_name $server_name;

fastcgi_param server_protocol $server_protocol;

fastcgi_param script_filename $fastcgi_script_name;

fastcgi_param path_info $fastcgi_script_name;

}

  一个简单的index.py

  ?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/usr/bin/python

# -*- coding: utf-8 -*-

import web

urls = ("/.*", "hello")

app = web.application(urls, globals())

class hello:

def get(self):

return 'hello, world!'

if __name__ == "__main__":

web.wsgi.runwsgi = lambda func, addr=none: web.wsgi.runfcgi(func, addr)

app.run()

  并执行:

  ?


1

chmod x index.py

  .启动web.py

  启动:

  ?


1

2

#spawn-fcgi -p `pwd`/webpy.pid -f /home/dantezhu/htdocs/ngx_web/index.py -a 127.0.0.1 -p 9002 &

spawn-fcgi -p `pwd`/webpy.pid -f /home/dantezhu/htdocs/ngx_web/index.py -s /home/dantezhu/nginx/sbin/webpy.sock &

  停止:

  ?


1

kill -9 `cat webpy.pid`

  启动nginx

  加入到rc.local中,自动启动

  ?


1

2

3

/home/dantezhu/nginx/sbin/start.sh

sudo -u dantezhu /home/dantezhu/htdocs/ngx_django/mysite/start.sh

sudo -u dantezhu /home/dantezhu/htdocs/ngx_web/start.sh

12/18 14:31
multi router traffic grapher------mrtg是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含png格式的图形的html 文档方式显示给用户,以非常直观的形式显示流量负载. snmp(imple network management protocol,简单网络管理协议)的前身是简单网关监控协议(sgmp),用来对通信线路进行管理.随后,人们对sgmp进行了很大的修改,特别是加入了符合internet定义的smi和mib:体
12/25 03:26
linux apache mysql python mod_python django 说明:系统rhel 5.3,默认安装httpd.mysql,没有安装的,请下载安装rpm包,删除/etc/httpd/modules/mod_python.so,如果有的话. 一.安装python ? 1 2 wget http://www.python.org/ftp/python/2.7.1/python-2.7.1.tgz tar xfz mod_python-2.7.11.tgz
cd py
06/08 00:09
wine,一个在linux平台上非常受欢迎并且强大的开源应用,有了它,我们可以在linux平台上完美运行windows应用与游戏. winehq团队,近期宣布了一个新的开发版本wine1.7.29.这个版本带来了诸多重要的特性,并且修复了44个bug. wine团队几乎每周都会发布新的开发版本,并且加入许多新特性以及修复漏洞.每个新版本都会支持新的应用与游戏(windows),这使得wine在那些想要在linux下运行windows应用的用户群体中很流行并且是不可缺少的. 根据变更日志,这个版本
07/04 18:55
在debian或ubuntu上配置snmp 要在基于debian的系统上安装snmp代理(snmpd),请运行以下命令: 代码如下: root@server:~# apt-get install snmpd 然后,如下编辑配置文件. 代码如下: root@server:~# vim /etc/snmp/snmpd.conf # 使snmpd 监听再所有接口上 agentaddress udp:161 # 定义一个只读的 community 'mycommunity' 和源网络 rocommuni
12/21 07:00
想像一种情景,当我们的linux系统用尽交换空间时,在这种情况下,我们想要使用swap分区扩展交换空间,但在某些情况下磁盘上已经没有可用的空闲分区了,致使我们不能把它扩大. 因此,在这种情况下,我们可以使用交换文件增加swap空间. 以下是使用交换文件在linux上扩展swap空间的方法 让我们首先检查现有的交换空间/分区的大小,使用命令 'free -m'或者 'swapon -s' 我的交换分区大小是2 gb,我们将把交换空间扩展1gb. 第一步:使用下面的dd命令创建大小为1gb交换文件
12/18 11:43
openmp是一种多处理器多线程的编程语言,能够支持多个平台,包括linux系统,那么linux下要如何进行openmp多线程编程呢?一起来了解下吧。 关键语法: 代码如下: #inlcude 《omp.h》 #pragma omp parallel for #pragma omp for reduction( : 变量) #pragma omp critical//锁 { } #pragma omp parallel for private(x,y)//
07/15 17:30
大家好,今天我们学习一下在 linux 上用 iptables 实现从一个网络接口到另一个接口的ip转发(数据包转发).ip转发的概念是,使 linux 机器像路由器一样将数据从一个网络发送到另一个网络.所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器. 这是一些启用ip转发或网络包转发方法的简单步骤. 1. 启用 ipv4 转发 首先,我们需要在我们的 linux 操作系统上启用 ipv4 转发.要做到这点,我们需要用 sudo 模式在 shell
03/06 06:14
initial ram disk linux初始ram磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程.initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd ram磁盘卸载,并释放内存.在很多嵌入式linux系统中,initrd 就是最终的根文件系统.本文将探索 linux 2.6 的初始 ram磁盘,包括如何创建以及如何在linux内核中使用. 什么是初始 ram 磁盘 初始ram磁盘(initr
12/19 16:05
1.安装ubuntu有uwsgi的ppa: ? 1 2 3 add-apt-repository ppa:stevecrozz/ppa apt-get update apt-get install uwsgi 2. 用uwsgi代替mod_wsgi nginx 的整体配置这里不说了,假设已经明白 nginx的基本配置,那么uwsgi就类似这么配置: ? 1 2 3 4 location / { include uwsgi_params uwsgi_pass 127.0.0.1:9090 } 再比
网站地图