天天看点

NGINX+UWSGI部署生产的DJANGO代码

并且nginx不用root帐户哟。

1,编译安装nginx及uwsgi及django,不表述

2,将nginx文件夹更改为普通用户拥有。但执行文件nginx仍为root,运行如下命令加入特殊权限标志位,并将nginx.conf的user设置普通用户及组(空格隔开):

<a href="http://www.cnblogs.com/aguncn/p/4972605.html#">?</a>

1

<code>chmod</code> <code>u+x nginx</code>

  

3,在nginx里配置uwsgi的proxy

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>upstream p_host {</code>

<code>    </code><code>server 127.0.0.1:9090;</code>

<code>}</code>

<code>server {</code>

<code>        </code><code>listen       80;</code>

<code>        </code><code>server_name  localhost;</code>

<code>        </code> 

<code>        </code><code>location / {           </code>

<code>            </code><code>include  uwsgi_params;</code>

<code>            </code><code>uwsgi_pass  prism_host;</code>

<code>            </code><code>uwsgi_param uwsgi_script p.wsgi; </code><code>//</code><code>这里定义wsgi.py文件</code>

<code>            </code><code>uwsgi_param uwsgi_chdir</code><code>/p/p</code><code>;   </code><code>//</code><code>这里定义django的manager目录</code>

<code>            </code><code>index  index.html index.htm;</code>

<code>            </code><code>client_max_body_size 35m;</code>

<code>        </code><code>}</code>

<code>    </code><code>location ^~</code><code>/static</code> <code>{</code>

<code>                </code><code>root</code><code>/p/p</code><code>; </code><code>//</code><code>定义静态资源文件位置</code>

<code>    </code><code>}</code>

4,配置uwsgi9090.ini文件(保证相关文件夹存在且有权限,为什么要多不同的端口呢,因为这样可以在一个服务器上配置多个端口,多个django应用)

<code>[uwsgi]</code>

<code>socket = 127.0.0.1:9090</code>

<code>master =</code><code>true</code>

<code>vhost =</code><code>true</code>

<code>no-stie =</code><code>true</code>

<code>workers = 4</code>

<code>reload-mercy = 10</code>

<code>vacuum =</code><code>true</code>   

<code>max-requests = 1000</code>

<code>limit-as = 512</code>

<code>buffer-sizi = 30000</code>

<code>pidfile =</code><code>/usr/local/nginx/run/uwsgi9090</code><code>.pid  </code>

<code>daemonize =</code><code>/uwsgi9090</code><code>.log</code>

5,生成执行脚本uwsgi9090文件(保证相关文件夹存在且有权限,这个本来可以放到service的init.d目录下,但为了不污染管理员用户,自己先用普通用户)

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

<code>#! /bin/sh</code>

<code># chkconfig: 2345 55 25</code>

<code># description: startup script for uwsgi webserver on debian. place in /etc/init.d and</code>

<code># run 'update-rc.d -f uwsgi defaults', or use the appropriate command on your</code>

<code># distro. for centos/redhat run: 'chkconfig --add uwsgi'</code>

<code> </code> 

<code>### begin init info</code>

<code># provides:          uwsgi</code>

<code># required-start:    $all</code>

<code># required-stop:     $all</code>

<code># default-start:     2 3 4 5</code>

<code># default-stop:      0 1 6</code>

<code># short-description: starts the uwsgi web server</code>

<code># description:       starts uwsgi using start-stop-daemon</code>

<code>### end init info</code>

<code># author:   licess</code>

<code>path=</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code>

<code>desc=</code><code>"uwsgi daemon"</code>

<code>name=uwsgi9090</code>

<code>daemon=</code><code>/usr/local/bin/uwsgi</code>

<code>configfile=</code><code>/usr/local/nginx/conf/conf</code><code>.d/$name.ini </code><code>//</code><code>定义位置</code>

<code>pidfile=</code><code>/usr/local/nginx/run/</code><code>$name.pid </code><code>//</code><code>定义位置</code>

<code>scriptname=</code><code>/usr/local/nginx/sbin/</code><code>$name </code><code>//</code><code>定义位置</code>

<code>set</code> <code>-e</code>

<code>[ -x</code><code>"$daemon"</code> <code>] ||</code><code>exit</code> <code>0</code>

<code>do_start() {</code>

<code>    </code><code>$daemon $configfile ||</code><code>echo</code> <code>-n</code><code>"uwsgi already running"</code>

<code>do_stop() {</code>

<code>    </code><code>$daemon --stop $pidfile ||</code><code>echo</code> <code>-n</code><code>"uwsgi not running"</code>

<code>    </code><code>rm</code> <code>-f $pidfile</code>

<code>    </code><code>echo</code> <code>"$daemon stoped."</code>

<code>do_reload() {</code>

<code>    </code><code>$daemon --reload $pidfile ||</code><code>echo</code> <code>-n</code><code>"uwsgi can't reload"</code>

<code>do_status() {</code>

<code>    </code><code>ps</code> <code>aux|</code><code>grep</code> <code>$daemon</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code> </code><code>status)</code>

<code>    </code><code>echo</code> <code>-en</code><code>"status $name: \n"</code>

<code>    </code><code>do_status</code>

<code> </code><code>;;</code>

<code> </code><code>start)</code>

<code>    </code><code>echo</code> <code>-en</code><code>"starting $name: \n"</code>

<code>    </code><code>do_start</code>

<code> </code><code>stop)</code>

<code>    </code><code>echo</code> <code>-en</code><code>"stopping $name: \n"</code>

<code>    </code><code>do_stop</code>

<code> </code><code>reload|graceful)</code>

<code>    </code><code>echo</code> <code>-en</code><code>"reloading $name: \n"</code>

<code>    </code><code>do_reload</code>

<code> </code><code>*)</code>

<code>    </code><code>echo</code> <code>"usage: $scriptname {start|stop|reload}"</code> <code>&gt;&amp;2</code>

<code>    </code><code>exit</code> <code>3</code>

<code>esac</code>

<code>exit</code> <code>0</code>

<code>uwsgi9090</code>

6,日常更新重启(可能需要建立软链接),停止操作。

<code>/usr/local/nginx/sbin/nginx</code>

<code>/usr/local/nginx/sbin/nginx</code> <code>-s reload</code>

<code>/usr/local/nginx/sbin/nginx</code> <code>-s stop</code>

<code>sh</code><code>/usr/local/nginx/sbin/uwsgi9090</code> <code>start</code>

<code>sh</code><code>/usr/local/nginx/sbin/uwsgi9090</code> <code>stop</code>

<code>sh</code><code>/usr/local/nginx/sbin/uwsgi9090</code> <code>reload</code>

继续阅读