debian下面nginx + uwsgi + Django1.5.1 配置环境

之前一直都是Django测试环境manager.py runserver。

项目准备的差不多准备上线。在大牛的推荐下,使用virtualbox 安装 debian wheezy版本。

思路。

1:安装系统

2:远程SSH模拟登录vps

3:安装python与Django开发环境

4:nginx + uwsgi 安装与测试

5:整体测试


安装准备

1:安装1个干净的debian以后启动。在安装系统软件出错误,跳过~

重启


更新

apt-get updage;apt-get upgrade;


安装vim

apt-get install vim


普通用户执行超级命令需要 sudo

apt-get install sudo

修改权限

#chmod 640 /etc/sudoers
#vim /etc/sudoers
#chmod 440 /etc/sudoers

在修改440权限之前记得
添加一行 watsy ALL=(ALL) ALL #这里的watsy就是你要给予一定权限的用户

保存退出


切换到普通用户

su watsy


修改镜像源

sudo vim /etc/apt/sources.list

地址

deb http://ftp.cn.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.cn.debian.org/debian/ wheezy main contrib non-free

deb http://ftp.cn.debian.org/debian-security/ wheezy/updates main contrib non-free

sudo apt-get updage;sudo apt-get upgrade;sudo apt-get install builde-essential;sudo apt-get autoremove;sudo apt-get autoclean

到这里完成系统环境配置


安装ssh

apt-get install openssh-server

重启

远程ssh登录,在这个步骤中,还需要设置virtualbox网络模式为桥接。关系不大,跳过



第3步,安装python开发环境。

安装python相关环境

apt-get install python-dev libxml2 libxml2-dev
apt-get install python-setuptools

后面

参考下面的文章,部分步骤有问题。

精简的流程

http://2goo.info/blog/panjj/Django/2011/06/05/521

http://2goo.info/blog/panjj/Django/2013/05/16/549

流程:

debian wheezy系统自带python2.7.3版本

安装python开发的一些包

安装pip

安装virtualenv(python的虚拟环境)文章可以参考 我们在360如何做用python - virtualenv篇

在虚拟环境下安装开发资源模块

cd /opt/
sudo mkdir www
virtualenv --no-site-packages --distribute example

cd example

下面是在虚拟环境下安装开发资源包,django django-tinymce等。

参考的资料是直接使用pip

实际测试pip并没有安装到开发环境下。

经过google实际应该执行

/opt/www/exmple/bin/pip install Django==1.5.1

其他配置环境一致。

ssh上传本地代码到服务器.manager runserver成功

第4步。安装nginx 与 uwsgi

主力参考

https://gist.github.com/evildmp/3094281

辅助参考

http://developer.51cto.com/art/201010/229615.htm

其中github参考的Install nginx部分 直接sudo pip nginx。

权限部分需要设置chmod-socket = 666

--virtualenv /path/to/virtualenv
这里需要设置的virtualenv路径实际是virtualenv生成的web路径。本例中为 /opt/www/example

后面启动发现得到如下错误

- *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers *** 
- VirtualHosting mode enabled. 
- uwsgi socket 0 bound to UNIX address /run/uwsgi/app/vhosts/socket fd 5 
- unlink(): Operation not permitted [socket.c line 75] 
- bind(): Address already in use [socket.c line 107] 

查资料发现,重启一下就好了。

至此,配置成功。接下来可以购域名和vps准备上线。


完整流程

参考准备步骤以后。

Django环境

执行

sudo apt-get install python-pip
sudo pip install -U virtualenv
安装python的虚拟环境。

安装完以后,在虚拟环境下配置发布环境。

cd /var/www
sudo virtualenv --no-site-packages --distribute python
sudo chown www-data:www-data python
sudo chmod 777 -R python
cd python
su 这里切换到超级用户
source bin/activate


这样就进入了虚拟python开发环境

在此环境下,安装Django

pip install django==1.5.1


安装完成以后,建立1个django项目

django-admin.py startproject helloDjango
cd helloDjango
django-admin.py startapp helloApp


配置settings的apps

vim /var/www/python/helloDjango/helloDjango/settings.py

找到INSTALLED_APPS添加

INSTALLED_APPS = {
     ......
      'helloDjango',
      'helloApp',
     ......
}


测试django项目

pwd
> /var/www/python/helloDjango

python /var/www/python/helloDjango/manage.py runserver 0.0.0.0:8000

此时浏览器输入

http://127.0.0.1:8000

应该会看到django的debug页面。

退出python虚拟环境

deactivate


nginx配置

安装nginx
apt-get install nginx

在helloDjango目录下执行

vim helloDjango.conf

输入

upstream helloDjango {
    server unix:///tmp/uwsgi.sock;
}

server {
    listen    8000;
    server_name    127.0.0.1 192.168.2.108;
    charset    utf-8;

    client_max_body_size    75M;

    access_log    /var/log/nginx/helloDjango/access.log;
    error_log    /var/log/nginx/helloDjango/error.log;

    #path
    location / {
        uwsgi_pass    helloDjango;
        include    /etc/nginx/uwsgi_params;
    }
}

然后把配置联接到nginx

ln -s /var/www/python/helloDjango/helloDjango.conf /etc/nginx/sites-enabled/

uwsgi配置

安装uwsgi
apt-get install uwsgi


先配置uwsgi文件
vim /var/www/python/helloDjango/helloDjango.ini

填写
[uwsgi]
master = true
chdir = /var/www/python/helloDjango
processes = 2
socket = /tmp/uwsgi.sock
chmod-socket = 666
wsgi-file = /var/www/python/helloDjango/helloDjango/wsgi.py
home = /var/www/python
daemonize = /var/log/uwsgi/helloDjango.log


联接到uwsgi
ln -s /var/www/python/helloDjango/helloDjango.ini /etc/uwsgi/apps-enabled/

启动测试

重启uwsgi和nginx
service uwsgi start
service nginx start

在浏览器输入
http://127.0.0.1:8000

没有意外会看到熟悉的界面。


错误处理


查看联接问题

vim /var/log/nginx/helloDjango/error.log

查看转发问题

vim /var/log/uwsgi/helloDjango.log


如果uwsgi错误中提示

*** no app loaded. going in full dynamic mode ***

执行

aptitude install uwsgi-plugin-python
之后重启uwsgi

你可能感兴趣的:(debian下面nginx + uwsgi + Django1.5.1 配置环境)