--> -->

skimemo


Laravel-20181225 の変更点


#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で確認)