2012-04-08 4 views
8

私はこの小さなBASHスクリプトを使ってフォルダを作成し、Wordpressを解凍してサイトのデータベースを作成しました。私はwp-admin/install.phpを訪問せずにWordpressをインストールしました

最後のステップは、実際にはWordpressをインストールすることです。通常は、ブラウザにinstall.phpを指定し、GUIにフォームを入力する必要があります。

私はBASHシェルからこれを実行したいのですが、(wp_installを起動する方法を見つけ出す)とそれにそれが必要なパラメータを渡すことはできません。


-admin_password
-weblog_title
-admin_email -user_name

(install.phpを中線85)

ここで同様の質問は、but in python

0です
#!/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" 

ブラウザを開く必要なしにインストーラを自動的に実行するようにスクリプトを変更するにはどうすればよいですか?

+0

あなたは 'php'を起動し、コマンドラインから' install.php'を実行する必要があります。コマンドラインからページへのフォーム投稿をシミュレートする方法は、実際には 'php'の質問であり、' bash'の質問ではありません。 – Sorpigal

+0

あなたが正しいとすれば、それはPHPのものです。 Bashから実行されているすべてを取得することは私には不可解です。だから、私はスクリプトで発行することができます:php ./install.php?step=2&weblog_title = [...]? –

+1

クリーンインストールを行い、データベースをファイルにダンプし、テンプレートファイルとして保存し、管理メール/管理者のユーザー名/ブログタイトルの代わりに単純な文字列を使用して新しいインストールごとに使用します。それは私が非常に長い時間それを行う方法です。 install.phpを実行する必要はありません。 – strkol

答えて

8

はDrupalのためDrushに基づいて、wp-cliをチェックしてください。

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] 
+0

こんにちはミルク、これ素晴らしいです。私は今WPCLIを使ってきましたが、私は華麗に言う必要があります。私はあなたの提案からこのスレッドの誰かに助言したいと思います。いい物。 –

+0

乾杯、私はいくつか助けることができてうれしい。さらなる自動化が必要な場合は、WP-CLIと統合されたPuppetモジュールも利用できます - https://github.com/rmccue/puppet-wp –

2

WordPressオリジナルインストーラを少し修正する必要があるかもしれません。

まずは、その名前がwrapper.shで言わせて、ラッパーのPHPのCLIスクリプトを作成します。

#!/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に直接に引数を渡します数値配列。

あなたは、インスタンスのために、ユーザーが定義した厳格なために必要VARSを渡すことができます:

install.phpそれは次のようにあなたは、前に述べたVARSの定義を変更する必要がある

./wrapper.sh <admin_email> <admin_password> <weblog_title> <user_name>

global $opt; 

$admin_email = $opt[0]; 
$admin_password = $opt[1]; 
$weblog_title = $opt[2]; 
$user_name = $opt[3]; 

次に、インストールスクリプトにそのジョブを実行させます。

これはテストされていない方法であり、必要な修正を行った時点でも非常に有効です。主にラッパーphp/cliスクリプトを使用して、必要な変数を定義し、HTTP REQUEST /クエリ文字列を使用してそれらを送信する必要があるガイドラインです。おそらく、物事を終わらせるにはちょっと変わった方法なので、建設的/破壊的なフィードバックをお寄せください:-)

+0

素敵な詳細提案。私は週にこれを試み、結果をフィードバックします。ありがとう。 –

+0

@ThePenguinそれはあなたのために働いたのですか?どんなフィードバック?ありがとう。 –

3

私はあなたと同じ問題を抱えていました。私はビクターの方法を試して、それはかなりうまくいかなかった。 私はいくつかの編集をしました。 スクリプト内にphpタグを追加してコードを動作させる必要があります。それ以外の場合は、端末にエコーします。

私のスクリプトは、install.phpを完全にバイパスして、upgrade.phpのwp_install関数を直接呼び出します(他のファイルを編集する必要はありません)。

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 protected] Password

+0

おっと、私はphpタグを忘れていましたが、終了タグは必要ありません(最初のタグだけが必須です) - すてきな回避策btw ;-) –

+0

これはまだ有効な解決策ですか?上記のスクリプトの更新はありますか? – Airman

+0

最新のワードプレスの結果を使用しています:PHP致命的なエラー:未知の例外 'phpmailerException'、メッセージ 'Invalid address:wordpress @' in /var/www/html/wpsite1/wp-includes/class-phpmailer.php:946 – Airman

0

私はa bash script to automate the installation of WordPress, plugins and themes alsoを作成しました。

  • ジップURLあなたによってデフォルトまたはカスタムテーマをインストール
  • すべてのデフォルトのプラグインをインストールし、自動的に
  • は、パスワードを持つデフォルトのユーザーを作成します

    • ダウンロードしてワードプレスをインストール:

      このスクリプトは、次のことを自動化します主に使用されます

  • +0

    スクリプトをありがとう!パスワードを改善し、パスワードとして「1234」のようなハードコードされた定数の一部を削除することができます。あなたは上に変数がありますが、いくつかのスポットを見逃しました。また、実行前にスクリプトを編集する必要があることをドキュメンテーションで説明することもできます。 –

    関連する問題