在线Demo (体验帐号: demo@tank.eyeblue.cn 密码:123456)html
后端tank地址前端
蓝眼云盘是 蓝眼系列开源软件 之一,也是蓝眼系列其余软件的基础服务软件。蓝眼博客具备如下几大特点:mysql
1. 支持dockerlinux
2. 软件体积小,跨平台,运行简单git
windows
linux
mac OS
操做系统中都可安装运行;3. 使用方便,核心功能齐全github
4. 支持接口编程golang
5. 先后端分离,文档丰富web
golang
,没有使用任何web框架;初始化安装,生命周期控制,路由管理,路由匹配,日志管理,依赖注入,错误处理,panic拦截,打包,安装脚本等功能全采用纯手动打造,绿色环保,所以代码更精炼,更具备探讨学习的价值。若是您以为蓝眼云盘对您有帮助,请不要吝惜您的star sql
蓝眼云盘在运行时依赖mysql
数据库,所以最好的方式是使用docker-compose
来运行,若是你对docker-compose
不熟悉,能够参考这篇文章:《Docker Compose 项目》
1.准备 docker-compose.yml 文件 docker-compose.yml
描述了镜像启动的数据卷,环境变量,启动方式,依赖项等。该文件位于项目的根目录下,内容以下:
#docker-compose版本,这里的3不要动 version: "3" services: # 数据库的镜像信息 # 使用mysql:5.7的镜像 db: image: mysql:5.7 volumes: # 数据库文件存放在宿主机的`~/data/mysql`位置,若是宿主机目录不存在,则会自动建立 - ~/data/mysql:/var/lib/mysql # 若是启动失败,则老是会重启。由于镜像有依赖的状况,不停重启能够保证依赖项启动成功后本身再运行 restart: always environment: # 指定root密码为`tank123`,而且建立一个新数据库`tank`,同时用户名和密码为`tank` `tank123` MYSQL_ROOT_PASSWORD: tank123 MYSQL_DATABASE: tank MYSQL_USER: tank MYSQL_PASSWORD: tank123 # 蓝眼云盘的镜像信息 # 依赖 mysql:5.7 的镜像 tank: image: eyeblue/tank:1.0.2 depends_on: - db ports: # 端口映射关系,宿主机端口:镜像端口 - "6010:6010" # 若是启动失败,则老是会重启。由于镜像有依赖的状况,不停重启能够保证依赖项启动成功后本身再运行 restart: always environment: # mysql的端口 TANK_MYSQL_PORT: 3306 # Mysql的主机,和services的第一个节点一致。 TANK_MYSQL_HOST: db # 数据库 TANK_MYSQL_SCHEMA: tank # 数据库的用户名 TANK_MYSQL_USERNAME: tank # 数据库的密码 TANK_MYSQL_PASSWORD: tank123 # 超级管理员的昵称。只能是英文或数字 TANK_ADMIN_USERNAME: admin # 超级管理员邮箱,做为登陆帐号 TANK_ADMIN_EMAIL: admin@tank.eyeblue.cn # 超级管理员密码,做为登陆密码 TANK_ADMIN_PASSWORD: 123456 volumes: # 日志文件存放在宿主机的`~/data/tank/log`位置,若是宿主机目录不存在,则会自动建立 - ~/data/tank/log:/data/log # 上传文件存放在宿主机的`~/data/tank/matter`位置,若是宿主机目录不存在,则会自动建立 - ~/data/tank/matter:/data/matter
2.运行项目
首先保证当前目录是docker-compose.yml
所在的目录,而后执行如下指令便可运行蓝眼云盘:
$ docker-compose up -d
3.验证
因为数据库启动须要必定的时间,所以大约20s后,打开浏览器访问http://127.0.0.1:6010
,若是看到登陆界面则表示运行成功。
4.中止项目
方法一:使用如下命令来中止蓝眼云盘
$ docker-compose stop
方法二:固然你也能够用中止容器的方式来中止蓝眼云盘
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f5f64735fc53 eyeblue/tank:1.0.2 "/go/bin/tank" 20 minutes ago Up 13 seconds 0.0.0.0:6010->6010/tcp tank_tank_1 3a859cad3e7e mysql:5.7 "docker-entrypoint.s…" 20 minutes ago Up 14 seconds 3306/tcp tank_db_1 $ docker container stop f5 $ docker container stop 3a
若是你比较关心如何使用docker来构建蓝眼云盘,请参考 《Docker 化你的开源项目》
a) 准备工做
conf/tank.json
,各项说明以下:{ //服务器运行的端口,默认6010。若是配置为80,则可直接用http打开 "ServerPort": 6010, //日志是否须要打印到控制台,默认false,主要用于调试 "LogToConsole": false, //Mysql端口,默认3306 "MysqlPort": 3306, //Mysql主机 "MysqlHost": "127.0.0.1", //Mysql数据库名称 "MysqlSchema": "tank", //Mysql用户名,建议为蓝眼云盘建立一个用户,不建议使用root "MysqlUserName": "tank", //Mysql密码 "MysqlPassword": "tank123", //超级管理员用户名,只能是字母和数字 "AdminUsername": "admin", //超级管理员邮箱,做为登陆的帐号 "AdminEmail": "admin@tank.eyeblue.cn", //超级管理员密码 "AdminPassword": "123456" }
b) 运行
tank.exe
。cd 应用目录路径 ./tank
若是你但愿关闭shell窗口后,应用依然运行,请使用如下脚本启动和中止
# 启动应用 cd 应用目录路径/service ./startup.sh # 中止应用 cd 应用目录路径/service ./shutdown.sh
c) 验证
浏览器中打开 http://127.0.0.1:6010 (127.0.0.1请使用服务器所在ip,6010请使用tank.json
中配置的ServerPort
) 能够看到登陆页面,而且使用配置文件中的邮箱和密码登陆成功后能够看到所有文件(见上文截图)即表示安装成功。
前端项目打包
npm install
npm run build
dist
文件夹下获得打包后的静态文件,将dist
目录下的全部文件拷贝到后端项目的build/html
文件夹下。(下文的工程目录中也有说明)后端项目打包
GOPATH
配置到工程目录,建议工程目录结构以下:golang #环境变量GOPATH所在路径 ├── bin #编译生成的可执行文件目录 ├── pkg #编译生成第三方库 ├── src #golang工程源代码 │ ├── github.com #来自github的第三方库 │ ├── golang.org #来自golang.org的第三方库 │ ├── tank #clone下来的tank根目录 │ │ ├── build #用来辅助打包的文件夹 │ │ │ ├── conf #默认的配置文件 │ │ │ ├── doc #文档 │ │ │ ├── html #前端静态资源,从项目tank-front编译得到 │ │ │ ├── pack #打包的脚本 │ │ │ ├── service #将tank看成服务启动的脚本 │ │ ├── dist #运行打包脚本后得到的安装包目录 │ │ ├── rest #golang源代码
其中golang.org/x
国内没法下载,默认会经过git clone 的方式从 这里下载。其他依赖项均会经过go get
的方式下载。
tank/build/pack/build.bat
,成功以后可在tank/dist
下看到tank-x.x.x
文件夹,该文件夹即为最终安装包。cd tank/build/pack/ ./build.sh
成功以后可在tank/dist
下看到tank-x.x.x.linux-amd64.tar.gz
利用获得的安装包便可参考上文的安装
一节进行安装。
感谢全部蓝眼云盘的贡献者 @zicla,@seaheart,@yemuhe,@hxsherry
若是您也想参与进来,请尽情的fork, star, post issue, pull requests
Copyright (c) 2017-present, eyeblue.cn
原文发布于蓝眼博客 http://blog.eyeblue.cn/home/article/8953d493-f80a-4be0-bde2-50d3c5747430