Código fuente wiki de Configurer un serveur web apache
Última modificación por jhurst el 2024/04/02 14:25
Mostrar los últimos autores
author | version | line-number | content |
---|---|---|---|
1 | {{ddtoc/}} | ||
2 | |||
3 | ---- | ||
4 | |||
5 | = Connecteur Apache HTTPD / Tomcat : AJP = | ||
6 | |||
7 | == {{id name="prérequis"/}}Prérequis == | ||
8 | |||
9 | * Avoir apache httpd installé | ||
10 | * Avoir les modules **proxy** et **proxy_ajp** activés | ||
11 | |||
12 | == {{id name="module"/}}Ajout d'un module dans apache httpd == | ||
13 | |||
14 | === {{id name="windows"/}}Windows === | ||
15 | |||
16 | 1. Vérifiez que le fichier correspondant au module est présent dans le dossier **<install_apache>/modules**. Par exemple pour le module proxy_ajp : fichier mod_proxy_ajp.so. Si ce n’est pas le cas, trouvez une version d’apache httpd contenant ce fichier. | ||
17 | 1. Activez le module dans le fichier **<install_apache>/conf/httpd.conf** avec : | ||
18 | LoadModule nom_du_module modules/fichier_du_module | ||
19 | Exemple : LoadModule proxy_ajp_module modules/mod_proxy_ajp.so | ||
20 | |||
21 | === {{id name="linux"/}}Linux === | ||
22 | |||
23 | Utilisez la commande : a2enmod nom_du_module | ||
24 | __Exemple :__ a2enmod proxy_ajp | ||
25 | Si cette commande échoue ou n’existe pas, suivez les mêmes étapes que pour Windows. | ||
26 | |||
27 | == {{id name="configuration-du-routage-apache-httpd-vers-tomcat"/}}Configuration du routage apache httpd vers tomcat == | ||
28 | |||
29 | === {{id name="tomcat-conf"/}}Apache Tomcat === | ||
30 | |||
31 | Du côté de Apache Tomcat, dans le fichier de configuration **<install_tomcat>/conf/server.xml** ajoutez ou vérifiez que le connecteur ajp existe : | ||
32 | |||
33 | {{code language="xml"}} | ||
34 | <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> | ||
35 | {{/code}} | ||
36 | |||
37 | (% class="box infomessage" %) | ||
38 | ((( | ||
39 | Le redirectPort est utilisé pour les requêtes ayant une contrainte de sécurité obligeant un transport en SSL | ||
40 | ))) | ||
41 | |||
42 | (% class="box warningmessage" %) | ||
43 | ((( | ||
44 | Pensez à relancer Tomcat après une modification du fichier server.xml | ||
45 | ))) | ||
46 | |||
47 | === {{id name="apache-httpd"/}}Apache HTTPD === | ||
48 | |||
49 | Du côté de Apache httpd, dans le fichier de votre hôte virtuel (virtual host), ajoutez la directive **ProxyPass** pour que httpd se connecte au connecteur AJP Tomcat : | ||
50 | |||
51 | (% class="box" %) | ||
52 | ((( | ||
53 | <VirtualHost *:80> | ||
54 | ServerAdmin support@digdash.com | ||
55 | ServerName monserveur.digdash.com | ||
56 | DocumentRoot /var/www | ||
57 | ProxyPass / ajp:~/~/montomcat.digdash.com:8009/ | ||
58 | <Directory /> | ||
59 | Options FollowSymLinks | ||
60 | AllowOverride None | ||
61 | </Directory> | ||
62 | <Directory /var/www> | ||
63 | Options Indexes FollowSymLinks MultiViews | ||
64 | AllowOverride None | ||
65 | Require all granted | ||
66 | </Directory> | ||
67 | ErrorLog logs/error_apache.log | ||
68 | LogLevel warn | ||
69 | CustomLog logs/access_apache.log combined | ||
70 | </VirtualHost> | ||
71 | ))) | ||
72 | |||
73 | (% class="box warningmessage" %) | ||
74 | ((( | ||
75 | Attention : N’oubliez pas de relancer apache httpd après une modification des fichiers de configuration. | ||
76 | ))) | ||
77 | |||
78 | ==== {{id name="timeout"/}}Timeout ==== | ||
79 | |||
80 | Il peut être nécessaire de spécifier une valeur de timeout sur le connecteur AJP plus importante que celle par défaut (60 secondes). | ||
81 | |||
82 | Certaines procédures qui dépassent la minute de calcul (exports, fabriques, sauvegarde/restauration…) peuvent alors être interrompues par Apache httpd, qui renvoie une erreur HTTP 500 au client. | ||
83 | |||
84 | Pour modifier cette valeur vous pouvez ajouter le paramètre **timeout=<secondes>** au niveau du ProxyPass, par exemple : | ||
85 | |||
86 | ProxyPass / ajp:~/~/montomcat.digdash.com:8009/ timeout=300 | ||
87 | |||
88 | == {{id name="alternative-configuration-du-routage-apache-httpd-vers-tomcat-avec-changement-du-nom-de-répertoire"/}}Alternative : Configuration du routage apache httpd vers tomcat avec changement du nom de répertoire == | ||
89 | |||
90 | === {{id name="objectif"/}}Objectif === | ||
91 | |||
92 | Se connecter avec une URL comportant un répertoire parent différent. | ||
93 | Dans cet exemple nous allons prendre le répertoire **domaine_securite1/** et donc accéder à la page d’accueil avec cette URL : http:~/~/machine/domaine_securite1/adminconsole. | ||
94 | |||
95 | === {{id name="apache-tomcat"/}}Apache Tomcat === | ||
96 | |||
97 | Même configuration que [[Configuration du routage apache httpd vers tomcat>>path:#tomcat-conf]]. | ||
98 | |||
99 | === {{id name="apache-httpd-1"/}}Apache HTTPD === | ||
100 | |||
101 | Du côté de Apache HTTPD, dans le fichier de votre hôte virtuel (virtual host), ajoutez les directives **ProxyPass**, **ProxyPassReverse** et **ProxyPassReverseCookiePath** vers votre connecteur AJP Tomcat : | ||
102 | |||
103 | (% class="box" %) | ||
104 | ((( | ||
105 | <VirtualHost *:80> | ||
106 | ServerAdmin support@digdash.com | ||
107 | ServerName srvapache | ||
108 | DocumentRoot /var/www | ||
109 | <Directory /> | ||
110 | Options FollowSymLinks | ||
111 | AllowOverride None | ||
112 | </Directory> | ||
113 | <Directory /var/www/> | ||
114 | Options Indexes FollowSymLinks MultiViews | ||
115 | AllowOverride None | ||
116 | Require all granted | ||
117 | </Directory> | ||
118 | ProxyPass "/domaine_securite1" "ajp:~/~/srvtomcat:8009" | ||
119 | ProxyPassReverseCookiePath "/" "/domaine_securite1" | ||
120 | ProxyPassReverse "/domaine_securite1" "http:~/~/srvapache" | ||
121 | ErrorLog logs/error_apache.log | ||
122 | LogLevel warn | ||
123 | CustomLog logs/access_apache.log combined | ||
124 | </VirtualHost> | ||
125 | ))) | ||
126 | |||
127 | = {{id name="activer-le-mode-https-ssl"/}}Activer le mode https (SSL) = | ||
128 | |||
129 | == {{id name="prérequis-1"/}}Prérequis == | ||
130 | |||
131 | * Posséder un certificat valide pour son réseau ou un certificat approuvé par une autorité tierce reconnue par les navigateurs par défaut. (ex : Comodo, Globalsign, Thawte, Verisign…) | ||
132 | * Avoir une version de Apache httpd récente avec les derniers patchs de sécurité concernant ssl | ||
133 | * Vérifier que le module ssl est activé (voir [[Ajouter un module dans apache httpd>>path:#module]]) | ||
134 | * Avoir compris la mise en oeuvre décrite dans [[Connecteur Apache HTTPD / Tomcat : AJP>>path:#main]] | ||
135 | |||
136 | == {{id name="configuration"/}}Configuration == | ||
137 | |||
138 | Ajoutez une directive **Listen** pour que httpd écoute le port 443 : | ||
139 | **<install_apache>/conf/httpd.conf** : | ||
140 | Listen 443 | ||
141 | |||
142 | Ensuite changez le port utilisé, activez le ssl et configurez le certificat et la clé utilisés : | ||
143 | |||
144 | (% class="box" %) | ||
145 | ((( | ||
146 | <VirtualHost *:443> | ||
147 | ServerAdmin support@digdash.com | ||
148 | ServerName monserveur.digdash.com | ||
149 | SSLEngine on | ||
150 | SSLCertificateKeyFile /etc/ssl/maclef.key | ||
151 | SSLCertificateFile /etc/ssl/moncertif.crt | ||
152 | SSLCertificateChainFile /etc/ssl/certif.ca-bundle | ||
153 | DocumentRoot /var/www | ||
154 | ProxyPass / ajp:~/~/montomcat.digdash.com:8009/ | ||
155 | <Directory /> | ||
156 | Options FollowSymLinks | ||
157 | AllowOverride None | ||
158 | </Directory> | ||
159 | <Directory /var/www/> | ||
160 | Options Indexes FollowSymLinks MultiViews | ||
161 | AllowOverride None | ||
162 | Require all granted | ||
163 | </Directory> | ||
164 | ErrorLog logs/error_apache.log | ||
165 | LogLevel warn | ||
166 | CustomLog logs/access_apache.log combined | ||
167 | </VirtualHost> | ||
168 | ))) | ||
169 | |||
170 | === {{id name="sslpassphrasedialog"/}}SSLPassphraseDialog === | ||
171 | |||
172 | Si votre clé privée est cryptée, il faudra spécifier le mot de passe au démarrage de httpd ou utiliser la directive [[SSLPassPhraseDialog>>url:https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslpassphrasedialog]]. | ||
173 | |||
174 | (% class="box warningmessage" %) | ||
175 | ((( | ||
176 | **Attention** : Cette directive n’est pas supportée sous **Windows**. Il faudra l’enlever du fichier de configuration et il vous faudra remplacer votre clé privée par une clé non cryptée. Pour remplacer la clé, il suffit de décrypter la clé privée existante et d'exporter la clé non cryptée vers un fichier (avec openssl rsa -in clé_cryptée -out clé_noncryptée par exemple). | ||
177 | ))) | ||
178 | |||
179 | Pour utiliser la directive sans devoir saisir le mot de passe il faut créer un fichier script qui affiche le mot de passe requis (sur stdout). Par exemple : | ||
180 | |||
181 | **motdepasse.sh** : | ||
182 | |||
183 | {{code language="sh"}} | ||
184 | #!/bin/bash | ||
185 | echo motdepasse | ||
186 | {{/code}} | ||
187 | |||
188 | **httpd.conf** : | ||
189 | |||
190 | {{code language="xml"}} | ||
191 | <IfModule ssl_module> | ||
192 | SSLPassPhraseDialog "exec:/chemin/vers/motdepasse.sh" | ||
193 | </IfModule> | ||
194 | {{/code}} | ||
195 | |||
196 | = {{id name="équilibrage-de-charge-basculement-actif-actif-loadbalancing"/}}Équilibrage de charge (Basculement actif / actif [Loadbalancing]) = | ||
197 | |||
198 | Chaque session utilisateur est attribuée à un seul serveur tomcat (sticky session). Si un serveur tomcat tombe, l’utilisateur devra s’authentifier à nouveau sur le serveur actif où sa session sera ré-affectée (en cas de SSO ceci est transparent). | ||
199 | |||
200 | == {{id name="prérequis-2"/}}Prérequis == | ||
201 | |||
202 | * Vérifier que le module **proxy_balancer** est activé (voir [[Ajouter un module dans apache httpd>>path:#module]]) | ||
203 | * Avoir compris la mise en oeuvre décrite dans [[Connecteur Apache HTTPD / Tomcat : AJP>>path:#main]] | ||
204 | |||
205 | == {{id name="configuration-1"/}}Configuration == | ||
206 | |||
207 | === {{id name="apache-tomcat-1"/}}Apache Tomcat === | ||
208 | |||
209 | Du côté de Apache Tomcat, dans le fichier de configuration **<install_tomcat>/conf/server.xml**, ajoutez ou vérifiez que le connecteur AJP existe : | ||
210 | {{code language="xml"}}<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>{{/code}} | ||
211 | |||
212 | Ajoutez ou vérifiez que la balise **engine** possède un attribut **jvmRoute** avec un identifiant unique sur chaque machine cible : | ||
213 | {{code language="xml"}}<Engine name="Catalina" defaultHost="localhost" jvmRoute="m1">{{/code}} | ||
214 | |||
215 | === {{id name="apache-httpd-2"/}}Apache HTTPD === | ||
216 | |||
217 | Du côté de apache httpd, dans le fichier de votre hôte virtuel (virtual host) : | ||
218 | |||
219 | (% class="box" %) | ||
220 | ((( | ||
221 | <VirtualHost lap-sus:80> | ||
222 | ServerAdmin support@digdash.com | ||
223 | DocumentRoot "C:/htdocs" | ||
224 | ServerName monserveur.digdash.com | ||
225 | ))) | ||
226 | |||
227 | (% class="box" %) | ||
228 | ((( | ||
229 | <Proxy balancer:~/~/monserveur.digdash.com> | ||
230 | BalancerMember ajp:~/~/montomcat1.digdash.com:8009 route=m1 | ||
231 | BalancerMember ajp:~/~/montomcat2.digdash.com:8009 route=m2 | ||
232 | ProxySet stickysession=JSESSIONID | ||
233 | </Proxy> | ||
234 | ))) | ||
235 | |||
236 | (% class="box" %) | ||
237 | ((( | ||
238 | ProxyPass / "balancer:~/~/monserveur.digdash.com/" stickysession=JSESSIONID | ||
239 | scolonpathdelim=On | ||
240 | <Directory /> | ||
241 | Options FollowSymLinks | ||
242 | AllowOverride None | ||
243 | Require all granted | ||
244 | ProxyPassReverse balancer:~/~/monserveur.digdash.com/ | ||
245 | </Directory> | ||
246 | ))) | ||
247 | |||
248 | (% class="box" %) | ||
249 | ((( | ||
250 | ErrorLog logs/error_apache.log | ||
251 | LogLevel warn | ||
252 | CustomLog logs/acces_apache.log combined | ||
253 | </VirtualHost> | ||
254 | ))) |