购买咨询

FinderWeb 安装部署


重要提示:如果对公网开放,请务必修改管理员密码,千万不要裸奔,千万不要裸奔!!!

部署之前请务必认真阅读此文档,安装文档只有下面一小段,1分钟即可阅读完毕,安装部署过程中请严格按照文档来!

单机部署只看第一节即可,集群部署看第一节和第二节,其他请参考后面的章节。

1. 单机部署

环境要求:

JDK1.8

Tomcat 8

其他版本不支持

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

1. 请确保Java和Tomcat安装目录不包含空格,例如请勿将Java安装到 C:\Program Files 目录中,JAVA某些API不支持目录中包含空格。

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的用户对TOMCAT_HOME目录拥有写权限,如果没有写权限,系统将无法登录。

5. 启动tomcat。

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

默认的用户名密码:admin 1234

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

1. 使用admin登录,点击顶部的设置菜单进入后台,进入主机管理菜单,将当前主机默认的工作空间删除或者修改。

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

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

2. 集群部署

应用场景:多台机器,每台机器都有自己的日志文件。

集群部署要求每台机器都必须部署finderweb,finderweb集群中的每个节点即是server又是agent。节点之间要求http互通,可以是端口互通,也可以是通过nginx互通,总之能够过通过http互相访问。

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

假设有三台机器,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. 按照单机部署的方式在新机器上部署好finderweb;

2. 登录现有集群环境,管理后台-安全设置,将 会话key和安全key 拷贝出来备用;

3. 修改新机器的 ~/WEB-INF/classes/META-INF/conf/finder.conf 文件,使用上一步拷贝出来的会话key和安全key修改finder.conf中的会话key和安全key并重启新机器的tomcat;

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

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

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

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

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

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

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

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

4. 系统升级

finderweb的最终输出只有一个jar文件,这使得系统集成和应用升级非常简单,只需要替换jar文件即可完成系统升级,并且完全向下兼容。

首先到官网 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. 其他应用服务器

容器: 指tomcat, resin等,java web程序需要在容器内运行。

如果你使用的是其他应用服务器,例如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/finderweb中的文件均可移动到任意其他目录中,移动之后需要在 ~/WEB-INF/classes/app.conf中配置 app.conf = 新的目录。

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


8. 权限设置

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

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

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