使用Docker+OSS部署大容量云盘

最近云盘开始普遍关闭,百度云的用户体验也越来越差。所以组建了自己的云服务系统,便于使用。 之前尝试过用Docker部署OwnCloud,使用非常方便,但是由于云服务器磁盘价格较贵,因此仅能作为常用文件的同步盘,无法应用于大量文件存储的场景。OSS相对相比云盘来说,存储价格要低很多,1T一年大概1000块左右,如果把OSS当做磁盘挂载到服务器上,再配合OwnCloud便可以以非常低廉的价格享用高质量的云存储服务。

初步设想

  • 在ECS上安装Docker完成OwnCloud服务的部署
  • 使用ossfs完成OSS虚拟磁盘的需求
  • 使用阿里的免费证书实现Https加密

技术路线

  • docker实现OwnCloud的一键安装
  • docker-compose负责容器管理
  • ossfs实现将oss挂载到本地
  • supervisord来维护ossfs进程

搭建步骤

  1. 安装OSSFS
    • 这里可以参考阿里的官方文档
    • PS:如果用的是阿里的服务器,我的Centos默认就是阿里的源,可以直接yum install ossfs安装。 启动时起不来,浪费了很多时间。
  2. 配置运行OSSFS
    • 配置自己的bucket,access id和key echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
    • 修改配置文件的权限 chmod 640 /etc/passwd-ossfs
    • 运行 ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
    • 一些词的解释
      • my-bucket 自己的bucket名称
      • my-access-key-id 在右上方能查到的access key的id
      • my-access-key-secret 同上能查到的secret
      • my-mount-point 本机挂载的目录
      • -ourl=my-oss-endpoint 阿里云OSS的接入点,就是填系统给的内网或外网地址
    • 注意
      • 阿里论坛里有篇文档说配置文件放到~/.passwd-ossfs里,我测试时发现这样会导致开机无法读取配置文件,所以不要这么操作。
      • my-oss-endpoint是oss的接入点,不要把bucket的名字也写上去了
  3. 安装Supervisord并配置监视ossfs
    • 安装supervisord
      • easy_install supervisor
    • 新建ossfs的启动脚本
      • mkdir /root/ossfs_scripts
      • vi /root/ossfs_scripts/start_ossfs.sh
      • # contents of start_ossfs.sh
      • fusermount -u /mnt/ossfs
      • ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -ouid=37 -ogid=37 -o allow_other -o umask=007 -f
    • 编辑/etc/supervisor/supervisord.conf,加入配置
      • [program:ossfs]
      • command=bash /root/ossfs_scripts/start_ossfs.sh
      • logfile=/var/log/ossfs.log
      • log_stdout=true
      • log_stderr=true
      • logfile_maxbytes=1MB
      • logfile_backups=10
    • 关闭ossfs并运行测试supervisord是否正常工作
      • umount ....
      • supervisord
  4. 配置supervisord开机自启动(CentOS7系统,其它系统可自行谷歌)
    • 在/user/lib/systemd/system下新建supervisord.service mkdir /user/lib/systemd/system/supervisord.service
    • 加入以下配置
      • # supervisord service for sysstemd (CentOS 7.0+)
      • # by ET-CS (https://github.com/ET-CS)
      • [Unit]
      • Description=Supervisor daemon
      • [Service]
      • ExecStart=/usr/bin/supervisord
      • ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
      • ExecReload=/usr/bin/supervisorctl $OPTIONS reload
      • KillMode=process
      • Restart=on-failure
      • RestartSec=42s
      • [Install]
      • WantedBy=multi-user.target
    • 配置开机启动 systemctl enable supervisord
    • 注意
      • 在新建ossfs的启动脚本是,启动代码相比官方增加了-ouid=37 -ogid=37 -o allow_other -o umask=007
      • -ouid=37 -ogid=37 是设置文件所有权是owncloud的用户,我这里是37,需要按照自己的情况修改
      • -o allow_other 是允许其它人读写文件
      • -o umask=007 是设置权限为770,否则777的话,owncloud会报警。
  5. 安装Docker
    • 更新 yum update
    • 添加源
      • tee /etc/yum.repos.d/docker.repo <<-'EOF'
      • [dockerrepo]
      • name=Docker Repository
      • baseurl=https://yum.dockerproject.org/repo/main/centos/7/
      • enabled=1
      • gpgcheck=1
      • gpgkey=https://yum.dockerproject.org/gpg
      • EOF
    • 安装docker yum install docker-engine
    • 设置开机自启动 systemctl enable docker
    • 启动Docker服务 systemctl start docker
  6. 安装docker-compose
    • 一键下载安装 curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose
    • 为compose添加执行权限 chmod +x /usr/local/bin/docker-compose
  7. 配置docker-compose.yml
    • 建议不要在用户~目录下配置,可以新建个文件夹比如cloud
    • 修改配置文件vi docker-compoer.yml,加入以下配置(注意缩进,我这里Markdown把缩进都丢了)
      • services:
      • db:
      • image: mysql:5.7
      • restart: always
      • environment:
      • MYSQL_ROOT_PASSWORD: owncloud
      • MYSQL_DATABASE: owncloud
      • MYSQL_USER: owncloud
      • MYSQL_PASSWORD: owncloud_pass
      • owncloud:
      • depends_on:
      • - db
      • image: owncloud:latest
      • links:
      • - db
      • ports:
      • - "8000:80"
      • restart: always
    • ports 是设置本机开放用于访问OwnCloud的端口
    • volumes 是把存放数据的目录映射到oss挂载的目录上
    • 这个配置文件实现了OwnCloud与MySQL的编排,如果不需要可以自行调整。
  8. 启动和配置OwnCloud服务
    • 启动owncloud docker-compose up -d
    • 通过浏览器打开owncloud完成第一次配置
      • 用户名密码下面有个选项打开可以配置MySQL(比默认的SQLite更高效)
      • 数据库信息只需要按照docker-compose里配置的数据库,用户密码配置即可
  9. 完成!!!开始享用吧~

参考文献

  1. ossfs安装(官方)
  2. 使用lnmp+owncloud+ossfs+oss搭建属于自己的私有云盘
  3. supervisord安装与配置
  4. supervisord自启动配置
  5. docker安装
  6. docker-compoer安装

Comments

皖ICP备13007154号-1