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

来源:互联网 发布:paxos算法 维基百科 编辑:程序博客网 时间:2024/06/05 02:07

之前一直都是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-freedeb-src http://ftp.cn.debian.org/debian/ wheezy main contrib non-freedeb 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-devapt-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 wwwvirtualenv --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-pipsudo pip install -U virtualenv
安装python的虚拟环境。

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

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


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

在此环境下,安装Django

pip install django==1.5.1


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

django-admin.py startproject helloDjangocd helloDjangodjango-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/helloDjangopython /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 = truechdir = /var/www/python/helloDjangoprocesses = 2socket = /tmp/uwsgi.sockchmod-socket = 666wsgi-file = /var/www/python/helloDjango/helloDjango/wsgi.pyhome = /var/www/pythondaemonize = /var/log/uwsgi/helloDjango.log


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

启动测试

重启uwsgi和nginx
service uwsgi startservice 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

原创粉丝点击