django + uwsgi + nginx生产环境

django:一个开放源代码的Web应用框架,由Python写成,采用了MVC的软件设计模式。可以用pip安装。

uWSGI:一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

nginx:具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。

 

环境安装

uWSGI的安装:(强烈建议用pip安装,因为pip带了隔离环境virtualenv)

  source ../env/bin/activate

  pip install uwsgi

或者:

wget http://projects.unbit.it/downloads/uwsgi-1.4.4.tar.gz
tar -zxvf uwsgi-1.4.4.tar.gz
cd uwsgi-1.4.4
make
cp uwsgi /usr/bin

nginx的安装:

一般用源码编译安装Nginx,都需要先安装pcre\zlib等外部支持程序,然后配置安装nginx时候这些外部程序的源码的路径,这样Nginx在每次启动的时候,就会动态地去加载这些东西了。后面是否对这些外部程序单独编译,自己决定,不编译影响不大。

安装PCRE外部程序

cd /root/install
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
tar -zxvf pcre-8.30.tar.gz
cd pcre-8.30
./configure --prefix=/usr/local/pcre8.30
make && make install

安装OPENSSL外部程序

cd /root/install
wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz
tar -zxvf openssl-1.0.0a.tar.gz
cd openssl-1.0.0a
./config --prefix=/usr/local/openssl1.0.0
make && make install

安装ZLIB外部程序

  cd /root/install
  wget http://www.zlib.net/zlib-1.2.7.tar.bz2
  tar -jxvf zlib-1.2.7.tar.bz2
  cd zlib-1.2.7
  /configure --prefix=/usr/local/zlib1.2.7
  make && make install

最后安装NGINX

cd /root/install
wget http://nginx.org/download/nginx-1.0.15.tar.gz
tar -zxvf nginx-1.0.15.tar.gz
cd nginx-1.0.15
./configure --prefix=/usr/local/nginx --with-http_sub_module --with-pcre=/root/install/pcre-8.30
make && make install

7.检查是否安装成功

         cd  /usr/local/nginx/sbin

         ./nginx -t 

        nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

        nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

8.启动nginx

          cd  /usr/local/nginx/sbin

         ./nginx 启动 nginx

9检查是否启动成功

          curl http://localhost

 

 

生产配置

1、配置需求环境

pip freeze > requirements.txt 在开发环境将工程依赖的包导出。
pip install virtualenv 
pip install virtualenvwrapper
编辑~/.bashrc
  export WORKON_HOME=$HOME/.virtualenvs
  source /usr/bin/virtualenvwrapper.sh
执行 source ~/.bashrc,后workon命令就可以用了,并且通过mkvirtualenv创建的都可以通过workon命令查看
mkvirtualenv testenv创建一个虚拟环境
pip install -r requirements.txt 就会从文件里边读取依赖并且安装。
  如果提示mysql_config not found报错,则执行yum -y install mysql-devel
  如果提示gcc错误,则安装 yum -y install gcc python-devel
pip install uwsgi 安装uwsgi
  uwsgi --http :8000 --module muxue.wsgi 测试uwsgi 安装是否成功
  muxue.wsgi 指的是django应用的根目录下的muxue文件夹下的wsgi.py文件,这样就可以直接把django项目启动起来

2、添加nginx配置文件

upstream django {
        server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
server {
        listen      80;
        server_name 192.168.201.131; # substitute your machine's IP address or FQDN
        charset     utf-8;

        client_max_body_size 75M;   # adjust to taste
        location /media  {
            alias /opt/django_muxue/media;  # 指向django的media目录
        }
        location /static {
            alias /opt/django_muxue/static; # 指向django的static目录
        }
        location / {
            uwsgi_pass  django;
            include     uwsgi_params; # the uwsgi_params file you installed
        }
}

3、拉取所有需要的static file 到同一个目录

  在django的setting文件中,添加下面一行内容:
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    运行命令 python manage.py collectstatic

4、配置一个uwsgi .ini配置文件,然后用配置文件来启动uwsgi

[uwsgi]
chdir           = /opt/django_muxue/
module          = muxue.wsgi
master          = true
processes       = 10
socket          = 127.0.0.1:8000
vacuum          = true
virtualenv = /root/.virtualenvs/mxonline
  启动uwsgi,通过配置文件的方式  uwsgi -i uwsgi.ini
  重启uwsgi,pkill -f uwsgi

Leave a Comment