Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218809
  • 博文数量: 39
  • 博客积分: 945
  • 博客等级: 准尉
  • 技术积分: 532
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-04 17:25
文章分类

全部博文(39)

文章存档

2012年(39)

我的朋友

分类: LINUX

2012-05-18 10:35:38


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

点击(此处)折叠或打开

  1. leslie@Notebook:~$ sudo su -
  2. root@Notebook:~$ apt-get install mysql-server
  3. root@Notebook:~$ apt-get install nginx
然后通过Debian Packages网站找到我们所需要的uWSGI在sid里,为了用sid里面的软件包,我们还需要修改我们的/etc/apt/sources.list源,添加deb sid main non-free contrib这一行,或者直接输入命令:

点击(此处)折叠或打开

  1. root@Notebook:~$ echo "deb sid main non-free contrib" >> /etc/apt/sources.list
配置过源列表后,我们就可以通过下面的命令安装了:

点击(此处)折叠或打开

  1. root@Notebook:~$ apt-get update
  2. root@Notebook:~$ 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版本不匹配,我后来通过下面的方式解决了:

点击(此处)折叠或打开

  1. root@Notebook:~$ apt-get update
  2. root@Notebook:~$ apt-get upgrade # 先尝试升级系统软件包
  3. root@Notebook:~$ apt-get install libc6-dev
接下来就是安装django以及Python的MySQL支持,继续APT命令:

点击(此处)折叠或打开

  1. root@Notebook:~$ apt-get install python-django python-mysqldb
查看下应用的python版本

点击(此处)折叠或打开

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

点击(此处)折叠或打开

  1. root@Notebook:/usr/lib$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
上面的命令会在控制台上打印Python包路径,比如这里我们可能获得dist-packages这个目录,切换到这个目录你就会发现django在那儿啦。给django-admin.py加上权限,再做个符号连接,便于我们以后操作(我这里Django在Python2.7下):

点击(此处)折叠或打开

  1. root@Notebook:/usr/lib$ chmod 777 /usr/lib/python2.7/dist-packages/django/bin/django-admin.py
好啦,到这里基本上安装部分就介绍完了,下面讲解配置部分,首先建立我们项目的文件夹,比如说放在/opt/www下,然后通过下面的命令创建名为mysite的Django项目:

点击(此处)折叠或打开

  1. root@Notebook:~$ cd /opt/www
  2. root@Notebook:/opt/www$ django-admin.py startproject mysite
好了,这下/opt/www目录下应该有个子文件夹名字叫mysite,我们需要丢个wsgi的配置文件到/opt/www/mysite/里面去,配置文件命名为wsgi.py,内容如下:

点击(此处)折叠或打开

  1. # wsgi.py
  2. # /opt/www/mysite/wsgi.py
  3. import sys
  4. import os
  5.  
  6. sys.path.append(os.path.abspath(os.path.dirname(__file__)))
  7. # 下面这行是mysite的父目录
  8. sys.path.append('/opt/www')
  9. # 下面这行的值请改成相应项目名称.settings
  10. # 我们这里是mysite.settings
  11. os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
  12.  
  13. import django.core.handlers.wsgi
  14.  
  15. application = django.core.handlers.wsgi.WSGIHandler()


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

点击(此处)折叠或打开

  1. cat > /etc/uwsgi/apps-enabled/www.ini << EOF
  2. [uwsgi]
  3. socket = /var/run/uwsgi/app/www/socket
  4. chmod-socket = 666
  5. limit-as = 256
  6. processes = 6
  7. max-request = 2000
  8. memory-report = true
  9. enable-threads = true
  10. pythonpath = /opt/www
  11. chdir = /opt/www/mysite
  12. wsgi-file = /opt/www/mysite/wsgi.py
  13. EOF
# 重启uwsgi

点击(此处)折叠或打开

  1. root@Notebook:~$ invoke-rc.d uwsgi restart
注意上面的socket配置,这个在我机子上是这个路径,大家可以cd /var/run里面找下,然后配置正确,接下来建立Nginx配置文件:

点击(此处)折叠或打开

  1. root@Notebook:~$ cat > /etc/nginx/sites-enabled/www << EOF
  2. server {
  3.         listen 80;
  4.         server_name localhost;
  5.         location / {
  6.                 include uwsgi_params;
  7.                 uwsgi_pass unix:///var/run/uwsgi/app/www/socket;
  8.         }
  9. }
  10. EOF
这里的uwsgi_pass依旧是上面我们找到的socket,注意一下server_name,这个是我们绑定的域名,通过nginx -s reload重新加载nginx。

好了,现在可以访问看看是不是成功了?如果出现502 Bad Gateway,可以检查一下uwsgi是否正常启动,通过ps aux | grep uwsgi看下进程列表,最后在检查下socket路径是否正确。

假如出现uWSGI Error:Python application not found这个问题,主要是路径配置问题,这点你可以查阅/var/log/uwsgi下面的日志文件,比如我就遇到过ImportError: No module named django.core.handlers.wsgi这个问题,实际上是wsgi.py里面路径配置不正确。




阅读(8144) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~