之前一直都是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
保存退出
切换到普通用户
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
参考的资料是直接使用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准备上线。
参考准备步骤以后。
执行
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
在此环境下,安装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 = { ...... 'helloDjango', 'helloApp', ...... }
pwd > /var/www/python/helloDjango python /var/www/python/helloDjango/manage.py runserver 0.0.0.0:8000
http://127.0.0.1:8000
退出python虚拟环境
deactivate
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; } }
ln -s /var/www/python/helloDjango/helloDjango.conf /etc/nginx/sites-enabled/
apt-get install 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
ln -s /var/www/python/helloDjango/helloDjango.ini /etc/uwsgi/apps-enabled/
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