Sonata Media CDN 机架空间
Sonata Media CDN Rackspace
我有 Sonata Media 的下一个问题:
我正在尝试使用 Rackspace CDN 上传图片:
根据当前文档,我的配置文件如下所示:
cdn:
server:
path: %cdn_url%
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
rackspace:
url: %rackspace.opencloud.host%
secret:
username: %rackspace.opencloud.username%
apiKey: %rackspace.opencloud.api_key%
region: LON
containerName: projectName
create_container: false
replicate:
master: sonata.media.adapter.filesystem.opencloud
slave: sonata.media.adapter.filesystem.local
在提供商配置上:
providers:
image:
filesystem: sonata.media.filesystem.replicate
cdn: sonata.media.cdn.server
resizer: sonata.media.resizer.square
allowed_extensions: ['jpg', 'png', 'gif', 'jpeg']
allowed_mime_types: ['image/pjpeg','image/jpeg','image/png','image/x-png', 'image/gif']
问题是(我是如何发现这个错误的)如果应用程序的每个页面上都提供了 Rackspace 关闭或不正确 username/password 我得到这个答案:
Client error response [status code] 401 [reason phrase] Unauthorized [url] https://lon.auth.api.rackspacecloud.com/v2.0/tokens
这是因为 Gaufrette Opencloud 尝试在内核加载时创建连接。
作为临时修复的最快解决方案是创建一个编译器通道并检查身份验证方法 returns 是否为假,然后用本地文件系统适配器替换参数 0 以进行复制定义。
我的问题是:
- 如何避免在内核加载时创建 Rackspace 连接?
- 如果 Rackspace 出现故障,我如何在 Rackspace 或其他适配器(本地或其他 ftp 服务器)之间交换
提前致谢,如果提供的信息不足,请发表评论。
显然在 Gaufrette 中实现了延迟加载的解决方案:https://github.com/KnpLabs/KnpGaufretteBundle/issues/72
我所要做的就是:
sonata.media.adapter.open_stack:
class: OpenCloud\Rackspace
arguments: [ %rackspace.opencloud.host%, { username: %rackspace.opencloud.username%, apiKey: %rackspace.opencloud.api_key% }]
sonata.media.adapter.object_store_factory:
class: Gaufrette\Adapter\OpenStackCloudFiles\ObjectStoreFactory
arguments: [ @sonata.media.adapter.open_stack, "LON", ""]
sonata.media.adapter.filesystem.lazyopencloud:
class: Gaufrette\Adapter\LazyOpenCloud
arguments: [ @sonata.media.adapter.object_store_factory, %rackspace.opencloud.container_name%]
并将复制主机更改为 sonata.media.adapter.filesystem.lazyopencloud
希望对您有所帮助:)
我有 Sonata Media 的下一个问题: 我正在尝试使用 Rackspace CDN 上传图片: 根据当前文档,我的配置文件如下所示:
cdn:
server:
path: %cdn_url%
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
rackspace:
url: %rackspace.opencloud.host%
secret:
username: %rackspace.opencloud.username%
apiKey: %rackspace.opencloud.api_key%
region: LON
containerName: projectName
create_container: false
replicate:
master: sonata.media.adapter.filesystem.opencloud
slave: sonata.media.adapter.filesystem.local
在提供商配置上:
providers:
image:
filesystem: sonata.media.filesystem.replicate
cdn: sonata.media.cdn.server
resizer: sonata.media.resizer.square
allowed_extensions: ['jpg', 'png', 'gif', 'jpeg']
allowed_mime_types: ['image/pjpeg','image/jpeg','image/png','image/x-png', 'image/gif']
问题是(我是如何发现这个错误的)如果应用程序的每个页面上都提供了 Rackspace 关闭或不正确 username/password 我得到这个答案:
Client error response [status code] 401 [reason phrase] Unauthorized [url] https://lon.auth.api.rackspacecloud.com/v2.0/tokens
这是因为 Gaufrette Opencloud 尝试在内核加载时创建连接。
作为临时修复的最快解决方案是创建一个编译器通道并检查身份验证方法 returns 是否为假,然后用本地文件系统适配器替换参数 0 以进行复制定义。
我的问题是:
- 如何避免在内核加载时创建 Rackspace 连接?
- 如果 Rackspace 出现故障,我如何在 Rackspace 或其他适配器(本地或其他 ftp 服务器)之间交换
提前致谢,如果提供的信息不足,请发表评论。
显然在 Gaufrette 中实现了延迟加载的解决方案:https://github.com/KnpLabs/KnpGaufretteBundle/issues/72
我所要做的就是:
sonata.media.adapter.open_stack:
class: OpenCloud\Rackspace
arguments: [ %rackspace.opencloud.host%, { username: %rackspace.opencloud.username%, apiKey: %rackspace.opencloud.api_key% }]
sonata.media.adapter.object_store_factory:
class: Gaufrette\Adapter\OpenStackCloudFiles\ObjectStoreFactory
arguments: [ @sonata.media.adapter.open_stack, "LON", ""]
sonata.media.adapter.filesystem.lazyopencloud:
class: Gaufrette\Adapter\LazyOpenCloud
arguments: [ @sonata.media.adapter.object_store_factory, %rackspace.opencloud.container_name%]
并将复制主机更改为 sonata.media.adapter.filesystem.lazyopencloud
希望对您有所帮助:)