Tüm yaygın PHP / WordPress sürüm kombinasyonlarını ayarlamak için vagrant betiği


9

Muhtemelen Vagrant kullanarak, eklentimiz için test / hata ayıklama ortamını hızlı ve tekrar tekrar kurmak için bir yol arıyorum . VVV gibi projeler tek ortam kurulumuna (veya sabit / gövde gibi birkaç ortama) odaklanırken, aradığım şey aşağıdaki gibi ortamları kuracak bir komut dosyasıdır:

  • wp39-php52.local
  • WP40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • WP40-php53.local
  • vb. (fikri anlarsınız)

Böyle bir şey var mı? Bulduğum en yakın, en azından PHP sürümlerini yapan WordPress Vagrant Boxes ama belki de karışıma WordPress sürümlerini ekleyen daha eksiksiz bir şey var. Teşekkürler.


Muhtemelen Travis CI'yi biliyorsunuzdur . Orada size Travis yapı içinde WordPress ve PHP çeşitli versiyonları karşı test sağlayacak bir senaryo . Tabii ki, böyle bir şeyi yerel olarak kurabilmek bazı hata ayıklama amaçları için daha iyi olurdu. Bir Vagrant senaryosu bilmiyorum. Travis'in phpenvfarklı PHP sürümlerini yönetmek için kullandığını biliyorum . Belki bunun bir kombinasyonu ve tüm WordPress repo'sunun (altındaki tüm sürümleri içerecek olan) bir SVN ödemesi /tagsbir başlangıç ​​olur?
JD

1
Docker ne olacak ? Sen inşa edebilirsiniz görüntüleri daha sonra oluşturmak / çalışan farklı ortamlarda ve konteynerleri özgü olan Dockerfiles
rafawhs

@rafawhs Yep Docker bugün düşüneceğim şey.
Borek Bernard

Yanıtlar:


1

WordPress tarafında, Temel WordPress Vagrant Ortamı herhangi bir WordPress sürümü ile çalışmaya hazırdır (biraz yardım ile). Hala PHP yapılandırmak için bir yol bulmak gerekir ama bir ipucu var https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml.

Kutusundan çıkarmak için; Projeyi indirin veya kopyalayın wplatest-php55.dev/ve çalıştırınvagrant up

Vagrant Host Manager'ı kurmak IP'yi otomatik olarak klasörünüze bağlayacaktırhttp://wplatest-php55.dev/

İnstall-wp.sh aracılığıyla WP sürümlerinden birden çok ortam oluşturun

Olası WordPress sürümleri için arşivi kontrol edin 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

İşte Vagrant ortam yöneticisini bash komut dosyasının dizinine çeken, dizideki her sürüm için bir siteyi klonlayan, yükleme görevini bu WP sürümünü kullanacak şekilde yapılandıran ve daha önce tüm sitelere kopyalanacak bir dosya / klasör belirtmenizi sağlayan bir komut dosyası siz vagrant up.

Bir dosyada koy install-wp.shsonra çalıştırmak chmod +x install-wp.shçalıştırılabilir hale getirmeniz. Tüm bu kutuları oluşturmak ve çalıştırmak istediğiniz bir klasör bulun ./install-wp.sh. Yukarıdaki yapıyı oluşturur.

Eklentinizi tüm sürümlerde test etmek istediğiniz için komut dosyasıyla aynı dizinde bir klasör oluşturun ve wp-content/plugins/your-pluginçalıştırın install-wp.sh wp-content. Dosya / klasör her sitenin kök dizinine kopyalanır, bu yüzden öneriyorum 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!"

Güncelleme:

Bu çıkıyor Temel WordPress Serseri Çevre birden php versiyonlarını ancak işlemek için kurulum gerçekten değil Temel Wordpress Kutusu ayarlamak durumunda olabilir PHP görevi . Ben birden fazla php sürümleri ele olurdu bir script kabuk bırakacağımı düşündüm.

#!/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

Buna baktın mı?

puphpet

Yapılandırma dosyaları oluşturmanıza yardımcı olmak için görünürse. Görünüşe göre birden çok vhost ayarlayabilir ve özel komutları başlangıçta yürütmesini sağlayabilirsiniz. Böylece tüm klasörleri, ana bilgisayarları ve veritabanlarını ayarlayabilir ve daha sonra istediğiniz sürümleri ilişkili wp-config dosyalarıyla kopyalayabilir misiniz? Başlangıçta biraz kurulum, ancak işe yarayabilir.

Kabuk betiği kullanıyorum, kendim. wp-kurulum www.etkialani.com

Şu anda sadece bir yükleme için çalışıyor, ancak bazı argümanlar veya ek bir 'config' dosyası almasını yapılandırmak imkansız olmaz, bu yüzden birden fazla vhost oluşturun. Vagrant'tan bahsettiğiniz gibi, yukarıdakilerin ihtiyaçlarınızı karşılamaya daha yakın olduğunu varsayacağım.

İyi şanslar!


Yanılmıyorsam PuPHPet PHP 5.2 ve 5.3 yapamaz, bu yüzden her zaman bir test ortamı olarak sınırlı olacaktır.
Borek Bernard

0

Her şey ne kullanmak istediğinize ve hangi işletim sistemi ile geliştireceğinize bağlı ...

Vagrant için, VVV ile kurulum için otomasyon: https://github.com/bradp/vv

Ve bir kaç tane daha vagrant üzerine inşa edildi:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

Ancak, panteon denemenizi öneririm . Tüm bunları ücretsiz olarak yapmanızı sağlar ve wp-cli, git, behat, vb ile entegrasyona sahiptir. Https://www.appfog.com/ ve hatta wpengine gibi bu özelliklere sahip diğer barındırılan platformlar vardır .

Yine de başlangıçtan ne kadar kurmak istediğinize bağlıdır. Yalnızca wordpress kurmak için hızlı bir yol arıyorsanız gibi github komut ton vardır bu da sadece kullanım wp-cli.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.