-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathwartung.tex
1911 lines (1581 loc) · 95.9 KB
/
wartung.tex
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
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%revised
\chapter{Wartung und Betrieb}
\index{Wartung}%
\label{Wartung}%
Grundsätzlich sollten Sie jetzt in der Lage sein, Ihre Artikel in einer
gewünschten Hierarchie zu veröffentlichen, kommentieren zu lassen und mit
Plugins zu erweitern. Das bisher Erreichte ist vergleichbar mit dem Häuslebau:
Jetzt steht die Villa, sieht von außen auch gut aus, ist aber noch
unbewohnt, und die Hausfront ist unbewacht vor Graffiti-Vandalen; zudem fehlt
noch die Versicherung für Wertsachen im Haus.
Daran wollen wir in den kommenden Kapiteln etwas ändern. Sie erfahren, wie Sie
mit Kommentaren umgehen können, Datenbanksicherungen erstellen, Plugins und das
Kernsystem aktualisieren und sich so gut wie möglich vor Spam schützen können.
\index{Trackbacks}%
\section{Einträge und Trackbacks}
\label{trackback}%
Die Vernetzung von Blogs untereinander ist ein wichtiger Grund für die hohe
Relevanz von Blogs heutzutage. Blogs haben Zeitschriftencharakter, und einzelne
interessante Artikel werden häufig von anderen Bloggern aufgegriffen und
weitergetragen.
So kann sich eine Neuigkeit rasend schnell verbreiten, und das hat in der Vergangenheit
schon oft dazu geführt, dass Blogs einen großen Aktualitätsvorsprung
vor klassischen Informationsmedien haben. Populäre Nachrichtensendungen werden
erst am Tagesende ausgestrahlt, Radionachrichten erfolgen meist nur stündlich --
da kann ein Blog mit relevanten Nachrichten wie Reaktionen auf eine
Pressekonferenz oder Vor-Ort-Berichten wie beim Bombenattentat in London weitaus
schneller reagieren. Dank RSS-Feeds (siehe Terminologie auf Seite \pageref{RSS})
ist es für Besucher zudem leicht nachzuverfolgen, welche Blogs neue Nachrichten
geliefert haben.
Private Blogger fühlen sich jedoch selten an einen journalistischen Kodex
gebunden -- eine Falschmeldung kann so möglicherweise schnell verbreitet werden
und nur schwer zu korrigieren sein. Genau diese fehlende Kontrollinstanz
und die freie Meinungsäußerung in Blogs ist großen Unternehmen oft ein Dorn im
Auge und der Grund, warum sich Firmen nur distanziert mit Blogs beschäftigen.
\index{Virale Kampagnen}%
Mittlerweile hat man aber auch den positiven Nebeneffekt durch die schnelle
Verbreitung bemerkt: Gerade Werbeagenturen nutzen Blogger oft bewusst dazu aus,
um Werbekampagnen voranzutreiben. Sogenannte \emph{Virale Kampagnen} zielen
darauf ab, dass sie schnell von einem zum nächsten Blog gelangen.
Die technische Basis für schnelle Verbreitung und Vernetzung stellt neben den
RSS-Feeds (für Aktualisierungshinweise) eine Technik namens \emph{Trackback}
dar.
Ein Trackback ermöglicht es Ihnen, sich auf ein anderes Blog als Quelle
zu beziehen. Wenn Sie nun die Quelle in Ihrem Artikel nennen, kümmert sich
Serendipity mittels einer automatischen Schnittstelle darum, dass in dem Quellblog
ein Verweis auf Ihren neuen Artikel hinterlegt wird. Leser des Quellblogs können
nun auf Ihre Seite gelangen und Ihre Sicht der Dinge nachlesen. Möglicherweise
beziehen sich danach weitere Redakteure auf Ihren Eintrag, und es entsteht eine
Netzstruktur von Verweisen.
Trackbacks sind dabei für beide Seiten interessant. Der Ursprungsautor erfährt
so davon, wer seinen Artikel gelesen hat und dazu etwas ergänzen oder
diskutieren möchte. Und Sie als Bezug nehmender Autor können zusätzliche Leser
gewinnen, die im Ursprungsblog auf Sie aufmerksam werden.
Im Endeffekt ermöglichen Trackbacks, dass Sie Diskussionen dezentral führen
können, losgelöst von dem Ursprungsblog. In früheren Zeiten wurden
Diskussionen stets zentral an einer Stelle geführt, also in einem Bereich eines
Forums oder (noch früher) in einer Usenet- oder Mailboxgruppe. Der
Community-Gedanke steht dort im Vordergrund, während Weblogs die
\emph{Individualisierung einer Meinung} verfolgen. In Ihrem persönlichen Weblog
stehen Sie als Individuum im Zentrum, sämtliche Inhalte sind grundsätzlich auf Ihre
Meinung ausgelegt. Bei Diskussionsforen ist man nur Teil eines Ganzen.
Welcher Variante Sie den Vorzug geben, obliegt Ihrem eigenen Geschmack und
den Anforderungen Ihres Themas. Ein paar Beispiele:
\begin{osplist}
\item In einem Blog lesen Sie einen Artikel zu einer rechtlichen Problematik,
der konkret mit einer Frage endet. Wenn Sie die Antwort zu dieser Frage
wissen, macht es wenig Sinn, dass Sie dazu einen eigenen Artikel in Ihrem Blog
schreiben und ein Trackback zu dem Blog des Fragenden hinterlassen. Dadurch
würden Sie eine unnötig hohe Barriere für den Ursprungsautoren aufbauen, zu
der Antwort zu gelangen. Hier wäre es sinnvoller, einfach nur einen Kommentar
im Blog des Fragenden zu hinterlassen.
\item In einem Blog wird heftig über den Unsinn der GEZ-Gebühren für
Internet"=PCs diskutiert. Es gibt bereits 300 Kommentare zu diesem Artikel. Sie
haben jedoch eine grundsätzlich andere Auffassung zu der Thematik, die in den
Kommentaren des Eintrags niedergeschmettert und größtenteils ignoriert
wird. Weil Ihnen Ihre Meinung jedoch wichtig ist, erstellen Sie einen eigenen
Blog-Artikel, in dem Sie Ihre Meinung nochmals ausführlich darlegen. Mittels
eines Trackbacks zu dem Ursprungsartikel ermöglichen Sie es den
Interessierten, Ihre abweichende Meinung gesondert zu diskutieren, und behalten
den Ursprungsbezug bei.
\item In seinem persönlichen Blog fragt ein Film-Fan seine Leser, welches deren
Lieblingsfilme sind. Er bittet um ausführliche Erklärung. Da Sie selbst ein
Film-Blog führen und schon immer mal einen langen Artikel über Ihren
Lieblingsfilm verfassen wollten, schreiben Sie direkt einen Blog-Artikel dazu
und hinterlassen auf dem Blog des Film-Fans ein Trackback. Der Film-Fan
entdeckt später einen Fehler in Ihrer Erklärung des Films und hinterlässt
auf Ihrem Blog einen Kommentar dazu -- anstatt auf seinem eigenen Blog dazu
Stellung zu beziehen.
\end{osplist}
\subsection{Trackbacks und Pingbacks senden}
Wenn Sie sich dazu entschieden haben, einen Blog-Artikel zu verfassen, der
sich auf einen anderen Beitrag beziehen soll, dann können Sie bei Serendipity
sehr leicht automatisch ein Trackback setzen.
Serendipity durchsucht jeden Ihrer Einträge nach Hyperlinks, wenn Sie den
Artikel speichern. Dazu sucht es nach allen \cmd{<a>}-HTML-Tags Ihres Eintrags
und ruft die darin angegebene Internet-Adresse auf. Auf dieser Seite sucht
Serendipity nach einem speziellen Code\footnote{\index{RDF-Metadaten}Konkret werden die RDF-Metatags
\cmd{<rdf:Description trackback:ping="{}\ldots{}"{}>} und \cmd{<rdf:Description
dc:identifier="{}\ldots{}"{}>} gesucht.}, den ein Blog enthalten muss, um die
Trackback-Schnittstelle anzubieten.
Findet Serendipity diesen Code, sendet es einen Ausschnitt Ihres Artikeltexts
zusammen mit der URL Ihres Beitrags an das betreffende Blog. Dabei
stellt Ihr Blog den Sender dar, das fremde Blog ist der Empfänger. Die
gesendeten Daten müssen vom Zielblog verarbeitet und gespeichert werden. Die
Rückmeldung über den Fortschritt des Vorgangs wird dabei direkt von Serendipity
beim Speichern dargestellt.
Ohne den entsprechenden Code versucht Serendipity, Ihre Artikel-URL mit der
Ergänzung \cmd{/trackback/} aufzurufen. Die meisten WordPress-Blogs verwenden
dieses Schema, geben aber den von Serendipity benötigten Code nicht aus. Damit
ein Trackback in so einem Fall nicht fehlschlägt, wendet Serendipity daher diese
zweite Methode an.
\index{Pingback}%
Wenn auch die zweite Methode fehlschlägt, versucht Serendipity ein Pingback an
das entsprechende Blog zu senden. Ein Pingback stellt sozusagen ein
funktionsreduziertes Trackback dar, denn ein Pingback enthält keinen
Artikelauszug oder die URL zu Ihrem Artikel. Es dient daher lediglich dem
fremden Blog als Hinweis, dass sich jemand auf dessen Artikel bezieht.
Wenn ein Trackback oder Pingback erfolgreich gesendet wurde, kann es dennoch
eine Weile dauern, bis es im fremden Blog angezeigt wird. Häufig müssen
Trackbacks vom Autor erst freigeschaltet werden, bevor sie erscheinen.
Beim Speichern eines Artikels kann Serendipity folgende Meldungen ausgeben:
\index{Trackback-Meldungen}%
\begin{ospdescription}
\ospitem{\menu{Überprüfe \cmdvar{http://{}\ldots} auf mögliche Trackbacks \ldots}}
wird für jede im Artikel angegebene URL angezeigt.
\ospitem{\menu{Sende Trackback zu URI \cmdvar{http://{}\ldots} \ldots}} wird
ausgegeben, wenn eine Trackback-fähige URL gefunden wurde. Wenn nach dieser
Ausgabe nichts weiter erscheint, wird Ihr Server durch eine Firewall blockiert
und verhindert die Ausführung des Trackbacks. In diesem Fall müssen Sie
Trackbacks deaktivieren.
\ospitem{\menu{Trackback erfolgreich!}} erscheint, wenn ein Trackback erfolgreich
ausgeführt wurde.
\ospitem{\menu{URI enthielt keine Daten}} erscheint, wenn die angegebene URL nicht
aufgerufen werden konnte, da sie keine Daten zurücklieferte. Dies kann passieren,
wenn ein Webserver nicht erreichbar ist oder die URL ungültig war.
\ospitem{\menu{Trackback gescheitert: Keine Trackback-URI gefunden}} erscheint, wenn
die URL die notwendigen Meta-Daten zum Senden eines Trackbacks nicht enthielt.
Diese Meldung erscheint auch, wenn Sie beispielsweise Links zu Amazon in Ihrem
Blog-Artikel verwenden, da Amazon keine Trackbacks unterstützt. Daher muss diese
Meldung nicht zwangsläufig auf einen Fehler hinweisen, sondern informiert Sie
lediglich, dass kein Trackback gesendet wurde.
\ospitem{\menu{Trackback gescheitert: Die automatisch erkannte Trackback-URI
gleicht}}
\ospadditem{\menu{ nicht der angegebenen URI}} weist Sie darauf hin, dass Serendipity zwar
die benötigten Meta-Daten auf einem Blog finden konnte, diese aber eine falsche
URL ausweisen. Wenn Sie z.\,B. ein Trackback zu
\cmd{http://example.com/serendipity""/archives/1-Eintrag.htm} senden wollen, aber
das Blog eigentlich unter
\cmd{http://www.example.com/serendipity/archives/1-Ein\-trag.htm} läuft (beachten
Sie das \cmd{www.} in der URL), kann ein solcher Fehler entstehen. Serendipity benötigt
immer exakt die URL, die das fremde Blog als \emph{offiziell} angibt.
\ospitem{\menu{Kein Trackback: Konnte Verbindung zu \ldots auf Port \ldots nicht
herstellen}} erscheint, wenn Ihr Webserver aufgrund von Verbindungsproblemen
die angegebene URL nicht erreichen konnte. Probieren Sie es
eventuell später einmal, oder prüfen Sie, ob Sie die korrekte URL eingetragen haben.
\ospitem{\menu{Sending pingback to URI \ldots}} erscheint, wenn eine Pingback-fähige
URL gefunden wurde und Serendipity nun einen Pingback sendet.
\ospitem{\menu{Pingback successful}} erscheint bei einem erfolgreichen Pingback.
\ospitem{\menu{Pingback failed: No pingback-URI found}} erscheint, wenn keine
Pingback-fähige URL gefunden wurde.
\end{ospdescription}
\index{Fehler!Trackbacks}%
\index{Firewall}%
\index{Proxy-Server}%
Damit ein Trackback erfolgreich gesendet werden kann, muss Ihr Webserver
ausgehende HTTP-Verbindungen zulassen. Wird dies durch eine Fire\-wall verhindert,
können Sie eventuell einen Proxy-Server dazu einsetzen, den Sie über das Plugin
\emph{Trackbacks kontrollieren} (siehe Folgeabschnitt) festlegen können.
Da Serendipity jede angegebene URL (bis auf bekannte Dateitypen wie \cmd{.exe,
.pdf, .avi} etc.) aufruft, kann der Vorgang beim Speichern einige Zeit in
Anspruch nehmen.
\label{trackbacks-resend}%
\index{Veroeffentlichung@Veröffentlichung}%
Serendipity führt Trackbacks nur bei Artikeln aus, die Sie im Status
\emph{Veröffentlichen} speichern. Wenn Sie eine neue URL zu einem bestehenden,
veröffentlichten Artikel hinzufügen, wird beim Speichern ebenfalls ein Trackback
gesendet. Zu bereits enthaltenen URLs wird nach der Veröffentlichung kein
weiterer Trackback geschickt. Wenn es Probleme beim ersten Versand gab, können
Sie ein neues Trackback senden, indem Sie Ihren Artikel zuerst wieder als
\emph{Entwurf} speichern und danach nochmals als \emph{Veröffentlichung}.
\index{Plugins!Trackbacks kontrollieren}%
\index{Trackbacks!kontrollieren}%
\subsection{Plugin: Trackbacks kontrollieren}
Wie beschrieben, sendet Serendipity automatisch immer Trackbacks an alle
erkannten URLs im Beitrag. Es kann jedoch auch vorkommen, dass Sie einmal
bewusst kein Trackback setzen möchten oder dass Sie ein Trackback zu einer
speziellen URL senden wollen, die Sie im Artikeltext selbst aber nicht angeben
möchten. Bei beiden Fällen hilft das Ereignis-Plugin \emph{Trackbacks
kontrollieren} (siehe Seite \pageref{trackbacks}).
Sobald Sie dieses Plugin installiert haben, können Sie bei einem Eintrag im
Abschnitt \emph{Erweiterte Optionen} einstellen, ob Trackbacks gesendet werden
sollen und an welche zusätzlichen URLs Sie ein Trackback schicken wollen.
Die zusätzlichen URLs können dabei direkt Trackback-URLs entsprechen, wie sie
auf einem fremden Blog beworben/angezeigt werden. Üblicherweise geben Sie in
Ihrem Artikel bereits immer einen Link an, mit dem der Besucher zu der normalen
Seite gelangt. Wenn dieser Link jedoch keinen Trackback-Code enthält, müssten
Sie eine gültige Trackback-URL manuell eintragen.
Dazu ein Beispiel: In einem WordPress-Blog finden Sie unter der URL
\cmd{http:""//wp.com/?p=1337} einen Artikel, auf den Sie sich beziehen möchten.
Dieses Blog enthält jedoch keine Meta-Daten, und auf der Seite selbst sehen Sie,
dass der Trackback-Link \cmd{http://wp.com/p1337/trackback} lauten müsste.
Unbekümmert davon erstellen Sie einen Blog-Eintrag mit folgendem Inhalt:
\begin{ospcode}
Mein Bruder schreibt <a href="http://wp.com/?p=1337">seine
Doktorarbeit</a>.
\end{ospcode}
Wenn Sie nun den Eintrag speichern, meldet Serendipity, dass es unter der
eingegebenen URL keine Trackback-Daten entdecken kann. Daher kann kein Trackback
gesendet werden. Sie erinnern sich an die Trackback-URL und ändern Ihren
Artikel so ab, dass Sie den Link \cmd{http://wp.com/p1337/""trackback} einsetzen.
Doch auch hier meldet Serendipity, dass es keine Meta-Daten finden kann.
Hier kommt nun das Plugin ins Spiel. In dem Eingabefeld des Abschnitts
\menu{Erweiterte Optionen} müssen Sie die
Trackback-URL \cmd{http://wp.com/p1337/""trackback} eintragen, und im Artikel
selbst können Sie wieder die normale URL \cmd{http://wp.com/?p=1337} verwenden.
Nun erkennt Serendipity, dass Sie ein Trackback zu der eingetragenen URL
erzwingen wollen, und führt es aus.
Weitere Anwendungsmöglichkeiten schlagen Sie bitte auf der genannten
Seite bei der Plugin-Beschreibung nach.
\index{Trackbacks!deaktivieren}%
Sie können Trackbacks zentral deaktivieren, indem Sie die Variable
\cmd{\$seren\-dipity['noautodiscovery']} in der Serendipity-Konfigurationsdatei
\cmd{se\-rendipity\_config\_local.inc.php} auf \cmd{true} setzen (siehe Seite \pageref{noautodiscovery}).
\index{Eintrag!ankündigen}%
\index{XML-RPC!Pings}%
\index{Webservices}%
\subsection{Plugin: Einträge ankündigen (XML-RPC Pings)}
Zusätzlich zu Trackbacks und Pingbacks gibt es ein Angebot an Webservices, die
regelmäßig Weblogs indizieren und automatisch miteinander verketten. Der
bekannteste Dienst ist
\index{Technorati}%
\index{Ranking}%
Technorati\footnote{\cmd{http://www.technorati.com/}},
das unter anderem auch die \emph{Wichtigkeit} von Blogs auswerten kann, indem es
Blogs hochrangig einstuft, die besonders häufig zitiert werden.
Derartige Webservices durchsuchen üblicherweise (wie Google) regelmäßig Ihr Blog.
Damit ein Service aber sofort bei neuen Einträgen von Ihnen tätig werden kann,
müssen Sie dafür sorgen, dass der Webservice kontaktiert wird, sobald Sie einen
Eintrag speichern.
Das Plugin \emph{Einträge ankündigen} (siehe Seite \pageref{weblogping})
kann dies für Sie erledigen. Mittels einer XML-RPC-Schnittstelle kann es einen
sogenannten Ping senden, der dem Webservice mitteilt: "`\emph{Guck mal, hier
gibt's was Neues}"'.
\index{Trackbacks!empfangen}%
\subsection{Trackbacks und Pingbacks empfangen}
Selbstverständlich kann Serendipity nicht nur Trackbacks versenden, sondern auch
empfangen.
Dazu werden die notwendigen Meta-Daten für die Trackback-URL in jedem
Blog-Eintrag automatisch eingebettet. Die Trackback-URL ist die Schnittstelle,
die ein anderes Blog aufrufen muss, um dorthin einen Verweis zu einem eigenen
Artikel zu übermitteln.
Eine Trackback-URL sieht aus wie
\cmd{http://www.example.com/serendi\-pi\-ty/comment.php?type=trackback\&entry\_id=\cmdvar{1337}}. Diese
URL ist\osplinebreak{} nicht dazu gedacht, von einem normalen Browser aufgerufen zu werden,
daher erhalten Sie in diesem Fall eine Fehlermeldung. Ein fremdes Blog jedoch
übermittelt an diese URL alle notwendigen Variablen, die Serendipity benötigt, um
Ihrem Artikel ein Trackback hinzuzufügen.
Damit Sie Trackbacks zu einem Artikel empfangen können, müssen Sie bei dem
jeweiligen Artikel die Ankreuzbox \menu{Kommentare für diesen Eintrag zulassen}
aktiviert haben (dies ist standardmäßig der Fall).
Auch das Anti-Spam-Plugin von Serendipity (siehe Seite \pageref{spamblock})
weist einige Optionen auf, die Sie dafür einsetzen können, Trackbacks zu
erlauben, automatisch zu moderieren oder auch gänzlich abzuweisen (siehe Folgekapitel).
Empfangene Trackbacks werden auf der Detailseite des Blog-Eintrags oberhalb
der Kommentare angezeigt. Sie können die Darstellung von Trackbacks (und auch
Kommentaren) gänzlich verhindern, indem Sie den jeweiligen Bereich in Ihrem
Template löschen (siehe Seite \pageref{frontend-tpl}).
\index{Bulletproof}%
Neuere Templates wie \menu{Bulletproof} ermöglichen es sogar, über
Template-Optionen festzulegen, ob Sie einen Kommentar- und Trackback-Bereich
anzeigen oder verstecken wollen.
\subsection{Trackback- und Kommentar-Spam}
\index{Kommentare!vollständig verbieten}%
\index{Trackbacks!vollständig verbieten}%
\index{Systemressourcen}%
\index{Performance}%
\index{Traffic}%
\index{Popularität}%
Weblogs laden Besucher dazu ein, Kommentare zu hinterlassen oder sich mit
Trackbacks auf Einträge zu beziehen. Erst diese Vernetzung und Interaktivität
ist es, was Weblogs so populär und beliebt macht und von einfachen Newstickern
oder Content-Management-Systemen unterscheidet.
\index{Spam}%
Die große Popularität und hohe Einstufung in Suchmaschinen bezahlen Blogger
jedoch mit einem ebenso hohen Preis: SPAM.
Spam ist der Sammelbegriff für jegliche Form der unerwünschten Werbung.
Kommentarspam bewirbt Webseiten oder andere Produkte und wird von
Spammern meist automatisiert verschickt. Spammern ist es dabei egal, ob ihre
Werbung auf einem Blog irgendwann gelöscht oder moderiert wird, denn wenn
mehrere hunderttausend Blogs mit ihren Botschaften bestückt werden und davon
90\% der Kommentare gelöscht werden, bleiben dennoch tausende Kommentare übrig.
\index{Ranking}%
Spammer nennen ihre Webseiten in Blog-Kommentaren und erhöhen
so ihren Suchmaschinenrang durch den Rang des Blogs, auf dem sie kommentieren.
Durch eine Kooperation von Blog-Entwicklern und Suchmaschinenbetreibern wurde
ein HTML-Attribut
\index{nofollow}%
\emph{nofollow} eingeführt. Dieses Attribut wurde automatisch an die Verweise
aller Webseiten in Blog-Kommentaren angehängt und führt dazu, dass Suchmaschinen
den Rang einer solchen Webseite nicht mit dem Blog verknüpfen.
Leider gilt dies aber nicht nur für Spammer, sondern für alle Kommentatoren. Und
so stellte sich heraus, dass diese Maßnahme eher den aufrichtigen Bloggern
und dem generellen Vernetzungsvorteil von Blogs schadet. Da nicht jedes
Blogsystem die \emph{nofollow}-Attribute einsetzt, bleiben immer noch Blogs
online, in denen Kommentarspam suchmaschinenrelevante Wirkung erzielt. Die
Spammer senden also nach wie vor automatisierten Spam, denn auch hier zählt die
Masse. Wenn von 100.000 Kommentaren nur 100 ohne \emph{nofollow}-Attribut
durchkommen, ist das für einen Spammer immer noch eine gute Quote. Denn
Kommentarspam kostet einzig Ressourcen durch benötigte Bandbreite und Computer,
die den Spam verschicken.
\index{Botnetze@Bot-Netze}%
\index{Trojaner}%
Dabei verschicken Spammer inzwischen ihre Nachrichten (genauso wie bei
E-Mail-Spam) nicht mehr über eigene Leitungen und Computer, sondern sie nutzen
sogenannte \emph{Bot-Netze}. Ein Bot-Netz ist ein Netzwerk aus viren- und
trojanerverseuchten Computern ganz normaler Internetbenutzer. Viren und
Trojaner kann sich ein normaler Computerbenutzer
mittlerweile sehr einfach über Browser einfangen, und aufgrund der Unkenntnis
vieler Benutzer fällt ihnen das gar nicht auf. Bei den Milliarden von
Internet-Nutzern ist es leider nach wie vor nicht selbstverständlich, aktuelle
Virenscanner einzusetzen --, und so kommen jeden Tag tausende neuer Benutzer in
den riesigen Bot-Netzen hinzu.
Diese Bot-Netze können von den Spammern ferngesteuert werden, indem sie fremde
Computer dazu anweisen, Kommentar- oder E-Mail-Spam zu versenden. So können die
Spammer Bandbreiten bündeln und mit tausenden gleichzeitigen Zugriffen einen
Webserver sogar völlig überlasten.
Die Betreiber der angegriffenen Server haben wenig Chancen, dagegen vorzugehen:
Sie können die Benutzer nicht blocken, da sie für den Server wie ein ganz
normaler Besucher einer Webseite aussehen. Die Bot-Netze verfügen über riesige
Kontingente an voneinander unabhängigen PCs mit ganz unterschiedlichen
IP-Adressen und können so nicht lokalisiert werden.
Man kann daher das Spam-Problem nur an seiner Wurzel packen, indem man auf
Spam-Angebote wie Viagra, Sex-Offerten und Geldanleihen verzichtet. Dies ist
jedoch ein soziales, menschliches Problem, das wohl niemals aus der Welt zu
schaffen ist. Mittelfristig kann es daher nur helfen, wenn Sie selbst auf die
Sicherheit ihres Computers achten, Anti-Viren-Soft\-ware einsetzen und Ihre
Bekannten und Freunde über die Gefahren des Internets aufklären. Auch die
Gesetzgebung ist gefragt, mit Spam-Verboten und möglicherweise der Einführung
von \emph{Internet-Führerscheinen} dem Missbrauch Einhalt zu gebieten. Immerhin
darf man auch ein Auto erst führen, wenn man es bedienen kann -- auch mit dem
Internet ist heutzutage viel Schaden anzurichten.
Bei immer größer werdender Bandbreite der privaten
Internetanschlüsse dank DSL und VSDL werden solche Bot-Netze für
Server-Betreiber zu einer immer größeren Gefahr, da sie ein Blog vollständig
lahmlegen können. Dem können Sie nur begrenzt vorbeugen (siehe Seite
\pageref{performance}).
Nach so viel Pessimismus sei aber auch erwähnt, dass Sie
dem Treiben zumindest in gewissem Maße Einhalt gebieten können. Zentrale
Anlaufstelle hierfür ist das Serendipity-Ereignis-Plugin \emph{Anti-Spam}. Wenn
Sie dieses installieren, können Sie durch zahlreiche Mechanismen gezielt gegen
Kommentar- und Trackbackspam vorgehen (siehe Seite \pageref{spamblock}).
Wenn Spammer Ihr Blog torpedieren, kann es jedoch sein, dass selbst das
Anti-Spam-Plugin zu viele Ressourcen bindet. Denn bei jedem Kommentar oder
Trackback muss sich der Serendipity-Softwarekern initialisieren, eine
Datenbankverbindung aufbauen und die Anti-Spam-Checks durchführen sowie
möglicherweise weitere Server (wie Akismet) kontaktieren. All dies benötigt
Zeit, die der Webserver aber womöglich nicht hat, wenn er mehrere hundert
gleichzeitige Zugriffe regeln muss.
In so einem Fall sind Sie sehr auf die Hilfe Ihres Server-Providers angewiesen.
Dieser kann auf Netzwerk-Ebene und auf Server-Ebene einige Vorkehrungen
treffen, damit ein Webserver nicht völlig unerreichbar wird. Er kann die Anzahl
der maximalen Zugriffe limitieren und etwaige IP"=Adressbereiche bei
Überbenutzung sperren. Eine Blockade durch Bot-Netze nennt man
\index{DDoS} %
\emph{DDoS (Distributed Denial of Service)}. Während viele Provider lediglich
mit Abschaltung ihres Servers reagieren, gibt es auch ernsthaft bemühte
Provider, die hier gemeinsam mit Ihnen an einer Lösung arbeiten.
Provider wie \emph{Manitu}\footnote{\cmd{http://www.manitu.net/}},
\emph{TiggersWelt}\footnote{\cmd{http://www.tiggerswelt.net/}} und
\emph{All-Inkl.com}\footnote{\cmd{http://www.all-inkl.com/}} sind bekannt
dafür, hier individuelle Lösungsmöglichkeiten anzubieten.
\label{commentphp}%
\index{Trackbacks!verbieten}%
Temporär können Sie Kommentare und Trackbacks vollständig unterbinden, indem Sie
die Datei \cmd{comment.php} von Serendipity löschen oder umbenennen. Über diese
Datei werden Kommentare und Trackbacks angenommen.
Meist werden Trackbacks aufgrund ihrer Automatisierbarkeit von Spammern
bevorzugt. Zwar können Sie Trackbacks auch über das Anti-Spam-Plugin vollständig
deaktivieren, aber dies bindet wie erwähnt Systemressourcen. Daher
können Sie alternativ die Serendipity-Datei \cmd{comment.php} mit einem Editor
bearbeiten und dort in der ersten Zeile Folgendes eingeben:
\begin{ospcode}
<?php if (\$_GET['type'] == 'trackback') die('No Service.'); ?>
\end{ospcode}
Diese Zeile weist Serendipity an, bei einem Trackback-Versuch die Ausführung des
Scripts sofort zu beenden und Ressourcen zu sparen.
\index{Wartung!Datenbank}%
\index{Datenbank!Wartung}%
\section{Wartung der Datenbank und der Dateien}
Serendipity speichert bis auf die Dateien der Mediendatenbank alle Informationen
in seiner Datenbank. Einträge speichert Serendipity beispielsweise in der
Datenbanktabelle \cmd{serendipity\_entries}, Kategorien in der Tabelle
\cmd{serendipity\_category} (eine vollständige Liste der Tabellen finden Sie ab
Seite \pageref{er-schema}).
Diese Tabellen werden im Laufe der Betriebszeit Ihres Blogs immer voller
und größer. Möglicherweise hat Ihr Provider Ihnen jedoch eine bestimmte
Größenbeschränkung der Datenbanktabelle auferlegt, und irgendwann könnte es zu
Fehlermeldungen kommen, die Sie darauf hinweisen, dass Sie Ihr Limit
überschritten haben.
Daher kann es von Zeit zu Zeit sinnvoll sein, dass Sie ihre Datenbank warten und
nicht länger benötigte Einträge löschen. Die Datenbank speichert Ihre
Dateien meist in (für Sie) versteckten Verzeichnissen, daher können Sie
nur mittels spezieller Datenbank-Wartungsprogramme auf die Inhalte direkt
zugreifen. Abhängig von der bei Ihnen eingesetzten Datenbank haben Sie die Wahl
zwischen verschiedenen Programmen.
\label{datenbankwartung}%
Für MySQL ist das Web-basierte Programm
\index{phpMyAdmin}%
\cmd{phpMyAdmin}\footnote{\cmd{http://www.phpmyadmin.net}} sehr verbreitet.
Viele Provider bieten eine vorinstallierte Version für Sie an. Die Installation
von phpMyAdmin ist zwar mit etwas Konfigurationsaufwand verbunden, aber auf der
Homepage gut dokumentiert.
Für PostgreSQL steht
\index{phpPgAdmin}%
\cmd{phpPgAdmin}\footnote{\cmd{http://phppgadmin.sourceforge.net}} zur
Verfügung, das an phpMyAdmin angelehnt ist.
Beim Einsatz von SQLite ist die Wahl etwas schwieriger, da dieser Datenbanktyp
weniger stark verbreitet ist.
\index{phpSQLiteAdmin}%
\cmd{phpSQLiteAdmin}\footnote{\cmd{http://www.phpguru.org/static/phpSQLiteAdmin.html}} kann
Ihnen möglicherweise gute Dienste leisten.
Abgesehen von den Web-basierten Verwaltungsprogrammen gibt es auch eigenständige
Windows- oder Linux-Anwendungen, die Sie selbstverständlich auch einsetzen
können.
Die Wahl und Installation der Verwaltungssoftware ist unabhängig von
Serendipity und kann daher hier nicht eingehender erklärt werden. Die folgenden
Beispiele beziehen sich allesamt auf das verbreitete \cmd{phpMyAdmin}.
In Ihrem Verwaltungsprogramm können Sie alle Datenbanktabellen von Serendipity
einsehen. Wir gehen im Folgenden davon aus, dass Sie nur Tabellen warten
möchten, in denen weniger relevante Daten (wie moderierte Kommentare, Logfiles, Referrer)
gespeichert werden. Wenn Sie Blog-Artikel oder Plugins löschen wollen, können
Sie dies über die normale Serendipity-Oberfläche tun. Wartbare Daten finden Sie in
den im Folgenden erwähnten Tabellen.
\index{Datenbank-Tabellen!serendipity\_spamblocklog}%
\index{Datenbank-Tabellen!serendipity\_karmalog}%
\index{Datenbank-Tabellen!serendipity\_cronjoblog}%
\index{Logfiles}%
\index{Protokolle}%
\subsection{serendipity\_spamblocklog, serendipity\_karmalog,\newline serendipity\_cronjoblog}
Einige Plugins erstellen Datenbanktabellen, um darin ihre Protokolle
(\emph{Logs}) abzulegen. Andere Plugins nutzen dafür auch normale Dateien (im
Verzeichnis \cmd{templates\_c}), jedoch hat die Speicherung in der Datenbank den
Vorteil, dass Sie diese mit Programmen wie phpMyAdmin komfortabel ansehen und
auch beliebig filtern können.
In der Tabelle \cmd{serendipity\_spamblocklog} werden beispielsweise alle
Vorgänge gespeichert, bei denen das \emph{Anti-Spam}-Plugin Kommentare oder\osplinebreak{}
Trackbacks moderiert/abgewiesen hat. Da diese Protokolle in einer Tabelle
gespeichert werden, können Sie diese leicht nach Datum oder Typ filtern. Die
Beschreibung der jeweiligen Datenbankfeldnamen ist auf Seite
\pageref{db-spamblocklog} dokumentiert.
\label{spamblocklog-loeschen}%
Das Plugin löscht in der Tabelle selbständig keine Einträge. Wenn Sie Ihr Blog
also zwei Jahre lang betreiben, sammeln sich in dieser Tabelle \emph{alle}
abgewiesene Kommentare über diesen Zeitraum hinweg. In den seltensten Fällen
benötigen Sie diese Datensätze jedoch noch. Daher können Sie regelmäßig die
Einträge dieser Protokoll-Tabelle über einen
\index{SQL-Dump}%
SQL-Dump (siehe Abschnitt \ref{backups} ab Seite \pageref{backups})
auf Ihrer Festplatte sichern und dann die Datenbanktabelle leeren (SQL-Anweisung:
\cmd{TRUNCATE TABLE serendipity\_""spamblocklog}). Sie können aber auch mit einer
einfachen SQL-Anweisung alle Einträge löschen, die älter als vier Wochen sind:
\begin{ospcode}
DELETE FROM serendipity\_spamblocklog WHERE timestamp <
(UNIX\_TIMESTAMP(NOW()) - (86400*30))
\end{ospcode}
Der Zeitstempel (\emph{timestamp}) eines Eintrags wird in Sekunden gespeichert,
und die SQL-Abfrage sucht alle Einträge, die älter als der heutige Zeitstempel
minus 30 Tage (86400 Sekunden entsprechen einem Tag) sind.
Diese SQL-Abfrage können Sie auch automatisch einmal im Monat über einen
\index{Cronjob}%
Cronjob ausführen, wenn Sie über einen SSH-Zugang zu Ihrem Blog
verfügen. Denkbar wäre auch, dass Sie folgende PHP-Datei im Serendipity-Verzeichnis
unter dem Namen \cmd{log\_recycle.php} speichern:
\begin{ospcode}
<?php
include 'serendipity\_config.inc.php';
serendipity\_db\_query("DELETE FROM serendipity\_spamblocklog WHERE
timestamp < (UNIX\_TIMESTAMP(NOW()) - (86400*30))");
)
?>
\end{ospcode}
Diese Datei können Sie (via cronjob oder manuell) regelmäßig dann unter
\cmd{http://www.example.com/serendipity/log\_recycle.php} aufrufen\osplinebreak{} und mit weiteren Aufrufen der \cmd{serendipity\_db\_query()}-Funktionen
für andere Datenbanktabellen ergänzen.
Dasselbe gilt für die Datenbanktabelle \cmd{serendipity\_karmalog}. Diese wird
vom Plugin \emph{Karma (Abstimmung über die Einträge} -- siehe Seite
\pageref{Karma}) erzeugt und enthält eine Liste aller abgegebenen Abstimmungen
pro Eintrag und pro Person. Die Datenbanktabelle \cmd{serendipity\_cronjoblog} wird durch das Plugin
\emph{Cronjob} (siehe Seite \pageref{Cronjobsched}) angelegt und enthält eine
Liste der zuletzt automatisch aufgerufenen Plugins.
Alle genannten Tabellen können über die Zeit sehr groß werden. Vergessen Sie
daher nicht, diese in regelmäßigen Abständen zu prüfen. Natürlich können Sie
jedes Plugin auch so konfigurieren, dass die Protokolle erst gar nicht
gespeichert werden, wenn Sie diese nicht benötigen.
\index{Datenbank-Tabellen!serendipity\_spamblocklog\_htaccess}%
\subsection{serendipity\_spamblocklog\_htaccess}
\index{[email protected]} Einen Sonderfall der Protokollierung des
\emph{Anti-Spam}-Plugins stellt die
Tabelle \cmd{serendipity\_spamblocklog\_htaccess} dar. Wenn in diesem Plugin die
automatische Aktualisierung der Datei \cmd{.htaccess} aktiviert wurde, werden in
dieser Tabelle alle zu blockenden IP-Adressen aufgeführt. Diese Datenbasis wird
dann für die Erzeugung der \cmd{.htaccess}-Datei verwendet.
Dabei benutzt das Plugin jedoch standardmäßig nur die Daten der letzten zwei
Tage. Die älteren Daten bleiben weiterhin vorhanden und müssen von Ihnen bei
Bedarf gelöscht werden, da das Plugin sonst davon ausgeht, dass Sie die alten
Daten zu statistischen (oder anderen externen) Zwecken möglicherweise
beibehalten möchten.
\label{wartung-visitors}%
\index{Datenbank-Tabellen!serendipity\_visitors}%
\subsection{serendipity\_visitors}
\index{Performance}%
Das \emph{Statistik}-Plugin von Serendipity kann jeden Besucher zählen und eine
Aufrufstatistik einbinden. Dafür muss jeder Besucher in der Datenbanktabelle
\cmd{serendipity\_visitors} erfasst werden.
Bei größeren Blogs kann diese Datenbank enorme Größen annehmen, da ältere
Einträge nicht automatisch gelöscht werden. Da bei aktivierter Besucherstatistik
bei jedem Seitenaufruf ein schreibender Zugriff auf diese Tabelle erfolgt, kann
bei einer großen Tabelle die Performance des gesamten Frontends spürbar sinken.
Daher sollten Sie besonders diese Tabelle im Auge behalten. Selten ist es von
Interesse, die Statistik des letzten Jahres anzusehen -- löschen Sie also in
diesem Fall alte Datensätze auch regelmäßig (wie eingangs beschrieben).
\index{Datenbank-Tabellen!serendipity\_exits}%
\subsection{serendipity\_exits}
Wenn Sie das Plugin \emph{Textformatierung: Externe Links zählen} aktiviert
haben, wird jeder Klick auf einen Link, den Sie in einem Blog-Artikel eingebunden
haben, in der Datenbanktabelle \cmd{serendipity\_exits} gespeichert. Anhand
dieser Daten kann später eine Statistik erstellt werden, welche Links Ihre
Besucher am häufigsten geklickt haben.
Abweichend von den bisher aufgeführten Datenbanktabellen werden die Daten hier
pro Tag gespeichert und nicht mit einem Zeitstempel versehen. Wenn Sie also
selektiv alte Datensätze löschen möchten, müssen Sie dies mit folgender
SQL-Anweisung tun:
\begin{ospcode}
DELETE FROM serendipity\_exits WHERE UNIX\_TIMESTAMP(day) <
(UNIX\_TIMESTAMP(NOW()) - (86400*30))
\end{ospcode}
\index{Datenbank-Tabellen!serendipity\_referrers}%
\subsection{serendipity\_referrers}
\index{Referrer}%
Wenn Sie in der Serendipity-Konfiguration das \menu{Referrer-Tracking} aktiviert
haben, kann Ihr Blog bei jedem Besucher auswerten, von welcher Seite er zu Ihnen
gelangt ist. Diese Angaben können in der Statistik später angezeigt werden, um
aufzuschlüsseln, woher die meisten Besucher kommen.
Ähnlich wie die Tabelle \cmd{serendipity\_exits} enthält die Tabelle
\cmd{serendi\-pity\_referrers} eine Liste von Links, die tagesabhängig sind. Sie
können daher folgenden SQL-Code verwenden, um die Referrer, die älter als einen
Monat sind, zu löschen:
\begin{ospcode}
DELETE FROM serendipity\_referrers WHERE UNIX\_TIMESTAMP(day) <
(UNIX\_TIMESTAMP(NOW()) - (86400*30))
\end{ospcode}
\index{Wartung!Dateisystem}%
\subsection{Dateisystem}
Im Dateisystem speichert Serendipity vor allem die Dateien der Mediendatenbank
(im Verzeichnis \cmd{uploads}) und temporäre Dateien (kompilierte Templates,
Caches).
Während Sie die Mediendatenbank über das normale Serendipity-Backend verwalten
können (und sollten), müssen Sie sich um temporäre Dateien eigentlich selten
kümmern. Diese werden im Verzeichnis \cmd{templates\_c} gespeichert.
\index{Template-Sc@templates\_c}%
In diesem Verzeichnis finden Sie Dateien nach dem Muster
\cmd{default\^{}\%\%C8\^{}""C86\^{}C86\%\%entries.tpl.php}. Dies sind die
Smarty-Templatedateien, die von Serendipity und Smarty in gültigen PHP-Code
umgewandelt werden (siehe Smarty-Beschreibung ab Seite \pageref{Smarty-Templates}).
Der erste Teil des Dateinamens steht dabei für den Templatenamen
(\cmd{default}), dann folgt eine zufällige Folge von Sonderzeichen. Das Ende des
Dateinamens enthält den ursprünglichen Template-Dateinamen.
Für jede Smarty-Templatedatei finden Sie eine entsprechende temporäre,
kompilierte Datei. Diese Dateien können Sie immer gefahrlos löschen, denn wenn
sie nicht vorhanden sind, legt sie Smarty selbständig wieder an.
Wenn Sie in einer Testphase einmal unterschiedliche Templates aktiviert haben,
werden Sie für diese ebenfalls kompilierte Dateien auffinden. Diese können Sie
dann löschen, um etwas Speicherplatz zu sparen.
\index{Spartacus}%
Weiterhin können sich im Verzeichnis \cmd{templates\_c} auch beliebige temporäre
Dateien von Plugins befinden. Beispielsweise legt das Spartacus-Plugin (siehe
Seite \pageref{spartacus})
die XML-Dateien mit Paketinformationen hier unter dem Namen
\cmd{package\_event\_de.xml} oder \cmd{package\_sidebar\_de.xml} an.
Grundsätzlich gilt: Sie können \emph{alle} Dateien in diesem Verzeichnis stets
gefahrlos löschen. Jedes Plugin ist so entwickelt, dass temporäre Dateien
automatisch neu (und mit frischem Inhalt) erstellt werden, wenn sie nicht mehr
vorhanden sind.
Gerade wenn Sie Plugins deinstallieren, bleiben die alten Cache-Dateien in
diesem Verzeichnis (je nach Plugin) weiterhin vorhanden. Daher lohnt es sich,
von Zeit zu Zeit dieses Verzeichnis zu überprüfen. Sie können in einem
FTP-Programm beispielsweise alle Dateien nach Erstellungsdatum sortieren und
dann die Dateien löschen, die offensichtlich seit längerer Zeit nicht mehr
aktualisiert wurden. Meist sind Cache-Dateien jedoch so klein, dass sich der
Wartungsaufwand nur in seltenen Fällen lohnt.
Im Verzeichnis \cmd{archives} befinden sich wider Erwarten \emph{keine}
Blog-Artikel. Dieses Verzeichnis war in älteren Serendipity-Versionen für
statische HTML-Dateien vorgesehen, wurde jedoch nie richtig verwendet.
Mittlerweile wird dieses Verzeichnis von einigen Plugins verwendet, die
dauerhaft Daten speichern möchten. Beispielsweise speichert das Plugin
zur Konvertierung eines Blog-Artikels in eine PDF-Datei seine Dateien dort.
\index{Datenbank!Probleme}%
\index{Fehlermeldungen}%
\index{FAQ}%
\index{Fehler!Datenbank}%
\section{Datenbankprobleme, Fehlermeldungen}
Wenn Serendipity sich nicht mit der Datenbank verbinden kann oder ein Defekt
der Datenbank vorliegt, gibt Serendipity die Fehlermeldung direkt über die
PHP-Fehlerausgabe aus.
\index{PHP!Error Reporting}%
\index{PHP!Display Errors}%
\index{[email protected]}%
\index{ErrorLog}%
Je nach Konfiguration Ihres Webservers werden derartige Fehler entweder direkt in
Ihrem Browser beim Besuchen des Blogs dargestellt oder in einer Log-Datei auf
dem Server gespeichert.\footnote{Die Protokollierung erfolgt mittels der
\cmd{php.ini}-Einstellung \cmd{error\_reporting}, \cmd{display\_errors} und
\cmd{error\_log}, die Sie möglicherweise auch über eine \cmd{.htaccess}-Datei
anpassen können. Wenn PHP als CGI ausgeführt wird, können zusätzliche
Fehlermeldungen auch im \cmd{ErrorLog} der Webserver-Konfiguration erscheinen.}
Fragen Sie Ihren Provider nach dem Speicherort eines solchen Logfiles, wenn Sie darüber
nicht Bescheid wissen.
Die häufigsten Datenbankfehlermeldungen (bei Benutzung von MySQL) sind:
\begin{ospdescription}
\ospitem{\cmd{Warning: mysql\_connect(): Access denied for user}}
\ospadditem{\cmd{'{}\ldots{}'@'{}\ldots{}' (using password: YES)
serendipity error:}}
\ospadditem{\cmd{unable to connect to database - exiting.}}
Diese Fehlermeldung erhalten Sie, wenn Serendipity sich nicht erfolgreich mit
der Datenbank verbinden konnte. Häufig passiert dies, wenn Sie Ihre
Zugangsdaten bzw. Passwörter zum Datenbankserver geändert haben. Überprüfen
Sie die Serendipity-Datei \cmd{serendipity\_""config\_local.inc.php}, dort
müssen die aktuell gültigen Zugangsdaten eingetragen werden.
Das Problem kann jedoch auch dann auftreten, wenn eine Datenbankverbindung
über Sockets oder den TCP/IP-Port fehlschlägt. Hier muss der
Datenbankadministrator die Zugangsparameter und Client-Bibliotheken auf
Korrektheit und Übereinstimmung prüfen.
\ospitem{\cmd{Table '{}\ldots{}' is crashed and should be repaired}}
Die Fehlermeldung erscheint, wenn der Datenbankserver abgestürzt ist und
Tabellen nicht wieder korrekt einlesen konnte. Wenn dies häufiger passiert,
lässt es Rückschlüsse auf einen Hardwaredefekt zu, und Sie sollten Ihren
Provider kontaktieren.
In vielen Fällen können Sie die betreffende Tabelle über den SQL-Befehl
\cmd{REPAIR TABLE \cmdvar{tabellenname}} mittels des Wartungsprogramms
reparieren. phpMy\-Admin verfügt dazu über eigene Operationen, mit denen Sie
menügesteuert Tabellen reparieren können.
Serendipity kann erst wieder auf die Tabelle zugreifen, wenn sie
repariert oder wiederhergestellt wurde.
\ospitem{\cmd{Warning: mysql\_query(): Unable to save result set in \ldots}}
Diese Fehlermeldung kann erscheinen, wenn ein Übertragungsproblem vom
Datenbankserver zum Webserver vorliegt oder die Tabelle nicht korrekt
ausgelesen werden konnte. In manchen Fällen hilft es auch hier, alle
beteiligten Datenbanktabellen zu reparieren. Zudem kann die Fehlermeldung auch
auftreten, wenn die Datenbank-Client-Bibliothek für PHP nicht korrekt (oder
mit einer falschen Version kompiliert) wurde. In diesem Fall sollten Sie Ihren
Provider kontaktieren.
\ospitem{\cmd{Can't open file: 'serendipity\_entries.MYI'}}
\ospadditem{\cmd{(errno: 145, 138)}}
Diese gefürchtete Fehlermeldung tritt auf, wenn die Datei, in der eine
Datenbanktabelle gespeichert wurde, nicht mehr gelesen werden kann. Entweder
passiert dies, weil die Datei nicht mehr vorhanden oder weil sie defekt ist.
In manchen Fällen kann ein \cmd{REPAIR TABLE} SQL-Befehl weiterhelfen. Wenn die Datei
jedoch physisch nicht mehr vorhanden ist, muss sie vom Provider (oder Ihnen)
anhand eines Backups erneut eingespielt werden.
Solche Fehler können nur durch einen Absturz des Datenbankservers oder andere
Einwirkung von außen geschehen.
\ospitem{\cmd{Lost connection to MySQL server during query Too many}}
\ospadditem{\cmd{connections}} MySQL erlaubt lediglich eine bestimmte Anzahl von
parallelen Datenbankverbindungen. Wenn Ihr Blog sehr viele
gleichzeitige Besucher hat oder gerade eine Spamwelle über Sie
hereinbricht, kann dieses Limit schnell überschritten werden.
Die genannte Fehlermeldung sagt Ihnen, dass die Datenbank keine
weiteren Zugriffe mehr zulässt. Sie müssen daher ggf. den
Datenbankserver für mehr Verbindungen konfigurieren (lassen) oder
alternativ mit Ihrem Provider über mögliche Fehlerursachen sprechen.
\end{ospdescription}
Weiterhin kann es auch zu PHP-Fehlermeldungen wie diesen kommen\footnote{Weitere
Hinweise zur korrekten Einrichtung können Sie im Kapitel
\ref{installationsfehler} ab Seite \pageref{installationsfehler}
nachschlagen.}:
\begin{ospdescription}
\ospitem{Keine Schreibrechte für Verzeichnis \cmd{templates\_c},
INCLUDE\_ERROR}
Serendipity benötigt stets volle Schreibrechte zu dem temporären Verzeichnis
\cmd{templates\_c}. Wenn PHP bzw. der Webserver dort keine Dateien mehr
speichern kann, schlägt Serendipity Alarm und kann das Blog nicht mehr
aufrufen. Sobald Sie die Schreibrechte korrigieren (\cmd{chmod 777
templates\_c} via SSH oder FTP), sollte das Blog wieder erscheinen.
\index{Session}%
\index{PHP!Sessions}%
\ospitem{Warning: \cmd{session\_start(): \ldots}}
Serendipity benötigt Zugriff auf das PHP-Session-Modul. Wenn dies nicht (oder
fehlerhaft) konfiguriert ist, können Schreibzugriffe auf die Sessiondaten
fehlschlagen. Der Administrator des Webservers sollte daher die
konfigurierten Verzeichnisse\footnote{php.ini: \cmd{session.save\_path}}
prüfen und nachsehen, ob das PHP \cmd{session}-Modul installiert ist.
\ospitem{Fatal error: \cmd{Maximum execution time of 30 seconds exceeded}}
Wenn Serendipity für einen Seitenaufruf mehr Zeit als das konfigurierte
Limit\footnote{php.ini: \cmd{max\_execution\_time}} benötigt, bricht PHP mit
einer Fehlermeldung ab. Bitten Sie entweder den Server-Administrator um ein
großzügigeres Limit oder entfernen Sie etwaige Performance-intensive Plugins.
\index{RAM}%
\index{Arbeitsspeicher}%
\index{PHP!Memory Limit}%
\ospitem{Fatal error: \cmd{Allowed memory size of \ldots bytes exhausted}}
Ähnlich wie das zeitliche Limit für einen Seitenaufruf gibt PHP vor, wie viel
RAM ein einzelner Seitenaufruf belegen
darf\footnote{php.ini: \cmd{memory\_limit}}. Meist sind dies 8MB RAM, mit
denen Serendipity in der üblichen Konfiguration auskommen sollte. Für einige
Operationen, und je nach installierten Plugins, müssen Sie das Speicherlimit
jedoch erhöhen lassen.
\ospitem{Weiße/leere Seite: \cmd{Internal Server Error}}
Wenn Sie beim Aufruf einer Webseite lediglich den Fehler \cmd{Internal Server
Error} oder eine leere, weiße Seite erhalten, kann dies zahlreiche
Problemursachen haben. Die Fehlermeldung bedeutet hier lediglich: "`\emph{Etwas lief schief}"'.
Die Fehlerursache erfahren Sie nur über die Server-Logdateien. Häufige Probleme hier sind
überschrittener Speicherbedarf, fehlende Schreibrechte zu einem Verzeichnis,
Datenbank"=Verbindungsprobleme.
Aber auch spezielle Anweisungen in der
\cmd{.htaccess}-Datei können diese Meldung hervorrufen. Benennen Sie Ihre
\cmd{.htaccess}-Datei daher vorübergehend um, um herauszufinden, ob ohne diese
Datei alles funktioniert. Ist dies der Fall, sollten Sie die Datei bearbeiten
und alle enthaltenen Zeilen mit einer Raute (\#)
deaktivieren. Aktivieren Sie nun jede Zeile für sich und prüfen Sie nach jeder
einzelnen aktivierten Zeile, ob Ihr Blog noch aufgerufen werden kann.
Meist finden Sie so heraus, dass eine
Zeile wie \cmd{ErrorDocument 404 index.php} oder \cmd{php\_value
register\_globals Off} in der \cmd{.htaccess}-Datei bei Ihnen nicht erlaubt
ist. Weitere Informationen zur \cmd{.htaccess} lesen Sie auf Seite
\pageref{htaccess}.
\ospitem{Fatal error: \cmd{Cannot instantiate non-existent class: smarty}}
Diese PHP-Fehlermeldung weist darauf hin, dass Serendipity eine benötigte
Datei nicht finden oder lesen konnte. Prüfen Sie, ob Sie tatsächlich alle
Dateien des Serendipity-Pakets vollständig hochgeladen haben und ob das
Verzeichnis \cmd{templates\_c} lesbar ist.
\ospitem{Fatal error: \cmd{Cannot use string offset as an array in \ldots}}
Diese Fehlermeldung erscheint meist, wenn eine vorhergehende Datenbankabfrage
fehlgeschlagen ist oder eine Datei des Serendipity-Pakets defekt ist.
\ospitem{Warning: \cmd{Invalid argument supplied for foreach() in \ldots}}
Diese Fehlermeldung ist nur ein Hinweis und führt nicht zwangsläufig zu einem
Abbruch. Meist entsteht eine Meldung wie diese, wenn ein Plugin unsauber
programmiert wurde und einen Fall nicht berücksichtigt, in dem keine Daten
gefunden werden.
Klassisches Beispiel hierfür ist die Auswahl einer zugehörigen Kategorie für
einen Blog-Artikel. Serendipity ging in älteren Versionen immer davon aus,
dass Sie mindestens eine Kategorie angelegt haben, und stellte diese
Fehlermeldung dar, wenn die Liste aller Kategorien (die ja leer wäre)
durchgegangen werden muss.
\ospitem{Fatal error: \cmd{Call to a member function on a non-object in \ldots}}
Diese Fehlermeldung gibt an, dass Serendipity eine Funktion ausführen wollte,
die nicht geladen werden konnte. Dies kann passieren, wenn Sie Plugin-Dateien
manuell gelöscht haben oder diese Dateien nicht mehr lesbar sind.
\ospitem{Fatal error: \cmd{Call to undefined function serendipity\_db\_time}}
Wenn Sie nicht alle Dateien des Serendipity-Pakets hochgeladen haben, kann es
passieren, dass Serendipity eine Fehlermeldung darstellt, wenn eine fehlende
Funktionalität aufgerufen werden soll. Stellen Sie daher sicher, dass alle
Dateien des Pakets vorhanden sind.
\ospitem{Fatal error: \cmd{Call to undefined method}}
\ospadditem{\cmd{serendipity\_smarty\_emulator::\ldots}}
Serendipity liefert zwei besondere Templates aus: \cmd{default-php} und
\cmd{default-xml} (siehe Seite \pageref{templateapi}). Diese sind nur für
Entwickler gedacht. Wenn Sie als Unkundiger diese Templates in Ihrem Blog
aktivieren, kann dies zu der genannten Fehlermeldung führen.
Sie sollten daher ein anderes Template (wie
das Serendipity 3.0 Standard-Template) auswählen.
Wenn Sie als Entwickler dieses Template bewusst gewählt haben, sagt Ihnen
diese Fehlermeldung, dass Sie eine Template-Datei aufrufen wollten, die noch
nicht in das notwendige XML- oder PHP-Format überführt wurde.
\ospitem{\cmd{open\_basedir restriction in effect
SAFE MODE Restriction}}
\ospadditem{\cmd{in effect}}
Wenn Serendipity in einem PHP-Umfeld mit \cmd{open\_basedir} und \cmd{Safe
Mode}-Einschränkungen läuft, kann es nicht frei auf alle Dateien und
Verzeichnisse zugreifen. Bei einer falschen Konfiguration dieser PHP-Variablen
(siehe Seite \pageref{Safe Mode})
führt dies dazu, dass Serendipity zentrale Dateien nicht einbinden kann und
daher der Aufruf fehlschlägt.
Lassen Sie in diesem Fall vom Server-Provider die PHP-Konfiguration prüfen, so
dass die in der Fehlermeldung angegebene Datei gelesen/geschrieben werden
kann.
\index{PEAR}%
\index{Fehler!PEAR}%
\ospitem{Fatal error: \cmd{Cannot redeclare class pear in \ldots/PEAR.php}}
Einige Serendipity-Funktionen setzen die zentrale PEAR-Bibliothek ein. Diese
benötigten Bibliotheken liefert Serendipity mit. Manchmal sind die
PEAR-Bibliotheken jedoch auf dem Webserver bereits zentral installiert.
Wenn nun ein Serendipity-Plugin auf einen Fehler stößt, versucht die
PEAR-Bibliothek eine Fehlermeldung auszugeben. Dafür wird die zentrale Datei
\cmd{PEAR.php} eingebunden, die Serendipity aber üblicherweise bereits
eingebunden hat. Daher kommt es zu einer Fehlermeldung, die angibt, dass eine
Klasse doppelt geladen werden müsste.
Grundsätzlich sollte diese Fehlermeldung bei keinem offiziellen Plugin mehr
vorkommen. Wenn Sie darauf stoßen, muss man dafür sorgen, dass die jeweilige
PEAR-Bibliothek so eingebunden wird, dass sie die \cmd{PEAR.php} nicht
zentral einbindet, sondern erst prüft, ob die Klasse bereits definiert ist.
Bitte melden Sie eine solche Fehlermeldung im Serendipity-Forum mit einer
detaillierten Angabe, wann und wo diese Fehlermeldung auftritt.
\end{ospdescription}
Weitere Fehlermeldungen sind in der Dokumentation Ihres
Datenbanksystems\footnote{Für MySQL z.\,B.
\cmd{http://dev.mysql.com/doc/refman/5.0/en/error-messages"=server.html}}
aufgeführt. Im Zweifelsfall sollten Sie bei hier nicht aufgeführten
Fehlermeldungen entweder Ihren Provider oder das Serendipity-Forum kontaktieren.
\label{backups}
\index{Backup}%
\index{Fehler!Backup}%
\section{Backups erstellen}
Computer können immer einmal abstürzen, sei es durch Stromausfälle,
Hardwaredefekte oder einfache Softwarefehler. Daher ist es wichtig, Datenverlusten
vorzubeugen.
Sie sollten regelmäßig sogenannte \emph{Backups} (Sicherheitskopien) Ihres
Blogs erstellen. Dieser Hinweis gilt natürlich für sämtliche Ihrer
persönlichen Daten. Auch private Fotos, Dokumente und andere Dateien, die Sie auf Ihrem
Computer sichern, sollten von Zeit zu Zeit auf dauerhafte Medien wie DVDs oder
CDs übertragen werden. Denn auch eine fein säuberlich auf Ihrer Festplatte
abgelegte Datei könnte einmal durch Defekte beschädigt werden.
Da Serendipity nicht wie eine Bild- oder Dokumentdatei auf Ihrem Computer liegt,
können Sie es nicht ohne Weiteres sichern, sondern benötigen Zusatzsoftware.
Serendipity besteht aus zwei Komponenten: der Datenbank und den Dateien im
Dateisystem. Die Dateien können Sie wie gewohnt per FTP oder Ähnlichem auf Ihren
Computer herunterladen. Besonders wichtig sind dabei folgende Dateien und
Verzeichnisse:
\begin{ospdescription}
\ospitem{\cmd{.htaccess}, \cmd{serendipity\_config\_local.inc.php}}
In diesen beiden Dateien speichert Serendipity zentrale Konfigurationswerte.
Ohne diese beiden Dateien kann später beim Wiederherstellen eines Backups keine
Verbindung zur Datenbank hergestellt werden!
Serendipity schützt diese beiden Dateien über unbefugte Zugriffe. Dies kann
jedoch abhängig von der Einrichtung Ihres Servers bedeuten, dass Sie auch selbst
per FTP keine Zugriffsrechte besitzen. In diesem Fall können Sie sich
mittels eines kleinen PHP-Scripts namens \cmd{fixperm.php} (oder auch mit der
Hilfe Ihres Providers) jedoch leicht die fehlenden Rechte zuschieben. Dieses
Script ist auf Seite \pageref{Installation erneut ausfuehren} näher beschrieben.
\ospitem{Verzeichnis \cmd{uploads}}
In diesem Verzeichnis speichert Serendipity alle von Ihnen hochgeladenen
Mediendaten. Wenn Sie diese nicht sowieso separat auf Ihrem Computer sichern,
sollten Sie die Dateien dringend für ein Backup herunterladen.
\ospitem{Verzeichnis \cmd{templates}, \cmd{plugins}}