質問: すべての一般的な設定をするvagrantスクリプト php / wordpressのバージョンの組み合わせ 私は私たちのプラグインのためにtesting/debugging environmentをすばやく繰り返し設定する方法を探しています。たぶんvagrantを使います。 _ vvv _ のようなプロジェクトは単一環境のセットアップ(またはstable/trunkのようないくつかの環境)に焦点を当てていますが、私が探しているものは次のような環境をセットアップするスクリプトです。 wp39-php52.local wp40-php52.local wp41-php52.local wp39-php53.local wp40-php53.local など(あなたはアイデアを得る) そんなことありますか?私が見つけた最も近いのは wordpress vagrant boxes です。少なくともphpバージョンを扱っていますが、wordpressバージョンをミックスに追加したものもあるでしょう。ありがとう。
回答: wordpress側では、 基本的なwordpress vagrant環境 は、wordpressのどのバージョンでも(少し手助けをして)動く準備ができています。 phpを設定する方法を見つける必要があるでしょうが、 https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml にヒントがあります。箱から出して使用する。プロジェクトをダウンロードまたはクローンしてwplatest-php55.dev/にし、vagrant upを実行します vagrant host manager をインストールすると、ipがあなたのフォルダに自動的にリンクされますhttp://wplatest-php55.dev/install-wp.shによりwpバージョンから複数の環境を生成アーカイブでwordpressのバージョンを確認してください 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 これは、vagrant環境マスターをbashスクリプトのディレクトリに移動し、アレイ内の各バージョンのサイトを複製し、そのwpバージョンを使用するようにインストールタスクを設定し、ファイル/フォルダを指定できるようにするスクリプトです。 vagrant upの前にすべてのサイトにコピーします。これをファイルinstall-wp.shに入れてから、chmod +x install-wp.shを実行して実行可能にします。これらすべてのボックスを作成するフォルダを見つけて./install-wp.shを実行します。上記の構造を生成します。あなたはすべてのバージョンであなたのプラグインをテストしたいので、スクリプトwp-content/plugins/your-pluginと同じディレクトリにフォルダーを作り、そしてinstall-wp.sh wp-contentを実行してください。ファイル/フォルダは各サイトのルートにコピーされるため、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!" 更新: basic wordpress vagrant environment は実際には複数のphpバージョンを処理するようには設定されていませんが、 basic wordpress box は phpを調整した場合_ task 。私は私が複数のphpバージョンを処理したであろうスクリプトのシェルを残すことを考え出した。#!/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