Add support for S3 media storage

This commit is contained in:
Christopher C. Wells 2021-04-22 13:23:10 -07:00
parent 77ed32ee4d
commit 9b8847b16e
7 changed files with 243 additions and 5 deletions

View File

@ -9,11 +9,13 @@ LOG_LEVEL=debug
DB_CONNECTION=sqlite
SCOUT_DRIVER=elastic
ELASTIC_HOST=localhost:9200
MEDIA_DISK=local
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SCOUT_DRIVER=elastic
ELASTIC_HOST=localhost:9200

View File

@ -25,6 +25,8 @@ SCOUT_DRIVER=elastic
ELASTIC_HOST=elasticsearch:9200
ELASTIC_PORT=9200
MEDIA_DISK=local
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync

View File

@ -30,6 +30,14 @@ SCOUT_DRIVER=null
#SCOUT_DRIVER=elastic
#ELASTIC_HOST=
MEDIA_DISK=local
#MEDIA_DISK=s3-public
#AWS_ACCESS_KEY_ID=
#AWS_SECRET_ACCESS_KEY=
#AWS_DEFAULT_REGION=
#AWS_BUCKET=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync

View File

@ -88,6 +88,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -206,6 +207,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -296,6 +298,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -414,6 +417,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -504,6 +508,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -622,6 +627,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -712,6 +718,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -830,6 +837,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -920,6 +928,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -1038,6 +1047,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -1128,6 +1138,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -1246,6 +1257,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -1336,6 +1348,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -1454,6 +1467,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -1544,6 +1558,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -1662,6 +1677,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -1752,6 +1768,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -1870,6 +1887,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -1960,6 +1978,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -2078,6 +2097,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,
@ -2168,6 +2188,7 @@ namespace PHPSTORM_META {
'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class,
'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class,
'cache' => \Illuminate\Cache\CacheManager::class,
'cache.dynamodb.client' => \Aws\DynamoDb\DynamoDbClient::class,
'cache.store' => \Illuminate\Cache\Repository::class,
'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class,
'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class,
@ -2286,6 +2307,7 @@ namespace PHPSTORM_META {
'queue.worker' => \Illuminate\Queue\Worker::class,
'redirect' => \Illuminate\Routing\Redirector::class,
'redis' => \Illuminate\Redis\RedisManager::class,
'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class,
'router' => \Illuminate\Routing\Router::class,
'session' => \Illuminate\Session\SessionManager::class,
'session.store' => \Illuminate\Session\Store::class,

View File

@ -23,6 +23,7 @@
"laravel/framework": "^8.12",
"laravel/scout": "^8.6",
"laravel/tinker": "^2.5",
"league/flysystem-aws-s3-v3": "~1.0",
"phospr/fraction": "^1.2",
"spatie/laravel-medialibrary": "^9.0.0",
"spatie/laravel-tags": "^3.0"

204
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "b404494454b0ff89c0db3d7eb87e3a44",
"content-hash": "120e3fc90df7558d98551448b10475d0",
"packages": [
{
"name": "algolia/algoliasearch-client-php",
@ -217,6 +217,96 @@
},
"time": "2021-03-11T06:42:03+00:00"
},
{
"name": "aws/aws-sdk-php",
"version": "3.178.8",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "15b27555b365053af712a01cbf99d6d7cd4323fa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/15b27555b365053af712a01cbf99d6d7cd4323fa",
"reference": "15b27555b365053af712a01cbf99d6d7cd4323fa",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-pcre": "*",
"ext-simplexml": "*",
"guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0",
"guzzlehttp/promises": "^1.4.0",
"guzzlehttp/psr7": "^1.7.0",
"mtdowling/jmespath.php": "^2.6",
"php": ">=5.5"
},
"require-dev": {
"andrewsville/php-token-reflection": "^1.4",
"aws/aws-php-sns-message-validator": "~1.0",
"behat/behat": "~3.0",
"doctrine/cache": "~1.4",
"ext-dom": "*",
"ext-openssl": "*",
"ext-pcntl": "*",
"ext-sockets": "*",
"nette/neon": "^2.3",
"paragonie/random_compat": ">= 2",
"phpunit/phpunit": "^4.8.35|^5.4.3",
"psr/cache": "^1.0",
"psr/simple-cache": "^1.0",
"sebastian/comparator": "^1.2.3"
},
"suggest": {
"aws/aws-php-sns-message-validator": "To validate incoming SNS notifications",
"doctrine/cache": "To use the DoctrineCacheAdapter",
"ext-curl": "To send requests using cURL",
"ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
"ext-sockets": "To use client-side monitoring"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Aws\\": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Amazon Web Services",
"homepage": "http://aws.amazon.com"
}
],
"description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
"homepage": "http://aws.amazon.com/sdkforphp",
"keywords": [
"amazon",
"aws",
"cloud",
"dynamodb",
"ec2",
"glacier",
"s3",
"sdk"
],
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.178.8"
},
"time": "2021-04-22T18:13:46+00:00"
},
{
"name": "babenkoivan/elastic-adapter",
"version": "v1.14.0",
@ -2773,6 +2863,57 @@
],
"time": "2020-08-23T07:39:11+00:00"
},
{
"name": "league/flysystem-aws-s3-v3",
"version": "1.0.29",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
"reference": "4e25cc0582a36a786c31115e419c6e40498f6972"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4e25cc0582a36a786c31115e419c6e40498f6972",
"reference": "4e25cc0582a36a786c31115e419c6e40498f6972",
"shasum": ""
},
"require": {
"aws/aws-sdk-php": "^3.20.0",
"league/flysystem": "^1.0.40",
"php": ">=5.5.0"
},
"require-dev": {
"henrikbjorn/phpspec-code-coverage": "~1.0.1",
"phpspec/phpspec": "^2.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"League\\Flysystem\\AwsS3v3\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Frank de Jonge",
"email": "info@frenky.net"
}
],
"description": "Flysystem adapter for the AWS S3 SDK v3.x",
"support": {
"issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
"source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.29"
},
"time": "2020-10-08T18:58:37+00:00"
},
{
"name": "league/glide",
"version": "1.7.0",
@ -3061,6 +3202,67 @@
],
"time": "2020-12-14T13:15:25+00:00"
},
{
"name": "mtdowling/jmespath.php",
"version": "2.6.0",
"source": {
"type": "git",
"url": "https://github.com/jmespath/jmespath.php.git",
"reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/42dae2cbd13154083ca6d70099692fef8ca84bfb",
"reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb",
"shasum": ""
},
"require": {
"php": "^5.4 || ^7.0 || ^8.0",
"symfony/polyfill-mbstring": "^1.17"
},
"require-dev": {
"composer/xdebug-handler": "^1.4",
"phpunit/phpunit": "^4.8.36 || ^7.5.15"
},
"bin": [
"bin/jp.php"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-4": {
"JmesPath\\": "src/"
},
"files": [
"src/JmesPath.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Declaratively specify how to extract elements from a JSON document",
"keywords": [
"json",
"jsonpath"
],
"support": {
"issues": "https://github.com/jmespath/jmespath.php/issues",
"source": "https://github.com/jmespath/jmespath.php/tree/2.6.0"
},
"time": "2020-07-31T21:01:56+00:00"
},
{
"name": "myclabs/php-enum",
"version": "1.8.0",

View File

@ -48,7 +48,7 @@ return [
'url' => env('APP_URL').'/media',
],
's3' => [
's3-public' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
@ -56,6 +56,7 @@ return [
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'visibility' => 'public',
],
'seeder' => [