모든 일반적인 PHP / WordPress 버전 조합을 설정하는 방랑 한 스크립트


9

필자는 아마도 Vagrant를 사용하여 플러그인에 대한 테스트 / 디버깅 환경 을 빠르고 반복적으로 설정하는 방법을 찾고 있습니다. VVV 와 같은 프로젝트 는 단일 환경 설정 (또는 안정 / 트렁크와 같은 몇 가지 환경)에 중점을두고 있지만 내가 찾고있는 것은 다음과 같은 환경을 설정하는 스크립트입니다.

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • 등 (당신은 아이디어를 얻는다)

그런 것이 있습니까? 내가 찾은 가장 가까운 것은 적어도 PHP 버전을 수행하는 WordPress Vagrant Boxes 이지만 WordPress 버전을 믹스에 추가하는 더 완벽한 것이 있습니다. 감사.


Travis CI에 익숙 할 것입니다 . 이 당신이 당신의 트래비스 빌드에서 워드 프레스와 PHP의 다양한 버전에 대해 테스트 할 것입니다 스크립트 . 물론, 이와 같은 것을 로컬로 설정할 수 있으면 디버깅 목적에 더 좋습니다. 나는 Vagrant 스크립트를 모른다. Travis가 phpenv다른 PHP 버전을 관리하는 데 사용한다는 것을 알고 있습니다. 어쩌면 전체 WordPress 리포지토리 (아래의 모든 버전을 포함)의 SVN 체크 아웃과 시작의 조합이 /tags시작 되었습니까?
JD

1
무엇에 대한 도커 ? 서로 다른 환경에서 이미지 를 구축 한 다음 특정 Dockerfile 을 사용하여 컨테이너 를 생성 / 실행할 수 있습니다.
rafawhs

@rafawhs Yep Docker는 오늘 내가 생각할 것입니다.
보렉 버나드

답변:


1

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/

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!"

최신 정보:

그것은 밝혀 기본 워드 프레스 방랑 환경을 여러 PHP 버전 만 처리하도록 설정 정말 아닌 기본 워드 프레스 박스는 당신이 조정하면 될 수 PHP 작업이 . 여러 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

0

이것을 보았습니까?

퍼펫

구성 파일을 만드는 데 도움이되는 것으로 나타납니다. 여러 개의 vhost를 설정하고 초기화 후 사용자 정의 명령을 실행하는 것처럼 보입니다. 그래서 모든 폴더, 호스트 및 데이터베이스를 설정 한 다음 관련 wp-config 파일로 원하는 버전을 복사 할 수 있습니까? 처음에는 약간 설정되었지만 작동 할 수 있습니다.

나는 쉘 스크립트를 사용한다. wp-install www.domain.com

현재 한 번의 설치에만 작동하지만 일부 인수 또는 추가 'config'파일을 사용하여 여러 호스트를 설정하는 것은 불가능하지 않습니다. Vagrant를 언급했듯이 위의 내용이 귀하의 요구를 충족시키는 데 더 가깝다고 가정합니다.

행운을 빕니다!


내가 실수하지 않으면 PuPHPet은 PHP 5.2 및 5.3을 수행 할 수 없으므로 항상 테스트 환경으로 제한됩니다.
Borek Bernard

0

그것은 모두 당신이 사용하고자하는 것과 당신이 개발할 OS의 유형에 달려 있습니다 ...

방랑자를 위해 VVV로 설정하는 자동화는 다음과 같습니다. https://github.com/bradp/vv

그리고 방랑자를 기반으로 한 다른 두 사람 :
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

그러나 나는 판테온을 시험해 보는 것이 좋습니다 . 그것은 다음과 같은 특징이 다른 호스팅 플랫폼이 있습니다 당신은 무료로이 모든 작업을 수행 할 수 있습니다 및 WP-CLI, 자식, behat 등과의 통합을 가지고 https://www.appfog.com/ 심지어 wpengine 내가 믿는이.

또한 처음부터 설정하려는 양에 따라 다릅니다. 당신은 워드 프레스를 설치하는 빠른 방법을 찾고 있다면 같은 GitHub의에 스크립트의 톤이있다 또는 사용의 WP-CLI.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.