Django部署——uwsgi+Nginx
Posted GTR-蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django部署——uwsgi+Nginx相关的知识,希望对你有一定的参考价值。
Django部署——uwsgi+nginx(超详细)
环境:
python3.6
centos 7
Django1.11
用Django写了个小网站,只能在自己本地跑一跑!这怎么行?听说可以部署在云服务器上,这样别人就可以访问了!
从哪儿开始?就从Django开始吧!老规矩,按步骤:
1、本地跑起来Django
这里不讲Django项目实施过程,假设你已经写了一个Django项目,并且在本地127.0.0.1:8000能够跑起来。喏,给你个参考,项目大概长这样:
- kindle目录为我创建的Django App
2、修改项目配置
也就是项目目录下的settings.py文件,主要强调几个地方:
①关闭DEBUG模式:
具体为
②修改ALLOWED_HOSTS:
具体为
③配置静态文件存放路径:
具体为
修改好配置之后执行:
python manage.py collectstatic
将项目用到的静态文件复制到项目根目录下的static文件中
3、安装uwsgi和Nginx
这个没什么说的。。。在自己的云服务器上装好这两个工具
安装好uwsgi后最好验证一下,验证方法:
创建一个test.py文件:
def application(env, start_response): start_response(\'200 OK\', [(\'Content-Type\', \'text/html\')]) return [b\'Hello world!\'] #python3 # return [\'Hello world!\'] #python2
启动uwsgi服务器:
uwsgi --http :8000 --wsgi-file test.py
如果可以正常启动而不报错那就应该没问题,不放心的话再在终端验证一下:
wget http://127.0.0.1:8000 看一下能否正确获取内容
4、配置项目的uwsgi
在项目所在文件夹下创建uwsgi.ini配置文件,也就是这里
在uwsgi.ini里进行如下配置:
[uwsgi] # Django-related settings # 这里的端口可以根据自己需要设定 socket = 127.0.0.1:8001 # the base directory (full path) # 这个是Django项目的根目录,也就是包含App的那个目录,仔细对照上图 chdir = /home/python/book2kindle # Django s wsgi file # 这里是项目名(不是App名).wsgi module = book2kindle.wsgi # process-related settings # master master = true # maximum number of worker processes processes = 32 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true plugin python = true # 这个是项目的虚拟python环境,如果没用虚拟环境,可以不设定 home = /home/python/book2kindle_env
5、配置项目的nginx
找到nginx的配置文件夹,centos7的nginx配置文件在/etc/nginx下,该路径下有一个nginx.conf总配置文件,还有两个文件夹./conf.d、./default.d,我们将nginx.conf复制一份到conf.d文件夹下,命名为nginx.conf(或者项目名.conf)进行如下修改(根据中文注释进行相应配置即可):
http { upstream django { # 注意这里的server要和uwsgi.ini配置文件中的socket保持一致 server 127.0.0.1:8002; # for a web port socket } server { listen 80; server_name xxx.com; # 这里填自己的域名或者服务器的ip(决定你今后访问网站的方式) charset utf-8; root /usr/share/nginx/html; location / { root /home/python/book2kindle/kindle; # 这是Django App的路径 uwsgi_pass django; include uwsgi_params; # the uwsgi_params file you installed } location /static { # Django项目静态文件的路径 alias /home/python/book2kindle/static; } } }
6、启动uwsgi和nginx
进入uwsgi.ini文件夹下执行:
uwsgi --ini uwsgi.ini
在终端执行:
service nginx restart
然后就可以根据域名(前提是要将域名解析到服务器ip地址)或者服务器ip来访问网站了!
OK,完事!就是这么简单!
以上是关于Django部署——uwsgi+Nginx的主要内容,如果未能解决你的问题,请参考以下文章
debian完整部署 Nginx + uWSGI + Django
Django + Uwsgi + Nginx 实现生产环境部署
centos7下部署Django(nginx+uWSGI+Python3+Django)