Projet

Général

Profil

Apache » Historique » Révision 62

Révision 61 (Patrice Nadeau, 2018-04-15 15:07) → Révision 62/70 (Patrice Nadeau, 2018-10-04 19:06)

## Apache 

 Serveur de page Web 

 > Version 2.4 

 --- 

 {{toc}} 

 

 ## Installation 

 ```bash 
 # Installation 
 sudo zypper install apache2 
 # Activation au démarrage 
 sudo systemctl enable apache2.service 
 # Démarrer Apache : 
 sudo systemctl start apache2.service 
 ``` 

 Ouvrir dans le pare-feu : 

 ```bash 
 # Leap 42.3 
 sudo yast firewall services add service=service:apache2 zone=EXT 
 # Leap 15 
 sudo firewall-cmd --permanent --add-service=http --add-service=https 
 sudo firewall-cmd --reload 
 ``` 

 L’emplacement des fichier du serveur est _/srv/www/htdocs_. 

 

 ## 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 

 ```bash 
 a2enmod -l 
 ``` 

 ### Version 

 Inclut dans Apache 

 ```bash 
 sudo a2enmod mod_version 
 ``` 

 ### PHP 

 Support pour PHP 

 ```bash 
 sudo zypper install apache2-mod_php5 
 sudo a2enmod mod_php5 
 ``` 

 ### Proxy 

 Redirection de serveur 

 ```bash 
 sudo a2enmod proxy  
 sudo a2enmod proxy_http 
 ``` 

 ## HTTPS 

 Serveur sécurisé 

 ### Pré-requis 

 Vérifier qu'Apache supporte SSL 

 ```bash 
 sudo a2enmod -l 
 ``` 

 Si le module *ssl* n’apparaît pas, l'activer 

 ```bash 
 sudo a2enmod ssl 
 ``` 

 #### Self-certificate 

 Générer les clés 

 ```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 
 sudo cp new.cert.cert /etc/ssl/certs/server.crt 
 sudo cp new.cert.key /etc/ssl/private/server.key 
 ``` 

 Modifier le fichier _/etc/apache2/default-server.conf_ 

 ```php 
 Listen 443 
 <VirtualHost *:443> 
     SSLEngine on 
     SSLCertificateFile /etc/ssl/certs/server.crt 
     SSLCertificateKeyFile /etc/ssl/private/server.key 
 </VirtualHost> 
 ``` 

 ### Let’s Encrypt 

 https://letsencrypt.org 

 Certificats gratuits d'une durée de 90 jours. 
 Le renouvellement automatique peut être programmé. 

 Installer le script : 

 ```bash 
 wget https://dl.eff.org/certbot-auto 
 chmod a+x certbot-auto 
 ``` 

 Lancer le script et spécifier le nom du serveur (FQDN) :  

 ```bash 
 # New certificate 
 ./certbot-auto --apache certonly 
 # Renew all certificate 
 ./certbot-auto renew 
 ``` 

 Modifier le fichier _/etc/apache2/default-server.conf_ (modifier _yourdomain_ par le nom du domaine approprié) : 

 ```php 
 Listen 443 
 <VirtualHost *:443> 
     SSLEngine on 
     SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem 
     SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem 
 </VirtualHost> 
 ``` 

 ### Mise en service 

 Relire la configuration d'Apache 

 ```bash 
 sudo systemctl reload apache2.service 
 ``` 

 ## 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 

 ```bash 
 cd /etc/apache2/vhosts.d/ 
 cp vhost.template vhost.conf 
 ``` 

 ### 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_ 

 ```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> 
 ``` 

 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 

 ### 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_ 

 ```php 
 <VirtualHost *:80> 
         ServerName service.domaine.com 
         ProxyPreserveHost On 
         ProxyPass / http://serveur1.domaine.com/ 
         ProxyPassReverse / http://serveur1.domaine.com/ 
         ServerAdmin admin@domaine.com 
 </VirtualHost> 
 ``` 

 ### Activation des changements 

 Relire la configuration d'Apache 

 ```bash 
 systemctl reload apache2.service 
 ``` 

 Commandes 

 * _apache2ctl -S_ : liste les serveurs virtuels