最近云盘开始普遍关闭,百度云的用户体验也越来越差。所以组建了自己的云服务系统,便于使用。
之前尝试过用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的名字也写上去了
  1. 安装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`
  1. 配置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会报警。
  1. 安装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`
  1. 安装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
  2. 配置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的编排,如果不需要可以自行调整。
  1. 启动和配置OwnCloud服务
    - 启动owncloud docker-compose up -d
    - 通过浏览器打开owncloud完成第一次配置
    • 用户名密码下面有个选项打开可以配置MySQL(比默认的SQLite更高效)
    • 数据库信息只需要按照docker-compose里配置的数据库,用户密码配置即可
  2. 完成!!!开始享用吧~

参考文献

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