Vagrant Skript um alle gängigen PHP / WordPress Versionskombinationen einzurichten

Ich suche nach einer Möglichkeit, die Test- / Debugging-Umgebung für unser Plugin schnell und wiederholt einzurichten, höchstwahrscheinlich mit Vagrant . Projekte wie VVV konzentrieren sich auf ein Single-Environment-Setup (oder einige Umgebungen wie Stable / Trunk), während ich nach einem Skript suche, das Umgebungen wie:

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • usw. (Sie bekommen die Idee)

Gibt es so etwas? Das nächste, was ich gefunden habe, ist WordPress Vagrant Boxes, die zumindest PHP-Versionen enthält, aber vielleicht gibt es etwas Kompletteres, das auch WordPress-Versionen zum Mix hinzufügt. Vielen Dank.

Solutions Collecting From Web of "Vagrant Skript um alle gängigen PHP / WordPress Versionskombinationen einzurichten"

Auf der WordPress-Seite der Dinge ist Basic WordPress Vagrant Environment bereit, mit jeder WordPress-Version zu arbeiten (mit ein wenig Hilfe). Sie müssten immer noch einen Weg finden, PHP zu konfigurieren, aber es gibt einen Hinweis in https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml .

Um es aus der Box zu verwenden; Laden Sie das Projekt herunter oder klonen Sie es auf wplatest-php55.dev/ und führen Sie den vagrant up

Durch die Installation von Vagrant Host Manager wird die IP automatisch mit Ihrem Ordner verlinkt http://wplatest-php55.dev/

Generiere mehrere Umgebungen aus WP-Versionen über install-wp.sh

Überprüfen Sie das Archiv auf mögliche WordPress-Versionen https://wordpress.org/download/release-archive/

 # PWD (script directory) # ├── common_folder # ├── wp39-php55.dev # │ └── site/common_folder # ├── wp42-php55.dev # │ └── site/common_folder # └── wp431-php55.dev # └── site/common_folder 

Hier ist ein Skript, das den Master der Vagrant-Umgebung in das Verzeichnis des Bash-Skripts zieht, eine Site für jede Version im Array klont, die Installationsaufgabe zur Verwendung dieser WP-Version konfiguriert und Ihnen erlaubt, eine Datei / einen Ordner anzugeben, die zuvor auf alle Sites kopiert werden soll du vagrant up .

Setzen Sie dies in eine Datei install-wp.sh und führen Sie chmod +x install-wp.sh , um es ausführbar zu machen. Suchen Sie einen Ordner, in dem Sie alle diese Felder erstellen möchten, und führen Sie ./install-wp.sh . Es wird die obige Struktur generieren.

Da Sie Ihr Plugin in allen Versionen testen möchten, erstellen Sie einen Ordner im selben Verzeichnis wie das Skript wp-content/plugins/your-plugin und führen install-wp.sh wp-content dann install-wp.sh wp-content . Die Datei / der Ordner wird in die Wurzel jeder Site kopiert, weshalb ich wp-content vorschlage.

install-wp.sh

 #!/bin/bash # # Author: Jesse Graupmann @jgraup - http://www.justgooddesign.com - 2015 # # Create multiple WordPress sites based on version numbers in array. # # ( OPTIONAL ) # Copy common file/folder to all sites - Pass as parameter $1 # # Each site runs in a Vagrant Environment: # https://github.com/ideasonpurpose/basic-wordpress-vagrant # # Best if used with: # https://github.com/smdahlen/vagrant-hostmanager # # PWD (script directory) # ├── common_folder # ├── wp39-php55.dev # │ └── site/common_folder # ├── wp42-php55.dev # │ └── site/common_folder # └── wp431-php55.dev # └── site/common_folder # WordPress Versions versions=( 3.9 4.2 4.3.1 ) # Move to the current directory base=$(pwd); cd $base # Vagrant Environment remote_master="https://github.com/ideasonpurpose/basic-wordpress-vagrant/archive/master.zip" vagrant_master_zip=$base/basic-wordpress-vagrant.zip # Download Latest Environment - overwrite file for latest wget -v -O $vagrant_master_zip $remote_master # Loop through version #s for VERSION in "${versions[@]}" ; do flatv="${VERSION//.}" dirname=wp$flatv-php55.dev # Clone Environment echo -e "\nCloning to: $base/$dirname\n" mkdir -p $base/$dirname tar -zxvf $vagrant_master_zip -C $base/$dirname --strip-components=1 # WordPress Versions # Archives: https://wordpress.org/download/release-archive/ # Version: https://wordpress.org/wordpress-{{ wp-version }}.tar.gz # Latest: https://wordpress.org/latest.tar.gz # Path to Ansible task yml=$(cat $base/$dirname/ansible/roles/wordpress/tasks/install.yml) ### REPLACE THE ANSIBLE WP VERSION w/OUR VERSION wp_url_latest="https:\/\/wordpress.org\/latest.tar.gz" wp_url_version="https://wordpress.org/wordpress-$VERSION.tar.gz" echo "${yml/$wp_url_latest/$wp_url_version}" > $base/$dirname/ansible/roles/wordpress/tasks/install.yml # (OPTIONAL) Copy common file/folder to all sites! # pass as argument to .sh # # Example Folder: # Make a common wp-content folder, then run install with # # ./install-wp.sh wp-content # # Example File: # Make a text file, then run install with # # ./install-wp.sh my_file.txt # common_dest=$base/$dirname/site/ # Copy Folder if [ -d "$1" ]; then echo "Copying $1 --> $common" # Directory must exist if [ -d "$1" ]; then folder_name=$(basename $1) mkdir -p $common_dest/$folder_name; fi cp -r $1 $common_dest # or File elif [ -f "$1" ]; then echo "Copying $1 --> $common_dest" file_name=$(basename $1) cp $1 $common_dest/$file_name fi ## Create doc for quick glance at version number dest="$base/$dirname" remotewpzip="https://wordpress.org/wordpress-$VERSION.tar.gz" txt=$dest/download-wp-$VERSION.txt touch $txt printf "WordPress Version: $VERSION - https://wordpress.org/download/release-archive/\n\nDownload Zip: $remotewpzip\n" > $txt done # The rest is just for show echo -e "\nDone!\n\nNow just run 'vagrant up' in any of these:\n" for VERSION in "${versions[@]}" ; do flatv="${VERSION//.}" dirname=wp$flatv-php55.dev echo -e "\t"$base/$dirname "\thttp://"$dirname done echo -e "\nMore Vagrant env info @ https://github.com/ideasonpurpose/basic-wordpress-vagrant" echo -e "Best if used with https://github.com/smdahlen/vagrant-hostmanager\n\nENJOY!" 

Aktualisieren:

Es stellt sich heraus, dass die Basic WordPress Vagrant Environment nicht wirklich eingerichtet wurde, um mehrere PHP Versionen zu verarbeiten, aber die Basic WordPress Box könnte sein, wenn Sie die PHP Aufgabe anpassen. Ich dachte, ich würde eine Shell eines Skripts hinterlassen, das mehrere PHP-Versionen behandelt hätte.

 #!/bin/bash ############################################ # # PWD (script directory) # ├── wp39-php55.dev # ├── wp42-php55.dev # └── wp431-php55.dev # ############################################ # WordPress Versions versions=( 3.9 4.2 4.3.1 ) # PHP Versions pversions=( 5.4 5.5 5.6 ) ############################################ # Move to the current directory base=$(pwd); cd $base ############################################ # PHP Loop for PVERSION in "${pversions[@]}" ; do pflatv="${PVERSION//.}" echo -e "==> PHP: $PVERSION\n" # WordPress loop for VERSION in "${versions[@]}" ; do flatv="${VERSION//.}" ############################################ dirname=wp$flatv-php$pflatv.dev ############################################ # Environment echo -e "\t"$base/$dirname "\thttp://"$dirname mkdir -p $base/$dirname ############################################ # WordPress Versions # Archives: https://wordpress.org/download/release-archive/ # Version: https://wordpress.org/wordpress-{{ wp-version }}.tar.gz # Latest: https://wordpress.org/latest.tar.gz ############################################ wp_url_latest="https:\/\/wordpress.org\/latest.tar.gz" wp_url_version="https://wordpress.org/wordpress-$VERSION.tar.gz" # Download WP echo -e "\tDownload WP: $wp_url_version" ############################################ # PHP Packages at https://launchpad.net/~ondrej # You can get more information about the packages at https://deb.sury.org # For PHP 5.6 use: ppa:ondrej/php5-5.6 # For PHP 5.5 use: ppa:ondrej/php5 # For PHP 5.4 use: ppa:ondrej/php5-oldstable ############################################ # Config PHP echo -e "\tConfigure PHP: $PVERSION\n" done # WordPress version done # PHP version exit 1 

Hast du das angeschaut?

Puppet

If scheint Ihnen beim Erstellen von Konfigurationsdateien zu helfen. Sieht so aus, als könnten Sie mehrere Vhosts einrichten und benutzerdefinierte Befehle post-init ausführen lassen. Sie könnten also alle Ordner, Hosts und databaseen einrichten und dann Ihre gewünschten Versionen mit den zugehörigen wp-config-Dateien kopieren? Ein bisschen eingerichtet, aber könnte funktionieren.

Ich benutze ein Shell-Skript, ich selbst. wp-installieren http://www.domain.com

Momentan funktioniert es nur für eine Installation, aber es wäre nicht unmöglich es zu konfigurieren. Nimm einige Argumente oder eine zusätzliche Konfigurationsdatei, um mehrere Vhosts einzurichten. Wie Sie Vagrant erwähnt haben, nehme ich an, dass das oben genannte Ihren Bedürfnissen näher kommt.

Viel Glück!

Alles hängt davon ab, was Sie verwenden möchten und welche Art von Betriebssystem Sie entwickeln werden …

Für Landstreicher, hier ist Automatisierung für die Einrichtung mit VVV: https://github.com/bradp/vv

Und ein paar andere bauten auf Landstreicher auf:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

Ich schlage jedoch vor, Pantheon auszuprobieren . Sie können all das kostenlos nutzen und haben eine Integration mit wp-cli, git, behat usw. Es gibt andere gehostete Plattformen, die diese functionen haben, wie https://www.appfog.com/ und sogar wpngine, glaube ich.

Es hängt auch davon ab, wie viel Sie von Anfang an einrichten möchten. Wenn Sie nur nach einer schnellen Möglichkeit suchen, wordpress einzurichten, gibt es so viele Skripte auf github oder verwenden Sie einfach wp-cli.