如何在 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 18.04 上为 python 安装 mysqlclient 时出错
如何在 Node Js 上为 Rest API 创建一个干净的架构