タイトルに収めるのがきつい。
やりたいこと
- wordpressをdocker-composeで動かす
- nginxをフロントに
- 別ディレクトリ(/wpなど)にインストール
- 外部の業者さんなどが変更できるように公開ディレクトリ以下のみをSFTPでアクセスできるようにする
ソース
https://github.com/withpop/docker-nginx-wordpress
使い方
特にSFTPでアクセスする予定が無ければ、docker-compose.ymlの user: 1001:1001
の行を削除して下記手順はすっとばして、いきなり docker-compose up
で起動するはずです。
SFTPでのアクセスを行うユーザーのuid, gridを調べます。ここではどちらも1001だったとします。
docker-compose.ymlの
wordpress: image: wordpress:4.9-php7.1-fpm user: 1001:1001
のuser: 1001:1001と書いてある所に書きます。
次に public/www
public/www/wp
ディレクトリをそれぞれ作り、 sudo chown -R 1001:1001 public
として public
以下のファイルやディレクトリのオーナーをSFTPでアクセスするユーザーに変えときます。
あとはchrootの設定をします。
$ sudo vi /etc/ssh/sshd_config
で
Match User <ユーザー名> ChrootDirectory /var/docker/site/public ForceCommand internal-sftp
とします。
補足
docker-compose.ymlを見るとわかりますが、 public/www
以下をnginxの公開ディレクトリとしています。なぜ public/
をnginxの公開ディレクトリとしないかというと、chrootするディレクトリのオーナーはrootでなくてはならないという制約があるからです。そのため、chroot先とnginxの公開ディレクトリを同じにしてしまうとルート以下の操作ができなくなってしまいます。
wordpressはインストールこそ確かに簡単なものの、ファイル関係のこういうクソ面倒くさいごちゃごちゃがついて回るのがしんどいですね…。
いいね! 0