Projet

Général

Profil

Apache » Historique » Version 56

Patrice Nadeau, 2017-10-02 19:55

1 3 Patrice Nadeau
h1. Apache
2 1 Patrice Nadeau
3
Serveur de page Web
4
5 21 Patrice Nadeau
> Version 2.4
6
7 1 Patrice Nadeau
---
8
9
{{toc}}
10
11 3 Patrice Nadeau
h2. Installation
12 1 Patrice Nadeau
13
<pre><code class="bash">
14 29 Patrice Nadeau
# Installation
15 50 Patrice Nadeau
sudo zypper install apache2
16 29 Patrice Nadeau
# Activation au démarrage
17 49 Patrice Nadeau
sudo systemctl enable apache2.service
18 1 Patrice Nadeau
# Démarrer Apache :
19 49 Patrice Nadeau
sudo systemctl start apache2.service
20 1 Patrice Nadeau
</code></pre>
21
22
Ouvrir dans le pare-feu :
23
<pre><code class="bash">
24 49 Patrice Nadeau
sudo yast firewall services add service=service:apache2 zone=EXT
25 1 Patrice Nadeau
</code></pre>
26
27
L’emplacement des fichier du serveur est _/srv/www/htdocs_.
28
29
h2. Modules supplémentaires
30 32 Patrice Nadeau
> La configuration d'Apache doit être relue lors de l'activation d'un module
31 1 Patrice Nadeau
32 33 Patrice Nadeau
La liste des modules actifs peut être listé avec
33 32 Patrice Nadeau
<pre><code class="bash">
34
a2enmod -l
35
</code></pre>
36
37
h3. Version
38 31 Patrice Nadeau
39
Inclut dans Apache
40 1 Patrice Nadeau
<pre><code class="bash">
41 51 Patrice Nadeau
sudo a2enmod mod_version
42 31 Patrice Nadeau
</code></pre>
43
44
h3. PHP
45
46
Support pour PHP
47
<pre><code class="bash">
48 52 Patrice Nadeau
sudo zypper install apache2-mod_php5
49
sudo a2enmod mod_php5
50 33 Patrice Nadeau
</code></pre>
51
52
h3. Proxy
53
54 35 Patrice Nadeau
Redirection de serveur
55 33 Patrice Nadeau
<pre><code class="bash">
56 54 Patrice Nadeau
sudo a2enmod proxy 
57
sudo a2enmod proxy_http
58 30 Patrice Nadeau
</code></pre>
59
60 36 Patrice Nadeau
h2. HTTPS
61
62 40 Patrice Nadeau
Serveur sécurisé
63 36 Patrice Nadeau
64 44 Patrice Nadeau
h3. Pré-requis
65 40 Patrice Nadeau
66 43 Patrice Nadeau
Vérifier qu'Apache supporte SSL
67
<pre><code class="bash">
68 53 Patrice Nadeau
sudo a2enmod -l
69 43 Patrice Nadeau
</code></pre>
70
71
Si le module *ssl* n’apparaît pas, l'activer
72
<pre><code class="bash">
73 53 Patrice Nadeau
sudo a2enmod ssl
74 43 Patrice Nadeau
</code></pre>
75
76 41 Patrice Nadeau
h4. Self-certificate
77 39 Patrice Nadeau
78 36 Patrice Nadeau
Générer les clés
79
<pre><code class="bash">
80
openssl req -new > new.ssl.csr
81
openssl rsa -in privkey.pem -out new.cert.key
82
openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days 365
83
cp new.cert.cert /etc/ssl/certs/server.crt
84 1 Patrice Nadeau
cp new.cert.key /etc/ssl/private/server.key
85 41 Patrice Nadeau
</code></pre>
86
87 43 Patrice Nadeau
Modifier le fichier _/etc/apache2/default-server.conf_
88
<pre><code class="php">
89
Listen 443
90
<VirtualHost *:443>
91
    SSLEngine on
92
    SSLCertificateFile /etc/ssl/certs/server.crt
93
    SSLCertificateKeyFile /etc/ssl/private/server.key
94
</VirtualHost>
95
</code></pre>
96
97 46 Patrice Nadeau
h4. Let’s Encrypt
98
99
https://letsencrypt.org
100 37 Patrice Nadeau
101 36 Patrice Nadeau
Certificats gratuits d'une durée de 90 jours.
102
Le renouvellement automatique peut être programmé.
103
104 47 Patrice Nadeau
> Le certificat n'est valide que pour un serveur en particulier, contrairement à un « wildcard ».
105 45 Patrice Nadeau
106
Installer le script :
107 36 Patrice Nadeau
<pre><code class="bash">
108
wget https://dl.eff.org/certbot-auto
109
chmod a+x certbot-auto
110 45 Patrice Nadeau
</code></pre>
111 55 Patrice Nadeau
<pre><code class="bash">
112 45 Patrice Nadeau
113 55 Patrice Nadeau
</code></pre>
114 45 Patrice Nadeau
Lancer le script et spécifier le nom du serveur (FQDN) : 
115
<pre><code class="bash">
116 48 Patrice Nadeau
# New certificate
117 36 Patrice Nadeau
./certbot-auto --apache certonly
118 48 Patrice Nadeau
# Renew all certificate
119
./certbot-auto renew
120 55 Patrice Nadeau
</code></pre>
121
122
Si le script ne fonctionne pas (SLES 12 SP3 par example)
123
<pre><code class="bash">
124
sudo zypper install python-augeas python-pip
125 56 Patrice Nadeau
sudo pip install virtualenv
126 1 Patrice Nadeau
</code></pre>
127
128 45 Patrice Nadeau
Modifier le fichier _/etc/apache2/default-server.conf_ (modifier _yourdomain_ par le nom du domaine approprié) :
129 44 Patrice Nadeau
<pre><code class="php">
130
Listen 443
131
<VirtualHost *:443>
132
    SSLEngine on
133
    SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem
134
    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem
135
</VirtualHost>
136
</code></pre>
137 1 Patrice Nadeau
138 44 Patrice Nadeau
h3. Mise en service
139
140
Relire la configuration d'Apache
141 38 Patrice Nadeau
<pre><code class="bash">
142
systemctl reload apache2.service
143
</code></pre>
144
145 3 Patrice Nadeau
h2. Serveurs virtuels
146 1 Patrice Nadeau
147 19 Patrice Nadeau
Apache permet de rediriger les demandes d’accès vers 
148
* différents répertoires sur le même serveur 
149
* différents port
150
* un autre serveur
151
152 17 Patrice Nadeau
Très utile pour rediriger les requêtes à partir d'internet avec un seule adresse IP publique (NAT(Network Address Translation)).
153
154
155 18 Patrice Nadeau
Si le fichier _/etc/apache2/vhosts.d/vhost.conf_ n'existe pas, le créer à partir du gabarit de base
156 17 Patrice Nadeau
<pre><code class="bash">
157
cd /etc/apache2/vhosts.d/
158
cp vhost.template vhost.conf
159
</code></pre>
160
161 8 Patrice Nadeau
h3. Redirection vers un dossier différent.
162 6 Patrice Nadeau
163 16 Patrice Nadeau
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_
164 15 Patrice Nadeau
<pre><code class="php">
165
<VirtualHost *:80>
166 16 Patrice Nadeau
        ServerName helpdesk.domain.tld
167
        DocumentRoot /srv/www/htdocs/hepdesk
168 15 Patrice Nadeau
        ServerAdmin admin@domain.tld
169 16 Patrice Nadeau
        <Directory "/srv/www/htdocs/helpdesk">
170 25 Patrice Nadeau
                #Order allow,deny #Since Apache 2.4
171 22 Patrice Nadeau
                Require all granted
172 15 Patrice Nadeau
         </Directory>
173
</VirtualHost>
174
175
<VirtualHost *:80>
176
        ServerName wiki.domain.tld
177
        DocumentRoot /srv/www/htdocs/wiki
178
        ServerAdmin admin@domain.tld
179
        <Directory "/srv/www/htdocs/wiki">
180 25 Patrice Nadeau
                #Order allow,deny # since Apache 2.4
181 22 Patrice Nadeau
                Require all granted
182 1 Patrice Nadeau
         </Directory>
183
</VirtualHost>
184
</code></pre>
185
186
Modifier les items suivants :
187
* *ServerAdmin* : L'adresse de courriel de l'administrateur
188 4 Patrice Nadeau
* *ServerName* : Le FQDN(Fully Qualified Domain Name) du serveur
189 1 Patrice Nadeau
* *DocumentRoot* : L'emplacement des fichiers du site web
190 7 Patrice Nadeau
191
h3. Redirection vers un serveur différent
192
193 34 Patrice Nadeau
> Les modules _proxy_ et _proxy_http_ doivent déjà être actifs
194 11 Patrice Nadeau
195 12 Patrice Nadeau
Modifier le fichier _/etc/apache2/vhosts.d/vhost.conf_ 
196 13 Patrice Nadeau
Ex. : On veux rediriger le service _service_ vers le serveur _server1_
197 14 Patrice Nadeau
<pre><code class="php">
198 12 Patrice Nadeau
<VirtualHost *:80>
199
        ServerName service.domaine.com
200 28 Patrice Nadeau
        ProxyPreserveHost On
201 12 Patrice Nadeau
        ProxyPass / http://serveur1.domaine.com/
202
        ProxyPassReverse / http://serveur1.domaine.com/
203 13 Patrice Nadeau
        ServerAdmin admin@domaine.com
204 12 Patrice Nadeau
</VirtualHost>
205 11 Patrice Nadeau
206 12 Patrice Nadeau
</code></pre>
207 11 Patrice Nadeau
208 7 Patrice Nadeau
h3. Activation des changements
209 1 Patrice Nadeau
210
Relire la configuration d'Apache
211
<pre><code class="bash">
212 27 Patrice Nadeau
systemctl reload apache2.service
213 1 Patrice Nadeau
</code></pre>
214
215
Commandes
216 10 Patrice Nadeau
* _apache2ctl -S_ : liste les serveurs virtuels