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和视图方法,就可以正常访问自己的应用了。


你可能感兴趣的:(python,ubuntu)