Installation Wordpress unter Debian Linux

Aus Laub-Home Wiki

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} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [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>';
        }