Nginx6 - Ubuntu下Django项目部署反向代理动态业务

在上一篇Nginx5 - Ubuntu下Django项目部署静态数据部署完成后,发现动态业务无法访问。原因是Nginx服务器无法找到tb商场服务器。
这篇我们使用Nginx的反向代理,部署tb商场服务器。

一、部署tb商城服务器

  1. 准备生产环境配置文件
  • 复制开发环境配置文件dev.py到生产环境配置文件prod.py,并做修改。
# SECURITY WARNING: don't run with debug turned on in production!
# DEBUG = True
DEBUG = False

ALLOWED_HOSTS = ['www.tb.com']
  1. 准备生产环境启动文件
  • 生产环境我们是使用tb.wsgi.py启动服务的。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tb.settings.prod")
  1. 安装uwsgi包
  • Django的程序通常使用uwsgi服务器来运行。
$ pip install uwsgi
  1. 准备uwsgi服务器配置文件
  • 新建meiduo_mall.uwsgi.ini配置文件
[uwsgi]
# 使用Nginx连接时使用,Django程序所在服务器地址
socket=172.16.21.25:8001
# 直接做web服务器使用,Django程序所在服务器地址
# http=172.16.21.25:8001
# 项目目录
chdir=项目路径/tb_project/tb
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=tb/wsgi.py
# 进程数
processes=4
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=虚拟环境路径/.virtualenvs/tb
  1. 管理uwsgi服务器
# 启动
$ uwsgi --ini uwsgi.ini
# 关闭
$ uwsgi --stop uwsgi.pid

部署Nginx服务器反向代理

  1. 修改Nginx服务器配置文件
http {
    ......
    # 商城服务器
    upstream tb {
        server 172.16.21.25:8001; # 服务器1
        # server 172.16.21.25:8002; # 服务器2
    }

    server {
        listen       80;
        server_name  www.tb.com;
        ......
        location / {
            include uwsgi_params;
            uwsgi_pass tb;
        }

    }
}
  1. 启动Nginx服务器
# 检查配置文件
$ sudo /usr/local/nginx/sbin/nginx -t
# 重启
sudo /usr/local/nginx/sbin/nginx -s reload
  1. 测试Nginx反向代理

部署后的代码调整

  1. 邮箱的验证链接
# 邮箱验证链接(开发环境)
# EMAIL_VERIFY_URL = 'http://www.tb.com:8000/emails/verification/'
# 邮箱验证链接(生产环境)
EMAIL_VERIFY_URL = 'http://www.tb.com/emails/verification/'
  1. 支付宝的回调地址
# 支付宝
ALIPAY_APPID = '****************'
ALIPAY_DEBUG = True
ALIPAY_URL = 'https://openapi.alipaydev.com/gateway.do'
# ALIPAY_RETURN_URL = 'http://www.tb.com:8000/payment/status/' # (开发环境)
ALIPAY_RETURN_URL = 'http://www.tb.com/payment/status/' # (生产环境)
  1. 详情页的访问方式
{# 开发环境 #}
{# <a href="{{ url('goods:detail', args=(sku.id, )) }}"><img src="{{ sku.default_image.url }}"></a> #}
{# <h4><a href="{{ url('goods:detail', args=(sku.id, )) }}">{{ sku.name }}</a></h4> #}

{# 生产环境环境 #}
<a href="/detail/{{ sku.id }}.html"><img src="{{ sku.default_image.url }}"></a>
<h4><a href="/detail/{{ sku.id }}.html">{{ sku.name }}</a></h4>
发布了53 篇原创文章 · 获赞 69 · 访问量 2104
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览