memcachedのインストールと各デーモンの起動
次に、memcachedのインストールを行い、各デーモンを起動し、OS再起動後も自動起動するようにします。
yum -y --enablerepo=remi install memcached systemctl start memcached.service systemctl enable memcached.service systemctl start php-fpm.service systemctl enable php-fpm.service systemctl start nginx.service systemctl enable nginx.service
WordPressダウンロード、初期設定、インストール、OS再起動
おまたせしました。ようやくwp-cliの出番です。wp-cliは、次の順に処理が続行します。
- WordPressのダウンロード
- WordPressの設定ファイルの生成
- WordPressのインストール
ドキュメントルートのディレクトリはすべてユーザー、グループともnginxにしてあるため、nginxユーザーにスイッチしてwpコマンドを起動します。nginxユーザーはログイン可能なシェルを持たないユーザーなので、--shell=/bin/bash
を引数に与えて実行します。
wp-cliは、ドキュメントルート(wp-config.phpを配置するディレクトリ)にcd
して実行するか、--path=<ドキュメントルートのディレクトリ>
を引数に付け忘れないようにしましょう。
WordPress ダウンロード
ドキュメントルートにWordPressをダウンロードします。引数に--locale=ja
を付けることで、日本語版のWordPressをダウンロードすることができます。
su - nginx --shell=/bin/bash \ --command="${WP} core download --locale=ja --path=${VHDIR}/"
WordPress 設定ファイル生成
次に、wp-config.phpを生成します。ここでは引数にDB名、DBユーザー名、DBのパスワードを指定します。最後にヒアドキュメントでdefine('FS_METHOD', 'direct');
を付け加えています。これには、プラグインやテーマをダウンロードする際にFTP接続情報を求められないようにするという目的があります。
su - nginx --shell=/bin/bash \ --command="${WP} core config \ --dbname=${DBNAME} \ --dbuser=${DBUSER} \ --dbpass=${DBUSERPW} \ --path=${VHDIR}/ \ --extra-php <<PHP define('FS_METHOD', 'direct'); PHP"
WordPress インストール
最後にブログのURL、ブログのタイトル、ブログ管理画面のユーザー名とパスワード、ブログ管理者のメールアドレスを設定し、WordPressをインストールします。
su - nginx --shell=/bin/bash --command="${WP} core install \ --url=${VHOST} \ --title=\"${BLOGTITLE}\" \ --admin_user=${BLOGADMIN} \ --admin_password=${BLOGPW} \ --admin_email=${ADMINMAIL} \ --path=\"${VHDIR}/\""
OSの再起動
ここまでできたら、OSを再起動します。
systemctl reboot
ブラウザからブログを確認する
それでは、rootユーザーでsshログインし、ホームディレクトリに「BLOGPARAM.txt」を置いて一撃シェルスクリプトを実行してみましょう。
# cat BLOGPARAM.txt BLOGTITLE="ぬるぽぽぽ" BLOGADMIN=ichigeki BLOGPW=Bl0Gp@SsW0rD ADMINMAIL=hamada@example.com VHOST=www.example.com # sh ./ICHIGEKI
こうして一撃構築されたサーバーの再起動後、ブラウザで見てみた結果が図1です。左上のタイトルが、BLOGPARAM.txtで設定したとおり「ぬるぽぽぽ」になっていることがお分かりいただけたかと思います。
それでは、別のサーバーを用意して、BLOGPARAM.txtなしで一撃シェルスクリプトを実行してみましょう。
# cat ICHIGEKI | egrep ^D_ D_BLOGTITLE=\"Example\ Blog\ Title\" # For BLOGTITLE D_BLOGADMIN=ichigeki # For BLOGADMIN D_BLOGPW=Bl0Gp@SsW0rD # For BLOGPW D_ADMINMAIL=hamada@example.com # For ADMINMAIL D_VHOST=www.example.com # For VirtualHost # sh ./ICHIGEKI
実行すると、図2のようにデフォルトのタイトルで表示されます。
それでは、BLOGPARAM.txtを用意して一撃シェルスクリプトを実行した時のログ(sh -x
を付けて実行しました)から、wp-cliの設定した部分を見てみましょう。
+ su - nginx --shell=/bin/bash '--command=/usr/local/bin/wp core download --locale=ja --path=/home/vhosts/www.example.com/public_html/' Downloading WordPress 4.2.2 (ja)... Success: WordPress downloaded.
+ su - nginx --shell=/bin/bash '--command=/usr/local/bin/wp core config --dbname=wpdb0001 --dbuser=user0001 --dbpass=******** --path=/home/vhosts/www.example.com/public_html/ --extra-php <<PHP define('\''FS_METHOD'\'', '\''direct'\''); PHP' Success: Generated wp-config.php file.
+ su - nginx --shell=/bin/bash '--command=/usr/local/bin/wp core install --url=www.example.com --title="ぬるぽぽぽ" --admin_user=ichigeki --admin_password=******** --admin_email=hamada@example.com --path="/home/vhosts/www.example.com/public_html/"' Success: WordPress installed successfully.
このように、それぞれの処理の後に「Success:
」と表示されていれば、処理は成功しています。