ブログ
CPIサーバーにWP-CLIでWordPressを楽にインストール
弊社の開発でよく使うサーバー CPIサーバー(シェアードプラン)にWP-CLIでWordpressを楽に入れたいぞ、というお話です。
WP-CLIに関してはこちらの記事とこちらの記事も参照してください。
なお、先にお伝えしておくと、正解は概ねこちらのサイトに書いてあります。
第2回 wp-cli を利用する – CPIエバンジェリストコラム
前提
CPIサーバー(シェアードプラン)
- 共用サーバー
- phpコマンドはphp-5.5.27
- OSはFreeBSD
WP-CLIのインストールに関しては、こちらの記事にあります。~/bin/以下にインストール済みです。
そもそものSSH接続については、以下にマニュアルがあります。
構成
~/
├── html(ドキュメントルート)
├── wp-cli.yml(設定ファイル)
└── wp-install.sh(実行ファイル)
DBはコントロールパネルから事前に作成しておく
サーバー側からDBを作成する権限は無いので、wp db create
は使えません。
mysql -u ae******** -h 127.0.0.1 -p -P3307
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ae********_wp |
+--------------------+
2 rows in set (0.01 sec)
mysql>
mysql> CREATE DATABASE test;
ERROR 1044 (42000): Access denied for user 'ae********'@'127.0.0.1' to database 'test'
インストール概要
wp-cli.yml(設定ファイル)とwp-install.sh(実行ファイル)を用意します。
wp-install.shで実現することは
- html/wpにWordpressファイルダウンロード
- wp-config.php作成
- サイトURLをドメイン直下に変更
- 「検索エンジンでの表示」を「検索エンジンがサイトをインデックスしないようにする」に設定
- 不要なプラグイン削除、指定したプラグインのインストール
まで、です。
wp-cli.yml
# Global parameter defaults
path: html/wp
# Subcommand
core download:
locale: ja
core config:
dbuser: ae********
dbpass: Password
dbhost: 127.0.0.1:3307
dbname: ae********_wp
core install:
admin_user: admin
admin_password: password
admin_email: ********@evoworx.co.jp
title: TEST
url: http://********.jp/wp
wp-install.sh
#!/usr/local/bin/bash
set -Ceu
home='http://********.jp'
sitedir='wp'
pluginarr=()
pluginarr+=( 'all-in-one-wp-security-and-firewall' )
pluginarr+=( 'cmb2' )
php-5.5.27 ~/bin/wp-cli.phar core download
php-5.5.27 ~/bin/wp-cli.phar config create --skip-check
php-5.5.27 ~/bin/wp-cli.phar core install
php-5.5.27 ~/bin/wp-cli.phar option update home $home
php-5.5.27 ~/bin/wp-cli.phar option update blog_public 0
cp -p html/$sitedir/index.php html/index_org.php
sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" html/index_org.php > html/index.php
#rm -f html/index_org.php
php-5.5.27 ~/bin/wp-cli.phar plugin delete hello
for plugin in ${pluginarr[@]}
do
php-5.5.27 ~/bin/wp-cli.phar plugin install ${plugin} --activate
done
2ファイル作成したら、
% bash wp-install.sh
以上です。
インストール詳細
wp-install.shを上から順に、シェルスクリプトに不慣れな人間向けの解説です。
#!/usr/local/bin/bash
set -Ceu
おまじないです。
- set -C・・・リダイレクト先のファイルが既に存在している場合にスクリプトを停止する
- set -e・・・エラーがあったらスクリプトを停止する
- set -u・・・未定義の変数を使おうとした場合にスクリプトを停止する
home='http://********.jp' #サイトURL
sitedir='wp' #Wordpressインストールディレクトリ
#インストールするWordpressプラグイン
pluginarr=()
pluginarr+=( 'all-in-one-wp-security-and-firewall' )
pluginarr+=( 'cmb2' )
必要な情報を記述します。
php-5.5.27 ~/bin/wp-cli.phar core download
php-5.5.27 ~/bin/wp-cli.phar config create --skip-check
php-5.5.27 ~/bin/wp-cli.phar core install
順に、ダウンロード、wp-config.phpを作成、インストール。
php-5.5.27 ~/bin/wp-cli.phar option update home $home
cp -p html/$sitedir/index.php html/index_org.php
sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" html/index_org.php > html/index.php
#rm -f html/index_org.php
サイトURLを変更し、index.phpを移動、パスを書き換えています。
rmコマンドは個人の責任に置いて(!)コメントアウトを外して使用してください。
php-5.5.27 ~/bin/wp-cli.phar plugin delete hello
for plugin in ${pluginarr[@]}
do
php-5.5.27 ~/bin/wp-cli.phar plugin install ${plugin} --activate
done
使わないプラグイン(Hello Dolly)を削除、必要なプラグインをインストールします。
エラー!
php-5.5.27 ~/bin/wp-cli.phar core download
Error: The requested locale (ja) was not found.
wp-cli.ymlで日本語版を指定していますが、指定の最新バージョンに日本語版が無い場合はエラーで停止します。
日本語版のあるバージョンを指定するか、英語版を使用するか、で解消します。
php-5.5.27 ~/bin/wp-cli.phar config create –skip-check
% wp config create
/usr/bin/env: not found
–skip-check
DBへの接続確認をしない、というオプションです。
これが無いとエラーで停止します。
MAMP版
実はMAMP版も作りましたが、ローカルの実装はLocal by Flywheelなりvccwなりの仮想環境でやろうという話になり、ぽしゃりました。
供養に載せておきます。
wp-cli.yml
# Global parameter defaults
path: htdocs/wp
# Subcommand
core download:
# locale: ja
core config:
dbuser: root
dbpass: root
dbhost: localhost:/Applications/MAMP/tmp/mysql/mysql.sock
dbname: DBName
core install:
admin_user: admin
admin_password: password
admin_email: ********@evoworx.co.jp
title: TEST
url: http://localhost:1000/wp
install.command
#!/bin/sh
set -Ceu
home='http://localhost:1000'
sitedir='wp'
theme_name='テーマ名'
pluginarr=()
pluginarr+=( 'all-in-one-wp-security-and-firewall' )
pluginarr+=( 'cmb2' )
cd `dirname $0`
export PATH=$PATH:/Applications/MAMP/Library/bin
mkdir htdocs && true
wp core download
wp config create
wp db create
wp core install
wp option update home $home
wp option update blog_public 0
cp -p htdocs/wp/index.php htdocs/index_org.php
sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" htdocs/index_org.php > htdocs/index.php
rm -f htdocs/index_org.php
wp plugin delete hello
for plugin in ${pluginarr[@]}
do
wp plugin install ${plugin} --activate
done
wp scaffold _s sample_theme --theme_name="$theme_name" --author="EVOWORX" --sassify --activate