Как я могу создать скрипт установки bash для моей установки сайтов Wordpress (WP + плагины + тема)?


9

Я создаю много сайтов с Wordpress, и мои первоначальные настройки в основном всегда одинаковы:

  • Последняя версия WP
  • Последние версии около 5 плагинов
  • Моя голая тема разработки

Вместо того, чтобы загружать / выгружать эти вещи отдельно и делать это вручную каждый раз, когда я запускаю новый проект, я хотел бы создать скрипт bash, который бы делал это:

  • Загрузите последнюю версию Wordpress
  • расстегнуть молнию
  • Загрузите последнюю версию плагина X
  • Распакуйте в папку плагинов WP
  • Скачать мою голую тему
  • Распакуйте в папку с темами

Теперь загрузить последнюю версию WP легко (http://wordpress.org/latest.tar.gz), также загрузив мою голую тему, но у меня возникают проблемы с получением последней версии плагина, так как они не называются, latest.tar.gzа специфичны имена с версией (например: wptouch.1.9.26.zip)

РЕДАКТИРОВАТЬ: Итак, мне интересно, если можно использовать cURL в моем скрипте bash, чтобы найти точный URL-адрес текущей версии плагина. Идея заключается в том, чтобы получить страницу, а затем найти значение, hrefкоторое находится в абзаце сразу после <h3>Current Version</h3>.

Вот пример, все страницы загрузки плагинов на WP выглядят так:

<h3>Current Version</h3>
<p class="unmarked-list">
    <a href="http://downloads.wordpress.org/plugin/jetpack.1.1.2.zip">1.1.2</a>
</p>

Ответы:


4

Чтобы всегда получать последний плагин, возьмите, к примеру, мой плагин:

http://wordpress.org/extend/plugins/wordpress-file-monitor-plus/

ссылка для скачивания последней:

http://downloads.wordpress.org/plugin/wordpress-file-monitor-plus.1.1.zip

но если вы удалите версию из ссылки для скачивания, вы всегда получите последнюю версию:

http://downloads.wordpress.org/plugin/wordpress-file-monitor-plus.zip

РЕДАКТИРОВАТЬ: Рассматривали ли вы держать папку с последней версией WordPress и плагинов в распакованном виде? Затем, как только выходит новый плагин или WordPress, вы просто распаковываете то, что у вас есть. Тогда ваш bash-скрипт просто упаковывает весь пакет, который будет использоваться при установке.


1
Черт возьми, это было легко, спасибо. Теперь я отключен от bash-скриптинга и надеюсь, что смогу что-нибудь собрать. Я опубликую результат здесь.
майк23

Хотя в вашем примере wordpress-file-monitor-plus.zip указан в разделе «Версия для разработки», это не то же самое, что последняя стабильная версия, не так ли?
майк23

А ну понятно. Это может быть не последняя версия ... Это может быть то, что в настоящее время в багажнике. Извините, я мог пропустить проинформировал вас.
Скотт

2
Я бы пошел с SVN здесь. Там вы можете извлекать / экспортировать тег с наибольшим номером или просто транк из каждого плагина. То же самое касается ядра WordPress .
rofflox

1
Не могли бы вы просто открыть http://plugins.svn.wordpress.org/plugin-name/trunk/readme.txt, разобрать Stable Tag: Xстроку, а затем загрузить http://downloads.wordpress.org/plugin/plugin-name.X.zip?
Ян Данн

1

Создайте скрипт bash:

touch wp_plugins_theme.sh

Сделать исполняемый файл:

chmod +x ./wp_plugins_theme.sh

Скопируйте это в это:

#!/bin/bash
#
#  This script is to automate a common WP setup.
#
#   - Download the latest version of Wordpress
#   - Unzip
#   - Download the latest version of plugin X
#   - Unzip to WP plugins folder
#   - Download theme
#   - Unzip to themes folder

: ' Define Directory
'

# Change to your directory name
# Final site will be $PWD/$dirname/www/

dirname=ExampleWPPluginsTheme

# WordPress Directories used later

plugins=$PWD/$dirname/www/wp-content/plugins
themes=$PWD/$dirname/www/wp-content/themes

: ' Clear Example Dir
'

rm -rf $PWD/$dirname
mkdir -p $PWD/$dirname/www
cd $PWD/$dirname;

: ' Download the latest version of Wordpress
'

curl -OL "https://wordpress.org/latest.tar.gz"

: ' Unzip
'

tar -zxvf "./latest.tar.gz" -C 'www' --strip-components=1

: ' Download the latest version of plugin X
'

curl -OL "https://downloads.wordpress.org/plugin/query-monitor.latest-stable.zip"
curl -OL "https://downloads.wordpress.org/plugin/wp-optimize.latest-stable.zip"

: ' Unzip to WP plugins folder
'

tar -zxvf "./query-monitor.latest-stable.zip" -C $plugins
tar -zxvf "./wp-optimize.latest-stable.zip" -C $plugins

: ' Download theme
'

curl -OL "https://github.com/Automattic/_s/archive/master.zip"

: ' Unzip to themes folder
'

tar -zxvf "./master.zip" -C $themes

: ' Done
'

# List the folder contents

ls -la $PWD

Запустите команду

./wp_plugins_theme.sh

Я знаю, что сейчас это старо, но это самый близкий к правильному ответу, который должен быть простоhttps://downloads.wordpress.org/plugin/plugin-name.latest-stable.zip
Кувалда

0

Я создал bash-скрипт для обновления Wordpress, используя Subversion, как они рекомендуют .

#!/bin/bash
# usage: upgrade_wordpress.sh X.X.X
# http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion

# http://stackoverflow.com/a/699613/327074
die () {
    echo >&2 "$@"
    exit 1
}

# check that there is one argument
[ "$#" -eq 1 ] || die "usage: upgrade_wordpress.sh X.X.X"
# http://stackoverflow.com/a/2220646/327074
response=$(curl --write-out %{http_code} --silent --output /dev/null http://core.svn.wordpress.org/tags/$1/)
# check that the tag repository exists, i.e. returns a HTTP 200 status code
[ "$response" -eq 200 ] || die "Couldn't find Wordpress version, http error: $response"
# Take a backup
mysqldump -u root -p wordpress > wordpress_upgrade_to_$1_bak.sql
# Updating to a New Stable Version
cd /path/to/wordpress/dir/
svn sw http://core.svn.wordpress.org/tags/$1/ .

Я изменил это, чтобы сделать установку. Этот второй скрипт не протестирован, но он должен помочь вам начать. Вам нужно будет написать свой собственный create_wordpress_database_and_user.sql - но вы все равно не спросили об этом в вопросе, так что, возможно, вы можете проигнорировать это.

#!/bin/bash
# usage: install_wordpress.sh X.X.X /path/to/wordpress/dir
# http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion

# http://stackoverflow.com/a/699613/327074
die () {
    echo >&2 "$@"
    exit 1
}
# check that there are two arguments
[ "$#" -eq 2 ] || die "usage: install_wordpress.sh X.X.X /path/to/wordpress/dir"
# http://stackoverflow.com/a/2220646/327074
response=$(curl --write-out %{http_code} --silent --output /dev/null http://core.svn.wordpress.org/tags/$1/)
# check that the tag repository exists, i.e. returns a HTTP 200 status code
[ "$response" -eq 200 ] || die "Could not find Wordpress version, http error: $response"
# create directory if needed
if [ ! -d $2 ]; then
    mkdir $2
fi
# Install the database
mysql -u root -p < create_wordpress_database_and_user.sql
# Checking out stable version
cd $2
svn co http://core.svn.wordpress.org/tags/$1/ .

0

Я использовал git cloneкак своего рода удар бедняков.

Git WordPress обновляется каждые 30 минут, поэтому я клонирую его в свое собственное хранилище с моими собственными плагинами / темами или просто извлекаю прямо из него.

Все довольно быстро, на самом деле это всего около двух строк, и единственное, что мне нужно сделать вручную, это создать локальную БД и отредактировать config.php. Может быть немного сложно убедиться, что вы обновляете WordPress до последней версии, если вы хотите делать это каждые 30 минут, но я обычно использую только стабильную версию и сохраняю версию dev в другой среде.

Это выглядит так:

mkdir wordpress-project
git clone ..url-to-my-wordpress-base 

Другим недостатком является то, что немного сложно получить плагины из реального репозитория WordPress через git, это можно сделать с помощью git svnкоманды, но я считаю, что работать с ней пока непросто.


0

Я создал скрипт bash для установки WordPress.

Этот скрипт автоматизирует следующее:

  • Загрузите и установите Wordpress автоматически
  • Создать пользователей по умолчанию с паролями
  • Установите все плагины по умолчанию
  • Установите тему по умолчанию или пользовательскую тему по почтовому индексу, который вы в основном использовали.

Вы можете найти скрипт на github.com

https://github.com/jeoga/wordpress_install_bash_script

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.