Apache » Historique » Révision 53
Révision 52 (Patrice Nadeau, 2017-10-02 19:25) → Révision 53/70 (Patrice Nadeau, 2017-10-02 19:25)
h1. Apache Serveur de page Web > Version 2.4 --- {{toc}} h2. Installation <pre><code class="bash"> # Installation sudo zypper install apache2 # Activation au démarrage sudo systemctl enable apache2.service # Démarrer Apache : sudo systemctl start apache2.service </code></pre> Ouvrir dans le pare-feu : <pre><code class="bash"> sudo yast firewall services add service=service:apache2 zone=EXT </code></pre> L’emplacement des fichier du serveur est _/srv/www/htdocs_. h2. Modules supplémentaires > La configuration d'Apache doit être relue lors de l'activation d'un module La liste des modules actifs peut être listé avec <pre><code class="bash"> a2enmod -l </code></pre> h3. Version Inclut dans Apache <pre><code class="bash"> sudo a2enmod mod_version </code></pre> h3. PHP Support pour PHP <pre><code class="bash"> sudo zypper install apache2-mod_php5 sudo a2enmod mod_php5 </code></pre> h3. Proxy Redirection de serveur <pre><code class="bash"> a2enmod proxy a2enmod proxy_http </code></pre> h2. HTTPS Serveur sécurisé h3. Pré-requis Vérifier qu'Apache supporte SSL <pre><code class="bash"> sudo a2enmod -l </code></pre> Si le module *ssl* n’apparaît pas, l'activer <pre><code class="bash"> sudo a2enmod ssl </code></pre> h4. Self-certificate Générer les clés <pre><code class="bash"> openssl req -new > new.ssl.csr openssl rsa -in privkey.pem -out new.cert.key openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days 365 cp new.cert.cert /etc/ssl/certs/server.crt cp new.cert.key /etc/ssl/private/server.key </code></pre> Modifier le fichier _/etc/apache2/default-server.conf_ <pre><code class="php"> Listen 443 <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key </VirtualHost> </code></pre> h4. Let’s Encrypt https://letsencrypt.org Certificats gratuits d'une durée de 90 jours. Le renouvellement automatique peut être programmé. > Le certificat n'est valide que pour un serveur en particulier, contrairement à un « wildcard ». Installer le script : <pre><code class="bash"> wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto </code></pre> Lancer le script et spécifier le nom du serveur (FQDN) : <pre><code class="bash"> # New certificate ./certbot-auto --apache certonly # Renew all certificate ./certbot-auto renew </code></pre> Modifier le fichier _/etc/apache2/default-server.conf_ (modifier _yourdomain_ par le nom du domaine approprié) : <pre><code class="php"> Listen 443 <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem </VirtualHost> </code></pre> h3. Mise en service Relire la configuration d'Apache <pre><code class="bash"> systemctl reload apache2.service </code></pre> h2. Serveurs virtuels Apache permet de rediriger les demandes d’accès vers * différents répertoires sur le même serveur * différents port * un autre serveur Très utile pour rediriger les requêtes à partir d'internet avec un seule adresse IP publique (NAT(Network Address Translation)). Si le fichier _/etc/apache2/vhosts.d/vhost.conf_ n'existe pas, le créer à partir du gabarit de base <pre><code class="bash"> cd /etc/apache2/vhosts.d/ cp vhost.template vhost.conf </code></pre> h3. Redirection vers un dossier différent. Ex. : On veux diriger _helpdesk.domain.tld_ vers le dossier _/srv/www/htdocs/helpdesk_ et _wiki.domain.tld_ vers le dossier _/srv/www/htdocs/wiki_ <pre><code class="php"> <VirtualHost *:80> ServerName helpdesk.domain.tld DocumentRoot /srv/www/htdocs/hepdesk ServerAdmin admin@domain.tld <Directory "/srv/www/htdocs/helpdesk"> #Order allow,deny #Since Apache 2.4 Require all granted </Directory> </VirtualHost> <VirtualHost *:80> ServerName wiki.domain.tld DocumentRoot /srv/www/htdocs/wiki ServerAdmin admin@domain.tld <Directory "/srv/www/htdocs/wiki"> #Order allow,deny # since Apache 2.4 Require all granted </Directory> </VirtualHost> </code></pre> Modifier les items suivants : * *ServerAdmin* : L'adresse de courriel de l'administrateur * *ServerName* : Le FQDN(Fully Qualified Domain Name) du serveur * *DocumentRoot* : L'emplacement des fichiers du site web h3. Redirection vers un serveur différent > Les modules _proxy_ et _proxy_http_ doivent déjà être actifs Modifier le fichier _/etc/apache2/vhosts.d/vhost.conf_ Ex. : On veux rediriger le service _service_ vers le serveur _server1_ <pre><code class="php"> <VirtualHost *:80> ServerName service.domaine.com ProxyPreserveHost On ProxyPass / http://serveur1.domaine.com/ ProxyPassReverse / http://serveur1.domaine.com/ ServerAdmin admin@domaine.com </VirtualHost> </code></pre> h3. Activation des changements Relire la configuration d'Apache <pre><code class="bash"> systemctl reload apache2.service </code></pre> Commandes * _apache2ctl -S_ : liste les serveurs virtuels