1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2×2台S3なし環境にて、/wp-content/uploadsディレクトリの内容を一方向同期する

Posted at

やりたいこと

AWSでWordPressのEC2サーバ2台の冗長構成を構築したとする。
同期元サーバでWordPressのuploadsフォルダの中身に変更があった際に、自動的に同期先サーバにコピー/削除/更新がされるようにしたい。
WP同期.PNG

前提条件

  • セキュリティグループにてサーバ間のSSH(22),rsync(873)の通信ができるようにされていること
  • 同期先のsshd_configにて、同期元IPからのroot接続を許可しておくこと
/etc/ssh/sshd_config
#WordPress rsync
Match User root
    AuthenticationMethods publickey
Match Address 同期する側のIP
    PermitRootLogin yes

※上記設定後sshdサービスを再起動、同期元から同期先にrootでのssh鍵認証ができるようにしておくこと

同期元に必要なコマンドをインストール


$ sudo amazon-linux-extras install epel -y
$ sudo yum --enablerepo=epel install rsync lsyncd

同期元の/etc/lsyncd.confを編集

/etc/lsyncd.conf
settings{
    logfile = "/var/log/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    insist = 1
}

sync{
  default.rsync,
  source = "/var/www/html/wp-content/uploads",
  target = "root@同期される側のIP:/var/www/html/wp-content/uploads",
  rsync = {
    archive = true,
    update = true,
    rsh="/usr/bin/ssh -i/root/.ssh/id_rsa -o StrictHostKeyCheking=no"
  }
}

同期元にてlsyncdサービスを起動

$ systemctl start lsyncd.service
$ systemctl status lsyncd.service

同期元にてログが動いており、ファイルがコピーされていれば成功

$ tail -f /var/log/lsyncd/lsyncd.log
#上記ログを開いたまま、もう一つのSSH接続を行い、テストでファイルを作成してみる。
$ touch /var/www/html/wp-content/uploads/test.txt 

最後にlsyncdサービスが常時起動するように設定

$ systemctl enable lsyncd.service

以上

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?