Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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、ライフハックなんかの記事を書いています。気軽にブログも見に来てください。

いつもの匠

itsumonotakumi
共有厨なんで、技術的な話から駄話まで様々な記事を公開しています。
https://takulog.info
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away