如何在 ubuntu 上为 django restful 服务配置 apache2

Posted

技术标签:

【中文标题】如何在 ubuntu 上为 django restful 服务配置 apache2【英文标题】:How to configure apache2 on ubuntu for django restful services 【发布时间】:2016-06-21 00:41:56 【问题描述】:

我的 ubuntu 服务器上有 django restful 服务,这些服务在端口 84 上运行。

发送请求时,它来自运行在 80 端口上的 apache2 服务器。

现在假设我的服务器 IP 是“xx.xx.xx.10”,当我使用这个 url http://xx.xx.xx.10/user 调用时,用户是在端口 84 上运行在 django rest 框架上的其余服务。然后请求应该转到我的 django rest 服务通过 apache2 并返回所需的输出。

我尝试在 apache2 中使用以下配置:-

    <VirtualHost *:80>
     WSGIScriptAlias / /myproject/myapp/test/wsgi.py
     <Directory "/myproject/myapp/test/">        
      <Files "wsgi.py">
        Require all granted
      </Files>
     </Directory>
    </VirtualHost>

但这给出了内部错误,说 test.settings 没有退出。

这是配置在apache服务器上不同端口上运行的restful服务的正确方法吗?

【问题讨论】:

您如何以及为什么在端口 84 上部署服务? Django 文档提供了使用 Apache mod wsgi 部署 Django 的说明,您可能会觉得这些说明很有用。 【参考方案1】:

我已经通过使用以下配置解决了这个问题:-

    <VirtualHost *:80>
        ServerName mydomain 
        ServerAlias *.mydomain
        ProxyRequests off
        ProxyPass / http://localhost:84/
        ProxyPassReverse / http://localhost:84/
     </VirtualHost>

【讨论】:

【参考方案2】:

您是否指定了 python 路径?如果不这样做,import mysite 将不起作用。

WSGIPythonPath /path/to/mysite.com

欲了解更多信息,请参阅:Django docs modWSGI

【讨论】:

我试过这个,仍然给出“内部错误说 test.settings 没有退出” 您能否发布日志或终端输出等,也可以发布任何其他相关的配置文件 我正在代理 manage.py runserver。这对生产有好处吗? 没有。当然不。您应该参考文档并在 Apache 上使用 mod wsgi 进行部署,或者在 nginx 上使用 gunicorn。您还可以使用 Apache 和 gunicorn。无论哪种方式,您都需要一个多工作者 wsgi 服务器,而 runserver 不会给您。 谢谢pypypy,我会用其中一个。

以上是关于如何在 ubuntu 上为 django restful 服务配置 apache2的主要内容,如果未能解决你的问题,请参考以下文章

在 ubuntu 上为 python 3.5 扭曲

在 Ubuntu 18.04 上为 python 安装 mysqlclient 时出错

如何在 Node Js 上为 Rest API 创建一个干净的架构

如何在 Heroku 上为 Django 应用程序设置数据库?

如何在 Ubuntu 上为 Apache2 配置子域?

Django - 如何在相关模型上为外键创建多个选择(在 CreateView 上)?