Về phía WordPress, Basic WordPress Vagrant Môi trường sẵn sàng hoạt động với bất kỳ phiên bản WordPress nào (với một chút trợ giúp). Bạn vẫn sẽ cần tìm cách định cấu hình PHP nhưng có một gợi ý https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml
.
Để sử dụng nó ra khỏi hộp; Tải xuống hoặc sao chép dự án wplatest-php55.dev/
và chạyvagrant up
Cài đặt Vagrant Host Manager sẽ tự động liên kết IP với thư mục của bạnhttp://wplatest-php55.dev/
Tạo nhiều môi trường từ các phiên bản WP thông qua install-wp.sh
Kiểm tra kho lưu trữ cho các phiên bản WordPress có thể 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
Đây là tập lệnh kéo chủ môi trường Vagrant vào thư mục của bash script, sao chép một trang web cho mỗi phiên bản trong mảng, định cấu hình tác vụ cài đặt để sử dụng phiên bản WP đó và cho phép bạn chỉ định tệp / thư mục để sao chép vào tất cả các trang web trước đó bạn vagrant up
.
Đặt nó trong một tập tin install-wp.sh
sau đó chạy chmod +x install-wp.sh
để làm cho nó thực thi. Tìm một thư mục mà bạn muốn tạo tất cả các hộp này và chạy ./install-wp.sh
. Nó sẽ tạo ra cấu trúc ở trên.
Vì bạn muốn kiểm tra plugin của mình trong tất cả các phiên bản, hãy tạo một thư mục trong cùng thư mục với tập lệnh wp-content/plugins/your-plugin
sau đó chạy install-wp.sh wp-content
. Tệp / thư mục được sao chép vào thư mục gốc của mỗi trang web, đó là lý do tôi đề xuất wp-content
.
cài đặt-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!"
Cập nhật:
Hóa ra Môi trường cơ bản WordPress không thực sự thiết lập để xử lý nhiều phiên bản php nhưng Hộp Wordpress cơ bản có thể là nếu bạn điều chỉnh tác vụ PHP . Tôi hình dung tôi sẽ để lại một đoạn mã kịch bản có thể xử lý nhiều phiên bản 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
phpenv
để quản lý các phiên bản PHP khác nhau. Có lẽ sự kết hợp giữa điều đó và kiểm tra SVN của toàn bộ repo WordPress (sẽ chứa tất cả các phiên bản bên dưới/tags
) sẽ là một sự khởi đầu?