calmip / gramc3

GNU General Public License v3.0
0 stars 2 forks source link

Apache configuration #6

Open vignemail1 opened 3 years ago

vignemail1 commented 3 years ago

Description du problème

Afin que Symfony puisse correctement utiliser le module rewrite d'Apache, les directives Rewrite* doivent être autorisées, ce qui n'est pas le cas dans la configuration d'Apache 2.4 par défaut. Il faut autoriser certaines directives via la directive AllowOverride.

Sous Ubuntu ou par défaut depuis Apache 2.3.9, la directive AllowOverride vaut None par défaut alors que pour le module Rewrite il faut avoir à minima FileInfo. De même, le fichier .htaccess généré utilise la directive DirectoryIndex pour spécifier le fichier par défaut. Cette directive nécessite l'option AllowOverride Indexes. Enfin, pour pouvoir lire le fichier .htaccess, il faut également la surcharge Options

Il serait intéressant que la documentation est fasse état afin de simplifier la phase d'installation.

Proposition de solution

Sur la base d'une copie de gramc3 dans /var/www/gramc3 et d'un lien symbolique ln -s /var/www/gramc3/public /var/www/html/gramc3 avec la variable export BASE="/gramc3" dans /etc/apache2/envvars comme dans la documentation.

Un exemple minimal de virtualhost incluant les valeurs nécessaires pour la directive AllowOverride :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <Directory /var/www>
                AllowOverride FileInfo Indexes Options=MultiViews
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Pour l'utilisation de la Fédération, il faut que le site soit accessible via HTTPS donc une version minimale serait

<VirtualHost *:80>
    ServerName gramc.domain.tld
    ServerAdmin webmaster@localhost

    RewriteEngine On
    # This will enable the Rewrite capabilities
    RewriteCond %{HTTPS} !=on
    # This checks to make sure the connection is not already HTTPS
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName gramc.domain.tld
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html>
        Options +FollowSymLinks
        AllowOverride FileInfo Indexes Options=MultiViews
    </Directory>

    <Location /Shibboleth.sso>
        AuthType None
        SetHandler shib
        Require all granted
    </Location>

    ShibCompatValidUser On
    <Location /gramc3/login>
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        ShibRequestSetting applicationId default
        # Require shibboleth
        require shib-session
    </Location>

    UseCanonicalName On

    <IfModule mod_ssl.c>
        SSLEngine On

        SSLCertificateFile /etc/ssl/certs/server.crt
        SSLCertificateKeyFile /etc/ssl/private/server.key
        SSLCertificateChainFile /etc/ssl/certs/sectigo-chain.crt
    </IfModule>
</VirtualHost>