Django+uwsgi+nginx配置详解

操作系统是ubuntu

更新源


1

apt-get update

安装 Nginx 和 uWSGI


1

apt-get install nginx uwsgi uwsgi-plugin-python

安装 Python 相关环境


1

apt-get install python-dev python-virtualenv python-pip

这里如果安装不成功,可以分开安装,试过一次,分开安装才成功,原因目前以我的水平还发现不了,很遗憾。

安装 MySQL


1

apt-get install mysql-server mysql-client libmysqld-dev

安装 MySQL 的过程中需要输入密码

安装 PHP


1

apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

配置 Django 及多站点支持

这里假设我的网站目录为 /www ,每个用户有自己一个独立的文件夹(这里使用两个用户名作为示例,分别为 test1 和 test2 )

前面的操作步骤为简单起见,只新建一个站点,文件夹名称为 test1

建立目录


1

2

3

4


mkdir /www

mkdir /www/test1

mkdir /www/test1/media

mkdir /www/test1/static

这里建立的 media 和 static 目录分别用来存放该 Django 项目的 media 和 static 文件。

用 virtualenv 创建虚拟环境并新建测试项目


1

2

3

4

5


cd /www/test1

virtualenv env

source env/bin/activate

pip install Django

django-admin.py startproject django_test

这里在 /www/test1/env 目录下新建了一个虚拟环境并激活,安装了 Django 并新建了一个项目,名称为 django_test 。


1

2

3

4

5


注:

创建并进入环境:mkvirtualenv env1

退出环境:deactivate

进入已存在的环境或者切换环境:workon env1或者env2

删除环境: rmvirtualenv env1

配置 Nginx

在 Nginx 的 sites-available 下创建一个新的配置文件


1

vim /etc/nginx/sites-available/test1

文件内容如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


server {

    listen  80;

    server_name test1.yourdomain.com;

    access_log /var/log/nginx/test1.access.log;

    error_log /var/log/nginx/test1.error.log;

    location / {

        uwsgi_pass  unix:///tmp/test1.sock;

        include     uwsgi_params;

    }

    location /media/  {

        alias /www/test1/media/;

    }

    location  /static/ {

        alias /www/test1/static/;

    }

}

接下来将 sites-available 文件夹中刚才添加的文件 ln 到 sites-enabled 文件夹中


1

ln -s /etc/nginx/sites-available/test1 /etc/nginx/sites-enabled/

配置 uWSGI

接下来是配置 uWSGI,同样在 uWSGI 的目录下创建一个新的配置文件


1

vim /etc/uwsgi/apps-available/test1.ini

文件内容如下


1

2

3

4

5

6

7

8

9

10

11


[uwsgi]

vhost = true

plugins = python

socket = /tmp/test1.sock

master = true

enable-threads = true

processes = 4

wsgi-file /www/test1/django_test/django_test/wsgi.py

virtualenv = /www/test1/env

chdir = /www/test1/django_test

touch-reload = /www/test1/django_test/reload

注意:文件内容中的 django_test 为刚才创建的 Django 的项目名称

然后将 apps-available 中的配置文件 ln 到 apps-enabled 文件夹中


1

ln -s /etc/uwsgi/apps-available/test1.ini /etc/uwsgi/apps-enabled/

重启 Nginx 和 uWSGI


1

2


service uwsgi restart

service nginx restart

接下来访问你在上面绑定的 server_name 域名就可以看见 It worked! 的界面了。

注意:每次更新代码后需要执行 service uwsgi restart 修改方能生效,或者通过上面配置的 touch-reload 文件来检测改动更新代码。

DJANGO应用部署

首先进入/www/test1/django_test目录,然后创建django app。


1

2


cd /www/test1/django_test

django-admin.py startapp appname

这样在django_test目录下就会有一个appname目录。

就可以编辑里面的views.py文件。同时编辑一下/django_test下的urls.py文件,然后用自己定义的URL和视图方法,就可以正常访问自己的应用了。

时间: 2024-11-08 19:07:17

Django+uwsgi+nginx配置详解的相关文章

nginx配置详解和原理

nginx配置详解和原理 1.nginx的配置文件 nginx 配置文件的整体结构 <pre>user nobody nobody; # 指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行,nobody 是系统用户,是一个不能登陆的帐号,一个特殊用途的用户 ID #启动进程,通常设置成和cpu的数量相等worker_processes 1; #指定了Nginx要开启的进程数.每个Nginx进程平均耗费10M~12M内存.建议指定和CPU的数量一致即可. #全局错误日

Nginx配置详解

Nginx配置文件主要分成四部分: main(全局设置)指令将影响其它所有部分的设置: server(主机设置)指令主要用于指定虚拟主机域名.IP和端口: upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡: location(URL匹配特定位置后的设置),每部分包含若干个指令.location部分用于匹配网页位置(比如,根目录"/","/images",等等). 他们之间的关系式:

nginx 配置详解

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:京东.新浪.网易.腾讯.淘宝等. 一.event模型 传统的基于进程和线程的模型在处理并发连接的时候针对每个连接

nginx配置详解-url重写、反向代理、负载均衡

应用层的负载均衡nginx请求的连接方式epoll 是Linux下多路复用IO接口select/poll的增强版本 select 遍历epoll无需遍历 1.nginx安装(未安装邮件服务器模块) ./configure --help查看编译选项 配置文件中路径没加/以prefix指定的路径开始./configure \--prefix=/usr \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--error-lo

nginx 配置详解(新手必看)

内容来源:http://blog.csdn.net/david_xtd/article/details/16967837 译者注:不知道其他开发者是否和我一样,参与或者写了很多Web项目,但是却没有真正的去完整的部署应用,很多时候都是交给ops即运维的同学帮忙来做.而作为一个有节操的开发者,我认为了解一些服务器方面的知识是很有必要的,读了这篇文章之后,自己对nginx也有了一个初步的认识,对自己很有帮助,不敢独享,遂译之. 如果你是一名Web开发人员,那么你很有可能听过nginx(读音听起来像e

nginx配置详解与优化

user nobody nobody; nginx worker进程运行的用户属主属组worker_processes auto;work进程的个数 ,通常其数值应该为cpu的物理核心数减1error_log logs/nginx_error.log crit;错误日志文件及其级别pid logs/nginx.pid;pid文件所在的目录worker_rlimit_nofile 65535;这个指令是指当一个nginx worker进程打开的最多文件描述符数目即句柄数,理论值应该是最多打开文件数

Django 发送email配置详解及各种错误类型

跟随Django Book的内容发送邮件不成功,总结一下需要配置好settings.py文件,还要注意一些细节. 1.在settings文件最后添加以下内容,缺一不可! EMAIL_HOST= 'smtp.163.com'EMAIL_PORT= 25EMAIL_HOST_USER = '[email protected]'(你有163邮箱的话)EMAIL_HOST_PASSWORD = ‘xxxxxxx'EMAIL_USE_TLS = TrueDEFAULT_FROM_EMAIL = EMAIL

linux服务基础之nginx配置详解

nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/p/10848623.html nginx相关配置: 主配置段的指令: 正常运行的必备配置 1. user USERNAME [GROUPNAME] 指定运行worker进程的用户和组: 比如:user nginx nginx; 2. pid /path/to/pid_file; 指定nginx守护

快速部署Python应用:Nginx+uWSGI配置详解

快速部署Python应用:Nginx+uWSGI配置详解 相比于PHP,Python应用的部署很麻烦,比较常用的方法有fcgi与wsgi,然而这两种都很让人头痛.文章介绍了Nginx+uwsgi的简便方法,来快速的部署Python应用. AD: 在PHP里,最方便的就是deployment了,只要把php文件丢到支持PHP的路径里面,然后访问那个路径就能使用了:无论给主机添加多少PHP应用,只要把目录改好就没你的事了,完全不用关心php-cgi运行得如何,deployment极为方便. 反观Py