wp-cliと言うWordPressの環境を設定するスクリプトを使って、講習会用に1台のPCで一つのデータベース+50個のWordPress環境をお手軽に作る話。
WordPressを体験するような講座することになった
何度か講師をさせて貰ってる地元のIT系イベント(KIP Project)でWordPressの体験(本格的な使い方では無く、jimdoやブログ、facebookページとの違いを体験して貰う的な奴)をするような講習をすることになった。
wordpress.comを使って体験することも出来なくも無いが、プラグインのインストール云々を考えるとやっぱりあれは違う物。ただ、各自のPCにXAMPやMAMP入れて…って言うのは家で続きをやるには良いけど「ちょっと体験」にはハードルが高い(&時間もない)。と言うことで予めWordPressを入れた環境(CentOSを入れた仮想マシン)をLAN内に用意し(会場のインターネットの速度が遅い)、みんなにつなげて貰うことにした。
作りたいのは”レンタルサーバーで「WordPressの簡単インストール」ボタンを押した直後”の環境。あれを人数分作りたい。
仮想マシンと言えば今風にはVagrant+Chefでどーこうするのも面白そうだけど、講習会ってそんな何度もする訳じゃないし、終わったらDBとWordPressの入ったディレクトリを消せれば再利用も出来るしなぁと言うことで、WP-CLIと言う、”黒い画面でWordPressの環境を設定するスクリプト”だけで作ることにしました。
環境

仮想マシン(WordPress) -(有線LAN)- 無線LANルーター -(無線LAN)- お客さんを想定していたが…(後述)
OSを入れる
仮想マシンにOSを入れる方法は省略。最近は色々ありますよね。お時間有ればVagrantを使ってみると今後捗るかもしれません。自分の環境汚れても良いし仮想マシンとかめんどくさいって方は、XAMP(Windows)やMAMP(Mac)を入れても良いかと思います。
- “仮想環境 centos インストール” (google)
仮想マシンに最低2GBはメモリを割り当てたいなぁと思ったので講師PCとは別のPCを用意してもらい、今回はCentOS6.5をMinimalでインストールしました。
OSを入れた後の設定
- ファイアーウォールの設定(80番を開ける)
# vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT - selinuxの設定(講習会用なので切っちゃう)
# vi /etc/sysconfig/selinux
SELINUX=disabled - 再起動
# reboot - 必要なパッケージを入れる
# yum -y install php-mysql php-common php php-cgi php-fpm php-gd php-mbstring mysql mysql-server httpd - mysqlの起動&パスワードとか設定
# service myssqld start
# mysql_secure_installation
# chkconfig mysqld on - apacheを起動
# service httpd start
# chkconfig httpd on
WP-CLI
で、本題のコレ。
WP-CLIは黒い画面でWordPressの環境設定(インストール、アップデート、プラグイン入れたり、テーマ入れたり、設定したり…)が出来る子です。まぁ普通にブログを作るだけとかなら使う機会は有りませんが、「自動的に何度もWordPressを入れたい or 複数個入れたい or 複数台に入れたい」って方には便利なスクリプトです。
- WP-CLI
http://wp-cli.org/
WP-CLIのインストール
本家のトップページに書いてありますが、
# curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar > wp-cli.phar # php wp-cli.phar --info(確認) # chmod +x wp-cli.phar # mv wp-cli.phar /usr/bin/wp $ wp --info(確認)
ってするだけです。phpが動けば他のOSでも動くのだと思います。
WP-CLIを使ったWordPressのインストール
詳しくは本家のドキュメントに書いてありますが、
- ダウンロード / wp core download
(/var/www/html/hogeへ入れる場合。version=latestでそのlocaleの最新版が入る。付けないとenがあるが、jaが無い場合などにはエラーとなった。)# wp core download --locale=ja --version=latest --path=/var/www/html/hoge
- 設定ファイルを作る / wp core config
(dbへの接続ユーザー名:hoge、パスワード:hogepassの場合)# cd /var/www/html/hoge # wp core config --dbname=wp_hoge --dbuser=hoge --dbpass=hogepass
- DBを作る / wp db create
# cd /var/www/html/hoge # wp db create
の3つでまっさらの環境を作ることが出来ます。
“wp core install”を使うとWordPressの設定までできますが、今回は「レンタルサーバーを借りて、簡単インストールを押した後」からの講習をしたかったので上記までで。
とりあえず、上記のコマンドで環境を作れる事を確認したので、50個の環境を作ることにします。
#!/bin/bash username=user maxno=50 dbuser=hoge dbpass=hogepass no=0 until [ $no - eq $maxno ] do no=$(($no + 1)) wp core download --locale=ja --path= /var/www/html/ $username$no cd /var/www/html/ $username$no wp core config --dbname=wp_$username$no --dbuser=$dbuser --dbpass=$dbpass wp db create chown -R apache.apache /var/www/html/ $username$no done |
dbuser=,dbpass=をdb接続のユーザー名に書き換えてwp_create.shって名前で保存して、
# bash wp_create.sh
ってすると50個の環境が出来上がり(WordPressのダウンロードは自動的にキャッシュを使うので2分くらいで終わります)、http://server-ip/user1~user50って打つとWordPressの初期画面が出るようになります。
講習会終わったとき用にdbとWordPressを消す(wp db drop)スクリプトも書いておきます。
#!/bin/bash username=user maxno=50 no=0 until [ $no - eq $maxno ] do no=$(($no + 1)) cd /var/www/html/ $username$no wp db drop -- yes rm -fR /var/www/html/ $username$no done |
wp-cliの他のオプション
今回は使いませんでしたが、投稿も含め、WordPressのかなり色んな事ができるので、また機会があったら使ってみようと思います。
で、結局講習はどうだったの?
結論から言うともうダメダメで本当に来てくれた方に申し訳ない気持ちでいっぱいです。
諸事情でWordPressを入れたマシンがWifiになってしまったのですが、受講者は11名なので多分大丈夫だろうとやってみたら、接続できない接続できない… 何か負荷がかかってるのかなぁとtopで見るも、特にこれと言った原因が分からず結局その場で直ぐに対応は出来ず、wordpress.comを使ってお茶を濁してきた感じになってしまいました。
とりあえずコレ系はWiFiつかっちゃダメと心に誓ったのですが、次回同じ事があったらどうしようかを迷っています(10台のwifiがダメだったのか、サーバー側をwifiにしたのがダメだったのか、仮想環境がダメだったのか…)。とりあえず、ダメだった場合、次と次くらいは他の方法を予め用意しとかないとダメってのを再認識しました。

座学は聞いて貰えたが、この後 嫌な汗が沢山出ることを右の彼はまだ知らない…
講習の資料は↓。世の中にはWordPressを知ってる事 前提の講習は見かけますが、そもそもWordPressって何?何が美味しいの?って感じの講習にしました。授業作るの3日かかったので、機会あればまた違うところでしたいなぁ…
- はじめてのWordPress
ワードプレスでホームページ作りを体験してみよう
http://prezi.com/xuonlfnsb1lq/wordpress/
コメント