ConoHa WING契約からWordPress公開まで3時間。初期設定を管理画面ではなくSSH+WP-CLIでやった記録

構築ログ

このサイト「実測ログ」を立ち上げたときの記録です。

WordPressの開設手順は検索すればいくらでも出てきます。ただ、その大半は「管理画面をポチポチする」手順で、エンジニアからすると同じ作業をGUIで繰り返すのはちょっとつらい。そこで契約とかんたんセットアップだけ管理画面でやり、それ以降の初期設定・テーマ導入・固定ページ作成をすべてSSH+WP-CLIで済ませてみました。

結果、契約からGoogle Analyticsの計測確認まで、かかった時間は約3時間でした(AIに手順を相談しながらの時間込み)。この記事では、実際に叩いたコマンドとつまずいた箇所をそのまま公開します。

作業環境はMac(ターミナル標準のssh)です。Windowsの方はWSLかPowerShellのOpenSSHで読み替えてください。

かかった時間とお金

先に実測値をまとめます。

工程所要時間
契約〜WordPressかんたんセットアップ約20分
SSH設定(鍵作成〜接続成功)約15分
WP-CLI導入+初期設定約30分
固定ページ3枚+フッターメニュー作成約30分
セキュリティ設定+Search Console+GA4約40分
合計(調べもの・試行錯誤込み)約3時間

検証環境: macOS / ConoHa WING ベーシック / WordPress 7.0 / Cocoon 2.9.3.3
検証日: 2026年7月4日

費用はConoHa WINGのベーシックプラン(WINGパック・6ヶ月契約)で7,260円。月あたり1,210円で、独自ドメイン(.com)はこの契約に無料で付いてきました。

ConoHa WING(公式サイト)で現在の料金・キャンペーンを確認できます。

契約は管理画面で。ここはCLI化できない

契約フローで選んだのは次の通りです。

  • 料金タイプ: WINGパック(無料独自ドメイン付き)
  • プラン: ベーシック(6コア/8GB/SSD 300GB。個人ブログには十分すぎます)
  • 契約期間: 6ヶ月。長期ほど安くなりますが、続くか分からないものに36ヶ月は張れないので

途中で「AIブログ生成ツール ConoHa Pencil」を付けるか聞かれます。記事制作は自前のワークフローがあるので「利用しない」を選びました。

WordPressテーマの選択画面では無料のCocoonを選択。ここで有料テーマを買うこともできますが、あとからいくらでも変えられるので、最初は0円のCocoonで始めるのが無難だと思います。実は私はこのあとCLIでCocoonを入れ直したので、ここの選択はどちらでもよかったことがあとで分かりました。

かんたんセットアップでドメイン(jissoku-log.com)、サイト名、WordPressのユーザーを作って契約完了。ここまでは管理画面でしかできない工程です。

SSHを設定する。ハマりどころはユーザー名

ConoHa WINGはSSHに対応しています。管理画面の「サーバー管理 > SSH > +SSH Key」でアカウントを作成し、秘密鍵をダウンロードするだけ。ここは10分ちょっとで終わりました。

VPSに慣れていると「鍵を作っただけでは?」と思うかもしれませんが、WINGではこのボタン1つでアカウント作成・鍵ペア生成・公開鍵の登録まで完了しています。なお秘密鍵の再ダウンロードはできないので、なくしたらアカウントごと作り直しになります。

接続はこうです。

cp ~/Downloads/ダウンロードした鍵.pem ~/.ssh/
chmod 600 ~/.ssh/ダウンロードした鍵.pem
ssh -i ~/.ssh/ダウンロードした鍵.pem -p 8022 cXXXXXXX@サーバーホスト名

私が唯一つまずいたのはユーザー名でした。何も考えずに ssh -p 8022 ホスト名 と打つと、ローカルマシンのユーザー名で接続しにいって Permission denied (publickey) で弾かれます。ConoHaのSSHユーザー名は管理画面に表示されている「cで始まるアカウント名」です。ポートが22ではなく8022な点にも注意してください。

毎回オプションを打つのは面倒なので、~/.ssh/config に登録しておきます。

Host jissoku
  HostName サーバーホスト名
  Port 8022
  User cXXXXXXX
  IdentityFile ~/.ssh/ダウンロードした鍵.pem
  IdentitiesOnly yes

以降は ssh jissoku の2単語で入れます。

WP-CLIを入れる。「どこで動くツールか」を誤解していた

ここが今回一番の学びでした。私は最初、WP-CLIを「手元のマシンからWordPressにSSH接続しにいくクライアントツール」だと思っていたんです。実際は逆で、サーバーの中に置いて、サーバーの中で動かすツールでした。wp-config.phpを直接読んでDBを操作するので、WordPressのログインすら不要です。

ConoHa WINGにwpコマンドは入っていないので、ユーザーローカルに導入します。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mkdir -p ~/bin && mv wp-cli.phar ~/bin/wp
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

あとはWordPressのインストールディレクトリ(wp-config.phpがある場所)に移動すれば動きます。

cd ~/public_html/jissoku-log.com
wp core version

初期設定を全部コマンドで流す

管理画面で1画面ずつ開いてやる設定を、まとめて実行しました。

# URLをhttps・wwwなしに統一(SSL発行済みを確認してから)
wp option update home 'https://jissoku-log.com'
wp option update siteurl 'https://jissoku-log.com'

# パーマリンクを投稿名に
wp rewrite structure '/%postname%/' --hard

# Hello world! と Sample Page を削除
wp post delete 1 2 --force

# コメント欄をデフォルトで閉じる
wp option update default_comment_status closed

テーマもCLIで入れました。Cocoonは公式サイトがZIPを配布しているので、URLを直接渡せます。

wp theme install <Cocoon親テーマのZIP URL> --force
wp theme install <Cocoon子テーマのZIP URL> --force --activate
wp theme update cocoon-master
wp theme list

ここで1つハマりどころがあって、ZIPを入れた直後は親テーマがactiveになっています。カスタマイズが更新で消えないよう、必ず子テーマ(cocoon-child-master)をactivateし直してください。配布ZIPのバージョンが古いこともあるので、theme updateも忘れずに。

固定ページ3枚とフッターメニューもコードで作る

ブログを収益化する予定があるなら、プライバシーポリシー・運営者情報・広告掲載についての3ページは公開前に必要です(ASPの提携審査でも見られます)。この3ページの作成とフッターメニューへの登録を、1本のスクリプトにまとめました。

仕組みは単純で、ページ本文のHTMLをヒアドキュメントで一時ファイルに書き出し、wp post create で固定ページとして投入、wp menu でフッターに並べるだけです。骨格だけ抜粋します。

cat > /tmp/about.html << 'EOF'
<h2>このサイトについて</h2>
<p>(本文HTML)</p>
EOF

P2=$(wp post create --post_type=page --post_status=publish \
  --post_title='運営者情報' --post_name=about /tmp/about.html --porcelain)

wp menu create "footer"
wp menu item add-post footer "$P2"
wp menu location assign footer navi-footer

Cocoonのフッターメニューのlocation名は navi-footer です。wp menu location list で確認できます。

ページ本文の生成自体はAIに任せたので、この工程は全部で30分ほどでした。手こずったのは、AIが生成したコンテンツをサーバーに渡す部分です。AIはサーバーにファイルを直接置けないので、受け渡しは人間がやることになるのですが、「cat > fileを実行してからペースト」という2段階の指示を、コマンドだけ実行して入力待ちの無言プロンプトを「何も起きない」と勘違いする、という齟齬が起きました。対策はシンプルで、AI側に「終端文字列込みのヒアドキュメントを1ブロックで出させて、丸ごとペーストする」方式に統一したら事故らなくなりました。AIとの分業では、こういう受け渡しプロトコルを最初に固定しておくのが効きます。日本語のメニュー名でassignに失敗したのでASCII名にした、という小ネタもあります。

公開前にセキュリティ設定を入れる

WordPress本体にはIP制限もログイン試行制限もありません。ログイン画面は世界中のボットに総当たりされ続けるのが常態なので、公開前に守りを入れておきます。ConoHa WINGなら管理画面のトグルで済みます。

「サイト管理 > サイトセキュリティ > WordPressセキュリティ」で、ログイン回数制限をON、海外アクセス制限(ダッシュボード/XML-RPC/REST-API等)をONにしました。攻撃の大半は海外IP経由なので、この2つだけで体感の攻撃量は大きく減ります。

SSH自体は鍵認証のみでポートも8022なので、Web側のログイン画面より堅い。今後の運用も入稿までCLIでやる予定なので、そもそもwp-login.phpを開く機会自体が少なくなる見込みです。

Search ConsoleとGA4は「一番楽な方法」で

最後に計測まわりです。ここはどちらも拍子抜けするほど簡単でした。

Search Consoleはプロパティタイプを「URLプレフィックス」にすると、DNS編集なしのHTMLタグ認証が使えます。認証タグのcontent値をコピーして、WordPress管理画面「Cocoon設定 > アクセス解析・認証」の欄に貼るだけ。Cocoonが認証欄を最初から持っているので、テーマファイルを触る必要はありません。認証が通ったらサイトマップ wp-sitemap.xml を送信します。送信直後は「取得できませんでした」と表示されましたが、curlで200が返ることを確認して放置したら、数十分後に「成功しました」に変わっていました。

GA4はプロパティを作成して測定ID(G-XXXX)を発行し、同じCocoonの設定画面のGA4測定ID欄に貼るだけです。Site Kitプラグインの導入を勧められますが、計測だけが目的なら不要です。リアルタイムレポートに自分のアクセスが映れば完了。

まとめ: 管理画面は契約とトグルだけ、あとはCLIが速い

3時間の内訳を振り返ると、管理画面が必須だったのは「契約・かんたんセットアップ・SSHアカウント作成・セキュリティのトグル」だけでした。それ以外の初期設定・テーマ・固定ページは全部コマンドで流せて、しかもコマンドは記録に残るので、次にサイトを立てるときはコピペで再現できます。2サイト目は1時間を切れる気がします。

このサイトは今後、個人開発のインフラ費用(FirebaseやVPSの請求実額)を実測して公開していく予定です。次回は、運用中の個人開発アプリのFirebase請求内訳を全部見せます。Firestoreを警戒していたら、課金の主犯は別のところにいました。

この記事の手順で使ったサーバー: ConoHa WING(公式サイト)
タイトルとURLをコピーしました