2
21
2016
WordPressのアップデートをSSHで行う
WordPressのアップデート機能をちょっとだけセキュアにしてみる
WordPressのアップデート管理画面
WordPressのアップデート機能は便利なのだが、どのような環境でもこの機能が使える訳ではない.レンタルサーバを借りてWordpressを動かしている人達の大部分は、何もしなくてもWordpressの管理画面を通じて簡単にアップデートできているのではないかと思う.さくらインターネットなどのレンタルサーバでは、個々のユーザアカウントの下でApacheなどのHTTPサーバが動いているので、Wordpressコンテンツが置かれている各種ディレクトリ配下をHTTP(PHP)側から書き換えることが可能だ.
自分でOSをインストールしてHTTPサーバを立ち上げた場合には、一般のユーザ権限でWordpress配下の各種ディレクトリやファイルを置くことが多いだろう.HTTPのプロセスは”apache” などのアカウントで起動されているので、そのままではHTTP(PHP)側からこれらのWordpress配下の各種ディレクトリやファイルを書き換えることはできない.
このような状況で、Wordpressの管理画面を通じてアップデートを行うと、次の様なFTPによるアップデート設定画面が現れる.Wordpress配下の各種ディレクトリやファイルをFTPを通じて更新するように設定を促されるという訳だ.当然ながら、このFTPによる更新を行うには、Wordpressを動かしている同じサーバ上でFTPサーバが動いており、Wordpress配下の各種ディレクトリやファイルのオーナーアカウントで、wordpress.orgのFTPサーバから各種ファイルをダウンロートできなければならない.
FTPによるアップデートが要求される
セキュリティー的な面から、このFTPによるファイル転送機能をWordpressを動かしているサーバ上で動かすのは大問題だ.一応FTPSという暗号化されたFTPセッションも使えるようだが、FTPはやはり使いたくない.FTPSの設定をWordpressのサイトで調べていたら、SSHによるアップグレードに関する記述があったので、SSH接続によるWordpressのアップデートを行ってみた.
“Editing wp-config.php – Enabling SSH Upgrade Access“
このドキュメントの説明によると、SSH2によるアップグレードを行う方法は2つ有り、一つは “SSH SFTP Updater Support” というプラグインを使う方法で、もう一つが PHPにSSH2アクセス機能を追加する “pecl SSH2 extension” を導入するという方法だ.勿論簡単なのは前者のプラグインを使う方法なのだが、今回はとりあえず後者の”pecl SSH2 extension” を導入して試してみた.
1. “php-pear” を yum を使ってインストールする
#yum -y install php-pear
2. pecl SSH2 extensionをインストールする
#pecl install ssh2
3. SSH2 extensionを強制させる(下記の設定を “wp-config.php” 内に記述する)
define( ‘FS_METHOD’, ‘ssh2’ );
...
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*/
define('WP_DEBUG', false);
define(‘FS_METHOD’, 'ssh2');
/* That's all, stop editing! Happy blogging. */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
このドキュメントには、”pecl SSH2 extension”の導入方法については上記の簡単な記述しかされていないが、ユーザの環境によってはそう簡単にはインストールできないかもしれない.
PHPに”pecl SSH2 extension”を組み込むと、SSHによるアップデート機能が追加される
この方法であれば、SSHによるコネクションが張れれば良いので、FTPを使わなくて済む.一般的にはSSHのポート番号としては22番を使う事が多いが、別な番号を使いセキュリティー強化を謀るのが良いだろう.