WordPressの開発環境の準備

開発環境といってもIDEなどの説明ではありません。IDEは好きなものを使いましょう。

ここでは、クライアント側の変更をサーバー側にリアルタイムで反映するための設定を行います。すなわち、クライアント側でテーマのfunction.phpを変更したら、即時その変更をサーバーへ反映する環境を整えることが目的です。

 

WinSCPの設定

ファイル転送ソフトとしてWinSCPを使用します。このソフトはWinとあるようにWindowsで動き、GUI環境で使いやすく多機能です。また、scp, sftp, ftpsといった転送プロトコルに対応しているので、アップロード先のサーバー環境を選びません。

インストール自体はGoogle検索→ダウンロード→インストールで簡単にできますので省略・・・

ここでは、公開鍵認証でsftp接続する方法を説明します。というのも、このVPSではSSH接続にパスワード認証を全面的に拒否していますので、パスワードを入力してもsftp接続できません。なので、SSHに使う秘密鍵を使わなければならないのです。

 

秘密鍵をOpenSSL形式に変換

SSH接続用にssh-keygenで鍵ペアを作成しましたが、この鍵はOpenSSL形式です。しかしながら、WinSCPではOpenSSL形式の秘密鍵は使えないためPuTTY形式に変換する必要があります。

この変換にはPuTTYgenというツールを使います。

まず下記リンクからputtygen.exeをダウンロード。

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

ダウンロードしたらputtygen.exeを起動して、次のような手順で変換します。

メニューバー → Conversions → Import Key
→ “変換する秘密鍵ファイルを選択” → Save private key → “<任意ファイル名>で保存”

※  変換後の秘密鍵は <任意ファイル名>.ppk という名前になります。

 

WinSCPに秘密鍵を設定

変換した秘密鍵をWinSCPに設定します。

WinSCPを起動 → 設定 → 認証 → 認証条件 → 秘密鍵 → “先ほど変換した秘密鍵を指定” → OK

 

サーバーに接続

WinSCP起動画面から

  • 転送プロトコル    SFTP    ※SCPでもいいがSFTPの方が高機能
  • ホスト名    <サーバーホスト名>
  • ポート番号    22    ※デフォルト値から変更した場合は適宜指定
  • ユーザ名    <VPS上のroot以外のユーザー名>
  • ※秘密鍵を指定してるのでパスワードは入力しないこと

最後に “ログイン” を押す。

※セッション情報を保存しておき、ショートカットをどっかに保存しとくと便利です

※root以外のユーザー名としているのは、ssh設定のところでrootログイン不可にしているためです。よって、rootを指定しても認証を弾かれてしまいます。

 

サーバー側でパーミッションを設定

# ディレクトリのみを対象に再帰的にsetgid属性を与える
find /path/to/dir -type d -print0 | xargs -0 chmod g+s
# グループに書き込み権限を与える
chmod -R g+w /path/to/dir
# 所有者とグループを再帰的にnginxに設定する
chown -R nginx:nginx /path/to/dir
# 作業ユーザーをnginxグループに追加する
gpasswd -a username nginx

 

※下記のコマンドは危険ですのでお止めください!

usermod -G nginx username

↑usermodは確かに指定ユーザーの所属グループを変更できるのですが、既存のグループ設定を上書きしてしまいます。当方はそのことをすっかり忘れてしまい、結果的にwheelグループの設定が消えてしまいました。それはつまり、su及びsudoできなくなることを示唆しており、rootによるsshログインを不可にしているという現状を加味すると・・・ root権限操作が何もできません!(;´Д`)

結果、サポートへ連絡するハメになりました。後日、ServersManさん側でsshd_configを初期化してもらい、どうにかroot権限を得ることができました。ありがたや、ありがたや・・・

なので是非ともgpasswd -a username nginxからグループ追加するようにしましょう。

 

また、最初のコマンドでchmod g+sからset gidを行っていますが、詳しく知りたい方はhttp://kazmax.zpp.jp/linux_beginner/setgroupid.html を参照下さい。

 

これらの設定でrootでない一般ユーザーであってもnginxグループに所属していれば、nginxのドキュメントルート下の指定ディレクトリに対してファイルの作成や削除を行うことができます。

後は、WinSCPのミラーリングアップロード機能などを利用して、クライアント側の変更内容を即時サーバー側に反映することができます。