Wie kann ein laufender Windows XP Rechner (oder Raspberry Pi) auf Debian 8 Jessie mit WordPress 4.3 (SSL), Apache2 (SSL, https), MySql und phpMyadmin erstellt werden? Hier die gewünschte Architektur:
Alle Daten auf den Windows Rechner müssen vorher gesichert werden, da das ganze System mit Linux überschrieben wird.
Debian Jessie
installieren
z.B. tools/win32-loader/stable/win32-loader.exe laden und installieren mit SSH Zugang, ohne GUI
Beim Raspberry Pi, analog vorgehen, wie hier im Blog schon beschrieben.
LAMP
installieren mit:
1 |
apt-get install apache2 mysql-client mysql-server php5 php5-mysql php5-curl php5-gd unzip phpmyadmin |
WordPress Database
erstellen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql -u root -p # Passwort # wpdatabase, wpuser und passwort selbst wählen # evl. Database löschen mit DROP DATABASE wpdatabase; CREATE DATABASE wpdatabase; CREATE USER wpuser@localhost IDENTIFIED BY 'wppass'; GRANT ALL PRIVILEGES ON wpdatabase.* TO wpuser@localhost; FLUSH PRIVILEGES; exit # Apache und MySql restarten service apache2 restart service mysql restart |
WordPress
4.3 laden erstellen
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 |
# ins tmp Verzeichnis gehen cd /tmp # Wordpress aktuelle Version laden wget -c http://wordpress.org/latest.zip # Archive auspacken unzip -q latest.zip -d /var/www/html/ # oder wenn es ein tar.gz ist dann tar zxf wordpress-4.5.3-de_DE.tar.gz -C /var/www/html/ # Rechte vergeben chown -R www-data.www-data /var/www/html/wordpress chmod -R 755 /var/www/html/wordpress mkdir -p /var/www/html/wordpress/wp-content/uploads chown -R www-data.www-data /var/www/html/wordpress/wp-content/uploads cd /var/www/html/wordpress/ # kopieren des Beispiel cp wp-config-sample.php wp-config.php # in wp-config.php den Databasenamen, User und Passwort eintragen nano wp-config.php # im Browser aufruen und Sprache und User wählen http://localhost/wordpress/ # testen # gleich noch den Datei upload Size vergrößern # in der /var/www/html/wordpress/.htaccess die folgenden Einträge machen: vi /var/www/html/wordpress/.htaccess php_value upload_max_filesize 64M php_value post_max_size 64M php_value max_execution_time 300 php_value max_input_time 300 # unnötige Dateien löschen rm wp-config-sample.php rm readme.html rm liesmich.html rm /wp-admin/install.php # Optional: Neue Sicherheitsschlüssel (Salt) generieren über https://api.wordpress.org/secret-key/1.1/salt/ # und diesen generierten Block in die <strong>wp-config.php</strong> Datei einfügen # #define('AUTH_KEY', '-+jiH||`2);cZjy.Vy5C|!NX{KNv,Ov@=XK|SALR8++C.axK4b(Ep4U_RWAV|Ir;'); #define('SECURE_AUTH_KEY', '.+WZ>Ul&)Qak2uhZ-.(Y^]},n!.&R.VRl~+o*~7*dP{{4s*iyMO7L^{o/#lq7Xs1'); #define('LOGGED_IN_KEY', '_T)TC.YN6r9wxM*lRbjGc0dy2;<nQA+SBk|JYoU[1S~l0xLLBWbK2x+fl<1G*IP$'); #define('NONCE_KEY', 'vVrz#TDgM[,Te(v[hStvF][>ZfI;$K.^ IstOP`k>IfNo3j8h~|2rvxU&%=[eJ@w'); #define('AUTH_SALT', '/ qC?UB4&>H&hy#=:;sP6m 0}[u~oDJGhBdqskc{gY+j1yJU~/>rBL91P8kGtnG_'); #define('SECURE_AUTH_SALT', 'tUd3QTYMV.g|86`=!-?EN_P~N+jB$LwD|q-b?g[G@E!9.,{G2n|1X1_2-+Fv,y=:'); #define('LOGGED_IN_SALT', '?d`pE;|nVH?81n2#@[VYOB__Nh.l:v=4F5_uajQ4jp.,h$Z8#N2DZ}^=|sQi7?d4'); #define('NONCE_SALT', 'C*-+6P_j/o0FTQC1.(GHJ[tXNCpou<RyB.@:mx&spG@{-9< Wk|r!zoJUiwY@:M:'); # Optional die wp-config.php sichern mit folgenden Eintrag in der <strong>.htaccess</strong> Datei: <FilesMatch "(wp-config.php)"> order deny,allow deny from all </FilesMatch> |
Optional ein paar gute Plugins installieren. Hier mal eine kleine Auswahl z.B.:
Schon alt, läuft aber noch „Limit Login Attempts„.
Wenn man sich da selbst aussperrt, einfach in der DB folgenden SQL absetzen:
1 |
UPDATE wp_options SET option_value = '' WHERE option_name = 'limit_login_lockouts' |
Hier noch ein paar:
Optional kann noch ein PDF Export für die Tabellen integriert werden, wie hier beschrieben und auch gleich die Extension für das automatische URL converting.
Optional: PhpMyAdmin
installieren
In /etc/phpmyadmin/apache.conf den Eintrag
1 2 3 4 5 6 7 8 9 |
#<Directory /usr/share/phpmyadmin> # Options FollowSymLinks # DirectoryIndex index.php Require ip 127.0.0.1 10.0.0.0/24 # Apache restart service apache2 restart # Aufruf im Browser (IP)/phpmyadmin # Anmelden mit MySql Datenbankuser und Passwort |
Selbstsignierte SSL Zertifikate für Apache2
erzeugen und installieren
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 |
mkdir .ssl cd .ssl openssl req -new -days 999 -newkey rsa:4096bits -sha512 -x509 -nodes -out server.crt -keyout server.key # Diese Fragen beantworten # Country Name (2 letter code) [AU]:DE # State or Province Name (full name) [Some-State]:Niedersachsen # Locality Name (eg, city) []:Hannover # Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Blog # Organizational Unit Name (eg, section) []:Dept of Blogging # Common Name (e.g. server FQDN or YOUR name) []:kleinhirn.eu # Email Address []:webmaster@yourdomain.com sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private service apache2 restart # SSL Modul aktivieren a2enmod ssl service apache2 restart # Rewrite Modul für später aktivieren a2enmod rewrite service apache2 restart # Status anschauen systemctl status apache2.service # ergänzen der erzeugten Zertifikate in sudo vi /etc/apache2/sites-available/default-ssl.conf # ServerName mydomain.com:443 SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key # Default Seite aktivieren a2ensite default-ssl.conf # Server Restart service apache2 restart # http deaktivieren und https setzen in /etc/apache2/sites-enabled/titled 000-default.conf vi /etc/apache2/sites-enabled/titled 000-default.conf # Inhalt der Datei: ServerName xxx ServerAlias www.xxx Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted ServerAdmin webmaster@xxx.de DocumentRoot /var/www/html/wordpress SSLEngine on SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key #SSLCACertificateFile /home/me/domain.com.crt ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # Test ob der Blog mit https und den Zertifikaten läuft im Browser https://(IP)/wordpress/wp-login.php |
Optional: Testen
welche Ports offen sind und deaktivieren!
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 |
nmap ip # oder sudo nmap -sT -O -v ip # wenn der Port 80 noch offen ist, in vi /etc/apache2/ports.conf # Auskommentieren oder löschen der Zeile # Listen 80 # Wenn der Port 111 rpcbind offen ist (wird für Samba gebraucht), kann der auch mit dem Tool sysv-rc-conf abgeschalte werden # Tool installieren sudo apt-get install sysv-rc-conf # Tool starten sysv-rc-conf # in der letzten Spalte wo das S ist mit der Space Taste ausschalten # in der Zeile mit rpcbind # Rechner restarten reboot # neuer Check mit nmap nmap ip # alles ok, nur die gewünschten Ports sind offen # Checken welche Module installiert sind mit apache2ctl -M # Unnötige module deaktivieren z.B. das status_module (shared) a2dismod status # Server restart service apache2 restart # Checken ob das status modul deaktiviert wurde apache2ctl -M |
Optional: Vorhandenen Blog mit dem WP Plugin
„All In One WP Migration“
exportieren und importieren, wie hier schon mal beschrieben.
Beim export evl. in „Find (text) Replace with (another-text) in the database“ den Eintrag xxx.ALTE-DOMAINE durch YYY-NEUE-DOMAINE ersetzen.
Die *.wpress Datei dann importieren.
Optional testen, welche Apache Version läuft mit:
1 2 |
apachectl -V # Ergebnis: Apache/2.4.10 (Debian) |
Optional, die History löschen, so das die erstellten Passwörter nicht ausgelesen werden können
1 |
history -c |
Super, der WordPress Blog läuft nun verschlüsselt über https 😉