สคริปต์ Vagrant เพื่อติดตั้งชุดค่าผสม PHP / WordPress ทุกรุ่น


9

ฉันกำลังมองหาวิธีการได้อย่างรวดเร็วและซ้ำ ๆ ตั้งค่าการทดสอบ / การแก้จุดบกพร่องสภาพแวดล้อมสำหรับปลั๊กอินของเราส่วนใหญ่อาจใช้คนจรจัด โครงการเช่นVVVมุ่งเน้นไปที่การตั้งค่าสภาพแวดล้อมเดียว (หรือสองสามสภาพแวดล้อมเช่นเสถียร / ลำตัว) ในขณะที่สิ่งที่ฉันกำลังมองหาคือสคริปต์ที่จะติดตั้งสภาพแวดล้อมเช่น:

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • เป็นต้น (คุณจะได้รับความคิด)

มีอะไรแบบนี้เหรอ? สิ่งที่ฉันพบมากที่สุดคือWordPress Vagrant Boxesซึ่งอย่างน้อยก็ทำเวอร์ชั่น PHP แต่อาจจะมีบางอย่างที่สมบูรณ์กว่านี้ ขอบคุณ


คุณอาจจะคุ้นเคยกับเทรวิส CI มีสคริปต์ที่ให้คุณทดสอบกับ WordPress และ PHP เวอร์ชันต่างๆใน Travis build ของคุณ แน่นอนความสามารถในการตั้งค่าบางอย่างเช่นนี้ในเครื่องจะดีกว่าสำหรับการแก้ไขจุดบกพร่องบางอย่าง ฉันไม่รู้สคริปต์ของ Vagrant ฉันรู้ว่า Travis ใช้phpenvเพื่อจัดการ PHP เวอร์ชันต่าง ๆ อาจเป็นการรวมกันของสิ่งนั้นและการชำระเงิน SVN ของ repo WordPress ทั้งหมด (ซึ่งจะมีทุกรุ่นที่อยู่ด้านล่าง/tags) อาจเป็นการเริ่มต้นหรือไม่
JD

1
แล้วนักเทียบท่าล่ะ? คุณสามารถสร้างรูปภาพด้วยสภาพแวดล้อมที่แตกต่างกันจากนั้นสร้าง / เรียกใช้คอนเทนเนอร์ด้วยDockerfiles
rafawhs

@rafawhs Yep Docker เป็นสิ่งที่ฉันจะพิจารณาในวันนี้
Borek Bernard

คำตอบ:


1

ในส่วนของWordPress WordPress Vagrant Environment พื้นฐานพร้อมที่จะทำงานกับเวิร์ดเพรสรุ่นใดก็ได้ (ด้วยความช่วยเหลือเล็กน้อย) คุณยังคงต้องไปหาวิธีการกำหนดค่า 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/

สร้างหลายสภาพแวดล้อมจากรุ่น WP ผ่าน 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 ไปยังไดเรกทอรีของสคริปต์ทุบตีโคลนไซต์สำหรับแต่ละรุ่นในอาร์เรย์กำหนดค่างานติดตั้งเพื่อใช้รุ่น 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!"

ปรับปรุง:

มันจะเปิดออกWordPress จรจัดสิ่งแวดล้อมพื้นฐานไม่ได้จริงๆการตั้งค่าในการจัดการรุ่น PHP หลาย แต่Wordpress กล่องพื้นฐานอาจจะถ้าคุณปรับงาน 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

คุณเคยดูสิ่งนี้หรือไม่?

puphpet

หากปรากฏขึ้นเพื่อช่วยคุณสร้างไฟล์กำหนดค่า ดูเหมือนว่าคุณสามารถตั้งค่าหลาย vhosts และให้มันรันคำสั่งที่กำหนดเอง post-init ดังนั้นคุณสามารถตั้งค่าโฟลเดอร์โฮสต์และฐานข้อมูลทั้งหมดแล้วคัดลอกเวอร์ชันที่คุณต้องการด้วยไฟล์ wp-config ที่เกี่ยวข้องได้หรือไม่ การตั้งค่าเริ่มแรกเล็กน้อย แต่อาจใช้ได้

ฉันใช้เชลล์สคริปต์ด้วยตัวเอง wp-install www.domain.com

ขณะนี้ใช้งานได้เพียงหนึ่งการติดตั้ง แต่ไม่สามารถกำหนดค่าได้โดยใช้อาร์กิวเมนต์บางตัวหรือไฟล์ 'config' เพิ่มเติมเพื่อตั้งค่า vhost หลายตัว ดังที่คุณได้กล่าวถึง Vagrant ฉันจะถือว่าข้างต้นใกล้เคียงกับความต้องการของคุณ

โชคดี!


ถ้าฉันไม่เข้าใจผิด PuPHPet ไม่สามารถทำ PHP 5.2 และ 5.3 ดังนั้นมันจะถูก จำกัด เป็นสภาพแวดล้อมการทดสอบเสมอ
Borek Bernard

0

ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการใช้และประเภทของระบบปฏิบัติการที่คุณจะพัฒนาด้วย ...

สำหรับคนจรจัดนี่เป็นระบบอัตโนมัติสำหรับการตั้งค่าด้วย VVV: https://github.com/bradp/vv

และอีกสองสามคนสร้างขึ้นบนคนเร่ร่อน:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

แต่ผมขอแนะนำให้พยายามออกแพนธีออน มันช่วยให้คุณทำสิ่งนี้ได้ฟรีและรวมกับ wp-cli, git, behat และอื่น ๆ มีแพลตฟอร์มที่โฮสต์อื่น ๆ ที่มีคุณสมบัติเหล่านี้เช่นhttps://www.appfog.com/และแม้แต่ wpengine ที่ฉันเชื่อ

นอกจากนี้ยังขึ้นอยู่กับว่าคุณต้องการตั้งค่าเท่าใดตั้งแต่เริ่มต้น หากคุณกำลังมองหาวิธีที่รวดเร็วในการติดตั้ง wordpress มีสคริปต์มากมายบน github เช่นนี้หรือเพียงแค่ใช้ wp-cli

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.