nginx + supervisor + uwsgi + dja
2018-11-25 本文已影响0人
清风徐来_简
一、静态文件处理
- 0.hosts 文件配置,模拟域名
C:\Windows\System32\drivers\etc
10.0.0.10 www.mydjango.com
- 1.创建存放django静态文件的目录:
mkdir /opt/static/django
- 2.配置django项目,收集静态文件
关闭debug模式
DEBUG=False
#收集静态文件的目录,静态文件内容都放这里了
STATIC_ROOT='/opt/static/django'
STATIC_URL = '/static/'
STATICFILES_DIRS=[
os.path.join(BASE_DIR,"static"),
]
- 3.创建static静态文件夹,注意创建的目录
(django15) [root@localhost /projects/django15 07:40:57]#mkdir static
(django15) [root@localhost /projects/django15 07:41:16]#ls
db.sqlite3 django15 manage.py static
- 4.STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
把这些文件放到一起是为了用nginx等部署的时候更方便
python3 manage.py collectstatic(虚拟环境内执行)
结果:61 static files copied to '/opt/static/django'.
- 5.
cd /opt/static/django
查看 ls
会有一个admincd admin
查看 ls
会有这么多东西css fonts img js
二、uwsgi配置
- 1.创建uwsgi配置文件 uwsgi.ini,文件放哪里都可以
cd /projects/django15/
vim uwsgi.ini
[uwsgi]
#使用nginx连接时使用
socket=0.0.0.0:9000
#不用nginx直接当做web服务器使用
#http=0.0.0.0:9000
#项目目录绝对路径
chdir=/projects/django15
#wsgi文件路径,在项目底下
wsgi-file=django15/wsgi.py
#指定解释器目录
home=/root/Envs/django15
processes=4
threads=2
master=True
pidfile=uwsgi.pid
- 2.目录结构:
(django15) [root@localhost /projects/django15/django15 08:41:47]#ls
__init__.py __pycache__ settings.py test_uwsgi.py urls.py wsgi.py
三、nginx配置
- 1.配置nginx文件:
vim /opt/nginx1-12/conf/nginx.conf
upstream django {
server 0.0.0.0:9000 weight=10;
}
server {
listen 80;
server_name www.mydjango.com; (注意不带斜杠,加引号)
location / {
include /opt/nginx1-12/conf/uwsgi_params;
uwsgi_pass django;
}
location /static {
alias /opt/static/django;
}
}
- 2.启动:
/opt/nginx1-12/sbin/nginx
四、安装supervisor进程管理工具
- 1.通过easy_install下载
easy_install supervisor # python2的下载
- 2.生成supervisor配置文件
echo_supervisord_conf > /etc/supervisord.conf
- 3.添加进程管理命令
which uwsgi
/root/Envs/django15/bin/uwsgi
find / -name uwsgi.ini
/projects/django15/uwsgi.ini
vim /etc/supervisord.conf
[program:my_django15] command=/root/Envs/django15/bin/uwsgi --ini /projects/django15/uwsgi.ini (跟据两个文件的位置配置)
- 4.启动supervosr,管理uwsgi
通过 supervisord 这个命令 -c 指明一个配置文件- 4.1,
supervisord -c /etc/supervisord.conf #启动supervisor
可能会出现:Unlinking stale socket /tmp/supervisor.sock
- 4.2,
supervisorctl reload
重启: - 4.3,supervisorctl
回车之后就进入一个交互式的环境
- 4.1,
-
supervisord 命令
1.supervisor > update
:更新新的配置到supervisord
2.supervisor > reload
:重新启动配置中的所有程序
3.supervisor > stop all program_name
:启动某个进程(program_name=你配置中写的程序名称)
4.supervisor > stop program_name
:停止某一进程 (program_name=你配置中写的程序名称)
5.supervisor > restart program_name
:重启某一进程 (program_name=你配置中写的程序名称)
6.supervisor > status
:查看状态下面非常重要,启动不了的时候可查看具体原因。
7.
supervisorctl tail my_django15(任务名) stdout
:查看具体的项目信息-
supervisor手动关闭:
/usr/bin/supervisorctl stop all
先关闭supervisor启动脚本,之后再关闭supervisord服务kill pid进程号
-
如果报错,可能时因为没有相关文件,手动添加,或将supervisord.conf中的配置信息修改一下。相关文章介绍。
-
-
五、启动nginx,supervisorctl,浏览器访问
supervisorctl reload
:重启
/opt/nginx1-12/sbin/nginx -s reload
:重启
www.mydjango.com
:访问测试
六、nginx 反向代理 uwsgi 的404页面自定制
upstream django {
server 0.0.0.0:9000 weight=10;
}
server {
listen 80;
server_name www.mydjango.com;
location / {
include /opt/nginx1-12/conf/uwsgi_params;
uwsgi_pass django;
关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面
uwsgi_intercept_errors on;
}
location /static {
alias /opt/static/django;
}
# 定义错误页面码,如果出现相应的错误页面码,转发到那里。
error_page 404 /404.html;
location = /404.html {
root /opt/static;
}
}
我的自定制页面
[root@localhost /opt/static 20:51:37]#ls
404.html django index.html page1 page2 page3