文档目录

重要提示:对于小白用户,部署之前请认真阅读文档,安装部署文档只有下面一小段,1分钟即可阅读完毕,安装部署的过程中请严格按照文档来!系统集成只需要finder-web.x.x.x.jar,不需要将源码导入到你的项目,导入进去你也跑不起来!
不要从其他地方下载,更不要尝试从源码构建。
单机部署只看第一节即可,集群部署看第一节和第二节,其他请参考后面的章节。

1. 单机部署

重要提示:如果你不知道什么是contextPath就老老实实的按照文档来,解压到ROOT!!!如果你比较懂,那么请随意!

1. 请确保你的Java和Tomcat安装目录不包含空格,例如请勿将Java安装到 C:\Program Files 目录中。

2. 移除TOMCAT_HOME\webapps目录下的所有文件和目录。如果有重要数据,请注意备份。

3. 在TOMCAT_HOME\webapps目录下新建ROOT目录,注意必须是大写的ROOT。

4. 解压finder.war中的所有文件到TOMCAT_HOME\webapps\ROOT,解压之后的目录结构应该如下:

TOMCAT_HOME\webapps\ROOT
    + error
    + META-INF
    + WEB-INF
    - favicon.ico
    - index.html
    - license.txt
        

4. 请确保当前启动Tomcat的用户对ROOT目录拥有写权限,如果没有写权限,系统将无法登陆。

5. 启动tomcat即可。默认的用户名密码: admin 1234

6. 最后一步: license确认, 访问http://ip:port/finder,使用管理员帐号登录,显示license页面,点击同意之后,部署成功。

单机部署之后需要做一些简单设置,如果是准备进行集群部署,不要做以下设置:

1. 使用admin登录,点击顶部的设置菜单进入后台,进入主机管理菜单,为当前主机添加工作空间。

2. 进入系统设置-安全设置,重新生成安全key和签名key,点击保存并同步到集群,单机部署完成。

重要提示:主机名和工作空间名称一旦确定,请勿随意修改,如果你已经为当前主机做了权限设置,修改主机名和工作空间名称之后需要重新设置权限。

2. 集群部署

集群部署和动态添加机器请务必仔细阅读部署文档,并严格按照文档来,否则可能导致整个集群都无法访问。如果误操作导致整个集群不可用,请分别登录每台机器重新部署并按照本文档重新设置。

假设有三台机器,IP分别是192.168.1.1, 192.168.1.2, 192.168.1.3, 我们假设192.168.1.1这台机器是master, 其他两台是slave, 现在要在这三台机器上部署finder:

首先按照单机部署的方式分别在三台机器上部署好finder并启动tomcat; 部署完成之后务必先登录这台机器确认License,否则将无法使用。

请注意接下来的所有操作都是在master这台机器上操作,不要登录其他机器做操作。

1. 使用admin账号登录192.168.1.1这台机器,点击顶部的管理后台菜单,进入主机管理菜单,此时只能看到一个master主机。第一步需要先将master设置好。

2. 修改master主机默认的name和url(http://www.myfinder.com/finder改成当前主机真正的访问地址),该地址务必要填写正确。然后根据情况添加工作空间。

3. 依次添加另外两台机器,同时为每台机器配置好工作空间:全部添加完主机后务必在主机列表中点击从master同步。此时添加主机的时候,新主机必须已经启动并能正常访问,在添加的时候master会向新主机发送一个新的指令告诉新主机当前的master的name和新主机的name,所以前一步编辑master务必要先做。

4. 所有主机都被添加进来之后,进入主机列表页,依次点击从master同步。前面的步骤编辑完主机之后,所有的数据存储在master上,因此需要同步到集群的其他机器上。

5. 进入系统设置-安全设置,重新生成安全key和签名key,点击保存并同步到集群,集群部署完成。

集群部署成功之后,可以根据情况决定是否做负载均衡:

Finder集群被设计为对外提供幂等服务,因此无论访问那台机器都可以访问到集群内所有机器上的文件。

第一种方式:只暴露其中的一台机器,例如通过nginx只暴露master出去给用户访问,其他的机器对用户不可见。

第二种方式:在nginx上做负载均衡,通过nginx只暴露一个统一的访问地址,例如:http://www.myfinder.com/finder。所有机器对用户不可见。

以上无论哪种方式都需要集群内机器的tomcat开放的端口是互通的,例如你不能使用iptables只开放80端口,你需要同时将tomcat使用的端口也开放,否则集群内的机器就无法互通了。

其他方式

FinderWeb的集群功能提供了管理多台服务器上的文件的功能,也可以使用其他方式来管理多台服务器上的文件,下面这种方式是用户 @______偏执狂┑ 提供的一种方案,不想在多台机器部署的用户,可以参考这种方案。

1. 首先在服务器上安装NFS,Windows下可以使用samba。

2. 将其他服务器上的目录挂载或者共享给部署FinderWeb的服务器上。

3. 在FinderWeb中配置不同的工作空间即可。

3. 动态添加机器

如果以后需要将其他机器添加到集群,请按照下面的步骤添加:
第一种方式:

1. 按照单机部署的方式在新机器上部署好finder;

2. 使用管理员账号登录到集群,从安全设置中将安全key和签名key拷贝出来:

3. 使用admin账号登录到新添加的那台机器,进入后台,将拷贝的安全key和签名key粘贴进去并点击保存同步到集群。此时新机器是独立的一个集群,只有它自己,它自己就是master机器。

4. 使用管理员账号登录到集群,在主机管理中将新机器加入进来,此操作集群会向新机器发出重命名指令和master指令,告诉新机器以后我是master,你的新名字是xxx:添加完主机后务必在主机列表中点击从master同步。

5. 使用管理员账号登录到集群,在安全设置中不要做任何修改,直接点击保存,这一步是为了将集群中的管理员账号同步到新机器:

6. 至此,新机器加入集群完成。

第二种方式:
这种方式是支持群中的 @骑猪的大叔 想到的方案,特别感谢。

1. 按照单机部署的方式在新机器上部署好finder;

2. 使用管理员账号登录到集群,将安全key和签名key重置为:00000000-0000-0000-0000-00000000

3. 使用管理员账号登录到集群,在主机管理中将新机器加入进来,此操作集群会向新机器发出重命名指令和master指令,告诉新机器以后我是master,你的新名字是xxx:添加完主机后务必在主机列表中点击从master同步。

4. 使用管理员账号登录到集群,在安全设置中重新生成安全Key和签名key,点击保存;

5. 至此,新机器加入集群完成。

4. 批量升级

首先到官网 http://www.finderweb.net/download.html 下载最新的升级包:finder-web-x.x.x.jar,注意是.jar文件,不是.war文件。

通过后台升级

1. 使用管理员帐号登录后台,在集群环境已经就绪的情况下不需要专门登录到master,登录其中任意一台都可以,如果使用了负载均衡,直接访问统一入口即可;

2. 进入系统更新,选择好要升级的主机(安全起见,请在系统空闲时间分批次升级,并先升级或者最后升级master),单击系统升级菜单,选择已经下载的.jar文件,点击确定即可。升级完成之后系统会自动重启无需手动重启。

重要提示:

1. 请确保你的系统设置了 JAVA_HOME 环境变量,在某些windows server系统下,如果没有设置JAVA_HOME环境变量,可能导致重启失败。

2. 早期版本的后台升级功能存在bug,windows系统升级完成之后无法删除旧版的文件(由于还在使用中),导致升级失败,需要手动删除旧版文件并手动重启Tomcat。

手动升级

1. 手动替换finder-web-x.x.x.jar;

2. 手动重启Tomcat;

5. 其他应用服务器

如果你使用的是其他应用服务器,例如resin等,finder的自动重启功能将无法使用,但是你可以通过手动创建重启脚本的方式来解决。

1. 首先编写finder_restart.sh文件,windows环境下为finder_restart.bat文件,编写完成之后放到服务器的工作目录,finder会检查这个文件,如果存在则不创建,否则自动生成一个,自动生成仅支持tomcat,如果不是tomcat将会报错。注意:这个文件只需要三到五行代码即可,不需要写很复杂的脚本,示例如下:

linux:

#!/bin/sh
WORK_DIRECTORY=/web/resin/bin           // 该行代码定义当前服务器的工作目录

echo stop tomcat
${WORK_DIRECTORY}/shutdown.sh           // shutdown.sh改为服务器的关闭脚本
kill -9 $1                              // $1为finder重启时传递过来的当前容器的进程id

echo start tomcat
${WORK_DIRECTORY}/startup.sh            // startup.sh改为服务器的启动脚本
echo start success

windows:

@ECHO OFF
@set WORK_DIRECTORY=/web/resin/bin     // 该行代码定义当前服务器的工作目录
@SET JAVA_PROCESS_ID=%1                // %1为finder重启时传递过来的当前容器的进程id

@ECHO stop tomcat
call %WORK_DIRECTORY%\shutdown.bat     // shutdown.sh改为服务器的关闭脚本

if not "%JAVA_PROCESS_ID%"=="" taskkill /F /pid %JAVA_PROCESS_ID%

@echo start tomcat
call %WORK_DIRECTORY%\startup.bat      // startup.sh改为服务器的启动脚本
@ECHO start success

注意事项,如果你的Java或者Tomcat安装目录包含空格,重启功能将不可用,请确保你的Java和Tomcat安装目录不包含空格。

在重启的过程中脚本需要做三件事:第一步,尝试关闭服务器;第二,杀死服务器进程,第二步起补刀作用,强制杀死进程;第三步,启动服务器。

为了确保重启的可靠性和重启脚本的简单,finder的重启操作采用进程镜像的方式,这样做的可靠性很高,几乎可以确保100%重启成功,而且不需要编写复杂的脚本。

6. 定时重启

需求场景:定时任务重启集群中的finder系统或者只重启部分机器。

1. 创建重启脚本;

curl --H'Security-Key: 88946950-98e7-47d5-a651-5662131f63a9' URL

Security-Key 集群内部通讯的安全Key, 从后台安全设置中拷贝出来即可。

Windows系统可以选择安装windows版的curl

URL的写法有三种;

# http://IP:PORT/finder?action=agent.node.restart                                重启指定的机器
# http://DOMAIN/finder?action=agent.node.restart&host=www.myfinder.com           重启指定的机器
# http://DOMAIN/finder?action=agent.cluster.restart                              重启集群内所有的机器
# 第一种写法使用ip:port的方式直接调用目标机上部署的finder;
# 第二种写法使用域名的方式(如果配置了负载均衡),通过host参数访问目标机上部署的finder,域名也可以使用ip:port,ip:port可以是集群内任意一台机器;
# 第三种写法是重启集群内全部机器,前两种只会重启一台机器,域名也可以使用ip:port,ip:port可以是集群内任意一台机器;

2. 在操作系统中配置定时任务;

windows:开始 - 程序 - 附件 - 系统工具 - 任务计划

linux: 创建cron定时任务

7. 特殊配置

以下配置不是必须的,有特殊需求的可以按此操作

1. Finder中~/WEB-INF/classes/META-INF/conf中的文件均可移动到${user.home}/skinx/${APP_NAME}/META-INF/conf目录中。

其中${user.home}指当前操作系统用户的用户目录,windows下为:C:\Users\${YOUR_NAME},linux下为当前启动tomcat的用户:/home/${YOUR_NAME}。请确保当前用户对这个目录拥有写权限。

${APP_NAME}默认为finder,如需指定,请在~/WEB-INF/classes目录下新建app.properties文件,并写入一行代码:name=xxxx

系统在启动的时候会首先检查${user.home}/skinx/${APP_NAME}/META-INF/conf目录是否存在,如果存在则所有的配置文件和应用数据都从该目录加载,否则从~/WEB-INF/classes/META-INF/conf加载。

另2.2.6及以后的版本没有cookie.properties这个配置文件,如果是从老版本升级到新版的可以删除该文件。

由于配置文件目录会存储系统运行过程中产生的用户数据和权限数据,因此强烈建议将该目录从应用目录迁移到用户目录。


8. 权限设置

1. Finder中只有一个用户是管理员,其他用户都是普通用户,请在后台 - 安全设置中设置管理员帐号。

2. 管理员帐号不需要配置任何权限,管理员帐号可以操作所有主机和工作空间,并拥有任何工作空间的任何权限。例外情况:如果工作空间为只读的,管理员也只有读权限。

3. 普通用户必须赋权才能看到或者操作对应的工作空间。赋权需要先赋主机权限再赋文件权限。