我写了创建一个文件夹,解压Wordpress和一个网站创建了一个数据库,这个小bash脚本。
最后一步是实际安装的WordPress,这通常涉及浏览器指向install.php了,并填写在GUI的形式。
我想从BASH外壳做到这一点,但无法弄清楚如何调用wp_install(),并通过它所需要的参数:
-admin_email
-admin_password
-weblog_title
-用户名
(在install.php了线85)
这里有一个类似的问题, 但是在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标签,否则它只是相呼应的终端。
我的脚本直接调用upgrade.php的wp_install功能,绕过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的原始安装程序了一下。
首先,创建一个包装PHP CLI脚本,假设它的名字是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";
这将允许你在命令行调用脚本,传递参数给它直接进入$选择数字阵列。
然后,您可以通过所需要的增值经销商的定义,例如严格的秩序:
./wrapper.sh <admin_email> <admin_password> <weblog_title> <user_name>
在install.php
您需要更改之前提到的瓦尔的定义,因为它如下:
global $opt;
$admin_email = $opt[0];
$admin_password = $opt[1];
$weblog_title = $opt[2];
$user_name = $opt[3];
然后让安装脚本完成其工作。
这是一个未经测试的方法,并且还需要任何修改非常开放。 这主要是使用包装PHP / CLI脚本来定义所需的变量瓦特/出具有通过HTTP请求/查询字符串来送他们的准则。 也许这是宁可把事情做一个奇怪的方式,所以,请随时给任何建设性/破坏性的反馈:-)