在debian下配置python+django+nginx+uwsgi+mysql的教程

最近尝试把项目迁移到python环境下,特别新装了一台干净的debian系统,准备重新配置环境,上网找了一些运行python web的环境方案,最后敲定nginx+uwsgi组合,nginx用得比较多,熟练些;uwsgi据说性能不错,想尝试一下。

网上大部分教程都是要求到uwsgi官方网站下载源码包,然后通过编译的方式安装,比如对于一台新debian系统,可以通过下面的命令安装:

apt-get update
apt-get upgrade
apt-get install build-essential psmisc
apt-get install python-dev libxml2 libxml2-dev
apt-get install python-setuptools
cd /opt/
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar -zxvf uwsgi-latest.tar.gz
mv uwsgi-latest/ uwsgi/
cd uwsgi/
python setup.py install

还有一些配置我就不介绍了,大家可以参考linode library的《deploy python code with wsgi using uwsgi and nginx on debian 6 (squeeze)》介绍。

今天要介绍的是利用apt源直接apt-get install安装配置我们所需要的环境,首先按惯例先安装mysql和nginx:

然后通过debian packages网站找到我们所需要的uwsgi在sid里,sid版里的东西表示仍在开发测试中,不是最终稳定版,不过对于我们测试来说是够用了,为了用sid里面的软件包,我们还需要修改我们的/etc/apt/sources.list源,添加deb http://ftp.tw.debian.org/debian sid main non-free contrib这一行,或者直接输入命令:

echo “deb http://ftp.tw.debian.org/debian sid main non-free contrib” >> /etc/apt/sources.list

配置过源列表后,我们就可以通过下面的命令安装了:

apt-get update
apt-get install uwsgi uwsgi-core uwsgi-plugin-python

安装完成后,配置文件按惯例放在了/etc/uwsgi里面,服务控制可以通过invoke-rc.d uwsgi后面跟命令参数来实现,不过这里有个小插曲我不得不提一下,安装时可能会报这样的错误:

the following packages have unmet dependencies:
libc6-dev : breaks: gcc-4.4 (< 4.4.6-4) but 4.4.5-8 is to be installed. e: broken packages

看样子是依赖包gcc版本不匹配,我后来通过下面的方式解决了:

apt-get update
apt-get upgrade # 先尝试升级系统软件包
apt-get install libc6-dev

接下来就是安装django以及python的mysql支持,继续apt命令:

apt-get install python-django python-mysqldb

通过上面的步骤,python环境应该安装到你的系统里了,切换到/usr/lib:

cd /usr/lib
ls -l | grep python

你可能会发现系统内被默认安装了几个版本的python,比如我这里就安装有3个版本:

/usr/lib/python2.6
/usr/lib/python2.7
/usr/lib/python3

如何确定当前的python默认版本呢?很容易,直接通过下面的命令就可以了:

python –version

大家知道django是安装到python目录下的site-packages下的,但是这几个python目录下都没有site-packages这个文件夹,其实我们可以先通过下面的命令定位一下:

python -c “from distutils.sysconfig import get_python_lib; print get_python_lib()”

上面的命令会在控制台上打印python包路径,比如这里我们可能获得dist-packages这个目录,切换到这个目录你就会发现django在那儿啦。给django-admin.py加上权限,再做个符号连接,便于我们以后操作(我这里django在python2.7下):

chmod 777 /usr/lib/python2.7/dist-packages/django/bin/django-admin.py
ln -s /usr/lib/python2.7/dist-packages/django/bin/django-admin.py /usr/local/bin

记下django所在的python版本,然后通过下面的命令切换uwsgi的默认python版本(一般不需要切换):

update-alternatives –config uwsgi-plugin-python

好啦,到这里基本上安装部分就介绍完了,下面讲解配置部分,首先建立我们项目的文件夹,比如说放在/home/user/www下,然后通过下面的命令创建名为mysite的django项目:

cd /home/user/www
django-admin.py startproject mysite

好了,这下/home/user/www目录下应该有个子文件夹名字叫mysite,我们需要丢个wsgi的配置文件到/home/user/www/mysite/里面去,配置文件命名为wsgi.py,内容如下:

接下来是修改uwsgi配置文件,先通过如下命令按照刚才的设置建立个配置文件:

cat > /etc/uwsgi/apps-enabled/www.ini /etc/nginx/sites-enabled/www

Posted in 未分类

发表评论