Installation Wordpress unter Debian Linux
Voraussetzung
- Apache HTTPd inklusive aktiviertem mod_rewrite
- PHP 5.3
- MySQL Server
Download und Install
Als erstes wird das aktuelle Wordpress Packet gebraucht, was hier zu bekommen ist:
cd /usr/src
wget http://de.wordpress.org/wordpress-3.3.1-de_DE.zip
Nun entpacken, einen Vhost Ordner anlegen, den Wordpress Code reinkopieren und die richtigen Rechte vergeben:
unzip wordpress-3.3.1-de_DE.zip
mkdir /srv/httpd/vhosts/www.yourdomain.de/htdocs/
mv wordpress/* /srv/httpd/vhosts/www.yourdomain.de/htdocs/
chown -R www-data.www-data /srv/httpd/vhosts/www.yourdomain.de/htdocs
Wordpress Vhost Konfiguration
Als nächstes wird die Apache Vhost Konfiguration benötigt, das folgende Beispiel kann dafür verwendet werden:
/etc/apache2/sites-available/www.yourdomain.de
<VirtualHost *:80> ServerAdmin webmaster@yourdomain.de ServerName www.yourdomain.de ServerAlias yourdomain.de 22.73.51.101 DocumentRoot /srv/httpd/vhosts/www.yourdomain.de/htdocs/ Alias /robots.txt /srv/httpd/robots/robots-all.txt Alias /apple-touch-icon.png /srv/httpd/vhosts/www.yourdomain.de/htdocs/favicon.ico Alias /apple-touch-icon-precomposed.png /srv/httpd/vhosts/www.yourdomain.de/htdocs/favicon.ico ErrorDocument 403 http://www.yourdomain.de ErrorDocument 404 http://www.yourdomain.de RewriteEngine On RewriteCond %{HTTP_HOST} !www.yourdomain.de$ RewriteRule (.*) http://www.yourdomain.de$1 [R=permanent] RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteCond %{SCRIPT_FILENAME} !^(.*)wp-includes/ms-files.php RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC] RewriteRule ^(.*)$ - [F,L] RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR] RewriteCond %{QUERY_STRING} ^.*\.(bash|git|hg|log|svn|swp|cvs) [NC,OR] RewriteCond %{QUERY_STRING} etc/passwd [NC,OR] RewriteCond %{QUERY_STRING} boot\.ini [NC,OR] RewriteCond %{QUERY_STRING} ftp\: [NC,OR] RewriteCond %{QUERY_STRING} http\: [NC,OR] RewriteCond %{QUERY_STRING} https\: [NC,OR] RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR] RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR] RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*("|'|<|>|\|{||).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(request|select|concat|insert|union|declare).* [NC] RewriteCond %{QUERY_STRING} !^loggedout=true RewriteCond %{QUERY_STRING} !^action=rp RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteCond %{HTTP_REFERER} !^http://maps\.googleapis\.com(.*)$ RewriteRule ^(.*)$ - [F,L] <Directory /srv/httpd/vhosts/www.yourdomain.de/htdocs/> Options -Indexes FollowSymLinks -Includes -MultiViews AllowOverride None Order allow,deny allow from all </Directory> php_value max_execution_time 240 php_value max_input_time 240 php_value memory_limit 128M php_admin_value safe_mode off <FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)"> order allow,deny deny from all </FilesMatch> <FilesMatch "(plugin-install\.php|theme-install\.php)"> order allow,deny allow from all </FilesMatch> <Directory /srv/httpd/vhosts/www.yourdomain.de/htdocs/wp-admin/css/> Order deny,allow Allow from all </Directory> <Directory /srv/httpd/vhosts/www.yourdomain.de/htdocs/wp-admin/images/> Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/www.yourdomain.de-error.log CustomLog /var/log/apache2/www.yourdomain.de-access.log combined # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn </VirtualHost>
Dieser wird dann noch aktiviert:
a2ensite www.yourdomain.de
Datenbank anlegen
Nun muss für Wordpress eine Datenbank samt Benutzer angelegt werden, dafür loggt man sich am MySQL Server ein und setzte folgende Befehle ab:
mysql -uroot -p
CREATE DATABASE `wordpressdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'wordpressbenutzer'@'localhost' IDENTIFIED BY 'passwort'; GRANT ALL PRIVILEGES ON `wordpressdb` . * TO 'wordpressbenutzer'@'localhost';
Konfiguration
Die Konfiguration erfolgt durch das Aufrufen der Webseite.
- http://www.yourdomain.de
Hier kommt dann die Meldung, das es keine Konfigurationsdatei gibt, die man aber mit Hilfe des Wizards erstellen kann. Auf der Nächsten Seite gibt man die Datenbank Konfiguration an. Hier bitte Die Oben angelegte Datenbank und Benutzer eintragen. Es empfiehlt sich aus Sicherheitsgründen den Table Prefix in irgendetwas anderes zu ändern. Dann Speichern und auf "Run the install" klicken. Hier dann wie gewünscht die Felder ausfüllen... Fertig! Nun noch die install.php sperren:
/etc/apache2/sites-available/www.yourdomain.de
<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|install\.php|liesmich\.html|readme\.html)"> order allow,deny deny from all </FilesMatch>
Permalinks
Unter Permalinks versteht man die Technik, mit welcher die unschönen URLs von Wordpress (z.B. http://www.example.com/?p=123) in leicht zu merkende URLs geändert werden können (z.B. http://www.example.com/allgemein/hallo-welt). Damit diese Funktion genutzt werden kann, muss die Option AllowOverride in dem Directory-Abschnitt der Apache Konfiguration wie folgt gesetzt sein:
AllowOverride FileInfo
Ist dies nicht der Fall (die Option ist wie weiter oben angegeben noch auf None oder einfach gar nicht gesetzt), dann kommt beim Aufrufen von Beiträgen ein File not found Fehler.
Bildbearbeitung mit Wordpress
Damit Wordpress Bilder bearbeiten kann muss folgendes Paket installiert sein:
aptitude install php5-gd
Danach muss der Apache Server neugestartet werden. Ohne dieses Modul kommt z.B. beim Zuschneiden des Head Banners die Fehlermeldung, dass das Bild nicht bearbeitet werden konnte.
Einbinden eines Favicons
Favicons sind die kleinen Symbole, welche normalerweise im Browser-Tab, neben der URL und/oder neben einem Bookmark angezeigt werden. Sie können 16x16, 32x32 oder 64x64 Pixel groß sein.
Um in Wordpress ein Favicon effektiv nutzen zu können, muss eine Datei in dem jeweiligen Theme, welches man gerade benutzt, angepasst werden. Man kann entweder über die Admin-Oberfläche (Design => Editor => header.php) oder direkt auf dem Server ([path-to-wp-root]/wp-content/themes/[current-theme]/header.php) vorgehen.
Innerhalb des HTML-Header Bereiches (zwischen <header> und </header>) muss folgende Zeile eingefügt werden:
<link rel="shortcut icon" href="<?php bloginfo('template_directory'); ?>/favicon.ico">
Nun muss das gewünschte Favicon mit dem Namen "favicon.ico" im Verzeichnis des Themes abgelegt werden (gleiches Verzeichnis wie das, in welches header.php ist). Ich empfehle, das Favicon als ICO-Datei (Microsoft Icon) abzuspeichern, da dieses als einziges von allen großen Browsern unterstützt wird. Dies ist z.B. mit dem Open Source Programm GIMP möglich.
ACHTUNG: Wenn ihr das Theme updatet kontrolliert, dass die Zeile noch da ist. Ansonsten wird das Favicon womöglich nicht mehr angezeigt.
TwentyThirteen Tag Komma Hack
Bei mir wurden die Zeilen der Tags bei den Artikeln ziemlich lang, da es hier zu keinem Zeilenumbruch kam, da es einfach ein langes Wort war. Es fehlte hier nach dem Trennkomma ein Leerzeichen. Dieses kann in der Folgenden Datei hinzugefügt werden:
wp-content/themes/twentythirteen/functions.php
Erst die Original Zeile dann die geänderte:
$categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
$categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
$tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
$tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
Und so sollte es dann aussehen:
// Translators: used between list items, there is a space after the comma.
$categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
if ( $categories_list ) {
echo '<span class="categories-links">' . $categories_list . '</span>';
}
// Translators: used between list items, there is a space after the comma.
$tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
if ( $tag_list ) {
echo '<span class="tags-links">' . $tag_list . '</span>';
}