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