前言
相信大家都用過網(wǎng)盤,比如國外有 Google Drive农曲、Dropbx社搅、OneDrive等,國內(nèi)有 百度云盤、堅(jiān)果云等罚渐,這些都是公共網(wǎng)盤却汉,由于公司業(yè)務(wù)需要,想架設(shè)公司自己用的私有網(wǎng)盤荷并。
目前市面上,穩(wěn)定青扔、成熟的私有云存儲方案有:
Seafile:國內(nèi)團(tuán)隊(duì)開發(fā)的一個國際化開源云存儲項(xiàng)目
ownCloud:開源專業(yè)的私有云存儲項(xiàng)目
另外源织,可以多去關(guān)注下 nextcloud 項(xiàng)目,據(jù)說 ownCloud
母公司破產(chǎn)后微猖,原項(xiàng)目組的骨干出走并以 ownCloud
項(xiàng)目 folk
出新項(xiàng)目 nextcloud
繼續(xù)開發(fā)谈息。需要說明的是,ownCloud
母公司后來被一家德國公司收購了凛剥,ownCloud
項(xiàng)目還在繼續(xù)開發(fā)侠仇。
這里主要介紹 ownCloud
的搭建。
ownCloud介紹
ownCloud 是開源的犁珠、免費(fèi)的逻炊、專業(yè)的私有云存儲解決方案,以 AGPL
許可發(fā)布犁享,它能幫你快速地在服務(wù)器上架設(shè)一套專屬的私有云文件同步網(wǎng)盤余素,可以像 Dropbox
那樣實(shí)現(xiàn)文件跨平臺同步、共享與團(tuán)隊(duì)協(xié)作等炊昆。
ownCloud 支持 Windows/Mac桌面端桨吊,IOS/Android手機(jī)端》锞蓿基本可以替代在線網(wǎng)盤如百度網(wǎng)盤等视乐。
Docker簡介:
Docker 是個進(jìn)程級的輕量化虛擬機(jī),從狹義上來講就是一個進(jìn)程敢茁,從廣義上來講是一個虛擬容器佑淀,或者叫應(yīng)用容器( Application Container )
Docker 中有三個核心概念:Image、Container卷要、Repository渣聚。
Image:和 Windows 的那種 ISO 鏡像相比,Docker 中的鏡像是分層的僧叉,可復(fù)用的奕枝,而非簡單的一堆文件迭在一起(類似于一個壓縮包的源碼和一個 Git 倉庫的區(qū)別)。
Container: 容器的存在離不開鏡像的支持瓶堕,他是鏡像運(yùn)行時(shí)的一個載體(類似于實(shí)例和類的關(guān)系)隘道。依托 Docker 的虛擬化技術(shù),給容器創(chuàng)建了獨(dú)立的端口、進(jìn)程谭梗、文件等“空間”忘晤,Container 就是一個與宿機(jī)隔離 “容器”。容器可宿主機(jī)之間可以進(jìn)行 port激捏、volumes设塔、network 等的通信。
-
Repository: Docker 的倉庫和 Git 的倉庫比較相似远舅,擁有倉庫名闰蛔、tag。在本地構(gòu)建完鏡像之后图柏,即可通過倉庫進(jìn)行鏡像的分發(fā)序六。常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等蚤吹。
傳統(tǒng)虛擬機(jī)
Docker相對于VM有以下幾個優(yōu)點(diǎn):
啟動速度快例诀,容器啟動本質(zhì)就是一個開啟一個進(jìn)程而已,因此都是秒啟裁着,而 VM 通常要更久
資源利用率高繁涂,一臺普通 PC 可以跑成百上千個容器,你跑十個 VM 試試跨算。
性能開銷小爆土, VM 通常需要額外的 CPU 和內(nèi)存來完成 OS 的功能,這一部分占據(jù)了額外的資源
總之Docker和傳統(tǒng)的虛擬機(jī)有著非常大的區(qū)別诸蚕,下面就來部署一臺Docker研究研究
0:環(huán)境檢查
安裝之前步势,我們首先確保自己的 Linux 系統(tǒng)內(nèi)核版本高于3.10,并且系統(tǒng)是64位背犯,才能體驗(yàn) Docker 坏瘩。
通過 uname -ir 查看是否滿足要求。
>>uname -ir
安裝docker
服務(wù)器系統(tǒng)是:CentOS6.5漠魏,在此系統(tǒng)中安裝docker倔矾,請參考前面的文章:CentOS 7.x 上搭建docker
拉取ownCloud官方鏡像
ownCloud的官方docker鏡像頁面
這個鏡像,已經(jīng)集成了 Apache + PHP
的環(huán)境柱锹。目前版本是:10.0.1
哪自。
docker pull owncloud
需要用root用戶拉取,否則會有警告:
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
改用MySQL數(shù)據(jù)庫
owncloud 默認(rèn)使用 SQLite 數(shù)據(jù)庫禁熏,但對于更大的安裝壤巷,官方建議選擇另外一個不同的數(shù)據(jù)庫,特別當(dāng)使用桌面客戶端同步文件時(shí)瞧毙,不鼓勵使用 SQLite胧华。
拉取 mysql 官方docker鏡像(目前最新是: 5.7.19 )
docker pull mysql
啟動 MySQL 容器寄症,用作 owncloud 容器的數(shù)據(jù)庫。
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD="Wjj+=64F" -d mysql
啟動 owncloud 容器
docker run --name owncloud -p 9090:80 -v /data/db/owncloud:/var/www/html/data --link my-mysql:mysql -d owncloud
-p 9090:80 :由于宿主機(jī)已開通80端口矩动,為了避免沖突有巧,將容器的80端口映射到宿主機(jī)的9090端口。
--link my-mysql:mysql :將 owncloud容器(客戶) 鏈接到 my-mysql容器(服務(wù))悲没,鏈接別名:mysql篮迎。
配置nginx反向代理
配置文件內(nèi)容如下:
upstream pan_server{
server 127.0.0.1:9090;
}
server {
listen 80;
server_name pan.xxx.com;
access_log /data/logs/nginx/pan.xxx.com.access.log;
error_log /data/logs/nginx/pan.xxx.com.error.log;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Cache-Control "no-cache";
proxy_pass http://pan_server;
limit_rate 256m;
client_max_body_size 0;
}
}
配好域名解析。
安裝owncloud
在瀏覽器上訪問 pan.xxx.com檀训,進(jìn)入 owncloud 安裝步驟:
MySQL數(shù)據(jù)庫配置:
數(shù)據(jù)庫用戶:root
數(shù)據(jù)庫密碼:Wjj+=64F
數(shù)據(jù)庫名:owncloud
數(shù)據(jù)庫主機(jī):mysql 或 my-mysql
docker-compose 方式安裝
也可以將上面啟動 owncloud 和 mysql 容器的兩個步驟合成一步完成柑潦,這里介紹 docker-compose 的使用。
docker版本要求
想要用 docker-compose峻凫,docker版本必須大于等于 1.10.0,否則會報(bào)錯:
ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.
docker-compose 安裝
compose 可以通過 Python 的 pip 工具進(jìn)行安裝览露,可以直接下載編輯好的二進(jìn)制文件使用荧琼,甚至直接運(yùn)行在 Docker 容器中。
pip install -U docker-compose
docker-compose.yml 文件編寫
version: '2'
services:
owncloud:
image: owncloud
links:
- mysql:mysql
volumes:
- "/data/db/owncloud:/var/www/html/data"
ports:
- 5679:80
mysql:
image: mysql
volumes:
- "/data/db/mysql:/var/lib/mysql"
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: "Wjj+=64F"
MYSQL_DATABASE: ownCloud
docker-compose 運(yùn)行和停止
注意:docker-compose 必須在 docker-compose.yml 文件所在目錄中執(zhí)行差牛,否則會報(bào)錯:
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
docker-compose 后臺啟動
docker-compose up -d
docker-compose 查看狀態(tài)
docker-compose ps
docker-compose 停止和刪除
docker-compose stop
dcoker-compose rm
相當(dāng)上面兩條命令
dcoker-compose down