--> -->
本当はMastodonのメディアストレージにする予定ですが、Laravelの流れでも書いてみます。
dockerがあるのでdockerで入れます。
dockerが入っていない場合は以下(Centos7)
# yum install yum-utils device-mapper-persistent-data lvm2 # yum-config-manager --disable docker-ce-edge # yum makecache fast # wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo # yum install docker-ce
# docker run -v /var/s3/data:/usr/src/app/localData -v /var/s3/metadata:/usr/src/app/localMetadata -v /var/s3/config.json:/usr/src/app/config.json -p 8000:8000 -d --restart=always scality/s3server
ストレージされたデータがdocker内に入ってしまうと永続化できないので、/var/s3以下にディレクトリを用意してdataとMetadataをマウントしています。
また、外部からアクセスする場合restEndpointの設定が必要です。*1
接続確認はこちら*2のページを参考に行いました。しかーし、Cyberduckをそのままインストールして起動しても、プロコトル「S3(HTTP)」がでてきません。以下のページでプロファイルをダウンロードすると、使えるようになるようです。
■Cyberduck Help / Howto / Amazon S3
https://trac.cyberduck.io/wiki/help/en/howto/s3
接続が確認できたら、いよいよLaravelからの接続です。
ドライバーはS3をそのまま使います。
StorageでS3を使う方法については過去の記事を参照してください。
■config/filesystems.php
1 2 3 4 5 6 7 8 9 10 11 |
|
カギは9, 10行目です。
endpointを指定することで、サーバーを指定することができます。*3
しかしそのままだとbucketがドメインの前に付いてしまいます。(http://bucket.s3.example.jp:8000 みたいな感じ)
use_path_style_endpointにtrueを指定してやると、これを防ぐことができます。
(endpointは実際は.envに書いた方が良いと思います)
まだStorage::disk()->putFile()とdelete()しか試していませんが、無事動作しているようです。(put/delete後Cyverduckで確認)
https://github.com/scality/cloudserver/blob/master/docs/DOCKER.rst#tunables-and-setup-tips
Scality S3 Server を試してみる
https://qiita.com/tksarah/items/0ac92fe2d264e195f3c7
Laravel S3 connector (selfhosted S3 with docker)
https://stackoverflow.com/questions/43609193/laravel-s3-connector-selfhosted-s3-with-docker