0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ConoHa WINGでは、WP-CLIは簡単には動かないみたい

0
Posted at

ConoHa WINGは、SSHもWP-CLIも対応していると公式ページにも書いてあるし、Xserverやさくらと同じ感覚で動くと思っていたら結構大変のようです。

他のレンタルサーバーと同じ感覚で叩くと引っかかるポイントがいくつかあって、運用に組み込もうとすると意外と一手間かかる。

罠① SSHポートが 22 ではなく 8022

ConoHa WINGのSSHポートは標準の22ではなく、8022 です。

普段ポート指定なし(=22)でSSH接続している人や、自動化スクリプトに22をハードコードしている場合、最初の接続でひたすらタイムアウトを食らいます。エラーメッセージが「接続できません」「タイムアウトしました」系で、原因がポート番号だけだとは中々気づけない。

ssh -p 8022 c1234567@xxxx-xxxx.conohawing.com

のように、ポートを必ず明示する。アプリやライブラリ側に「SSHポート」設定があるなら、まずここを 8022 に変えるのが第一歩です。

罠② SSH鍵は .pem 形式で発行される

ConoHa WINGの公開鍵認証用の鍵は、コントロールパネルの「サーバー管理 → SSH → +SSH KEY」で発行します。発行ボタンを押すと .pem ファイル がダウンロードされます。

中身はOpenSSH互換の秘密鍵なので、パスを指定すれば普通に使えます。ただし:

  • macOS :ダウンロード直後の .pem はパーミッションが緩すぎて、SSHが「Permissions are too open」と言って鍵を読んでくれません。chmod 600 ~/.ssh/conoha.pem を一度だけ実行する必要があります。
  • Windows%USERPROFILE%\.ssh\ 配下に置けば、特別な権限調整なしで動くことが多い。

地味なポイントなんですが、ここもハマりポイント。

罠③ WP-CLI がそのままでは見つからない

これが一番厄介。

Xserver・さくら・Heteml系のサーバーは wp コマンドが最初からPATHの通った場所に置いてあって、SSHでログインしていきなり wp --info を叩けばバージョンが返ってきます。

ConoHa WINGは、

$ wp --info
-bash: wp: command not found

$ which wp
(何も出ない)

PATHに通っていないだけかと思って探しても、ホーム領域には見当たらない。共有環境のどこかにあるのかもしれませんが、少なくとも自分のシェルからは到達できない状態でした。

つまり、どこあるか分からない…😅

解決策:ホーム領域に自分で置く

WP-CLIは公式から wp-cli.phar という単一のPHARファイルをダウンロードして配置するだけで動きます。自分のホーム領域に置いてしまえば、サーバー全体やほかの利用者には何も影響しません。

ターミナル派(SSH接続後にコマンドで設置):

mkdir -p ~/bin
cd ~/bin
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
mv wp-cli.phar wp
chmod 755 wp
~/bin/wp --info   # バージョンが出れば成功

ファイルマネージャー派(ターミナル不要):

ConoHa WINGには「WING → サイト管理 → ファイルマネージャー」というブラウザベースのファイル操作ツールがあって、これだけで全工程をこなせます。

  1. パソコン側で wp-cli.phar をダウンロードし、ファイル名を wp にリネーム(拡張子 .phar を消す)
  2. ファイルマネージャーでホーム直下に bin フォルダを作成
  3. その中に wp ファイルをドラッグ&ドロップでアップロード
  4. アップロードした wp を右クリック → 「属性変更」→ パーミッションを 755

エンジニアじゃないクライアントに「ターミナル開いてください」とお願いしなくて済むのは、それだけで運用上のメリットがあります。

罠④ wp コマンドは絶対パスで呼ぶのが安全

~/bin.bashrc 等でPATHに通すこともできるんですが、自動化スクリプトから非対話シェルで実行する場合、.bashrc が読み込まれないことがあります。結果として「対話SSHでは動くのに、自動化スクリプトからだと動かない」という、再現条件のはっきりしない問題になりがち。

確実なのは、絶対パスで呼ぶこと。

/home/c1234567/bin/wp plugin list

c1234567 の部分はアカウントごとのユーザー名で、コントロールパネルの「サーバー管理 → SSH」画面で確認できます。

自動化ツール側に「サーバー別のWP-CLIパス」設定を持たせておくと、Xserverは wp、ConoHa WINGは /home/c1234567/bin/wp、Hetemlは /usr/local/bin/wp、というように切り替えられて、運用がぐっと安定します。

動かしてみると

ここまで4つの罠を片付けると、ConoHa WINGでも他社と同じようにWP-CLIが普通に回ります。

/home/c1234567/bin/wp db export backup.sql
/home/c1234567/bin/wp plugin update --all
/home/c1234567/bin/wp plugin install some-plugin --version=1.2.3 --force

ステータス異常が合ったプラグインだけ戻す「ピンポイントロールバック」も問題なく動きました。設定さえ通れば、Xserverとの違いを意識する場面はほとんどありません。

ConoHa WINGで詰まらないためのチェックリスト

  • SSHポートは 8022(22ではない)
  • 秘密鍵は .pem 形式。macOSは chmod 600 を忘れない
  • WP-CLI は 自分で ~/bin/wp に配置(デフォルトのシェルからは見えない)
  • スクリプト・自動化からは 絶対パス(/home/c1234567/bin/wp)で呼ぶ

「対応サーバー一覧」にConoHa WINGが入っていても、実運用に組み込む時はこの4項目を最初に確認するのが確実です。逆に言えば、この4つさえ片付けてしまえば、ConoHa WINGでもWP-CLIベースの自動メンテは普通に成立します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?