-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathapache2.xml
369 lines (353 loc) · 11.7 KB
/
apache2.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e51792efe0f103ec8724ad199524d7543610c978 Maintainer: sammywg Status: ready -->
<sect1 xml:id="install.unix.apache2" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Apache 2.x auf Unixsystemen</title>
<para>
Dieser Abschnitt enthält Hinweise und Tipps, die sich auf die Installation
von PHP speziell für Apache 2.x auf Unixsystemen beziehen.
</para>
&warn.apache2.compat;
<para>
Die <link xlink:href="&url.apache2.docs;">Apache Dokumentation</link> ist
die maßgebliche Informationsquelle für den Apache 2.x Server. Dort können
weitere Informationen über Installationsoptionen für Apache gefunden
werden.
</para>
<para>
Die aktuellste Version des Apache HTTP Servers kann von der
<link xlink:href="&url.apache;">Apache Download Site</link> bezogen werden,
und eine passende PHP-Version von den oben angegebenen Quellen.
Dieser Schnelleinstieg behandelt nur die Grundlagen, um mit Apache 2.x und
PHP einzusteigen. Für mehr Informationen lesen Sie bitte die
<link xlink:href="&url.apache2.docs;">Apache-Dokumentation</link>.
Versionsnummern wurden hier ausgelassen, um sicherzustellen, dass die
Anweisungen nicht inkorrekt sind. In den folgenden Beispielen sollte 'NN'
durch die spezifische Version des verwendeten Apache ersetzt werden.
</para>
<para>
Es gibt aktuell zwei Versionen von Apache 2.x: 2.4 und 2.2. Obwohl es
verschiedene Gründe gibt, sich für eine zu entscheiden, ist 2.4 die
aktuellste Version, und diejenige, die empfohlen wird, wenn sie diese
Möglichkeit haben. Allerdings funktionieren die folgenden Anweisungen
sowohl für 2.4 als auch 2.2. Es ist zu beachten, dass Apache httpd 2.2
offiziell das Lebensende erreicht hat, so dass keine Weiterentwicklungen oder
Fehlerkorrekturen mehr erfolgen werden.
</para>
<orderedlist>
<listitem>
<para>
Beziehen Sie den Apache HTTP Server vom oben genannten Ort,
und entpacken Sie ihn:
</para>
<informalexample>
<screen>
<![CDATA[
tar -xzf httpd-2.x.NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Beziehen und entpacken Sie die PHP-Quellen gleichermaßen:
</para>
<informalexample>
<screen>
<![CDATA[
tar -xzf php-NN.tar.gz
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Kompilieren und installieren Sie Apache. Entnehmen Sie der
Apache-Installationsdokumentation weitere Details zur Kompilierung.
</para>
<informalexample>
<screen>
<![CDATA[
cd httpd-2_x_NN
./configure --enable-so
make
make install
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Nun steht Ihnen Apache 2.x.NN unter /usr/local/apache2 zur Verfügung,
konfiguriert mit Unterstützung für nachladbare Module und dem
Standard MPM Prefork. Um diese Installation zu testen, verwenden Sie die
übliche Prozedur, den Apacheserver zu starten, also &zb;:
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
Stoppen Sie nun den Server, um mit der Konfiguration von PHP fortzufahren:
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl stop
]]>
</screen>
</informalexample>
</para>
</listitem>
<listitem>
<para>
Konfigurieren und kompilieren Sie nun Ihr PHP. Dies ist die Stelle, an der
Sie Ihr PHP mit verschiedenen Optionen, wie etwa installierten
Erweiterungen, anpassen können. Rufen Sie
<command>./configure --help</command> auf, um eine Liste der verfügbaren
Optionen zu erhalten. In unserem Beispiel werden wir eine einfache
Konfiguration mit Unterstützung für Apache 2 und MySQL erzeugen.
</para>
<para>
Wenn Sie Apache aus den Quelltexten kompiliert haben, wie oben beschrieben
wurde, dann stimmt im folgenden Beispiel der Pfad von
<command>apxs</command>, aber wenn Sie Apache auf andere Weise installiert
haben, müssen Sie den Pfad von <command>apxs</command> entsprechend
anpassen. Es ist zu beachten, dass einige Distros möglicherweise
<command>apxs</command> zu <command>apxs2</command> umbenennen.
</para>
<informalexample>
<screen>
<![CDATA[
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
]]>
</screen>
</informalexample>
<para>
Wenn Sie sich entscheiden, Ihre Konfigurationsoptionen nach der
Installation zu ändern, müssen Sie die Schritte
<command>configure</command>, <command>make</command>, und
<command>make install</command> erneut ausführen.
Um das neue Modul nutzen zu können, muss Apache nur neu gestartet werden.
Eine erneute Kompilierung des Apache ist nicht nötig.
</para>
<para>
Beachten Sie, dass, wenn nicht anders erwähnt,
<command>make install</command> ebenso PEAR und verschiedene PHP-Werkzeuge
wie <link linkend="install.pecl.phpize">phpize</link>, PHP CLI und anderes
installieren wird.
</para>
</listitem>
<listitem>
<para>
Ihre <filename>php.ini</filename> einrichten
</para>
<informalexample>
<screen>
<![CDATA[
cp php.ini-development /usr/local/lib/php.ini
]]>
</screen>
</informalexample>
<para>
Sie können Ihre <literal>.ini</literal>-Datei ändern, um verschiedene
PHP-Optionen zu setzen. Wenn Sie die <filename>php.ini</filename>-Datei
an einer anderen Stelle bevorzugen, verwenden Sie
<literal>--with-config-file-path=/some/path</literal> in Schritt 5.
</para>
<para>
Wenn Sie sich stattdessen für <filename>php.ini-production</filename>
entscheiden, stellen Sie sicher, dass Sie die darin enthaltene Liste von
Änderungen lesen, da diese das Verhalten von PHP beeinflussen.
</para>
</listitem>
<listitem>
<para>
Bearbeiten Sie Ihre <filename>httpd.conf</filename>, um das PHP Modul zu
laden. Der Pfad auf der rechten Seite der Anweisung
<literal>LoadModule</literal> muss auf den Ort des PHP-Moduls auf Ihrem
System zeigen. Das obige <command>make install</command> könnte dies
bereits für Sie hinzugefügt haben, aber Stellen Sie sicher, dass dies der
Fall ist.
</para>
<informalexample>
<para>
Für PHP 8:
</para>
<programlisting role="apache-conf">
<![CDATA[
LoadModule php_module modules/libphp.so
]]>
</programlisting>
</informalexample>
<informalexample>
<para>
Für PHP 7:
</para>
<programlisting role="apache-conf">
<![CDATA[
LoadModule php7_module modules/libphp7.so
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<para>
Weisen Sie Apache an, bestimmte Dateiendungen als PHP Skripte zu behandeln.
Zum Beispiel werden wir den Apache Dateien mit der Endung
<literal>.php</literal> als PHP ausführen lassen. Anstatt nur die
Apache-Direktive <literal>AddType</literal> zu verwenden, wollen wir
zusätzlich verhindern, dass potentiell gefährliche hochgeladene und
erzeugte Dateien wie <filename>exploit.php.jpg</filename> als PHP-Dateien
ausgeführt werden. Wenn Sie dieses Beispiel verwenden, können Sie jede
Dateiendung als PHP interpretieren lassen, wenn Sie sie einfach hinzufügen.
Wir demonstrieren dies, indem wir <literal>.php</literal> einfügen.
</para>
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
]]>
</programlisting>
</informalexample>
<para>
Oder wenn wir erlauben wollen, dass nur Dateien mit den Endungen
<literal>.php</literal>, <literal>.php2</literal>, <literal>.php3</literal>,
<literal>.php4</literal>, <literal>.php5</literal>, <literal>.php6</literal>
und <literal>.phtml</literal> als PHP interpretiert werden können, verwenden
wir ein Statement wie dieses:
</para>
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
]]>
</programlisting>
</informalexample>
<para>
Und um zu erlauben, dass <literal>.phps</literal>-Dateien vom PHP
Source-Filter verarbeitet und als Quellcode mit Syntax-Highlighting
angezeigt werden, verwenden Sie:
</para>
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
]]>
</programlisting>
</informalexample>
<para>
<literal>mod_rewrite</literal> kann verwendet werden, um zu erlauben, dass
jede beliebige <literal>.php</literal>-Datei als Quellcode mit
Syntax-Highlighting angezeigt wird, ohne dass Sie die Datei zu
<literal>.phps</literal> umbenennen oder kopieren müssen:
</para>
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
]]>
</programlisting>
</informalexample>
<para>
Der PHP-Source-Filter sollte auf Produktionssystemen nicht aktiviert werden,
da er vertrauliche oder anderweitig sensible Informationen, die im Quellcode
enthalten sind, preisgeben könnte.
</para>
</listitem>
<listitem>
<para>
Verwenden Sie die übliche Prozedur, um den Apache-Server zu starten, &zb;:
</para>
<informalexample>
<screen>
<![CDATA[
/usr/local/apache2/bin/apachectl start
]]>
</screen>
</informalexample>
<para>ODER</para>
<informalexample>
<screen>
<![CDATA[
service httpd restart
]]>
</screen>
</informalexample>
</listitem>
</orderedlist>
<para>
Wenn Sie den obigen Anweisungen folgen, werden Sie einen laufenden
Apache2 mit Unterstützung für PHP als <literal>SAPI</literal>-Modul
erhalten. Natürlich existieren für Apache und PHP viele weitere
Konfigurationseinstellungen. Verwenden Sie
<command>./configure --help</command> im jeweiligen Quellcodeverzeichnis,
um weitere Informationen zu erhalten.
</para>
<para>
Apache2 kann multithreaded kompiliert werden, indem das
<filename>worker</filename>-MPM anstatt des standardmäßigen
<filename>prefork</filename>-MPM für den Build gewählt wird. Dies erfolgt,
indem die folgende Option zu dem Argument, das weiter oben in Schritt 3 an
<command>./configure</command> übergeben wird, hinzugefügt wird:
</para>
<informalexample>
<screen>
<![CDATA[
--with-mpm=worker
]]>
</screen>
</informalexample>
<para>
Dies sollte nicht durchgeführt werden, ohne sich der Konsequenzen dieser
Entscheidung bewusst zu sein, und zumindest eine angemesse Kenntnis der
Implikationen zu haben. Die Apache-Dokumentation bezüglich der
<link xlink:href="&url.apache2.mpm;">MPM-Module</link> erörtert MPMs sehr
ausführlich.
</para>
<note>
<para>
Das <link linkend="faq.installation.apache.multiviews">Apache MultiViews FAQ</link>
erörtert die Verwendung von Multiviews mit PHP.
</para>
</note>
<note>
<para>
Um eine Multithreaded-Version von Apache zu erzeugen, muss das Zielsystem
Threads unterstützen. In diesem Fall sollte auch PHP mit der Zend Thread
Safety (ZTS) kompiliert werden. Unter dieser Konfiguration sind nicht alle
Erweiterungen verfügbar. Die empfohlene Einstellung ist es, Apache mit dem
standardmäßigen <filename>prefork</filename>-MPM-Modul zu bauen.
</para>
</note>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->