这个在python3的virtualenv中部署的django。这个和普通的部署有一些不一样。python
1、要安装的环境和软件。nginx
用安装虚拟环境,把uwsgi也安装在虚拟环境中。git
sudo apt-get installl python3-dev sudo apt-get install nginx sudo pip install uwsgi
nginx和uwsgi启动关闭方式。apache
sudo service nginx restart #重启,和启动通常的服务同样,stop,start, restart. uwsgi --ini uwsgin.ini #经过配置文件启动。
2、配置步骤。django
一、使用python manage.py runserver确保在开发模式下能正常访问网页。bash
二、关闭debug模式。服务器
setting.py文件中进行设置。app
DEBUG = False ALLOWED_HOSTS = ['x.x.x.x', 'localhost', '60.205.220.57']
三、使用uwsgi加载服务。less
使用uwsgi加载服务,socket
uwsgi --ini uwsgi.ini
#uwsgi.ini file [uwsgi] # Django-related settings #设置于nginx对接的sock文件这个要于nginx的配置对应 socket = /home/kx/py3env/taobao/src/config/taobao.sock #当没有部署nginx的时候测试的时候,要写http = ... #http = 0.0.0.0:3031 # the base directory (full path) #工程路径最后一个/是必须的。 chdir = /home/kx/py3env/taobao/src/taobao/ # Django s wsgi file #工程中的wsgi.py文件路径 wsgi-file = taobao/wsgi.py # process-related settings #touch-reload = /home/kx/program/py3env/myblog/reload #reload文件,在这个目录下手动建立reload文件以后,服务才会开始运行 #touch-reload = /home/kx/pyenv/program/taobao/config/reload # maximum number of worker processes processes = 4 threads = 1 # ... with appropriate permissions - may be needed #myblog.sock对应的文件权限 chmod-socket = 666 #用户名 chown-socket = kx # clear environment on exit #vacuum = true #venv #venv环境的路径 virtualenv = /home/kx/py3env/ #配置,但是使用uwsgitop连接到对应地址查看uwsgi状态 stats = 127.0.0.1:9191
而后服务是否能正常访问,usgi加载服务以后,通常没法加载静态文件,须要在nginx中配置静态文件的路径,以后就能够正常加载静态文件了。
在这以前要作一个工做就是收集静态文件:
使用python mange.py collectstatic进行静态文件收集。
收集的静态文件回放在STATIC_ROOT对应的文件夹中, 这个在setting.py中进行设置。
# 当运行 python manage.py collectstatic 的时候 # STATIC_ROOT 文件夹 是用来将全部STATICFILES_DIRS中全部文件夹中的文件,以及各app中static中的文件都复制过来 # 把这些文件放到一块儿是为了用apache等部署的时候更方便 STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
四、配置nginx。
新建: /etc/nginx/sites-available/myblog.conf文件内容以下:
并在/etc/nginx/sites-enabled/文件夹下建立一个对应的硬连接。
sudo
ln
-s
/etc/nginx/sites-available/myblog
.conf
/etc/nginx/sites-enabled/myblog
.conf
server { listen 80; # nginx服务监听的服务器端口 server_name 47.94.110.**; #域名 ip charset utf-8; client_max_body_size 75M; location /media { alias /home/kx/py3env/taobao/src/media; } location /static { alias /home/kx/py3env/taobao/static; #静态文件路径,是在django静态文件收集的文件夹 } location / { uwsgi_pass unix:///home/kx/py3env/taobao/src/config/taobao.sock; #与uwsgi创建的sock的文件,由uwsgi建立 include /etc/nginx/uwsgi_params; } }
启动uwsgi和nginx服务。
3、可能会遇到一些问题。
sudo nginx -t
检查配置文件语法。
若是遇到502等问题,取查看nginx的日志,和django的日志。从日志中找问题。
nginx日志所在目录less /var/log/nginx/error.log和less /var/log/nginx/access.log
日志应该能解决大多数问题。我在部署中遇到一个文件权限问题,经过查看nginx的日志定位到的问题。
4、反向代理,多个app
location / { uwsgi_pass unix:///home/kx/py3env/taobao/src/config/taobao.sock; #与uwsgi创建的sock的文件,由uwsgi建立 include /etc/nginx/uwsgi_params; }
只要多加一条对应的sock。