Support » Allgemeine Fragen » Mehrere WordPress-Installationen auf einemal

  • Gelöst Jonas Aeschlimann

    (@ampluswp)


    Hallo zusammen

    ich gebe WordPress-Workshops. Für jeden Teilnehmer muss ich eine eigene WordPress-Umgebung einrichten. Ich suche nach einer schnellen Möglichkeit, z.B. 10 WordPress-Installationen auf meinem Hoster mit einem Skript oder so einzurichten.

    – ich habe das wp quick install script gefunden, aber das ist nur für „eine“ website auf einmal
    – wordpress multisite ist in meinen augen auch keine option, weil ich ihnen zeigen möchte, wie man plugins, themes etc. verwaltet.

    Hat jemand eine Idee, wie ich mehrere WordPress-Installationen mit Namen und Admin-Benutzern wie user1, user2, user3 etc. einrichten kann?

    Danke! Jonas

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Moderator Hans-Gerd Gerhards

    (@hage)

    Hallo,
    ich kann mir vorstellen, dass man das ganz gut mit WP CLI in einer lokalen Entwicklungsumgebung unter Laragon einrichten kann, z. B. in der folgenden Art. Dazu habe ich ein Script angepasst, das hier zu finden ist. Das Script erstellst du z. B. als wp_install.sh.

    #!/bin/bash
    
    #Double-check you're ready to rock and roll with an update
    # https://n8finch.com/wrote-first-bash-script-implement-wp-cli-managed-sites
    read -r -p "Are you sure you want to install WordPress? [y/N] " response
    
    # username, database-name, sitename
    wpuser='hagege'
    # a web page with the name "Neue Testseite" and the database "test_db" should always be created
    dbname='test_db'
    sitename='Neue Testseite'
    dir='neue_testseite'
    
    	# remove directory (show the process: v)
    	# rm -rv $dir; 
    	
    	# Make a new directory
    	mkdir $dir;
    	
    	# Change directory
    	cd $dir;
    
    	echo "================================================================="
    	echo "Awesome WordPress Installer!!"
    	echo "================================================================="
    
    	# accept user input for the databse name - here deactivated
    	# echo "Database Name: "
    	# read -e dbname
    
    	# accept the name of our website - here deactivated
    	# echo "Site Name: "
    	# read -e sitename
    
    	# download the WordPress core files
    	# php ../wp-cli.phar wp core download
    	php ../wp-cli.phar core download
    
    	# create the wp-config file
    	php ../wp-cli.phar core config --dbname=$dbname --dbuser=root --dbpass=
    	# php ../wp-cli.phar core config --dbname=$dbname --dbuser=root --dbpass=
    
    	# parse the current directory name
    	currentdirectory=${PWD##*/}
    
    	# generate random 12 character password
    	password=$(LC_CTYPE=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 12)
    
    	# delete database
    	php ../wp-cli.phar db drop
    	# create database, and install WordPress
    	php ../wp-cli.phar db create
    	php ../wp-cli.phar core install --url="http://localhost/$currentdirectory" --title="$sitename" --admin_user="$wpuser" --admin_password="$password" --admin_email="postmaster@aachenerkinder.de"
    	# Change User-Password:
    	php ../wp-cli.phar user create User1 user1@example.com --role=administrator --user_pass=Test_2019
    	# german language:
    	php ../wp-cli.phar language core install de_DE
    	php ../wp-cli.phar language core activate de_DE
    	# php ../wp-cli.phar site switch-language de_DE
    
    	# install the _s theme
    	# php ../wp-cli.phar theme install https://github.com/Automattic/_s/archive/master.zip --activate
    
    	# clear
    	php ../wp-cli.phar plugin install updraftplus --activate
    	php ../wp-cli.phar updraftplus restore 99d2af14ce61
    
    	echo "================================================================="
    	echo "Installation is complete. Your username/password is listed below."
    	echo ""
    	echo "Username: $wpuser"
    	echo "Password: $password"
    	echo ""
    	echo "================================================================="
    
    read -p "FINISHED - Press [Enter] key to continue..."

    Für Deine Zwecke müsste das noch etwas angepasst werden.
    Zu Laragon habe ich hier einen Beitrag erstellt.

    Nachtrag: An sich ist das hier off topic, da wir uns hier um WordPress-Anwendungsfragen kümmern.

    Viele Grüße
    Hans-Gerd

    Moderator Bego Mario Garde

    (@pixolin)

    Das hängt ein wenig von der Schulungs-Umgebung ab. Ich hab schon mal in einem Schulungsraum gesessen und ewig darauf gewartet, bis in einem extrem langsamen Netzwerk ein lokaler Webserver (sowas wie Laraogn) auf alle Schulungsrechner verteilt wurde. Im Zweifelsfall gibt es noch Einschränkungen, die z.B. für einen lokalen Domain-Namen Administratoren-Rechte erfordern und wenn du das erst fünf Minuten nach Beginn des Kurses feststellst … alles schon mitgemacht, war nicht so lustig.

    Inzwischen setze ich deshalb für kleinere Schulungen (zehn, zwölf Teilnehmende) rasch einen LAMP-Stack auf DigitalOcean auf – kostet in der kleinsten, völlig ausreichenden Version 5,– US-$ im Monat, abgerechnet wird aber stundenweise. Dort lege ich dann zehn + 1 (Dozent) Datenbanken an, die alle einem Datenbank-User wordpress zugewiesen sind und richte im Apache2-Server mit einem Bash-Skript zehn virtuelle Hosts an.
    Danach lasse ich dann ein Batch-Skript laufen, in dem ich mehrere Verzeichnisse in /var/www anlege, in den Verzeichnissen mit WP-CLI eine wp-config.php erstelle und dann die Installation laufen lasse. Damit die Teilnehmenden alle den gleichen Stand haben, wird eine Auswahl an Themes und Plugins mit WP-CLI vorinstalliert, aber (aus didaktischen Gründen) noch nicht aktiviert. Ich lade auch per WP-CLI ein paar Bilder in der Mediathek hoch, mit denen gleich bei der ersten Webseite gearbeitet werden kann.

    Im Prinzip also sehr, sehr ähnlich wie bei @hage, nur dass ich mehr mit Arrays im Bashscript arbeite, um die Webseiten gleich in den Verzeichnissen wordpress01 bis wordpress10 zu installieren. Sinngemäß sowas wie …

    for i in {01..10}
    do
       mkdir /var/www/wordpress$i
       cd /var/www/wordpress$i
       wp core download
       wp config create --dbname=wordpress$i --dbuser=wordpress --dbpass=wp#$1 --locale=de_DE
       wp core install --url=tn$i.wp-kurs.de --title="WordPress für Einsteiger" --admin_user=admin --admin_password=password --admin_email=user$i@wp-kurs.de
    done
    

    Der letzte Schritt kann aus ausbleiben, wenn die Teilnehmenden tatsächlich selber installieren sollen. Da die meisten Webhoster aber One-Click-Installationen vorgeben, erspare ich das (auch aus Zeitgründen) den Teilnehmenden.

    Ich verwende für alle Teilnehmenden die (für den produktiven Einsatz natürlich nicht zu emfehlenden) Username/Passwort-Kombination von admin und password, weil erfahrungsgemäß sonst großes Durcheinander entsteht, wenn jeder einen anderen Benutzernamen und ein anderes Passwort verwendet. Auch die Zugangsdaten zur Datenbank sind nur eingeschränkt empfehlenswert. Gleichzeitig versehe ich aber alle Websites mit einem serverseitigen Passwortschutz (.htpasswd) und der komplette Server wird eine Woche nach Kursbeginn komplett gelöscht. (So lange können die Teilnehmenden auch noch von zuhause Dinge ausprobieren – ich finde das einen Vorteil gegenüber lokalen Webserver-Installationen auf dem Schulungs-Computer, an den die Teilnehmenden nach Verlassen des Raums nicht mehr drankommen.

    Eine Multisite-Installation macht nur dann Sinn, wenn z.B. der Umgang mit dem Block-Editor geübt und auf fertig vorinstallierte Themes und Plugins zugegriffen werden soll. Für einen Einsteigerkurs fände ich das auch nicht optimal. Mit individuellen WordPress-Instanzen auf Subdomains klappt es aber ganz gut, vor allem wenn die Teilnehmenden einen ausgedruckten Serienbrief mit „ihrer“ URL, „ihrem“ Link zum Anmeldeformular und „ihren“ Zugangsdaten bekommen.

    Thread-Ersteller Jonas Aeschlimann

    (@ampluswp)

    Alles klar, keine weiteren Fragen. Genau was ich gesucht habe.

    Vielen herzlichen Dank!

    Moderator Hans-Gerd Gerhards

    (@hage)

    @ampluswp
    dann wäre es noch schön, wenn du das Thema als gelöst markierst. Danke.

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)