文件上传配置

Homeland 目前支持两种文件存储方式:

在部署之前,你需要选择一种,并购买,然后根据下面的文档配置 Homeland。

配置项解释需要重启?
upload_provider文件存储方式 [file, upyun, aliyun]
upload_access_id文件存储 access_id 或用户名
upload_access_secret文件存储 access_secret 或密码
upload_bucket文件存储 Bucket 名称
upload_url文件存储的 Host

File

本地存储上传文件,存放在 public/uploads 目录下。

NOTE: file 模式无法实现分布式部署哦!我们建议使用 UpYun 或 Aliyun 这样既有很好的响应速度,也无需额外备份本地文件。

File 模式需要 Nginx image_filter module 配合才能生存缩略图。安装比较复杂,如果技能不熟练,请采用 Docker 模式部署。

手工部署请参考 homeland_docker 的配置。

然后配置 config/config.yml

  1. defaults: &defaults
  2. # file 的模式,只需要一个配置
  3. upload_provider: "file"

app.local.env

  1. # [uploader]
  2. upload_provider=file
  3. # upload_host 留空
  4. upload_host=

UpYun

config/config.yml

  1. defaults: &defaults
  2. upload_provider: "upyun"
  3. upload_access_id: "username"
  4. upload_access_secret: "password"
  5. upload_bucket: "your-bucket"
  6. upload_url: "http://your-bucket.b0.upaiyun.com"

app.local.env

  1. # [uploader]
  2. upload_provider=upyun
  3. upload_access_id=username
  4. upload_access_secret=password
  5. upload_bucket=your-bucket
  6. upload_url=http://your-bucket.b0.upaiyun.com

Aliyun OSS

config/config.yml

创建 Bucket 的时候,请选择 公共读 模式。

Aliyun OSS 相比 UpYun 多了两项配置:

配置项解释需要重启?
upload_aliyun_internal如果是阿里云的服务器,这里设置 true 将能获得更快的上传速度
upload_aliyun_area阿里云服务器区域,例如: cn-shanghai

例如:

  1. defaults: &defaults
  2. upload_provider: "aliyun"
  3. upload_access_id: "access-id"
  4. upload_access_secret: "access-secret"
  5. upload_bucket: "your-bucket"
  6. upload_url: "http://your-bucket.host.com"
  7. upload_aliyun_internal: false
  8. upload_aliyun_area: "cn-shanghai"

图片缩略图

Hoemeland 上传图片需要依赖云服务的图片缩略图功能。

  • UpYun: 云处理 - 需进入 UpYun 管理后台配置缩略图版本。
  • Aliyun: 图片处理 - 无须配置。

开启 间隔标识符

UpYun 使用感叹号 ! (应该默认已开启), Aliyun 无需配置,Homeland 内置支持。

缩略图版本

请在对应的平台管理界面按下面的表格设置 缩略图版本

版本名称限定尺寸 (px)缩略方式
large1920限定宽度,高度自适应
lg192x192固定宽度和高度
md96x96固定宽度和高度
sm48x48固定宽度和高度
xs32x32固定宽度和高度

例如: UpYun 的部分配置截图

开启 CORS 跨域共享

个人设置页面有通过 AJAX 请求强制刷新头像缓存的动作,你需要配置 UpYun 开启 CORS 跨域共享 功能:

允许的域MethodsAllow HeadersExpose Headers
http://your-host.comGET, HEAD, OPTIONSPragmaPragma

NOTE: 允许的域注意 http 还是 https,确保和你正常访问你网站的地址一样,例如: https://ruby-china.org