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

初步设想

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

技术路线

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

搭建步骤

  1. 安装OSSFS
- 这里可以参考阿里的[官方文档](https://github.com/aliyun/ossfs)
- PS:如果用的是阿里的服务器,我的Centos默认就是阿里的源,可以直接`yum install ossfs`安装。

启动时起不来,浪费了很多时间。

  1. 配置运行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`
  1. 配置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里配置的数据库,用户密码配置即可
  1. 完成!!!开始享用吧~

参考文献

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