诗万首,酒千觞
几曾著眼看侯王
前言
介绍
Django提供了友好的开发环境,当我们完成开发,准备部署的时候,就该考虑另外的问题了。我决定使用Nginx+Django+FastCGI部署一个网站,特此记录。但是中途发现高版本Django已经不支持FastCGI了,因此采用了uWSGI
FastCGI
FastCGI是一种服务器与应用通讯的协议,FastCGI全称快速通用网关接口(FastCommonGatewayInterface)。
步骤(FastCGI)
环境
- Cent OS 7
- Nginx
- Python3
- sqlite3
创建虚拟环境
python3 -m virtualenv project_path
由于我使用的是python3,一般执行如下命令:
virtualenv project_path
安装相关依赖
pip install django
pip install mysqlclient
pip install pysqlite3
pip install flup
修改Nginx配置
location ~/static/ {
alias /var/www/html/disprobind/;
break;
}
location ~/media/ {
alias /var/www/html/disprobind/;
break;
}
location /disprobind {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param pass_header Authorization;
fastcgi_intercept_errors off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 1h;
}
迁移Django项目并启动
python manage.py runfcgi host=127.0.0.1 port=9000 method=prefork --settings=mysite.settings
注意端口号保持一致
步骤(uWSGI)
安装依赖
pip install uwsgi
设置uWSGI
[uwsgi]
socket = 127.0.0.1:port #与nginx配置中的uwsgi_pass相同
chdir = path #项目地址
wsgi-file = mysite/wsgi.py
processes = 4
threads = 2
pidfile=/tmp/project-master.pid
stats = 127.0.0.1:9191
virtualenv = <path to env> #virtualenv
启动项目
uwsgi myfile.ini
启动成功