In einer schlaflosen Nacht kam mir dann so die eine oder andere Idee, dies etwas umzubauen und aus den vier Scripten ein Einzelnes zu machen, welches alle vier Szenarien behandelt. Gestartet wird es komplett ohne Parameter, alle notwendigen Informationen werden während des Scriptverlaufes abgefragt.

Features

Alle Informationen zu Datenbank und Zielverzeichnis werden während des Scriptverlaufes abgefragt. Zu diesen Informationen gehören (in der aufgezählten Reihenfolge):

  • Angabe des Zielverzeichnisses.
    (Dies wird, wenn nötig, nachbearbeitet. Leerzeichen werden zu Bindestrichen, deutsche Umlaute werden ausgeschrieben [ä -> ae, ü -> ue, ö -> oe, ß -> ss] und Sonderzeichen entfernt. Das Zielverzeichnis wird auch komplett klein geschrieben)
  • Abfrage, ob bereits eine Datenbank angelegt wurde.
  • Abfrage der Datenbankinformationen (Host, Nutzer, Name und Passwort der Datenbank) sofern noch keine Datenbank angelegt wurde.
  • Bei der Passwortabfrage gibt es die Möglichkeit ein eigenes Passwort zu definieren, oder ein zufälliges Passwort generieren zu lassen.
  • Zufälliges Passwort mit einer Länge zwischen 8 und 32 Zeichen wählbar.
  • Automatischer Download der aktuellsten WordPress-Version.
  • Automatisches Ablegen von WordPress im vorher angegebenen Verzeichnis.
  • Erstellen der Datenbank, sofern gewünscht.
  • Ausgabe der Datenbankdaten, wenn eine Datenbank erstellt wurde.
  • Ausgabe eines Beispiellinks zur neuen WordPress-Installation.
  • Abbruch des Scriptes zu jedem Zeitpunkt durch Eingabe von ‚exit‘ möglich.

Wie geht es nach dem Script weiter

Nach dem das Script durchgelaufen ist sind nur noch wenige Schritte notwendig um die Installation zu beenden.

  • Übernehmen der Datenbankdaten in die Datei wp-config.php, welche im Zielverzeichnis zu finden ist.
  • Aufruf der neuen WordPress-Installation im Webbrowser um dort den letzten Schritten zu folgen.

Changelog

Version 2.0.1-modified (13. Januar 2011)

  • Zusammenführung von vier Scripten.
  • Entwurf einer Nutzerführung durch die Optionen.
  • Abarbeiten der Nutzereingaben.
  • Absichern der Benutzereingaben

Vorbereitung

  • get-wordpress.sh herunterladen.
  • Script in des Serverroot des neuen WordPress-Projektes kopieren.
  • Script ausführbar machen (chmod 755 get-wordpress.sh).

Benutzung

Um das Script zu nutzen ist nicht viel von Nöten und man muss auch kein Hacker sein dafür. Aufgerufen wird das Script einfach mit ./get-wordpress.sh in der Linuxkonsole. Danach wird der Benutzer durch die Eingaben geführt. Das Script kann bei jeder Benutzerabfrage durch Eingabe von ‚exit‘ beendet werden.

Voraussetzungen

Da es sich hier um ein Shell-/Bash-Script handelt, ist natürlich eine Linuxkonsole vorausgesetzt. Diese sollte natürlich UTF-8 als ihren bevorzugten Zeichensatz haben. Das wird gebraucht, um eventuelle Umlaute in der Pfadangabe des Zielverzeichnisses übersetzen zu können. Natürlich sollte auf diesem Server auch ein Apache mit PHP und mySQL laufen. Letzteres, also mySQL, wird benötigt um die Datenbank anlegen zu können, falls diese noch nicht vorhanden ist und vom Nutzer gewünscht wird.

Die Installation weiterer Programme ist nicht notwendig, da das Script auf Standardkomponenten eines Linux-Systemen zurückgreift.

Quelltext

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
#!/bin/bash
#   get-wordpress
#   A modification of get-wp-2 from Martin Gebhardt
#   Modified by: H.-Peter Pfeufer

Version=2.0.1-modified

# Verzeichnisabfrage
WPDIR=''
while [ "$WPDIR" == '' ];
do
    clear
    echo -e "Willkommen beim Vor-Installationsassistent von WordPress"
    echo -e "von Marti Gebhardt (http://saitensprunk.de/) und H.-Peter Pfeufer(http://ppfeufer.de)."
    echo -e "Version ${Version}\n"

    echo -e "Bitte geben Sie ein Verzeichnis an, in welches WordPress installiert werden soll."
    echo -e "Oder 'exit' um das Script zu beenden."
    echo -n "Verzeichnis: "
    read -e WPDIR

    if [ "$WPDIR" == "exit" ];
    then
        exit;
    fi
done

# sanitze Directory
export WPDIR="`echo $WPDIR | sed 's/\ä/ae/g;s/\Ä/ae/g;s/\ö/oe/g;s/\Ö/oe/g;s/\ü/ue/g;s/\Ü/ue/g;s/\ß/ss/g;s/\ /-/g' | tr '[:upper:]' '[:lower:]'`"
WPDIR=${WPDIR//[^a-zA-Z0-9_-]/}

# Gibt es schon eine Datenbank?
$DB_QUESTION=''
NEXT_STEP=false;
while [ $NEXT_STEP == false ];
do
    clear
    echo -e "Haben Sie bereits eine Datenbank für dieses Projekt eingerichtet"
    echo -e "[J]a, [N]ein, [e]xit)"
    echo -n "Antwort: "
    read -n 1 DB_QUESTION

    export DB_QUESTION="`echo $DB_QUESTION | tr [:upper:] [:lower:]`"

    if [  "${DB_QUESTION}" == "j" -o "${DB_QUESTION}" == "n" -o "${DB_QUESTION}" == "e" ];
    then
        NEXT_STEP=true;
    else
        NEXT_STEP=false;
    fi
done

if [ "${DB_QUESTION}" == "e" ];
then
    exit
elif [ "${DB_QUESTION}" == "n" ];
then
    # Datenbankinformationen einsammeln
    DB_HOST=''
    DB_NAME=''
    DB_USER=''
    DB_PASSWORD=''
    DB_ADMIN='root'
    DB_ADMIN_PASSWORD=''

    # Datenbankserver
    while [ "$DB_HOST" == '' ];
    do
        clear
        echo -e "Bitte geben sie die Datenbankinformationen an."
        echo -e "'exit' um abzubrechen."
        echo -n "Datenbankserver: "
        read -e DB_HOST

        if [ "$DB_HOST" == "exit" ];
        then
            exit;
        fi
    done

    # Datenbankname
    while [ "$DB_NAME" == '' ];
    do
        clear
        echo -e "Bitte geben sie die Datenbankinformationen an."
        echo -e "'exit' um abzubrechen."
        echo -n "Datenbankname: "
        read -e DB_NAME

        if [ "$DB_NAME" == "exit" ];
        then
            exit;
        fi
    done

    # Datenbanknutzer
    while [ "$DB_USER" == '' ];
    do
        clear
        echo -e "Bitte geben sie die Datenbankinformationen an."
        echo -e "'exit' um abzubrechen."
        echo -n "Datenbanknutzer: "
        read -e DB_USER

        if [ "$DB_USER" == "exit" ];
        then
            exit;
        fi
    done

    # Datenbankpasswort
    clear
    echo -e "Möchten Sie ein Passwort für die Datenbank vergeben?"
    echo -e "(Enter drücken um ein zufälliges Passwort zu generieren, 'exit' um abzubrechen.)"
    echo -n "Passwort: "
    read -e DB_PASSWORD

    if [ "$DB_PASSWORD" == "exit" ];
    then
        exit
    fi

    if [ "$DB_PASSWORD" == '' ];
    then
        # Generating random password
        PASSWORD_LEINGHT=0
        while [ "${PASSWORD_LEINGHT}" -lt 8 -o "${PASSWORD_LEINGHT}" -gt 32 ] ;
        do
            clear
            echo -e "Wieviele zeichen soll das Passwort haben? (zwischen 8 und 32 Zeichen)"
            echo -e "'exit' um abzubrechen."
            echo -n "Anzahl Zeichen: "
            read -e PASSWORD_LEINGHT

            if [ "$PASSWORD_LEINGHT" == "exit" ];
            then
                exit
            fi
        done

        STR0="$$"
        POS=2
        STR1=$( echo "$STR0" | md5sum | md5sum )

        DB_PASSWORD="${STR1:$POS:$PASSWORD_LEINGHT}" # Zufallspasswort
    fi

    # Setup der MySQL Datenbank
    echo "Setup der MySQL-Datenbank"
    mysql -u$DB_ADMIN -p$DB_ADMIN_PASSWORD mysql << EOF
    CREATE DATABASE \`$DB_NAME\`;GRANT USAGE ON *.* TO \`$DB_USER\`@\`$DB_HOST\` IDENTIFIED BY "$DB_PASSWORD" WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,LOCK TABLES,CREATE TEMPORARY TABLES ON \`$DB_NAME\`.* TO \`$DB_USER\`@\`$DB_HOST\`;
EOF

fi

# WordPress downloaden, entpacken und in das angegebene Verzeichnis ablegen
clear
echo -e "Beginne Download von wordpress.org..."
wget http://static.wordpress-deutschland.org/de-edition/latest.zip

echo -e "Donwload abgeschlossen!"
echo -e "Entpacke WordPress..."
unzip latest.zip > unzip.log 2>&1
echo -e "\nEntpacken abgeschlossen!"

echo -e "Ordner wird gespeichert.."
mv wordpress $WPDIR
echo -e "Ordner gespeichert als $WPDIR"

echo -e "\nLösche Installationsdateien"
rm latest.zip
echo -e "Datei "latest.zip" wurde erfolgreich entfernt!\n"

clear
echo -e "Folgende Einstellungen wurden für Sie gespeichert\n"

if [ "${DB_QUESTION}" == "n" ];
then
    echo -e "MySQL-Host: $DB_HOST"
    echo -e "Datenbankname: $DB_NAME"
    echo -e "Benutzername: $DB_USER"
    echo -e "Passwort: $DB_PASSWORD"
fi

echo -e "Blogadresse: http://ihredomain.tld/$WPDIR\n"
echo -e "Viel Spaß mit WordPress"

Anmerkungen

Dieses Script ist komplett OpenSource und darf ohne Einschränkungen für nicht gewerbliche Zwecke verändert und verwendet werden. Bei Änderungen wäre es schön, wenn ihr Martin und auch mich darüber informiert und unsere Namen nicht aus dem Script entfernt. Hat was mit der Creative Commons Lizenz zu tun, unter der Martin das Ganze gestellt hat.

Die Nutzung des Scriptes geschieht auf eigene Gefahr. Trotz vieler Tests übernehmen wir keinerlei Haftung für eventuell auftretende Schäden an Systemen oder Datenbanken.

Ansonsten bleibt mir nur zu sagen:
Viel Spaß :-)

Eine Meinung zu “Schnell mal WordPress installieren mit get-wordpress.sh

  1. Schau dir mal den Weblink (http://blog.murawski.ch/2010/01/wordpress-autoinstaller-fur-confixx-inkl-auto-ftp-plugin/) an … Grundsätzlich könnte man ja auch gleich die Configurations Datei fertig schreiben und die verschiedenen SALT generieren und reinhauen etc.

    Ich habe gleich auch noch die Plugins reingehauen wo ich Jedem empfehle.
    Mein Script ist zwar gemacht für Confixx, aber wenn man dir Parameter richtig übergeben würde, würde auch das laufen.

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>