Я написал этот маленький скрипт BASH, который создает папку, распаковывает WordPress и создает базу данных для сайта.
Последним шагом является установка WordPress, который обычно включает указание вашего браузера на install.php и заполнение формы в графическом интерфейсе.
Я хочу сделать это из оболочки BASH, но не могу понять, как вызвать wp_install () и передать ему необходимые параметры:
-admin_email
-пароль администратора
-weblog_title
-user_name
(строка 85 в install.php)
Вот аналогичный вопрос, но в python
#!/bin/bash #ask for the site name echo "Site Name:" read name # make site directory under splogs mkdir /var/www/splogs/$name dirname="/var/www/splogs/$name" #import wordpress from dropbox cp -r ~/Dropbox/Web/Resources/Wordpress/Core $dirname cd $dirname #unwrap the double wrap mv Core/* ./ rm -r Core mv wp-config-sample.php wp-config.php sed -i 's/database_name_here/'$name'/g' ./wp-config.php sed -i 's/username_here/root/g' ./wp-config.php sed -i 's/password_here/mypassword/g' ./wp-config.php cp -r ~/Dropbox/Web/Resources/Wordpress/Themes/responsive $dirname/wp-content/t$ cd $dirname CMD="create database $name" mysql -uroot -pmypass -e "$CMD"
Как изменить скрипт для автоматического запуска установщика без необходимости открытия браузера?
Проверьте wp-cli на основе Drush для Drupal.
wp core install --url=url --title=site-title [--admin_name=username] --admin_email=email --admin_password=password
Все команды:
wp core [download|config|install|install_network|version|update|update_db] wp db [create|drop|optimize|repair|connect|cli|query|export|import] wp eval-file wp eval wp export [validate_arguments] wp generate [posts|users] wp home wp option [add|update|delete|get] wp plugin [activate|deactivate|toggle|path|update|uninstall|delete|status|install] wp post-meta [get|delete|add|update] wp post [create|update|delete] wp theme [activate|path|delete|status|install|update] wp transient [get|set|delete|type] wp user-meta [get|delete|add|update] wp user [list|delete|create|update]
У меня была такая же проблема, как и у вас. Я попробовал метод Виктора, и это не совсем сработало. Я сделал несколько изменений, и теперь это работает! Вы должны добавить теги php внутри скрипта, чтобы заставить код работать, иначе он просто перекликается с терминалом.
Мой скрипт напрямую вызывает функцию wp_install для upgrade.php, полностью обходящую install.php (никаких изменений в других файлах не требуется).
Я сделал свой сценарий с именем script.sh, сделал его исполняемым, сбросил его в каталог wp-admin и запустил его с терминала.
#!/usr/bin/php <?php function get_args() { $args = array(); for ($i=1; $i<count($_SERVER['argv']); $i++) { $arg = $_SERVER['argv'][$i]; if ($arg{0} == '-' && $arg{1} != '-') { for ($j=1; $j < strlen($arg); $j++) { $key = $arg{$j}; $value = $_SERVER['argv'][$i+1]{0} != '-' ? preg_replace(array('/^["\']/', '/["\']$/'), '', $_SERVER['argv'][++$i]) : true; $args[$key] = $value; } } else $args[] = $arg; } return $args; } // read commandline arguments $opt = get_args(); define( 'WP_INSTALLING', true ); /** Load WordPress Bootstrap */ require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' ); /** Load WordPress Administration Upgrade API */ require_once( dirname( __FILE__ ) . '/includes/upgrade.php' ); /** Load wpdb */ require_once(dirname(dirname(__FILE__)) . '/wp-includes/wp-db.php'); $result = wp_install($opt[0], $opt[1], $opt[2], false, '', $opt[3]); ?>
Я вызвал файл следующим образом: # ./script.sh SiteName UserName email@address.com Password
Возможно, вам нужно немного изменить оригинальный установщик WordPress.
Во-первых, создайте скрипт wrapper.sh
оболочки для оболочки, скажем, его имя – wrapper.sh
:
#!/usr/bin/php -qC function get_args() { $args = array(); for ($i=1; $i<count($_SERVER['argv']); $i++) { $arg = $_SERVER['argv'][$i]; if ($arg{0} == '-' && $arg{1} != '-') { for ($j=1; $j < strlen($arg); $j++) { $key = $arg{$j}; $value = $_SERVER['argv'][$i+1]{0} != '-' ? preg_replace(array('/^["\']/', '/["\']$/'), '', $_SERVER['argv'][++$i]) : true; $args[$key] = $value; } } else $args[] = $arg; } return $args; } // read commandline arguments $opt = get_args(); require "install.php";
Это позволит вам вызывать скрипт из командной строки и передавать аргументы непосредственно в числовой массив $ opt.
Затем вы можете передать нужные вамры в строгом порядке, например:
./wrapper.sh <admin_email> <admin_password> <weblog_title> <user_name>
В install.php
вам нужно изменить определение ранее упомянутых vars, как это следует из:
global $opt; $admin_email = $opt[0]; $admin_password = $opt[1]; $weblog_title = $opt[2]; $user_name = $opt[3];
Затем пусть скрипт установки выполнит свою работу.
Это непроверенный метод, а также очень открытый для любых изменений, которые вам нужны. В основном это руководство для использования сценария php / cli-оболочки для определения необходимой переменной w / out, которая должна отправлять их через строку HTTP REQUEST / query. Может быть, это довольно странный способ добиться успеха, поэтому, пожалуйста, не стесняйтесь давать конструктивную / разрушительную обратную связь 🙂
Я создал скрипт bash для автоматизации установки WordPress, плагинов и тем .
Этот скрипт будет автоматизировать следующее: