宝塔面板是一款非常不错的运维管理面板,让系统运维更加方便简单。O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]的运行和部署本质上不需要依赖面板,但是我们也可以使用面板简化相应的操作。本文主要介绍O2OA开发平台在宝塔面板上的部署和启动。
一、先决条件:
1、完成宝塔面板的安装,https://www.bt.cn/bbs/thread-19376-1-1.html
2、Linux系统需要完成FTP工具pure-ftpd的安装(或者有可能直接连接服务器的SSH或者SFTP工具)

本方法直接手工从官网下载服务器安装包,并且使用FTP工具软件将安装包上传到服务器指定位置后解压缩即可。
安装步骤:
登录http://www.o2oa.net,在平台下载页面(https://www.o2oa.net/download.html)根据自己的服务器类型下载最新的服务器安装包:

下载后获得服务器安装压缩包:o2server-6.2.2-linux-x64.zip 或者 o2server-6.2.2-windows-x64.zip
前提条件:需要在定塔面板中安装 Pure-ftpd 软件。

使用自己的FTP工具或者宝塔FTP工具创建文件目录,并且将O2OA安装包o2server-6.2.2-linux-x64.zip 或者 o2server-6.2.2-windows-x64.zip上传到服务器指定位置。
(1)创建服务器文件存放目录:
Linux操作系统:创建目录 /data/
Windows操作系统:创建目录 D:/data/




填写好用户名和密码后,点击提交。


![]()

至此安装包下载和上传操作完成。

Linux操作系统:创建目录 /data/ ,执行命令
mkdir /data

在/data目录中下载 o2server-6.2.2-linux-x64.zip,下载地址可以在官网的安装包下载时浏览器下载或者迅雷下载的右键复制下载链接得到:

如:https://download.o2oa.net/download/o2server-6.2.2-linux-x64.zip
执行命令下载文件:
cd /data/ wget https://download.o2oa.net/download/o2server-6.2.2-linux-x64.zip


1、windows环境,直接右键解压安装到一个单独的文件夹即可,解压完成后将文件更名为 o2server
2、linux环境,可以使用宝塔的文件管理来进行文件解压,解压完成后将文件更名为 o2server
解压之前要检查文件的权限是否正确,请参考上一节的修改文件权限。

修改解压的路径为/data/o2server

等待解压完成:

1、windows操作系统可以直接双击执行D:/data/o2server/start_windows.bat完成O2OA的启用。
2、Linux操作系统可以执行命令启动O2OA,步骤如下:
打开终端,并且执行命令:
/data/o2server/start_linux.sh
服务器正在启动中:

直到终端显示WEB服务启用完成。
1、防火墙放行指定端口

O2OA的启动与正常运行需要服务器向外开发80端口。
V7.2.0之前的版本仍要开放20020、20030端口。
打开安全界面,开放指定的端口访问权限:

如果用户安装了WEB服务器,如IIS,Apache,Nginx等,80端口会被占用,导致服务器启用失败。此时可以修改服务器的WEB端口为其他端口。
2、修改服务器端口
从/data/o2server/configSample目录中将文件node_127.0.0.1.json复制到 /data/o2server/config目录中进行配置:

双击node_127.0.0.1.json编辑文件,在web节点增加端口信息行:
"port": 8080, #8080是需要修改的端口号,也需要在防火墙放行

完整的配置信息如下:
{
"enable": true,
"isPrimaryCenter": true,
"center": {
"enable": true,
"order": 0.0,
"sslEnable": false,
"redeploy": true,
"port": 20030.0,
"httpProtocol": "",
"proxyHost": "",
"proxyPort": 20030.0,
"scanInterval": 0.0,
"configApiEnable": true,
"statEnable": true,
"statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
"maxFormContent": 20.0,
"exposeJest": true,
"requestLogEnable": false,
"requestLogFormat": "",
"requestLogRetainDays": 7.0,
"persistentConnectionsEnable": true,
"###enable": "是否启用###",
"###order": "center节点顺序,顺序排列0,1,2...###",
"###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
"###redeploy": "每次启动是否重新部署所有应用.###",
"###port": "端口,center服务器端口,默认20030###",
"###httpProtocol": "对外http访问协议,http/https###",
"###proxyHost": "代理主机,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问地址.###",
"###proxyPort": "代理端口,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问端口.###",
"###scanInterval": "重新扫描war包时间间隔(秒)###",
"###config": "其他参数###",
"###configApiEnable": "允许通过Api修改config###",
"###statEnable": "启用统计,默认启用统计.###",
"###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
"###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
"###exposeJest": "暴露jest接口.###",
"###requestLogEnable": "启用访问日志功能.###",
"###requestLogFormat": "访问日志记录格式.###",
"###requestLogRetainDays": "访问日志记录天数,默认7天.###",
"###persistentConnectionsEnable": "是否启用长连接,默认false.###"
},
"application": {
"enable": true,
"port": 20020.0,
"sslEnable": false,
"proxyHost": "",
"proxyPort": 20020.0,
"redeploy": true,
"scanInterval": 0.0,
"includes": [],
"excludes": [],
"weights": [],
"scheduleWeights": [],
"statEnable": true,
"statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
"maxFormContent": 20.0,
"exposeJest": true,
"maxThread": 500.0,
"requestLogEnable": false,
"requestLogFormat": "",
"requestLogRetainDays": 7.0,
"persistentConnectionsEnable": true,
"###enable": "是否启用###",
"###port": "http/https端口,负责向前端提供数据访问接口.默认为20020端口.###",
"###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
"###proxyHost": "代理主机,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问地址.###",
"###proxyPort": "代理端口,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问端口.###",
"###redeploy": "每次启动是否重载全部应用.###",
"###scanInterval": "应用reload扫描间隔,u003c0 表示不会reload应用,扫描到应用文件发生了变化.###",
"###includes": "承载的应用,在集群环境下可以选择仅承载部分应用以降低服务器负载,可以使用*作为通配符.###",
"###excludes": "选择不承载的应用,和includes的值配合使用可以选择或者排除承载的应用,可以使用*作为通配符.###",
"###weights": "设置应用的Web访问权重,在集群环境中,一个应用可以部署多个实例提供负载均衡.通过合计占比来分配应用占比.###",
"###scheduleWeights": "设置应用的定时任务权重,在集群环境中,一个应用可以部署多个实例提供负载均衡.通过合计占比来分配应用占比.###",
"###statEnable": "启用统计,默认启用统计.###",
"###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
"###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
"###exposeJest": "暴露jest接口.###",
"###maxThread": "最大http线程数.###",
"###requestLogEnable": "启用访问日志功能.###",
"###requestLogFormat": "访问日志记录格式.###",
"###requestLogRetainDays": "访问日志记录天数,默认7天.###",
"###persistentConnectionsEnable": "是否启用长连接,默认true.###"
},
"web": {
"enable": true,
"sslEnable": false,
"proxyHost": "",
"port": 8080,
"weight": 100.0,
"dirAllowed": false,
"statEnable": false,
"statExclusions": "*.gif,*.jpg,*.png,*.ico",
"cacheControlMaxAge": 0.0,
"persistentConnectionsEnable": true,
"requestLogEnable": false,
"requestLogFormat": "",
"requestLogRetainDays": 7.0,
"###enable": "是否启用###",
"###port": "http/https端口,用户输入网址后实际访问的第一个端口.http协议默认为80端口,https默认为443端口.###",
"###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
"###proxyHost": "代理主机,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问地址.###",
"###proxyPort": "代理端口,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问端口.###",
"###weight": "设置权重.当前没有作用,###",
"###dirAllowed": "允许浏览目录,###",
"###statEnable": "启用统计,默认启用统计.###",
"###statExclusions": "统计忽略路径,默认忽略*.gif,*.jpg,*.png,*.ico###",
"###cacheControlMaxAge": "服务器max-age缓存时间(秒)###",
"###proxyCenterEnable": "是否启用center服务器代理.###",
"###proxyApplicationEnable": "是否启用application服务器代理###",
"###proxyTimeOut": "代理连接超时时间,默认300(秒)###",
"###persistentConnectionsEnable": "是否启用长连接,默认true.###",
"###requestLogEnable": "启用访问日志功能.###",
"###requestLogFormat": "访问日志记录格式.###",
"###requestLogRetainDays": "访问日志记录天数,默认7天.###"
},
"data": {
"enable": true,
"tcpPort": 20050.0,
"webPort": 20051.0,
"includes": [],
"excludes": [],
"jmxEnable": false,
"cacheSize": 512.0,
"logLevel": "WARN",
"maxTotal": 50.0,
"maxIdle": 0.0,
"statEnable": true,
"statFilter": "mergeStat",
"slowSqlMillis": 2000.0,
"lockTimeout": 120000.0,
"###enable": "是否启用,如果没有可用的externalDataSources.json文件,那么默认会在节点中启用本地的H2数据库作为默认的数据库.###",
"###tcpPort": "H2数据库jdbc连接端口,登录的用户名:sa,密码为xadmin的密码.数据库创建在/o2server/local/repository/data/X.mv.db,一旦数据库文件被创建,那么该数据库的密码被创建.###",
"###webPort": "H2数据库web端口,H2提供一个web端的client,此端口为web端client的访问端口.用户名sa,密码为xadmin数据库初始创建的密码.###",
"###includes": "设置此数据库存储的类,默认情况下存储所有类型,如果需要对每个类进行单独的控制以达到高性能,可以将不同的类存储到不同的节点上提高性能.可以使用通配符*###",
"###excludes": "在此节点上不存储的类,和includes一起设置实际存储的类,可以使用通配符*###",
"###jmxEnable": "是否启动jmx,如果启用,可以通过本地的jmx客户端进行访问,不支持远程jmx客户端.###",
"###cacheSize": "H2数据库缓存大小,设置H2用于作为缓存的内存大小,以M作为单位,这里默认为512M.###",
"###logLevel": "默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完整的配置为DefaultLevelu003dWARN, Toolu003dTRACE, Enhanceu003dTRACE, METADATAu003dTRACE, Runtimeu003dTRACE, Queryu003dTRACE, DataCacheu003dTRACE, JDBCu003dTRACE, SQLu003dTRACE###",
"###maxTotal": "最大使用连接数###",
"###maxIdle": "最大空闲连接数###",
"###statEnable": "启用统计,默认启用###",
"###statFilter": "统计方式配置,默认mergeStat###",
"###slowSqlMillis": "执行缓慢sql毫秒数,默认2000毫秒,执行缓慢的sql将被单独记录.###",
"###lockTimeout": "默认锁超时时间()毫秒).###"
},
"storage": {
"enable": true,
"port": 20040.0,
"sslEnable": false,
"name": "251",
"accounts": [],
"prefix": "",
"deepPath": false,
"###enable": "是否启用,对于二进制流文件,比如附件,图片等存储在单独的文件服务器中,可以支持多种文件服务器,默认情况下使用ftp服务器作为文件服务器,每个节点可以启动一个文件服务器以提供高性能.###",
"###port": "ftp服务器端口,此端口可以不对外开放,仅有ApplicationServer进行访问,并不直接对用户提供服务.###",
"###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
"###name": "名称,多个节点中不能重名,默认为251.###",
"###accounts": "二进制流文件是分多个账号分段存储的,可以单独设置每个分类的存储配置,一般不需要设置.###",
"###passivePorts": "ftp传输有主动和被动之分,如果使用了被动传输,设置被动端口范围,默认为29000-30000.###",
"###prefix": "路径前缀.###",
"###deepPath": "使用更深的路径###"
},
"logLevel": "warn",
"dumpData": {
"enable": false,
"cron": "",
"size": 7.0,
"path": "",
"###enable": "是否启用,默认禁用.###",
"###cron": "定时任务cron表达式,默认每天凌晨2点进行备份.###",
"###size": "最大保留份数,超过将自动删除最久的数据.###",
"###path": "备份路径###"
},
"restoreData": {
"enable": false,
"cron": "",
"path": "",
"###enable": "是否启用.###",
"###cron": "定时任务cron表达式###",
"###path": "恢复路径###"
},
"nodeAgentEnable": true,
"nodeAgentPort": 20010.0,
"nodeAgentEncrypt": true,
"quickStartWebApp": false,
"autoStart": true,
"###enable": "是否启用###",
"###isPrimaryCenter": "是否是center节点,仅允许存在一个center节点###",
"###center": "Center服务器配置###",
"###application": "Application服务器配置###",
"###web": "Web服务器配置###",
"###data": "Data服务器配置###",
"###storage": "Storage服务器配置###",
"###logLevel": "日志级别,默认当前节点的slf4j日志级别,通过系统变量"org.slf4j.simpleLogger.defaultLogLevel"设置到当前jvm中.###",
"###dumpData": "定时数据导出配置###",
"###restoreData": "定时数据导入配置###",
"###logSize": "日志文件保留天数.###",
"###auditLogSize": "审计日志文件保留天数.###",
"###nodeAgentEnable": "是否启用节点代理###",
"###nodeAgentPort": "是否启用节点端口###",
"###nodeAgentEncrypt": "是否启用节点代理加密###",
"###quickStartWebApp": "是否使用快速应用部署###",
"###banner": "服务器控制台启动标识###",
"###autoStart": "是否自动启动###",
"###eraseContentEnable": "是否允许使用擦除数据功能###"
}1、windows操作系统直接关闭命令窗口,O2OA进程即可退出,服务停止。
2、Linux操作系统则需要在命令行键入stop,或者直接Kill进程来停止操作系统
查询进程命令:
ps -ef|grep java

获得进程号,并且杀死进程:
1、windows操作系统可以直接执行D:/data/o2server/start_windows.bat完成O2OA的启用。
2、Linux操作系统可以执行命令启动O2OA:
打开终端,并且执行命令:
/data/o2server/start_linux.sh
截图见第二节启用O2OA服务器。
使用Web服务器端口访问O2OA, http://172.16.93.8:8080

默认的超级管理员账号:xadmin 默认密码:o2oa@2022

