@fujixfujiko

« PHPのソースに見慣れない記号が出てきたときの調べ方例 | メイン  | WordPressの子テーマで、親テーマのfunctions.phpを上書きする方法 »

これこそ奮闘記では… WordPress管理画面からSSHでプラグインアップデートする云々

どうも(p´ω`q)


WordPressの管理画面からプラグインのアップデートをしようとすると
接続情報の入力画面が出てくることがあります。

rootユーザに認証キーを使っているサーバなので、SSHでないと接続できないと思い、
管理画面からSSHを動かすためにあれこれ奮闘しました。

しかし、SSHモードにしなくても管理画面からアップデートできる方法がある
ということに気が付いてしまった悲しいお話です。




心の中くもりモードでお送りします。

(ほんとに外曇ってますが!笑)



先日の大震災の影響もあり、自社サーバのクラウド化を検討している人も多いようですね。
今回、AmazonのEC2サーバにWordPressを入れてみました。





やり方はググればたくさん出てくると思うので省略します。

というか私はサーバにあまり詳しくないので、
説明しているうちにきっとアラが出てしまうでしょう!(`・ω・´)キリッ


そしてこのサーバ、リモートログインに秘密鍵が必要だったので、
管理画面からプラグインなどのアップデートができません。

足りない頭に鞭討って、サーバでSSH2の設定をしました。


ちなみに以下の公式ドキュメントはあまり詳しくないので、
一通り読んだ後でGoogle先生に聞いた方がいいと思います。



SSH2の設定がうまくできると、プラグインアップロードの認証画面が以下のようになります。





これに必要事項を入力して「開始」を押すが、うまくいかないわたし(o・ω・)...。





いろいろ調べて回って、こんな情報を見つけました。


centos - Wordpress SSH Upgrade Problem - Server Fault
http://serverfault.com/questions/182508/wordpress-ssh-upgrade-problem


日本語で探すのを諦めて、エラー文を英語でググったら出てきました。

「公開鍵と秘密鍵が正しくありません」の原文は
/wp-content/languages/ja.poを見ると書いてあります。


このページの内容を要約すると、質問は以下のようになります。

l_041.gif
  • 「ssh-keygen」コマンドで鍵の作成をしました
  • 鍵のパーミッションを600にしました
  • 「ssh -i /root/.ssh/id_rsa ******」コマンドではログインできます
  • ホスト名を「localhost」や「127.0.0.1」に変えてもダメでした
  • 使用サーバはCentOSです
l_041.gif

私の状況とぴったり同じではないですか!


回答を見てみるとこんな感じ。

l_041.gif
  • Webサーバがroot以外のユーザ権限で動いていて、鍵ファイルへのアクセス権がないんじゃないの?
  • 「ps」コマンドでWebサーバのプロセスを表示して、ユーザ名がどうなってるか見てみるといい
  • 「nobody」とかになっていないかい?
  • そうしたら「chown」コマンドを使って、鍵のパーミッションをそのユーザに与えてやりなさい
l_041.gif

さっそくWebサーバのプロセスの実行者を見てみるとapacheになっていました。





よーし、おじちゃんapacheユーザに鍵の参照権限あげちゃうゾ☆

再トライ。





(o´・ω・`)...。


ここでついに 【困ったときの先輩頼み】 発動!

ファイルの参照権限はあれど、上層ディレクトリの参照権限がなかった!


(o´゚Д゚`)...!


なんという基本的なことを聞いてしまったのでしょう!

鍵の置き場所を、apacheユーザから見える場所に移動しました(´ω`。)グス





わーいできたー!


・・と思ったのもつかの間、プラグインフォルダが更新されません。

WordPress本体がroot権限でインストールされていたので、apacheから変更できなかったようです。


WordPressを丸ごとapacheユーザの権限に変更しました。

# バルス!
chown -R apache:apache /xxx/yyy/zzz/wp



ふぅ。


そしてもう一回アップロード。





あれれれれ・・?

接 続 情 報 の 入 力 画 面 が 出 て こ な い !



なーーーーんだ(o・Д・o)

そもそも、Webサーバを動かしているユーザからWordPressの中身を更新できなかったから、
rootユーザで更新をかけるために鍵とか必要だったのですね。

Webサーバを動かしているユーザにWordPressの書き込み権限を与えておけば
接続情報の入力画面なんて最初から必要なかった
ぽいです。


それにはWordPressフォルダの所有者をapacheにするか、
所有者はrootのままで、パーミッションを755から777に変更するか。

どっちがいいんでしょうね。
前者でしょうか?


あんまりこの辺りは詳しくありません。





というか勉強したのが10代の頃なので

忘れてしまっているようです(逃)


(o-ε-o)