pw yet another blog

Bloginstallation in unter 10 Sekunden

Hi ihr,

wie ihr wisst arbeite ich gerne mit WordPress-Blogs, da sie einerseits sehr flexibel und mächtig andererseits aber auch einfach einsetzbar sind.

Da ich öfter mal neue Installationen fahre und das auf mehreren Domains gleichzeitig, hab ich mir eben ein simples Shellscript geschrieben, welches die ersten Schritte erledigt:
1.) Mein Archiv entpacken (bereits mit Plugins und Themes gepackt)
2.) Datenbanknutzer, die Datenbank selbst und mit den Rechten erzeugen
3.) Rechte setzen

Hier das Script:

#!/bin/bash
# Konfiguration
wp="wp-2.6.2.tar.gz"
dir="/home/pw/www-projects"
 
domain=`echo $1 | cut -f1 -d /`
name=`echo $1 | cut -f1 -d .`
pass=`apg -n1 -m13`
 
echo "Installing $wp on $domain"
tar -xzf ~pw/$wp -C $dir/$domain/
 
echo "Setting up the database ..."
 
echo "Creating user $name..."
echo "CREATE USER '$name'@'localhost' IDENTIFIED BY '$pass';" | mysql --user=root --password="XY"
 
echo "Granting usage... "
echo "GRANT USAGE ON *.* TO '$name'@'localhost' IDENTIFIED BY '$pass' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;" | mysql --user=root --password="XY"
 
echo "Creating database... "
echo "CREATE DATABASE \`$name\`;" | mysql --user=root --password="XY"
 
echo "Granting privileges... "
echo "GRANT ALL PRIVILEGES ON \`$name\`.* TO '$name'@'localhost';" | mysql --user=root --password="XY"
 
echo "Writing wp-config.php... "
echo "<?php
define('DB_NAME', '$name');
define('DB_USER', '$name');
define('DB_PASSWORD', '$pass');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY', '`apg -m 73 -n1`');
define('SECURE_AUTH_KEY', '`apg -m 73 -n1`');
define('LOGGED_IN_KEY', '`apg -m 73 -n1`');
\$table_prefix  = '`echo $name | cut -c1-3`_';
define ('WPLANG', 'de_DE');
if(!defined('ABSPATH')) define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
?>" >> $dir/$domain/wp-config.php
 
echo "chmodding..."
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*/*.*
chmod 444 $dir/$domain/*/*/*.*
chmod 444 $dir/$domain/*/*.*
chmod 444 $dir/$domain/*.*

Dabei wird das Skript mit der Domain als einziger Parameter aufgerufen, in der es entpackt und installiert werden soll, z.B.: sh bin/wp.sh antioffline.de
Dann schiebt er bei mir alles in www-projects/antioffline.de, weil mein Server so konfiguriert ist.
Ansonsten verwendet er noch apg um die Passwörter und Secretkeys zu generieren.

Das mit den Rechten kann man eleganter lösen, aber this works for me ;-) .
Er setzt somit alle Dateien auf “nur lesen” für alle.
DAS ist die Empfehlung, die ich jedem machen kann.
Wenn die Dateien nicht schreibbar sind, dann kann sie auch kein Spammer/Cracker/Idiot verändern und sein Viagra-Zeug reinpacken. Wie man seinen Blog zu 100% sicher macht, kann man auch hier nochmal nachlesen.

Bei Fragen wie immer einfach schreiben, ansonsten hoffe ich einen kleinen Denkansatz gegeben haben zu können.

Beste Grüße
Peter

About PW

Your email is never shared.
Required fields are marked *