--> -->
#title(zenkoでS3互換ファイルストレージを作成してLaravelから利用する) * zenkoでS3互換ファイルストレージを作成してLaravelから利用する [#vef90e4f] 本当はMastodonのメディアストレージにする予定ですが、Laravelの流れでも書いてみます。 ** zenkoのインストール [#k81792ab] 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 ** zenkoのインストールと設定 [#d81607cc] # 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以下にディレクトリを用意して&inlinecode{data};と&inlinecode{Metadata};をマウントしています。~ また、外部からアクセスする場合&inlinecode{restEndpoint};の設定が必要です。((https://github.com/scality/cloudserver/blob/master/docs/DOCKER.rst#tunables-and-setup-tips))~ ~ 接続確認はこちら((Scality S3 Server を試してみる&br;https://qiita.com/tksarah/items/0ac92fe2d264e195f3c7))のページを参考に行いました。しかーし、Cyberduckをそのままインストールして起動しても、プロコトル「S3(HTTP)」がでてきません。以下のページでプロファイルをダウンロードすると、使えるようになるようです。~ ~ ■Cyberduck Help / Howto / Amazon S3~ https://trac.cyberduck.io/wiki/help/en/howto/s3 ~ ~ 接続が確認できたら、いよいよLaravelからの接続ですが、これはまた明日・・・(ここに追記します)。 接続が確認できたら、いよいよLaravelからの接続です。~ ドライバーはS3をそのまま使います。~ StorageでS3を使う方法については[[過去の記事:https://www.webdb.co.jp/~atsumi/skimemo/index.php?Laravel#b40b240a]]を参照してください。~ ~ ■config/filesystems.php #code(php){{ 'disks' => [ : 's3' => [ 'driver' => 's3', 'key' => env('AWS_KEY'), 'secret' => env('AWS_SECRET'), 'region' => env('AWS_REGION'), 'bucket' => env('AWS_BUCKET'), 'endpoint' => 'http://s3.example.jp:8000', 'use_path_style_endpoint' => true, ], }} カギは9, 10行目です。~ &inlinecode{endpoint};を指定することで、サーバーを指定することができます。((Laravel S3 connector (selfhosted S3 with docker)&br;https://stackoverflow.com/questions/43609193/laravel-s3-connector-selfhosted-s3-with-docker))~ しかしそのままだとbucketがドメインの前に付いてしまいます。(http://bucket.s3.example.jp:8000 みたいな感じ)~ &inlinecode{use_path_style_endpoint};に&inlinecode{true};を指定してやると、これを防ぐことができます。~ (endpointは実際は.envに書いた方が良いと思います)~ ~ まだStorage::disk()->putFile()とdelete()しか試していませんが、無事動作しているようです。(put/delete後Cyverduckで確認)