Vagrant-Skript zum Einrichten aller gängigen PHP / WordPress-Versionskombinationen


9

Ich suche nach einer Möglichkeit, schnell und wiederholt eine Test- / Debugging-Umgebung für unser Plugin einzurichten , höchstwahrscheinlich mit Vagrant . Projekte wie VVV konzentrieren sich auf ein Setup für eine einzelne Umgebung (oder auf einige Umgebungen wie Stable / Trunk), während ich nach einem Skript suche, mit dem Umgebungen eingerichtet werden können 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, das ich gefunden habe, sind WordPress Vagrant Boxes, die zumindest PHP-Versionen ausführen, aber vielleicht gibt es etwas Vollständigeres, das dem Mix auch WordPress-Versionen hinzufügt. Vielen Dank.


Sie kennen Travis CI wahrscheinlich . Es gibt ein Skript, mit dem Sie verschiedene Versionen von WordPress und PHP in Ihrem Travis-Build testen können . Natürlich wäre es für einige Debugging-Zwecke besser , so etwas lokal einrichten zu können . Ich kenne kein Vagrant-Skript. Ich weiß, dass Travis phpenvdie verschiedenen PHP-Versionen verwaltet. Vielleicht wäre eine Kombination davon und ein SVN-Checkout des gesamten WordPress-Repos (das alle Versionen unter enthalten /tagswürde) ein Anfang?
JD

1
Was ist mit Docker ? Sie können Bilder mit verschiedenen Umgebungen erstellen und dann Container mit bestimmten Docker-
Dateien

@rafawhs Yep Docker ist das, was ich heute in Betracht ziehen würde.
Borek Bernard

Antworten:


1

Auf der WordPress-Seite ist Basic WordPress Vagrant Environment bereit, mit jeder WordPress-Version zu arbeiten (mit ein wenig Hilfe). Sie müssten noch einen Weg finden, um das 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 sofort zu verwenden; Laden Sie das Projekt herunter oder klonen Sie es wplatest-php55.dev/und führen Sie es ausvagrant up

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

Generieren Sie 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 Vagrant-Umgebungsmaster in das Verzeichnis des Bash-Skripts zieht, eine Site für jede Version im Array klont, die Installationsaufgabe für die Verwendung dieser WP-Version konfiguriert und es Ihnen ermöglicht, eine Datei / einen Ordner anzugeben, die zuvor auf alle Sites kopiert werden sollen du vagrant up.

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

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

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-Umgebung nicht wirklich für die Verarbeitung mehrerer PHP-Versionen eingerichtet ist, die Basic Wordpress Box jedoch möglicherweise, wenn Sie die PHP-Aufgabe anpassen . Ich dachte, ich würde eine Shell eines Skripts hinterlassen, das mehrere PHP-Versionen verarbeitet 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

0

Hast du dir das angeschaut?

puphpet

Wenn es Ihnen beim Erstellen von Konfigurationsdateien hilft. Sieht so aus, als könnten Sie mehrere vhosts einrichten und nach der Initialisierung benutzerdefinierte Befehle ausführen lassen. Sie könnten also alle Ordner, Hosts und Datenbanken einrichten und dann Ihre gewünschten Versionen mit den zugehörigen wp-config-Dateien kopieren? Ein bisschen Setup anfangs, könnte aber funktionieren.

Ich selbst benutze ein Shell-Skript. wp-install www.domain.com

Derzeit funktioniert nur eine Installation, es ist jedoch nicht unmöglich, sie zu konfigurieren. Es sind einige Argumente oder eine zusätzliche Konfigurationsdatei erforderlich. Richten Sie daher mehrere vhosts ein. Wie Sie Vagrant erwähnt haben, gehe ich davon aus, dass das oben Genannte Ihren Bedürfnissen näher kommt.

Viel Glück!


Wenn ich mich nicht irre, kann PuPHPet PHP 5.2 und 5.3 nicht ausführen, sodass es als Testumgebung immer eingeschränkt ist.
Borek Bernard

0

Es hängt alles davon ab, was Sie verwenden möchten und mit welcher Art von Betriebssystem Sie ...

Für Vagabunden finden Sie hier die Automatisierung für die Einrichtung mit VVV: https://github.com/bradp/vv

Und ein paar andere, die auf Vagrant basieren:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

Ich schlage jedoch vor, Pantheon auszuprobieren . Sie können dies alles kostenlos tun und sind in wp-cli, git, behat usw. integriert. Es gibt andere gehostete Plattformen mit diesen Funktionen wie https://www.appfog.com/ und sogar wpengine, glaube ich.

Es hängt jedoch auch davon ab, wie viel Sie von Anfang an einrichten möchten. Wenn Sie sich nur für einen schnellen Weg, um einzurichten Wordpress gibt es Tonnen von Skripten auf Github wie diese oder Verwendung wp-cli.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.