相信你們都用過網盤,好比國外有 Google Drive、Dropbx、OneDrive等,國內有 百度雲盤、堅果雲等,這些都是公共網盤,因爲公司業務須要,想架設公司本身用的私有網盤。javascript
目前市面上,穩定、成熟的私有云存儲方案有:html
另外,能夠多去關注下 nextcloud 項目,聽說 ownCloud
母公司破產後,原項目組的骨幹出走並以 ownCloud
項目 folk
出新項目 nextcloud
繼續開發。須要說明的是,ownCloud
母公司後來被一家德國公司收購了,ownCloud
項目還在繼續開發。python
這裏主要介紹 ownCloud
的搭建。mysql
ownCloud 是開源的、免費的、專業的私有云存儲解決方案,以 AGPL
許可發佈,它能幫你快速地在服務器上架設一套專屬的私有云文件同步網盤,能夠像 Dropbox
那樣實現文件跨平臺同步、共享與團隊協做等。nginx
ownCloud 支持 Windows/Mac桌面端,IOS/Android手機端。基本能夠替代在線網盤如百度網盤等。sql
ownCloud項目的內核是使用PHP5編寫的,環境基於LAMP,支持SQLite、MySQL、Oracle、PostgreSQL等數據庫。
要是在服務器中,先搭建LAMP環境,再去安裝ownCloud,調試環境會很麻煩,耗時也長。能夠經過Docker來快速部署ownCloud。docker
服務器系統是:CentOS6.5,在此係統中安裝docker,請參考前面的文章:CentOS 6.x 上搭建docker數據庫
ownCloud的官方docker鏡像頁面
這個鏡像,已經集成了 Apache + PHP
的環境。目前版本是:10.0.1
。瀏覽器
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?
owncloud
默認使用 SQLite
數據庫,但對於更大的安裝,官方建議選擇另一個不一樣的數據庫,特別當使用桌面客戶端同步文件時,不鼓勵使用 SQLite
。
拉取 mysql
官方docker鏡像(目前最新是: 5.7.19
)
1 docker pull mysql
啓動 MySQL 容器,用做 owncloud 容器的數據庫。
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD="Dwwe+=32H" -d mysql
docker run --name owncloud -p 5679:80 -v /data/db/owncloud:/var/www/html/data --link my-mysql:mysql -d owncloud
-p 5679:80
:因爲宿主機已開通80端口,爲了不衝突,將容器的80端口映射到宿主機的5679端口。--link my-mysql:mysql
:將 owncloud容器(客戶)
連接到 my-mysql容器(服務)
,連接別名:mysql
。
配置文件內容以下:
1 upstream pan_server{ 2 server 127.0.0.1:5679; 3 } 4 5 server { 6 listen 80; 7 server_name pan.xxx.com; 8 access_log /data/logs/nginx/pan.xxx.com.access.log; 9 error_log /data/logs/nginx/pan.xxx.com.error.log; 10 11 proxy_set_header X-Forwarded-For $remote_addr; 12 13 location / { 14 proxy_set_header Host $host; 15 proxy_set_header X-Real-IP $remote_addr; 16 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 17 add_header Cache-Control "no-cache"; 18 19 proxy_pass http://pan_server; 20 limit_rate 256m; 21 client_max_body_size 0; 22 } 23 }
在瀏覽器上訪問 pan.xxx.com
,進入 owncloud 安裝步驟:
MySQL數據庫配置:
數據庫用戶:root
數據庫密碼:Dwwe+=32H
數據庫名:owncloud
數據庫主機:mysql 或 my-mysql
也能夠將上面啓動 owncloud 和 mysql 容器的兩個步驟合成一步完成,這裏介紹 docker-compose
的使用。
想要用 docker-compose
,docker版本必須大於等於 1.10.0
,不然會報錯:
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.
compose 能夠經過 Python 的 pip 工具進行安裝,能夠直接下載編輯好的二進制文件使用,甚至直接運行在 Docker 容器中。
# pip install -U docker-compose
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: "Dwwe+=32H" MYSQL_DATABASE: ownCloud
注意:docker-compose
必須在 docker-compose.yml
文件所在目錄中執行,不然會報錯:
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 後臺啓動
1 docker-compose up -d
docker-compose 查看狀態
1 docker-compose ps
docker-compose 中止和刪除
docker-compose stop
dcoker-compose rm
至關上面兩條命令
dcoker-compose down