सभी सामान्य PHP / वर्डप्रेस संस्करण संयोजनों को सेट करने के लिए वैग्रेंट स्क्रिप्ट


9

मैं अपने प्लगइन के लिए जल्दी और बार-बार परीक्षण / डिबगिंग वातावरण स्थापित करने का एक रास्ता खोज रहा हूं , जो शायद वैग्रंट का उपयोग कर रहा है । वीवीवी जैसी परियोजनाएं एकल-पर्यावरण सेटअप (या, स्थिर / ट्रंक जैसे वातावरण के एक जोड़े) पर ध्यान केंद्रित करती हैं, जबकि मैं जो खोज रहा हूं वह एक स्क्रिप्ट है जो वातावरण को सेटअप करेगा:

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • आदि (आप विचार प्राप्त करें)

क्या ऐसी कोई बात है? मेरे पास सबसे नज़दीकी वर्डप्रेस वैग्रेंट बॉक्स हैं जो कम से कम पीएचपी संस्करणों को करता है, लेकिन शायद कुछ और भी पूरा है जो वर्डप्रेस संस्करणों को मिश्रण में जोड़ता है। धन्यवाद।


आप शायद ट्रैविस सीआई से परिचित हैं । नहीं है एक स्क्रिप्ट है कि आप अपने ट्रैविस निर्माण में वर्डप्रेस और PHP के विभिन्न संस्करणों के खिलाफ परीक्षण करने देगा कि । बेशक, स्थानीय स्तर पर इस तरह का कुछ स्थापित करना कुछ डिबगिंग उद्देश्यों के लिए बेहतर होगा। मुझे वैग्रांत लिपि का ज्ञान नहीं है। मुझे पता है कि ट्रैविस phpenvविभिन्न PHP संस्करणों का प्रबंधन करने के लिए उपयोग करता है। हो सकता है कि पूरे वर्डप्रेस रेपो (जिसमें सभी संस्करण शामिल /tagsहोंगे) का एक एसवीएन चेकआउट और एक संयोजन एक शुरुआत होगा?
JD

1
डॉकटर के बारे में क्या ? आप विभिन्न वातावरणों के साथ चित्र बना सकते हैं और फिर विशिष्ट डॉकफाइल्स के साथ कंटेनरों को बना / चला सकते हैं
rafawhs

@rafawhs येप डोकर वही है जो मैं आज मानूंगा।
बोरिक बर्नार्ड

जवाबों:


1

चीजों के वर्डप्रेस पक्ष पर, बेसिक वर्डप्रेस वैग्रेंट एनवायरनमेंट किसी भी वर्डप्रेस संस्करण (थोड़ी मदद से) के साथ काम करने के लिए तैयार है। आपको अभी भी 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 के संस्करणों से इंस्टॉल-wp.sh के माध्यम से कई वातावरण उत्पन्न करें

संभव वर्डप्रेस संस्करणों के लिए संग्रह की जांच करें 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

यहां एक स्क्रिप्ट है जो वैग्रैंट पर्यावरण मास्टर को बैश स्क्रिप्ट की निर्देशिका में खींचती है, सरणी में प्रत्येक संस्करण के लिए एक साइट को क्लोन करती है, उस 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

क्या आपने इस पर ध्यान दिया है?

puphpet

यदि आप कॉन्फिग फाइल बनाने में मदद करते हैं। ऐसा लगता है कि आप कई vhosts सेट कर सकते हैं और इसमें कस्टम कमांड पोस्ट-इनिट निष्पादित कर सकते हैं। तो आप इसे सभी फ़ोल्डर्स, मेजबानों और डेटाबेस को सेट कर सकते थे और फिर संबंधित wp-config फ़ाइलों के साथ अपने वांछित संस्करणों की नकल कर सकते थे? शुरू में थोड़ा सा सेट अप, लेकिन काम हो सकता है।

मैं स्वयं एक शेल स्क्रिप्ट का उपयोग करता हूं। wp- स्थापित www.domain.com

वर्तमान में केवल एक इंस्टॉल के लिए काम करता है, लेकिन इसे कॉन्फ़िगर करने के लिए कुछ तर्क या एक अतिरिक्त 'कॉन्फ़िगरेशन' फ़ाइल लेना असंभव नहीं होगा, इसलिए कई vhosts सेट करें। जैसा कि आपने वैग्रांत का उल्लेख किया है, मुझे लगता है कि उपरोक्त आपकी आवश्यकताओं को पूरा करने के करीब है।

सौभाग्य!


यदि मैं गलत नहीं हूं तो PuPHPet PHP 5.2 और 5.3 नहीं कर सकता, इसलिए यह हमेशा परीक्षण वातावरण के रूप में सीमित रहेगा।
बोरक बर्नार्ड

0

यह सब इस बात पर निर्भर करता है कि आप क्या उपयोग करना चाहते हैं और किस प्रकार के ओएस के साथ आप विकसित हो रहे हैं ...

योनि के लिए, वीवीवी के साथ स्थापित करने के लिए यहां स्वचालन: 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 मेरा मानना ​​है।

यह इस बात पर भी निर्भर करता है कि आप शुरू से कितना सेट अप करना चाहते हैं। यदि आप केवल वर्डप्रेस सेट करने के लिए एक त्वरित तरीके की तलाश कर रहे हैं तो इस तरह से जीथब पर लिपियों के टन हैं या बस wp-cli का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.