Tập lệnh Vagrant để thiết lập tất cả các kết hợp phiên bản PHP / WordPress phổ biến


9

Tôi đang tìm cách để nhanh chóng và liên tục thiết lập môi trường thử nghiệm / gỡ lỗi cho plugin của chúng tôi, hầu hết có thể sử dụng Vagrant . Các dự án như VVV tập trung vào thiết lập một môi trường (hoặc, một vài môi trường như ổn định / trung kế) trong khi thứ tôi đang tìm kiếm là một tập lệnh sẽ thiết lập các môi trường như:

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • vv (bạn có được ý tưởng)

Có điều đó không? Cái gần nhất tôi tìm thấy là WordPress Vagrant Box , ít nhất là các phiên bản PHP nhưng có thể có một cái gì đó hoàn thiện hơn cũng có thêm các phiên bản WordPress vào hỗn hợp. Cảm ơn.


Bạn có thể quen thuộc với Travis CI . Có một tập lệnh sẽ cho phép bạn kiểm tra các phiên bản khác nhau của WordPress và PHP trong bản dựng Travis của bạn . Tất nhiên, có thể thiết lập một cái gì đó như thế này cục bộ sẽ tốt hơn cho một số mục đích gỡ lỗi. Tôi không biết về một kịch bản Vagrant. Tôi biết rằng Travis sử dụng 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?
JD

1
Những gì về Docker ? Bạn có thể xây dựng hình ảnh với các môi trường khác nhau và sau đó tạo / chạy các thùng chứa với Dockerfiles
rafawhs

@rafawhs Yep Docker là những gì tôi sẽ xem xét ngày hôm nay.
Borek Bernard

Câu trả lời:


1

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.shsau đó 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-pluginsau đó 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

0

Bạn đã xem cái này chưa?

con rối

Nếu xuất hiện để giúp bạn tạo tập tin cấu hình. Có vẻ như bạn có thể thiết lập nhiều vhost và để nó thực thi các lệnh tùy chỉnh post-init. Vì vậy, bạn có thể yêu cầu nó thiết lập tất cả các thư mục, máy chủ và cơ sở dữ liệu và sau đó sao chép các phiên bản mong muốn của bạn với các tệp wp-config được liên kết? Một chút thiết lập ban đầu, nhưng có thể hoạt động.

Tôi sử dụng một kịch bản shell, bản thân mình. wp-install www.domain.com

Hiện tại chỉ hoạt động cho một lần cài đặt nhưng sẽ không thể định cấu hình nó cần một số đối số hoặc tệp 'config' bổ sung để thiết lập nhiều vhost. Như bạn đã đề cập Vagrant, tôi sẽ cho rằng ở trên gần hơn để đáp ứng nhu cầu của bạn.

Chúc may mắn!


Nếu tôi không nhầm PuPHPet thì không thể thực hiện PHP 5.2 và 5.3 vì vậy nó sẽ luôn bị giới hạn như một môi trường thử nghiệm.
Borek Bernard

0

Tất cả phụ thuộc vào những gì bạn muốn sử dụng và loại hệ điều hành bạn sẽ phát triển với ...

Đối với người lang thang, đây là tự động hóa để thiết lập với VVV: https://github.com/bradp/vv

Và một vài người khác được xây dựng trên vagrant:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

Tuy nhiên, tôi khuyên bạn nên thử pantheon . Nó cho phép bạn làm tất cả những điều này miễn phí và tích hợp với wp-cli, git, Behat, v.v. Có những nền tảng được lưu trữ khác có các tính năng này như https://www.appfog.com/ và thậm chí là wpengine tôi tin.

Nó cũng phụ thuộc vào mức độ bạn muốn thiết lập từ đầu. Nếu bạn chỉ tìm kiếm một cách nhanh chóng để thiết lập wordpress, có hàng tấn tập lệnh trên github như thế này hoặc chỉ sử dụng wp-cli.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.