Edited at

一発でWordPressのダミーサイトを作成するスタートアップスクリプト for ConoHa

WordPressの様々な検証したり、使い方を練習したりするためにダミーデータでWEBサイトをポンポン作りたくなったりしませんか?

安価な ConoHaで作成してたりする身なわけで、いい加減に毎回毎回作ったり、Dockerで作っても微妙な違いが出るのを吸収するのが嫌になってきました。

そこで本記事では、ConoHaコントロールパネルからサーバーを作成する際に使える、スタートアップスクリプトを公開します。


前提

サーバーの種別は「Kusanagi」を選択します。UbuntuやCentOSを選んでもダメです。

リソースはどれでも構いませんが、テストなら一番小さいリソースで十分です。


WordPressダミーサイト生成のスタートアップスクリプト


startup_wp_dummy.sh

#!/bin/sh

# Setting Parameters ==========================================================
## OS and Network Setting
IPADDRESS=`curl globalip.me`
HOSTNAME=example.com #(${IPADDRESS})でもOK
EMAIL='admin@example.com'
SSHPORT=20202
KUSANAGIPASSWORD='SamplePassword'
WWWUSER=httpd

## WordPress Settings
WPNAME=wpsample
WPLANG=ja
WPTITLE=WPTEST
WPADMINNAME=admin
WPADMINPASS=Sample_Password_7
DBNAME=wordpress
DBUSER=wordpress
DBPASSWD=SamplePassword7
WPTHEMENAME=sosimple
WPTHEMEURL=https://downloads.wordpress.org/theme/sosimple.1.2.7.zip
SAMPLESITE=https://github.com/jawordpressorg/theme-test-data-ja.git
WPPLUGINS=("autoptimize" "nginx-helper" "siteguard" "w3-total-cache" "wp-optimize" "wp-hyper-response" "wordpress-importer")

# Setting Process =============================================================

# OS Update
YUMCMD='yum -y'
${YUMCMD} --enablerepo=remi,remi-php56 update
${YUMCMD} update
${YUMCMD} install zip unzip git jq

# Setting User
echo ${KUSANAGIPASSWORD} | passwd --stdin kusanagi

# Set Hostname
hostnamectl set-hostname ${HOSTNAME}

# Setting Sshd
SSHDCONF=/etc/ssh/sshd_config
SEDCMD='sed -i -e'
${SEDCMD} 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/' ${SSHDCONF}
${SEDCMD} "s/#Port 22/Port ${SSHPORT}/" ${SSHDCONF}
${SEDCMD} 's/PermitRootLogin yes/PermitRootLogin no/' ${SSHDCONF}
systemctl restart sshd

# Setting Firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --permanent --new-zone=wpnet
firewall-cmd --reload
firewall-cmd --set-default-zone=wpnet
firewall-cmd --permanent --add-service=http --zone=wpnet
firewall-cmd --permanent --add-port=${SSHPORT}/tcp --zone=wpnet
firewall-cmd --reload

# kusanagi provision
kusanagi provision --WordPress --wplang ${WPLANG} --fqdn ${HOSTNAME} --email ${EMAIL} --dbname ${DBNAME} --dbuser ${DBUSER} --dbpass ${DBPASSWD} ${WPNAME}
mv /etc/nginx/conf.d/${WPNAME}_ssl.conf /etc/nginx/conf.d/${WPNAME}_ssl.con_f
systemctl start nginx

# Wordpress Install and Basic Setting
WPHOST="/home/kusanagi/${WPNAME}"
WPROOT="${WPHOST}/DocumentRoot"
WPCONF=${WPROOT}/wp-config.php
WPCMD="/usr/local/bin/wp --path=${WPROOT}"
KUSANAGICMD='sudo -u kusanagi'
${KUSANAGICMD} ${WPCMD} core config --dbname=${DBNAME} --dbuser=${DBUSER} --dbpass=${DBPASSWD} --dbhost=localhost --locale=${WPLANG}
${KUSANAGICMD} ${WPCMD} core install --admin_user=${WPADMINNAME} --admin_password=${WPADMINPASS} --admin_email=${EMAIL} --url=http://${HOSTNAME}/ --title=${WPTITLE}
${KUSANAGICMD} chown kusanagi.www ${WPCONF}
${KUSANAGICMD} chmod 0440 ${WPCONF}
${KUSANAGICMD} echo "define('FS_METHOD', 'direct');" >> ${WPCONF}
${KUSANAGICMD} chmod 0755 ${WPROOT}
${KUSANAGICMD} mv ${WPCONF} ${WPHOST}

# Wordpress Setting
${KUSANAGICMD} ${WPCMD} core update
${KUSANAGICMD} ${WPCMD} plugin update --all
${KUSANAGICMD} ${WPCMD} theme update --all
${KUSANAGICMD} ${WPCMD} core language update

## WordPress Plugin Setting
HTTPDCMD="sudo -u ${WWWUSER}"
chown httpd $WPROOT/wp-content/plugins
for i in "${WPPLUGINS[@]}"
do
${HTTPDCMD} ${WPCMD} plugin install $i --activate
done

## WordPress Theme Setting
${KUSANAGICMD} curl ${WPTHEMEURL} -o ${WPROOT}/wp-content/themes/theme.zip
${KUSANAGICMD} unzip ${WPROOT}/wp-content/themes/theme.zip -d ${WPROOT}/wp-content/themes
${KUSANAGICMD} rm -f ${WPROOT}/wp-content/themes/theme.zip
${KUSANAGICMD} ${WPCMD} theme activate ${WPTHEMENAME}

## Sample Data Import to WordPress
git clone ${SAMPLESITE} /tmp/test-data
${KUSANAGICMD} ${WPCMD} import /tmp/test-data/wordpress-theme-test-date-ja.xml --authors=create

## Cleanup default data of WordPress
${KUSANAGICMD} ${WPCMD} theme delete twentyfifteen twentyseventeen twentysixteen
${KUSANAGICMD} ${WPCMD} plugin uninstall akismet hello
${KUSANAGICMD} ${WPCMD} post delete 1
${KUSANAGICMD} ${WPCMD} db optimize


スタートアップスクリプトとして入力フォームに書き込んだ後、サーバーを「追加」して5〜15分したら出来上がります。

http://{サーバーのIPアドレス}/ に接続して、WordPressで作ったサイトが表示されたら完成。

管理画面は http://{サーバーのIPアドレス}/wp-admin/ から変えていません。ログインして、プラグインなどを調整すれば使い物になるはずです。

実用までの所要時間は30分もかからないはず。


スタートアップスクリプトの注意・解説

スクリプトの頭数行が設定値です。そこを用途に応じて変えてください。


OSやネットワークに関する設定値

変数名
設定内容
注意事項

IPADDRESS
サーバーのIPアドレス
直接IPアドレスを指定してもOK。

HOSTNAME
サーバーのホスト名
ホスト名=IPアドレスにするなら、${IPADDRESS}を指定する。FQDNである必要なし。

EMAIL
電子メールアドレス
実在するかどうか不問。

SSHPORT
SSHの待受ポート
デフォルトポート(22)は極力指定しない方が無難。

KUSANAGIPASSWORD
OSユーザー「Kuasnagi」のパスワード
a-zA-Z0-9.!#%+_- のいずれかで 8 文字以上

WWWUSER
HTTPサーバーの実行ユーザー名
OSやインストール方法によってhttpdだったり、wwwだったりする。


WordPressに関する設定値

変数名
設定内容
注意事項

WPNAME
kusanagiのプロファイル名
ホスト名やFQDN、サイト名でなくても良い。

WPLANG
WordPressサイトの言語
ほぼ ja 一択。

WPTITLE
WordPressサイトの名前
日本語じゃない方が無難かもしれません。

WPADMINNAME
WordPressサイトのログインアカウント名
推測されにくい独自のものにすべき。

WPADMINPASS
WordPressサイトのログインパスワード
推測されにくい独自のものにすべき。

DBNAME
MariaDBのデータベース名
忘れなければ何でも良いです。

DBUSER
MariaDBのログインアカウント名
推測されにくい独自のものにすべき。

DBPASSWD
MariaDBのログインパスワード
推測されにくい独自のものにすべき。

WPTHEMENAME
インストールするWordPressテーマ名
たまにwpコマンドで指定するには独自の名前じゃないとダメだったりするので注意。

WPTHEMEURL
インストールするWordPressテーマのダウンロードURL

https://ja.wordpress.org/themes/から探したりするもの。

SAMPLESITE
WordPressのサンプルデータをダウンロードするURL
独自のWordPressのエクスポートデータを指定する場合、XMLファイル名などの修正が必要。

WPPLUGINS
インストールするWordPressのプラグイン名
wpコマンドで指定するには独自の名前じゃないとダメだったりするので注意。


その他


  • エラー処理は一切していません。そのため、業務などで定期的な運用に載せるなら、絶対に組み込んだ方が良いです。

  • サンプルデータを対象としてますが、少し作り替えれば開発環境や検証環境を作るのにも使えると思います。


  • nukagaさんが作成され、TaiさんがGitHubで公開されているテーマユニットテストデータの日本語版「theme-test-data-ja」を利用させていただいてます。データ量がたくさんあって助かります。

  • ConoHaでは常用していますが、AWSやさくらインターネットなどの他のVPS/クラウドではテストしていません。ご利用には御注意ください。


参考にしたサイト・記事


筆者のサイト

こういう技術系の情報以外にも、iPadやSurface Pro、Mastodon、ライフハックなんかの記事を書いています。気軽にブログも見に来てください。

いつもの匠