hackstoic / hackstoic.github.io

个人博客
http://hackstoic.github.io
12 stars 1 forks source link

搭建NGINX+UWSGI+DJANGO+MYSQL环境 #10

Open hackstoic opened 8 years ago

hackstoic commented 8 years ago

title: 搭建NGINX+UWSGI+DJANGO+MYSQL环境

系统环境: ubuntu12.04; python2.7( ubuntu12.04 默认安装了python2.7版本)

安装pip工具和python开发环境

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv 
$ sudo apt-get install libmysqld-dev

安装django

sudo pip install django (下载最新的django) 也可以指定django版本进行安装,例如 sudo pip install django==1.7.3 或者也可以采用源码安装的方式 各种系统和各种安装方式的详细说明可以查看这个链接: https://docs.djangoproject.com/en/1.8/intro/install/ 如果你需要移除老的django版本,再进行安装,可以查看: https://docs.djangoproject.com/en/1.8/topics/install/

安装mysql

$ sudo apt-get install mysql-server

安装mysql-python

$ sudo pip install mysql-python 或者使用sudo apt-get install python-mysqldb

安装uwsgi

sudo pip install uwsgi 或者使用源码安装 建议不使用apt-get的方式安装uwsgi, 用apt-get install安装的uwsgi ,结果nginx无论怎么配置,都会出现502 bad gateway 具体原因不明。

安装nginx

sudo apt-get install nginx

测试uwsgi

新建test文件

# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')]) 
   return"Hello World"

然后执行: uwsgi --http :8001 --wsgi-file test.py 在浏览器访问 http://youip:8001 即可看到结果

建立django项目工程

假设在/opt/django/目录下建立工程 django-admin.py startproject django_test #创建一个Django项目

配置uwsgi

(vim /opt/django/django_test/uwsgi_setting.ini, 粘贴以下内容)

[uwsgi]
chdir=/opt/django/django_test/
module=django_test.wsgi
master=True
pidfile=/tmp/net.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi.log
processes=10
socket=127.0.0.1: 8001

启动uwsgi --> uwsgi --ini /opt/django/django_test/uwsgi_setting.ini

配置nginx

(在/etc/nginx/sites-available下建文件django_test.conf,内容如下,并且在 /etc/nginx/sites-enabled下建该文件的软链接ln -s ../sites-available/django_test.conf django_test.conf)

server {   
# 侦听的端口
listen       80; 
# 绑定的ip地址或者域名 
server_name  127.0.0.1;
access_log  /var/log/django_test_nginx.log;
location / { 
send_timeout 120; 
# 这里的端口要和uswgi配置的一致 
uwsgi_pass 127.0.0.1: 8001;
include /etc/nginx/uwsgi_params;
}
location /static/admin/{ 
#  django模块路径可能会有差异,请根据实际情况调整 
alias /usr/local/lib/python2.7/dist-packages/Django-1.7.1-py2.7.egg/django/contrib/admin/static/admin/;
access_log off;
}

location /static{
    alias /opt/django/django_test/static/;
    access_log off;
} 

location /file/{
alias /var/www/file/;
access_log off;
}

location /webalizer/ {
alias /var/www/webalizer/;
access_log off;
}
}

启动nginx --> nginx -c /etc/nginx/nginx.conf 配置重载(修改配置后要进行此操作) --> nginx -s reload

就此django + mysql + uwsgi + nginx的配置就完成了。你可以打开127.0.0.1访问你的网站了。