Meerdere websites via Apache en Django

Plaats reactie
joriz
Premium Member
Premium Member
Berichten: 548
Lid geworden op: 13 mei 2006, 22:36
Uitgedeelde bedankjes: 55 keer
Bedankt: 40 keer

Enkele weken geleden ben ik gestart met het gebruiken van Papermerge (https://papermerge.readthedocs.io/) om gescande documenten te beheren. Deze tool draait op een Debian Linux server via Apache met WSGI/Python 3.x.

Papermerge werkt prima maar ik had graag via dezelfde Apache webserver een extra website willen hosten bestaande uit statische html files. Deze combinatie lijkt niet probleemloos te zijn.

Voor papermerge werd er een virtualhost file aangemaakt. De tool draait op poort :8060
De papermerge bestanden bevinden zich onder /opt/papermerge met toegang voor www-data

Code: Selecteer alles

<Virtualhost *:8060>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

 ServerName file.fritz.box
    ServerRoot /opt/papermerge
    DocumentRoot /opt/papermerge
<Directory  /opt/papermerge>
  AllowOverride All
 </Directory>

    Alias /static/ /opt/papermerge/static/
    <Directory  /opt/papermerge/static>
        Require all granted
    </Directory>


    Alias /media/ /opt/papermerge/media/
    <Directory  /opt/papermerge/media>
        Require all granted
    </Directory>

    <Directory /opt/papermerge/config/>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

</VirtualHost>
WSGIPythonHome /opt/papermerge/.venv/
WSGIPythonPath /opt/papermerge/
WSGIScriptAlias / /opt/papermerge/config/wsgi.py
Voor de extra website met statische html files werd volgende virtualhost aangemaakt. Deze draait op port :80 en gebruikt voorlopig als test /var/www/html waarin de default welcome pagina start van Apache.

Code: Selecteer alles

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        
                ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Wanneer ik met deze configuratie naar papermerge surf via http://file:8060 kom ik uit op de Papermerge website.
Enkel wanneer ik surf via http://file krijg ik "You don't have permission to access this resource" en niet de statische html website.

Met Apache in debug mode komt volgende error naar boven:

Code: Selecteer alles

[authz_core:error] [pid 1359:tid 139674450376448] [client 192.168.1.2:3453] AH01630: client denied by server configuration: /opt/papermerge/                                  config/wsgi.py
Ik begrijp niet goed waarom Apache nog steeds /opt/papermerge/config/wsgi.py wil inladen bij het surfen naar poort :80

Apache luistert zowel op poort :80 als :8060

Code: Selecteer alles

Listen 80
Listen 8060

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
Gebruikersavatar
Splitter
Elite Poster
Elite Poster
Berichten: 4578
Lid geworden op: 10 mar 2010, 12:30
Uitgedeelde bedankjes: 58 keer
Bedankt: 446 keer

- je hebt een index.html file in de /var/www ?
- je /var/ww/ is toegankelijk voor apache?
- krijg je nog andere fouten iets ervoor/na in het log?

edit:

definieer ook eens je IP ipv de * wildcard te gebruiken.
joriz
Premium Member
Premium Member
Berichten: 548
Lid geworden op: 13 mei 2006, 22:36
Uitgedeelde bedankjes: 55 keer
Bedankt: 40 keer

- index.html is aanwezig in /var/www/html/

Code: Selecteer alles

root@file:/var/www# ls -al /var/www/html/
total 20
drwxrwx--- 2 www-data www-data  4096 Nov  8 18:00 .
drwxrwx--- 3 www-data www-data  4096 Nov  8 18:00 ..
-rwxrwx--- 1 www-data www-data 10701 Nov  8 18:00 index.html
- www-data heeft rwx zowel als owner als groep op /var/www/

- Bij het surfen naar http://file krijg ik nog 2 extra lijnen in de log inderdaad:

Code: Selecteer alles

[Tue Nov 17 18:11:32.205133 2020] [authz_core:debug] [pid 31572:tid 139742213543680] mod_authz_core.c(820): [client 192.168.1.2:3837] AH01626: authorization result of Require all denied: denied
[Tue Nov 17 18:11:32.205171 2020] [authz_core:debug] [pid 31572:tid 139742213543680] mod_authz_core.c(820): [client 192.168.1.2:3837] AH01626: authorization result of <RequireAny>: denied
[Tue Nov 17 18:11:32.205177 2020] [authz_core:error] [pid 31572:tid 139742213543680] [client 192.168.1.2:3837] AH01630: client denied by server configuration: /opt/papermerge/config/wsgi.py
Edpnet VDSL XL + Voip @ 100/35Mbit / Fritzbox 7490
tizzen33
Member
Member
Berichten: 60
Lid geworden op: 30 mar 2017, 10:14
Uitgedeelde bedankjes: 1 keer
Bedankt: 15 keer

Code: Selecteer alles

<Directory  /var/www/html>
    Require all granted
</Directory>
Nog toevoegen in de Virtualhost :80 ?

Edit: en ik zou de WSGI statements in de Virtualhost :8060 plaatsen.
joriz
Premium Member
Premium Member
Berichten: 548
Lid geworden op: 13 mei 2006, 22:36
Uitgedeelde bedankjes: 55 keer
Bedankt: 40 keer

Edit:
Het probleem lijkt opgelost te zijn.
In de mod_wsgi handleiding kwam ik de tip van Tizzen33 terug tegen: de WSGI statements in de virtualhost plaatsen.
Ik had dus alle 3 de statements in virtualhost geplaatst waardoor Apache een melding gaf dat deze er buiten moeten staan.
Wanneer enkel WSGIScriptAlias / /opt/papermerge/config/wsgi.py in virtualhost staat en de andere 2 erbuiten geeft Apache de foutmelding niet meer en zijn beide virtualhosts bereikbaar.

Code: Selecteer alles

WSGIScriptAlias / /opt/papermerge/config/wsgi.py

</VirtualHost>

WSGIPythonHome /opt/papermerge/.venv/
WSGIPythonPath /opt/papermerge/
Bedankt

//

WSGI moeten buiten de virtualhost staan, de error.log zegt dat effectief als ze erin staan.
De * wildcard ook vervangen door het IP.

Ook even gekeken of Apache wel de virtualhost:80 inlaad, is dus het geval.

Code: Selecteer alles

root@file:/opt# sudo apachectl -D DUMP_VHOSTS
VirtualHost configuration:
192.168.1.110:80       file.fritz.box (/etc/apache2/sites-enabled/000-default.conf:1)
192.168.1.110:8060     file.fritz.box (/etc/apache2/sites-enabled/papermerge.conf:1)
Vraag me af of het default security model in apache2.conf hier niet de boosdoener is. In de comments staat het volgende. Kga dit eens even doorzoeken...

Code: Selecteer alles

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
Papermerge staat onder /opt/papermerge, wat prima werkt dus dat is opzich vreemd dan...
Edpnet VDSL XL + Voip @ 100/35Mbit / Fritzbox 7490
Plaats reactie

Terug naar “Development”