网上找了很多教程 都是千篇一律,有问题的始终是那几个!很难找到答案!
下面结合了网上教程和自己在部署过程中遇到的坑!
自己主要是参照自强学堂的教程!链接https://code.ziqiangxuetang.com/django/django-nginx-deploy.html
安装需要的环境包 根据上面链接安装 一般不会有问题!
主要说下配置文件
一.Django中的wsgi文件
项目文件中的wsgi文件 django自带的那个 最好命名为.py文件 前缀随便!不然项目可能找不到
#-*- coding: utf-8 -*-
import os
import sys
#sys.path.append('/var/www/html/che')
current_dir = os.path.dirname(__file__)
if current_dir not in sys.path:
sys.path.append(current_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'che.settings'
#import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application
#application = django.core.handlers.wsgi.WSGIHandler()
application = get_wsgi_application()
配置之后单独测试django项目能否正常启动
二:uwsgi 文件
安装好uwsgi之后测试 uwsgi是否连通Django 在浏览器上测试
uwsgi --http :8000 --chdir /var/www/html/insurance --module wsgi
#命令解释
1.--http :8000 ==>> 使用uwsgi+Django时使用 浏览器输入外网ip+端口号8000进行测试!正常显示则ok
2. /var/www/html/insurance ==>> 项目路径 包含manage.py的那层
3.wsgi ==>> django 的swgi文件 不用加前缀
测试成功之后 配置uwsgi文件
touch uwsgi.ini 建在任意路径都行 复制以下内容
[uwsgi]
#nginx+uwsgi+Django用
socket=127.0.0.1:8080
#使用Django+uwsgi测试用
#http = :8000
#project dir
chdir=/var/www/html/insurance
#django wsgi file
module=wsgi
#this is python virtualenvs path
#home=/root/.virtualenvs/blogenv
master=true
processes=10
threads=2
chmod-socket=664
vacuum=true
#uwsgi log file
log-maxsize=500000000
logto=/var/log/nginx/uwsgi.log
新建 uwsgi_params文件
touch uwsgi_params 复制以下
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUSET_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
命令启动 uwsgi --ini /var/www/html/uwsgi.ini
三:nginx配置相关
解释下配置文件
进入 cd /etc/nginx/
ls 查看文件
几个文件解释
nginx.conf nginx主要配置文件
default.d 默认配置文件
conf.d 配置文件
当启动nginx服务时 nginx首先会运行主要配置文件
然后加载conf.d 文件下所有.conf 结尾的文件
在加载default.d下所有.conf 结尾的文件
所以当我们配置时可以将我们写的配置文件放在conf.d 文件下
配置如下
#负载均衡转发
upstream django {
server 127.0.0.1:8000;
server 127.0.1.1:8000;
}
server {
listen 80;
#ip或者域名
server_name ip or domain;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
#当路径为 lp/media 过来时走这段
location /media {
alias /var/www/html/insurance/che/static/;
}
#当路径为 lp/static 过来时走这段
location /static {
alias /var/www/html/insurance/che/static/;
}
#上面一般处理静态文件
下面处理动态访问
location / {
#同uwsgi一同创建的配置文件
include /var/www/html/uwsgi_params;
# uwsgi_pass 127.0.0.1:8000;
uwsgi_pass django;
}
}
保存
先 ps aux|grep uwsgi 看看uwsgi是否处于后台运行 如果没有 则启动
命令启动 uwsgi -d --ini /var/www/html/uwsgi.ini -d的意思是后台启动
成功之后 重启 nginx
命令启动 service nginx start(启动) restart(重启)
访问 外网ip 成功
然后添加什么开机启动 nginx uwsgi的 百度了!