【问题标题】:PGAdmin4 virtual host not working with Apache2 + WSGIPGAdmin4 虚拟主机不适用于 Apache2 + WSGI
【发布时间】:2021-06-13 07:13:58
【问题描述】:

我有问题。我正在创建一个服务器,我将在其中托管一个 Django 项目以及 PGAdmin4。我将 PGAdmin 配置为使用 Python 3.8 虚拟环境通过 apache2 和 WSGI 运行。在我设置 Django 项目之前,它运行良好。在 ip/pgadmin。一旦我设法在虚拟主机上托管 Django。 pgadmin 开始不工作了。

当 django 网络服务器不在 WSGIScriptAlias 的根目录时尝试输入“ip/pgadmin”时,我会收到此页面。

Not Found

The requested URL was not found on this server.
Apache/2.4.41 (Ubuntu) Server at 192.168.0.10 Port 80

以及以下日志错误。 pgadmin4 与运行 django 项目的相同 virtualenv 一起安装,但因为它们是守护进程,所以这不是问题。所以我不明白为什么在“/var/www/acas_webserver/pgadmin/”下搜索

[Tue Mar 16 00:54:22.633470 2021] [core:info] [pid 26119:tid 140348751849216] [client 192.168.0.5:63072] AH00128: File does not exist: /var/www/acas_webserver/pgadmin/

但是当我将 django 项目放在 WSGIScriptAlias 的根目录时,我收到了这个页面,但没有日志信息知道发生了什么。

Not Found

The requested resource was not found on this server.

我试图让他们两个单独工作,并将我的 django 放在 apache2 虚拟主机 + wsgi 目录的根目录下。我无法找出问题所在,并且已经无数小时没有弄清楚它。虚拟主机配置在哪里

#django 项目

    <VirtualHost *:80>
    ServerAdmin lemanuel.colon@upr.edu
    ServerName 192.168.0.10
    DocumentRoot /var/www/acas_webserver
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    LogLevel info

    Alias /static /var/www/acas_webserver/static
    <Directory /var/www/acas_webserver/static>
            Require all granted
    </Directory>

    Alias /media /var/www/acas_webserver/media
    <Directory /var/www/acas_webserver/media>
            Require all granted
    </Directory>

    <Directory /var/www/acas_webserver/adapts>
            <Files wsgi.py>
                    Require all granted
            </Files>
            Require all granted
    </Directory>

    WSGIDaemonProcess acas_app python-path=/var/www/acas_webserver python-home=/var/www/acas_webserver/my_venv
    WSGIProcessGroup acas_app
    WSGIScriptAlias / /var/www/acas_webserver/adapts/wsgi.py
    WSGIApplicationGroup %{GLOBAL}

    </VirtualHost>

#Pgadming

    <VirtualHost *:80>
    ServerName 192.168.0.10
    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/pgadmin-error.log

    CustomLog ${APACHE_LOG_DIR}/pgadmin-access.log combined
    DocumentRoot /var/www/acas_webserver/my_venv/lib/python3.8/site-packages/pgadmin4/

    LoadModule wsgi_module modules/mod_wsgi.so
    WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/var/www/acas_webserver/my_venv
    WSGIScriptAlias /pgadmin /var/www/acas_webserver/my_venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.wsgi

    <Directory /var/www/acas_webserver/my_venv/lib/python3.8/site-packages/pgadmin4/>
            WSGIProcessGroup pgadmin
            WSGIApplicationGroup %{GLOBAL}
            Require all granted
    </Directory>

    </VirtualHost>

我只是想让他们继续工作以继续这个项目,而这已经让他们头疼了好几天。有人可以在这里提供帮助吗?如果有什么需要我很乐意提供。请帮忙。

更新:

一旦我启用了 django 网络服务器,问题就全部出现了。一旦我在 Apache2 上打开我的 django 网络服务器,我就可以访问我的 pgadmin 页面,但是一旦我在 Apache2 上打开我的 django 网络服务器,pgadmin 就再次无法访问。

【问题讨论】:

    标签: python django apache apache2 wsgi


    【解决方案1】:

    我查看了您的配置(例如 apache),看起来还不错。

    我认为,有很多方法可以解决您的问题。 第一种方法是使用一些适合您需求的 docker 容器。如果您不了解它,只需“GOOGLE: docker Django Postgres apache”并阅读顶部链接。 搜索它,已经有很多结果了。之后,您可能可以运行您的项目。我不想深入 docker 但肯定会解决你的问题。

    其次,检查和监控您的服务、端口和权限。如果它们不在正确的位置,则可能是您的服务器端口正忙,或者您应该重新启动服务。 (正如你所说的在安装Django之前运行良好,这个想法解决问题的机会很小)

    此外,您应该将 Django 项目部署在正确的文件夹中。这些日志之间的差异是合理的。根文件夹可能处于只读模式。

    您提到您必须在这个项目上工作,而且已经头疼了好几天了。我的第一个问题是为什么你专注于服务器部署而不是编码?您可以轻松运行 Postgre、WSGI 和 Django,而不会感到头疼! (开发环境) 并且 pgadmin 不是必要的工具。此外,如果这是问题所在,您应该使用它,只需忽略它并将其传递到您已完成编码阶段的最后阶段。 (似乎你没有编码就卡在了第一位)

    【讨论】:

    • 这里的事情是我已经编码并设置了 django webserver 和 postgresql 数据库。过去我在 root 上运行了 PGAdmin4,它运行良好。然后我将它传递给 /pgadming 子目录,它工作正常,但是当我设法在 apache + wsgi 上托管 django 时,它就疯了。我在想我必须在错误的地方搜索根文件夹和子目录。我会看看码头工人,看看任何类型的解决方案。我希望 PGAdming 在本地网络上脱机运行,以防万一。
    • 在玩服务器时,我设法看到 pgadmin 仅在网络服务器不可用时才可访问,但一旦我执行“sudo a2dissite django_project”,pgadmin 在其子目录中再次可用路线。
    猜你喜欢
    • 2016-09-29
    • 2012-11-25
    • 2023-03-04
    • 2016-07-23
    • 2019-01-01
    • 2014-10-29
    • 2015-03-24
    • 2013-06-24
    • 2014-10-23
    相关资源
    最近更新 更多