设置所有常见的PHP/WordPress版本组合的漫游脚本

时间:2015-02-16 作者:Borek Bernard

我正在寻找一种快速重复设置的方法testing / debugging environment 对于我们的插件,很可能使用Vagrant. 项目,如VVV 专注于单个环境设置(或几个环境,如stable/trunk),而我要寻找的是一个脚本,它可以设置如下环境:

wp39-php52。本地wp40-php52。本地wp41-php52。局部wp39-php53。本地wp40-php53。本地的等等(你知道的)有这样的事情吗?我找到的最接近的是WordPress Vagrant Boxes 至少PHP版本是这样的,但也许还有更完整的东西,可以将WordPress版本添加到混合中。谢谢

3 个回复
SO网友:jgraup

在WordPress方面,Basic WordPress Vagrant Environment 可以使用任何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/

Generate multiple environments from WP versions via install-wp.sh

检查存档中可能存在的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!"

Update:

结果是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

SO网友:GastroGeek

你看过这个吗?

puphpet

显示If以帮助您创建配置文件。看起来您可以设置多个vhost,并让它在初始化后执行自定义命令。所以你可以让它设置所有的文件夹、主机和数据库,然后用相关的wp配置文件复制你想要的版本?一开始有一点设置,但可能有用。

我自己使用shell脚本。wp安装www.domain。com公司

目前仅适用于一次安装,但配置它并非不可能。请使用一些参数或附加的“config”文件,以便设置多个vhost。正如你提到的流浪汉,我认为上述内容更能满足你的需要。

祝你好运

SO网友:Bryan Willis

这完全取决于你想要使用什么,以及你将使用什么类型的操作系统进行开发。。。

对于流浪者,这里有VVV设置的自动化:https://github.com/bradp/vv

还有一些是建立在流浪者的基础上的:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

然而,我建议尝试一下pantheon. 它允许您免费完成所有这些操作,并与wp cli、git、behat等集成。还有其他托管平台具有这些功能,如https://www.appfog.com/ 甚至我相信wpengine。

但这也取决于您从一开始就需要设置多少。如果您只是想快速设置wordpress,那么github上有很多脚本,比如this 或者只使用wp-cli。

结束

相关推荐

pingbacks testing

关于新wp安装(3.0.4)中PBs的功能测试,我有几个问题:发布帖子时是立即发送pingback,还是将其安排为cron作业?如果后者正确,作业多久运行一次,我可以手动触发它吗?除了将“尝试通知文章中链接到的任何博客”设置为“开”,当然还有帖子内容中指向另一个博客的链接之外,还有其他关于发送PBs的术语吗?(例如,发件人的帖子应该是公开的而不是私有的吗?博客应该是非私有的吗?)出站链接应该放在帖子内容中,还是可以放在帖子的自定义字段中,以便发送PB?如果我的博客中没有发送或接收PBs,那么调试和检测问题