WordPressの更新 FTP・SSH・Directの3つについて

2016/06/07

10_1
WordPressの更新やプラグインのインストールなどを行うときにFTPの接続画面になることがあります。
でもFTPは使っていなかったり、ワンクリックで完了できる方が楽だったりしますよね。ディレクトリ所有者を変更して解決することができますが調べたところ他にも3つの方法がありました!

原因と所有者変更での解決方法

原因はWordPressディレクトリ以下のディレクトリやファイルが所有者と実行しているユーザーで異なっているためにFTP経由となり接続画面が表示されます。
なので、所有者と実行ユーザーを同じにすることで解決されます。
 
webサーバーの実行ユーザーがapacheであれば

sudo chown -R apache:apache ●●●

●●●の部分にはWordPressを入れているディレクトリ名を入力して所有者を変更します。
 
これで所有者と実行ユーザーが同じになるのでFTPの接続画面が出ずワンクリックで完了できます。

FTPでの方法

10_2
FTPで更新するには「ホスト名」・「ユーザー名」・「パスワード」の入力と「FTP」のラジオボタンをクリックして「開始」で完了できます。
 
 
毎回FTP情報を入力するのは面倒な場合はwp-config.phpに接続情報を記憶させることでFTP情報の入力をパスすることができます。

define( 'FTP_HOST', '●●●' );
define( 'FTP_USER', '●●●' );
define( 'FTP_PASS', '●●●' );
define( 'FTP_SSL', false );

 

最後のdefine( ‘FTP_SSL’, false );はSSL接続をサポートしていればtrueにします。

SSHでの方法

FTPを使っていなかったりセキュリティ面でFTPが不安な場合はSSHの鍵認証を使うこともできます。そのためにはいくつか設定をしなくてはいけないことがあるのでみていきましょう。
 

ssh2のインストール

まずはPHPで公開鍵認証でファイル転送などができるようにpeclライブラリのssh2が必要になります。そのために必要な手順がこちら
 

1.peclのインストール
ssh2が使えるようにするためにpeclをインストールします。
CentOsだとpearをインストールすると利用できるとのことでした。

# yum install php-pear

 

2.libssh2のインストール
ssh2が使えるようにするためにはlibssh2とlibssh2-develも必須ということでインストールします。

# yum install libssh2 libssh2-devel

 

3.ssh2のインストール
やっと本題のssh2のインストールになります!

# pecl install ssh2

 

4.php.iniへの記述
ssh2拡張モジュールをロードするように以下をphp.iniへ記述します。

extension=ssh2.so

 

5.apacheの再起動
php.iniが反映されるようにapacheの再起動をします。下記はCentOs7の場合です。

# systemctl restart httpd

 
10_3

インストールなどが正しくされていれば、WordPressの管理画面に「ssh2」の選択肢が追加されます!
 
 

鍵の作成

通常のログインで使用する鍵はすでにあると仮定して、ログイン用とは分けてWordPress用の鍵を作成してそちらを読み込むようにしてみましょう。
※操作は全てrootだとしてのコマンドです。
 

1.鍵の生成
まず鍵の置き場所をつくりましょう。今回はhomeにwpディレクトリをつくってその中に鍵を入れておきます。その後に鍵を生成します。

# mkdir /home/wp (置き場所の作成)

# ssh-keygen -t rsa (鍵を作成)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): (enterする)
Created directory '/root/.ssh'.. (sshディレクトリがない場合に自動作成されます)
Enter passphrase (empty for no passphrase):  (パスフレーズを入力)
Enter same passphrase again:  (再度パスフレーズを入力)

2.鍵の移動
ルートに作成された.sshにid_rsa.pubとid_rsaが入っていることを確認してwpディレクトリへ移動します。

# mv /.ssh /home/wp

3.所有者の変更
webサーバーの実行ユーザーがapacheであればwpディレクトリ以下の所有者をapacheに変更します。

# chown -R /home/wp

4.パーミッションの変更
.sshディレクトリのパーミッションを700に変更します。

# chmod 700 /home/wp/.ssh

 
 

接続

接続情報を入力して「開始」をクリックして問題がなければ完了されます!
認証キーにはフルパスで入力します。
 

公開鍵:
/home/wp/.ssh/id_rsa
 

秘密鍵:
/home/wp/.ssh/id_rsa.pub

Directでの方法

最後はwp-config.phpに一行追記するだけでFTP画面が表示されず完了できる方法です!この方法だと更新などされたファイルの所有者は実行ユーザーに変更されます。

wp-config.phpの編集

WordPressディレクトリの中にあるwp-config.phpの一番最後の行に

define('FS_METHOD','direct');

を追記してください。

パーミッションについて

上記を追記しても途中でパーミッションエラーになることがあります。そのときは対象のファイルに誰でも書き込めるパーミッションを与えてあげる必要があります。

接続情報の入力を省略する

FTPと同じようにwp-config.phpに接続情報を記述しておくことで毎回の入力を省略することができます。

define('FS_METHOD', 'ssh2'); 接続方式
define('FTP_HOST', '●●●'); ホスト名
define('FTP_USER', '●●●'); ユーザ名
define('FTP_PASS', '●●●'); パスフレーズ
define('FTP_PRIKEY', '/home/wp/.ssh/id_rsa'); 秘密鍵
define('FTP_PUBKEY', '/home/wp/.ssh/id_rsa.pub'); 公開鍵

 
 
 
以上、3つは簡単に完了できるものやセキュリティに強いものなど、それぞれメリット・デメリットがあるのでその時の環境に合ったものを選びましょう!

参考サイト

WordPressのプラグインなどのインストール・更新をSSHでやる方法
WordPressではアップデート時にFTP接続情報を聞かれる
VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

About

madka prof

WebLifeTimesはWebデザイナーのMadkaがWeb制作に関連したことや日々のちょっと気になったことなどを調べたり記録しているサイトです。TwitterFacebookで気になったニュース記事をシェアしたり独り言をつぶやいたりしています!

New Post

Recommend