参考:http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html
线上环境部署Django
环境:
操作系统:centos6
django: 1.10
1、上传代码至工作目录:
/data/python-project/blogproject
目录结构如下:
2、修改配置文件settings.py
+ ALLOWED_HOSTS = ['192.168.102.71','.myblog.cn']
STATIC_URL = '/static/'
+ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
3、python manage.py collectstatic
命令收集静态文件到 static 目录下
$ python manage.py collectstatic
4、安装nginx
yum install nginx
启动:service nginx start
访问nginx: 出现welcome to nginx 说明nginx安装启动成功。
5、安装uwsgi
pip install uwsgi
6、配置uwsgi
创建测试脚本:
# cat test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
进行测试:
# uwsgi --http :8000 --wsgi-file test.py
通过http进行请求:出现 hello world 字样说明uwsgi正常
通过uwsgi访问web服务器:
启动:
uwsgi --http :8000 --module blogproject.wsgi
访问:可以正常访问
7、配置nginx
将uwsgi_params拷贝到工程目录下:
在/etc/nginx/conf.d下创建配置文件:
[root@serverdb01 conf.d]# vim mysite_nginx.conf
# mysite_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
#server 192.168.102.71:8001; # for a web port socket (we'll use this first)
server unix:///data/python-project/blogproject/mysite.sock;
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name www.myblog.cn; # substitute your machine's IP address or FQDN
charset utf-8;
access_log /var/log/nginx/myweb_access.log;
error_log /var/log/nginx/myweb_error.log;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /data/python-project/blogproject/media; # your Django project's media files - amend as required
}
location /static {
alias /data/python-project/blogproject/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
proxy_set_header Host $host;
uwsgi_pass django;
include /data/python-project/blogproject/uwsgi_params; # the uwsgi_params file you installed
}
}
创建好 mysite_nginx.conf文件后需要重启nginx:
service nginx restart
为了测试nginx已经正常工作,我们在/data/python-project/blogproject目录下创建了media目录,并将一个图片拷贝在了这个目录下
然后通过http请求进行访问: 注意本地访问域名www.myblog.cn需要配置hosts
配置好nginx后使用uwsgi启动django服务:
uwsgi --socket mysite.sock --module blogproject.wsgi --chmod-socket=666
通过nginx访问web服务:
8、配置uwsgi以允许.ini文件配置文件位置:/data/python-project/blogproject/myweb_uwsgi.ini
配置文件内容:
# cat myweb_uwsgi.ini
[uwsgi]
#socket = :8000
# the base directory (full path)
chdir = /data/python-project/blogproject
# Django s wsgi file
module = blogproject.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 2
socket = /data/python-project/blogproject/mysite.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
通过.ini文件启动uwsgi
# uwsgi --ini myweb_uwsgi.ini
再次测试Django站点是否正常工作。