WordPressをコマンドラインでインストールしたい

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

最近WordPressをインストールする機会があったのですが、インストールや設定変更を行う時にWeb画面を使う必要があり同じ環境を作るのが面倒なだと思っていました。コマンドラインで実行できるとミス無く環境を構築しやすいと思っているとWP-CLIというツールを見つけたのでコマンドラインでWordPressをインストールしてみました。

WP-CLI

公式サイトによると、以下のような説明がされています。

WP-CLI は WordPress を管理するためのコマンドラインツールです。 プラグインのアップデートやマルチサイトのセットアップなどの多くのことをブラウザ無しで行うことができます。

WP-CLI: Command line interface for WordPress

ブラウザ無しで管理を行うことが可能であるためWordPress環境の構築を自動化しやすくなりますね。

WP-CLIでWordPressをインストールする

前提環境

WordPressをインストールする環境はAWS環境で、以下の通りです。

  • Web/APサーバ(EC2):Amazon Linux AMI 2016.03.3 x86_64 HVM GP2(ami-374db956)
  • DBサーバRDS(RDS):MySQL 5.6.27

WP-CLIをインストールする

公式ドキュメントのインストール方法を元にインストールします。

まずは、必要となるパッケージをインストールします。PHPのバージョンは5.6、Apacheのバージョンは2.4としています。

$ sudo yum install -y php56 php56-mysqlnd httpd24 mysql

WP-CLIをダウンロードします。

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

動作確認します。

$ php wp-cli.phar --info
PHP binary:	/usr/bin/php-5.6
PHP version:	5.6.22
php.ini used:	/etc/php.ini
WP-CLI root dir:	phar://wp-cli.phar
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version:	0.24.0

実行権限を与えて、/usr/local/bin/wpへ移動します。

$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp

再度、動作確認します。

$ wp --info
PHP binary:	/usr/bin/php-5.6
PHP version:	5.6.22
php.ini used:	/etc/php.ini
WP-CLI root dir:	phar://wp-cli.phar
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version:	0.24.0

WordPressをインストールする

インストール先/var/www/html/のオーナーをapacheへ変更します。

$ sudo chown apache:apache /var/www/html/

wp core downloadコマンドでWordPressを/var/www/html/へダウンロードします。apacheユーザで実行して、ロケールをjaにしています。

$ sudo -u apache /usr/local/bin/wp core download --locale=ja --path=/var/www/html
Downloading WordPress 4.5.3 (ja)...
md5 hash verified: dfbe4102868c5f65f151c74d26a51354
Success: WordPress downloaded.

wp core configコマンドでWordPressの設定ファイルwp-config.phpを生成します。ここでは、DB名、RDSのユーザ、パスワード、エンドポイントを指定します。

$ sudo -u apache /usr/local/bin/wp core config --dbname='<DB名>' --dbuser='<RDSのユーザ>' --dbpass='<RDSのパスワード>' --dbhost='<RDSのエンドポイント>' --path=/var/www/html
Success: Generated 'wp-config.php' file.

RDSにデータベースを作成していない場合は、以下のコマンドを実行してデータベースを作成して下さい。wp db createコマンドでデータベースを作成します。

$ sudo -u apache /usr/local/bin/wp db create --path=/var/www/html
Success: Database created.

wp core installコマンドでWordPressをインストールします。

$ sudo -u apache /usr/local/bin/wp core install --url='<EC2のパブリックIP>' --title='サンプルDev.IO-2' --admin_name='<WordPressの管理者ユーザ>' --admin_password='<WordPressの管理者パスワード>' --admin_email=<管理者用メールアドレス>  --path=/var/www/html
Success: WordPress installed successfully.

また、WordPressでは.htaccessを使うので許可をします。

# cat << EOS | sudo tee /etc/httpd/conf.d/wordpress.conf
<Directory "/var/www/html">
    AllowOverride All
</Directory>
EOS

apacheを起動します。

$ sudo service httpd start
Starting httpd:                                            [  OK  ]

http://<EC2のパブリックIP>/wp-admin/にアクセスしてみます。管理者のユーザとパスワードを入力してログインします。

サンプルDev_IO-2_ログイン

インストール済みの状態となっています。

ダッシュボード_‹_サンプルDev_IO-2_—_WordPress

設定変更をコマンドラインで行う

次は設定をコランドラインで変更してみます。ここでは「パーマリンク設定」を変更してみます。

初期状態では、以下のよう「基本」になっています。

パーマリンク設定_‹_サンプルDev_IO-2_—_WordPress

リンクを「/<ポスト名>.html」の形式に変更します。wp option addコマンドで設定を設定します。

$ sudo -u apache /usr/local/bin/wp option add --autoload=yes --path=/var/www/html permalink_structure '/%postname%.html'
Success: Added 'permalink_structure' option.

もしError: Could not add option 'permalink_structure'. Does it already exist?とエラーが出た場合は、wp option updateコマンドを使用して下さい。

Web画面で更新する場合は.htaccessも更新されますが、wp option addコマンドではDB内の項目しか更新されません。そのため.htaccessも作成します。

$ cat << EOS | sudo -u apache tee /var/www/html/.htaccess
> # BEGIN WordPress
> <IfModule mod_rewrite.c>
> RewriteEngine On
> RewriteBase /
> RewriteRule ^index\.php$ - [L]
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule . /index.php [L]
> </IfModule>
>
> # END WordPress
> EOS

Web画面で確認すると、以下の様に更新されています。

パーマリンク設定_‹_サンプルDev_IO-2_—_WordPress

試しに記事を書いてみます。 投稿の編集_‹_サンプルDev_IO-2_—_WordPress

すると、「http://<EC2のパブリックIP>/<ポスト名>.html形式のリンクが表示できるようになりました。 test_001_–_サンプルDev_IO-2

最後に

WordPressのインストールでは自動化しようとしても、結局設定変更やプラグインのインストールはWebの画面での入力が必要になります。しかし同じような環境を大量に構築する場合にWeb画面を使用すると、時間がかかるだけでなく操作の誤りが発生しやすくなります。WP-CLIを使用することで、短時間で正確な操作ができるようになります。
WordPressをインストールする時にWP-CLIの利用も検討してはいかがでしょうか。