CakePHP4を試す


環境構築 - Vagrant で LAMP 環境を構築 (7) -

lsyncdで同期

前回は、CakePHPをComposerからインストールすることに成功しました。
しかしインストールするディレクトリを変更しましたので、ホストマシンからアクセスすることが難しくなってしまいました。開発のしやすさを考えると、共有フォルダを使いたいところです。
そこで、かなり強引な方法ではありますが共有フォルダからインストール先のディレクトリにミラーリングする方法を考えます。
手動で行うのであればrsyncコマンドが使えます。しかし、都度コマンドを叩くのは面倒です。そこで、Google先生にお伺いをたてたところ、lsyncdというコマンドがあると教えていただきました。
早速試してみましょう。
次のようにしてインストールします。

$ sudo apt -y install lsyncd ↵
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libicu60
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
  liblua5.1-0 lua5.1
The following NEW packages will be installed:
  liblua5.1-0 lsyncd lua5.1
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 255 kB of archives.
After this operation, 946 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 liblua5.1-0 amd64 5.1.5-8.1build2 [100 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic/universe amd64 lua5.1 amd64 5.1.5-8.1build2 [93.2 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 lsyncd amd64 2.1.6-1 [61.5 kB]
Fetched 255 kB in 2s (116 kB/s) 
Selecting previously unselected package liblua5.1-0:amd64.
(Reading database ... 104976 files and directories currently installed.)
Preparing to unpack .../liblua5.1-0_5.1.5-8.1build2_amd64.deb ...
Unpacking liblua5.1-0:amd64 (5.1.5-8.1build2) ...
Selecting previously unselected package lua5.1.
Preparing to unpack .../lua5.1_5.1.5-8.1build2_amd64.deb ...
Unpacking lua5.1 (5.1.5-8.1build2) ...
Selecting previously unselected package lsyncd.
Preparing to unpack .../lsyncd_2.1.6-1_amd64.deb ...
Unpacking lsyncd (2.1.6-1) ...
Setting up lua5.1 (5.1.5-8.1build2) ...
update-alternatives: using /usr/bin/lua5.1 to provide /usr/bin/lua (lua-interpreter) in auto mode
update-alternatives: using /usr/bin/luac5.1 to provide /usr/bin/luac (lua-compiler) in auto mode
Setting up liblua5.1-0:amd64 (5.1.5-8.1build2) ...
Setting up lsyncd (2.1.6-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for systemd (237-3ubuntu10.39) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) ...

ミラーリングするディレクトリを共有フォルダにコピーします。

$ cp -pR /var/www/CakePHP/application_directory/config /vagrant_data/ ↵
$ cp -pR /var/www/CakePHP/application_directory/src /vagrant_data/ ↵
$ cp -pR /var/www/CakePHP/application_directory/templates /vagrant_data/ ↵
$ cp -pR /var/www/CakePHP/application_directory/tests /vagrant_data/ ↵
$ cp -pR /var/www/CakePHP/application_directory/webroot /vagrant_data/ ↵

lsyncdの設定をします。

$ sudo mkdir /etc/lsyncd ↵
$ sudo vi /etc/lsyncd/lsyncd.conf.lua ↵
/etc/lsyncd/lsyncd.conf.lua
settings {
   logfile    = "/tmp/lsyncd.log",
   statusFile = "/tmp/lsyncd.status",
}

sync {
   default.rsync,
   source = "/vagrant_data/config/",
   target = "/var/www/CakePHP/application_directory/config/"
}

sync {
   default.rsync,
   source = "/vagrant_data/src/",
   target = "/var/www/CakePHP/application_directory/src/"
}

sync {
   default.rsync,
   source = "/vagrant_data/templates/",
   target = "/var/www/CakePHP/application_directory/templates/"
}

sync {
   default.rsync,
   source = "/vagrant_data/tests/",
   target = "/var/www/CakePHP/application_directory/tests/"
}

sync {
   default.rsync,
   source = "/vagrant_data/webroot/",
   target = "/var/www/CakePHP/application_directory/webroot/"
}

lsyncdを起動します。

$ sudo systemctl start lsyncd ↵

lsyncdが起動したことを確認します。

$ ls -l /tmp/ ↵
total 20
-rw-r--r-- 1 root root  980 May  5 04:10 lsyncd.log
-rw-r--r-- 1 root root 2018 May  5 04:10 lsyncd.status
drwx------ 2 root root 4096 May  5 00:57 netplan_nta63ywq
drwx------ 3 root root 4096 May  5 00:57 systemd-private-658ae01c19774e608ea53b4f05692e1c-apache2.service-ahZ4ur
drwx------ 3 root root 4096 May  5 00:57 systemd-private-658ae01c19774e608ea53b4f05692e1c-systemd-resolved.service-9C1AkL

起動が確認できました。

後は使ってみて、思った通りにミラーリングされることを祈りましょう。

参考サイト

Lsyncd - Live Syncing (Mirror) Daemon
Ubuntuにlsyncdを導入する