virtualenv + django + gunicorn + supervisor + nginx ,nginx配置问题

鸟类学 2019-07-01 05:28:15
搭了个博客,用的virtualenv + django + gunicorn + supervisor + nginx
没加nginx之前 一切都正常
加了之后点首页后 url显示 /mydjangoblogserver/ 找不到网页,但其他功能都正常
感觉是guincorn 和 nginx配置有问题,
尝试proxy_pass 改成127.0.0.1:8000 或0.0.0.0:8000 其他所有功能都用不了。
proxy_pass 直接改成域名会报502或404的错误,没继续查,但感觉 proxy_pass 应该和upstream对应
有朋友遇到过类似的问题么 求教。
下面是配置文件

ngnix.conf:

user root;
worker_processes 1;

events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

upstream mydjangoblogserver {
server unix:/home/blog/dev/DjangoBlog/run/gunicorn.sock fail_timeout=0;
}

server{
server_name www.xxx.club;
root /home/blog/dev/DjangoBlog;
listen 80;
keepalive_timeout 70;
location /collectedstatic/ {
expires max;
alias /home/blog/dev/DjangoBlog/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if (!-f $request_filename) {
#proxy_pass http://xxx.club;
proxy_pass http://mydjangoblogserver;
break;
}
}
}

django_start file:

#!/bin/bash
NAME="djangoblog" # Name of the application
DJANGODIR=/home/blog/dev/DjangoBlog # Django project directory
SOCKFILE=/home/blog/dev/DjangoBlog/run/gunicorn.sock # we will communicte using this unix socket
USER=root # the user to run as
GROUP=root # the group to run as
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use
DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source /home/blog/dev/python3/bin/activate
export django_settings_module=$DJANGO_SETTINGS_MODULE
#export pythonpath=$djangodir:$pythonpath
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# create the run directory if it doesn't exist
#rundir=$(dirname $sockfile)
RUNDIR=$(dirname $SOCKFILE)
echo $RUNDIR
test -d $RUNDIR || mkdir -p $RUNDIR

# start your django unicorn
# programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
# exec /var/www/dev/python3/bin/gunicorn ${django_wsgi_module}:application \
echo ${django_wsgi_module}
exec /home/blog/dev/python3/bin/gunicorn -b 0.0.0.0:8000 ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=/home/blog/dev/DjangoBlog/gunicorn.log



supervisor.conf:

[program:djangoblog]
command = /home/blog/dev/DjangoBlog/bin/django_start
user = root
autostart=true
autorestart=true

redirect_stderr = true
stdout_logfile = /root/logs/blog/robot.log
stderr_logfile=/root/logs/blog/err.log
...全文
39 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
基于python3.8和Django3.0的博客 文章,页面,分类目录,标签的添加,删除,编辑等。文章及页面支持Markdown,支持代码高亮。 支持文章全文搜索。 完整的评论功能,包括发表回复评论,以及评论的邮件提醒,支持Markdown。 侧边栏功能,最新文章,最多阅读,标签云等。 支持Oauth登陆,现已有Google,GitHub,facebook,微博,QQ登录。 支持Memcache缓存,支持缓存自动刷新。 简单的SEO功能,新建文章等会自动通知Google和百度。 集成了简单的图床功能。 集成django-compressor,自动压缩css,js。 网站异常邮件提醒,若有未捕捉到的异常会自动发送提醒邮件。 集成了微信公众号功能,现在可以使用微信公众号来管理你的vps了。 安装 mysql客户端从pymysql修改成了mysqlclient,具体请参考 pypi 查看安装前的准备。 使用pip安装: pip install -Ur requirements.txt 如果你没有pip,使用如下方式安装: OS X / Linux 电脑,终端下执行: curl http://peak.telecommunity.com/dist/ez_setup.py | python curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python Windows电脑: 下载 http://peak.telecommunity.com/dist/ez_setup.py 和 https://raw.github.com/pypa/pip/master/contrib/get-pip.py 这两个文件,双击运行。 配置 配置都是在 setting.py 中,部分配置迁移到了后台配置中。 很多 setting 配置我都是写在环境变量里面的.并没有提交到 github 中来.例如SECRET_KEY,OAHUTH,mysql以及邮件部分的配置等.你可以直接修改代码成你自己的,或者在环境变量里面加入对应的配置就可以了. test目录中的文件都是为了travis自动化测试使用的.不用去关注.或者直接使用.这样就可以集成travis自动化测试了. bin目录是在linux环境中使用Nginx+Gunicorn+virtualenv+supervisor来部署的脚本和Nginx配置文件.可以参考我的文章: DjangoBlog部署教程 有详细的部署介绍. 运行 修改DjangoBlog/setting.py 修改数据库配置,如下所示: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'djangoblog', 'USER': 'root', 'PASSWORD': 'password', 'HOST': 'host', 'PORT': 3306, } } 创建数据库 mysql数据库中执行: CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; 然后终端下执行: ./manage.py makemigrations ./manage.py migrate 注意: 在使用 ./manage.py 之前需要确定你系统中的 python 命令是指向 python 3.6 及以上版本的。如果不是如此,请使用以下两种方式中的一种: 修改 manage.py 第一行 #!/usr/bin/env python 为 #!/usr/bin/env python3 直接使用 python3 ./manage.py makemigrations 创建超级用户 终端下执行: ./manage.py createsuperuser 创建测试数据 终端下执行: ./manage.py create_testdata 收集静态文件 终端下执行: ./manage.py collectstatic --noinput ./manage.py compress --force 开始运行: 执行: ./manage.py runserver 浏览器打开: http://127.0.0.1:8000/ 就可以看到效果了。

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧