使用OwnCloud Docker容器+阿里云OSS搭建自己的云盘服务 on Centos 7
阿里云的OSS存储比较便宜
OwnCloud免费
Docker容器部署简单
首先将oss挂载到阿里云的ECS主机上
ossfs安装请参考:
http://crabdave.iteye.com/blog/2355690
卸载ossfs(如果需要)
umount 宿主机上的挂载目录 # root user
挂载ossfs
挂载之前需要创建一个owncloud服务所使用的用户,容器使用的是www-data用户
useradd -u 33 -G root www-data
此时我用的是用户ID是33, 本机的root用户组ID是0
即 www-data root
可通过/etc/passwd 和 /etc/group 查看ID号
开始挂载(-ouid=33 -ogid=0 -oumask=007 -o allow_other 主要解决owncloud提示挂载目录0770的问题)
ossfs 你的bucket 宿主机上的挂载目录 -ourl=http://oss-cn-beijing-internal.aliyuncs.com -ouid=用户id -ogid=组ID -oumask=007 -o allow_other
编排Docker容器(包括owncloud:9 和 MySQL 5.7)
docker-compose 的安装可参考:
http://crabdave.iteye.com/blog/2359617
vi docker-compose.yml
owncloud:
image: owncloud:9
restart: always
privileged: true
links:
- mysql:mysql
volumes:
- /宿主机目录:/容器目录
ports:
- "宿主机端口:80"
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: 数据库密码
后台启动:
docker-compose up -d
打开首页(宿主机IP:端口)进行配置,其中需要调整以下内容
管理员账号密码
配置数据文件目录,即挂载的OSSFS目录(compose描述文件中容器内部目录---/容器目录)
选择MYSQL数据库,填写账号密码、数据库名(owncloud)、地址(mysql)
配置数据库时偶尔会出现
error while trying to create admin user: failed to connect to the database: an exception occured in driver:SQLSTAT[HY000][1045]错误,
仔细观察后发现,使用的mysql数据库地址不对(docker mysql 容器对应的IP),界面上展示使用的是owncloud容器自己的IP (估计是默认数据库地址为localhost造成的)
然后我改一下管理员密码 就成功了,不知道为什么,估计是有缓存之类的
如果以后打算使用域名访问,最好是在安装的时候就使用域名打开首页进行安装,不然还得修改PHP配置文件设置可信任站点
nginx域名转发配置如下:
server {
listen 80;
server_name 你的域名;
#charset utf-8;
#access_log /var/log/nginx/log/host.access.log main;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:宿主机端口;
}
参考:
https://bbs.aliyun.com/read/299139.html
https://github.com/aliyun/ossfs/issues/5
https://yq.aliyun.com/articles/67160