1, django 官方文档可配置项如下:
2,启动django 的配置:
1,和settings.py 同级目录下新建wsgi.py (该配置和manager.py 的配置基本是一样的)
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectName.settings") application = get_wsgi_application()
2,和manager.py同一级 创建启动文件projectName_uwsgi.ini (建议这样命名)
[uwsgi] chdir = /home/project# 你的项目目录 # home = /home/mysite_env # 如果有虚拟环境,则需要指定虚拟环境目录; 没有则注释掉 module = projectName.wsgi:application # 指向自己Django项目目录下projectName目录下的wsgi文件 (上面的wsgi.py) master = True processes = 4 # 使用进程数 threads = 2 使用的线程数 harakiri = 60 # 最大超时时间 max-requests = 5000 # 最大请求数,到了后就会自动重启 socket = 127.0.0.1:8000 # socket连接地址和端口,和nginx配置一致,
# http = 127.0.0.1:8000 不使用nginx这样配置
pidfile = /home/projectName/master.pid # 在失去权限前,将pid写到指定的pidfile文件中 daemonize = /data/log/uwsgi/uwsgi.log # 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器, 不配置日志就是前台运行,部署测试时可以先注释掉 # chmod-socket = 664 # 如果没有权限访问uWSGI的socket,这里可以设置权限 vacuum = True # 服务退出或重启,自动删除pid和socket文件
# home = /home/python/.virtualenvs/env_name
# 如果有虚拟,指定使用的虚拟环境
3,启动命令: uwsgi --ini projectName_uwsgi.ini
停止命令: uwsgi --stop master.pid
重启命令:uwsgi --reload master.pid
4, nginx + uwsgi + django 部署
1,前面的uwsgi 单独部署不变,需要修改uwsgi.ini 的服务为 socket = 127.0.0.1:8000 (不使用http = 127.0.0.1:8000)
2,配置nginx (保存后使用nginx -t 检查是否配正确)
server { listen 8800; #给外部访问的端口 server_name localhost; # 给外部访问的ip或域名 root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { # 包含uwsgi请求的参数 include uwsgi_params; #uwsgi 使用自带,固定配置不变 # 转交请求给uwsgi服务器 (uwsgi服务器的ip和端口号) uwsgi_pass 127.0.0.1:8000; # 单个uwsgi服务器(不需要负载均衡) #uwsgi_pass upstream1; #需要配置负载均衡时再配置upstream } # 如果是静态资源请求就直接响应资源。 location /static { # 指定静态文件存放的目录 (需要修改/var/...目录的操作权限。 $ chmod 777 /var) alias /var/project/project/static_all; # 静态文件所在的目录 (下面有静态文件收集方式) }
2,django 搜集静态文件:
1,再settings.py 中配置收集静态文件的路径
STATIC_ROOT = os.path.join(BASE_DIR, 'static_all') # 两种方式都可以 (django中推荐使用) STATIC_ROOT = '/var/static'
2,使用命令 python3 manager.py collectstatic (收集django所有的静态文件到我们配置的地方)
收集后如下:
这个静态文件的地址就是上面nginx配置的静态文件地址
3, 重启nginx , 访问是否正常:
nginx -t 检查nginx 配置是否正确, 可看到配置文件
nginx -s reload 不重启nginx 重新加载配置文件
nginx -s stop 停止nginx
systemctl status nginx.service 查看nginx 的状态
注意事项:
1,如果不搭配nginx 要配置 http = 127.0.0.1:8000 , 不能使用socket = 127.0.0.1:8000
2,在配置wsgi.py时,要和manager.py 的指定项一样 (os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectName.settings.dev")) ,可以指定不同的配置文件