ForeverSmiYngEcologyKit/泛微系统部署.md
2024-10-09 09:19:17 +00:00

37 KiB
Raw Permalink Blame History

泛微平台系统部署

本文主要描述了泛微平台环境部署的几种方案,包括 window / linux 环境下的 e-cologye-mobile部署集群部署docker 微服务部署等。

1. 单机部署

通常情况下,如果客户的服务器系统是 window server,那么在部署 e-cology时,数据库一般选用 sql server(版本建议在2014以上)

1.1 SQL Server 部署

SQL Server 的安装包可以在 https://msdn.itellyou.cn/ 中获取,在安装包的选择上需要注意的是:

sql_server_xx_express_with_tools = sql_server_xx_express + sql_server_xx_management_studio

  • sql_server_xx_express:表示企业版数据库
  • sql_server_xx_management_studio:数据库管理工具软件。

这里我们选择的是 cn_sql_server_2014_express_with_tools_x64,因为该安装包中包含数据库管理工具。

image-20200130143748999

安装 SQL Server 2014

  • 提取安装包,开始安装。注意以下窗口在安装过程中不允许关闭掉,否则会安装失败!

image-20200130144717795

  • 一直下一步,直到以下步骤时进行sa 账号密码设置

image-20200130150253400

  • 选择下一步,等待安装完毕即可

image-20200130151159103

1.2 Oracle 部署

如果客户服务器系统是 linux那么一般采用 OracleMySql 作为数据库,这边要向客户表述 OracleMySQL的区别,其主要区别是 Oracle 属于商业产品,盗版可能会被告,但是其性能卓越,抗压性较强。MySQL 属于开源产品,抗压性较弱。

一般企业用户所使用的 linux 发行版本都是 CentOS 或者 Red Hat,接下来会以 CentOS 系统为例进行 Oracle 部署的介绍

1.2.0 快速安装

如果选择脚本安装的方式,则只要看 1.2.0 即可,其他的为具体步骤。

脚本地址:

shell 脚本安装步骤如下:

  • 上传 install.shdbca.rspnew_sid.sh 到与oracle安装包同级目录下

  • 切换至 root 用户,执行 install.sh 脚本

su root
./install.sh
  • dbca.rsp:静默安装 oracle sid 的相关配置文件,可根据实际情况自行配置

  • 当出现 Successfully Set Software 提醒时,执行 new_sid.sh

./new_sid.sh

1.2.1 安装前准备

  • 使用 Xshell 软件连接服务器:软件安装自行百度

  • 配置镜像源:复制并执行以下命令

cd /etc/yum.repos.d/
# 下载并安装阿里云镜像
yum install wget
sudo wget http://mirrors.aliyun.com/repo/Centos-7.repo
sudo mkdir repo_bak
mv /etc/yum.repos.d/repo_bak/Centos-7.repo /etc/yum.repos.d/
# 清除并重新生成yum缓存
yum clean all
yum makecache

1.2.2 安装 Oracle

  • 安装所需的软件包
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC
  • 创建用户组和用户
# 创建 oinstall 用户组
groupadd oinstall
# 创建 dba 用户组
groupadd dba 
# 创建 oracle 用户
useradd -g oinstall -G dba oracle
# 设置密码
passwd oracle
  • 修改kernel 内核参数
vi /etc/sysctl.conf 
# ---------------------------------------
# 配置文件内加入 修改以下参数。如果没有可以自己添加,如果默认值比参考值大,则不需要修改。
# 这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
kernel.shmmni = 4096
# 该参数定义了共享内存段的最大尺寸以字节为单位。缺省为32M对于oracle来说该缺省值太低了# 通常将其设置为2G。
kernel.shmmax = 2147483648
# 该参数表示系统一次可以使用的共享内存总量以页为单位。缺省值就是2097152通常不需要修改。
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
# 设置最大打开文件数
fs.file-max = 65536
# 可使用的IPv4端口范围
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
# ---------------------------------------

# 保存退出后设置立刻生效
sysctl -p
  • 修改系统资源限制
vi /etc/security/limits.conf

# 配置文件下方加入
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack  10240

# 修改用户验证选项 关联设置
vi /etc/pam.d/login
# 在最后一条规则之前加入以下session配置
session    required     /lib64/security/pam_limits.so
session    required     pam_limits.so
  • 创建安装目录和设置目录权限
# oracle: 安装目录
mkdir -p /usr/local/oracle/product/11.2.0/db_1
# oradata: 数据存储目录
mkdir /usr/local/oracle/oradata
# flash_recovery_area: 恢复目录
mkdir /usr/local/oracle/flash_recovery_area
# oraInventory: 清单目录
mkdir /usr/local/oraInventory
chown -R oracle:oinstall /usr/local/oracle
chown -R oracle:oinstall /usr/local/oraInventory
chmod -R 775 /usr/local/oracle
chmod -R 775 /usr/local/oraInventory
  • 上传文件到 /home 目录下,并解压
yum install unzip
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
  • 准备oracle安装应答模板文件 db_install.rsp
cp /home/database/response/* /usr/local/oracle/
# 编辑应答文件的相关配置
vi /usr/local/oracle/db_install.rsp
# -------------------------------------
# 安装类型,只装数据库软件
oracle.install.option=INSTALL_DB_SWONLY
# 安装组
UNIX_GROUP_NAME=oinstall
# INVENTORY目录**不填就是默认值,本例此处需修改,因个人创建安装目录而定)
INVENTORY_LOCATION=/usr/local/oraInventory
# 选择语言 
SELECTED_LANGUAGES=en,zh_CN
# oracle_home: 路径根据目录情况注意修改 本例安装路径/usr/local/oracle
ORACLE_HOME=/usr/local/oracle/product/11.2.0/db_1
# oracle_base: 注意修改
ORACLE_BASE=/usr/local/oracle
# oracle版本
oracle.install.db.InstallEdition=EE
# 自定义安装,否,使用默认组件
oracle.install.db.isCustomInstall=false
# dba用户组
oracle.install.db.DBA_GROUP=dba
# oper用户组
oracle.install.db.OPER_GROUP=dba
# 注意此参数 设定一定要为true
DECLINE_SECURITY_UPDATES=true
# -------------------------------------
  • 切换用户并开始静默安装
# 切换到oracle / 进入解压目录
su oracle
cd /home/database/
# 防止报错
unset DISPLAY
./runInstaller -silent -ignorePrereq -responseFile /usr/local/oracle/db_install.rsp

# /home/database是安装包解压后的路径此处根据安装包解压所在位置做修改因人而异。
  # runInstaller 是主要安装脚本
  # -silent 静默模式
  # -force 强制安装
  # -ignorePrereq忽略warning直接安装
  #-responseFile读取安装应答文件
  • 出现以下提醒则表示安装成功

image-20200202005200486

  • 安装成功后还需要执行以下命令
su root
密码:
cd /usr/local/oraInventory/
./orainstRoot.sh
cd /usr/local/oracle/product/11.2.0/db_1/
./root.sh
  • 设置Oracle用户环境变量
# 切换至oracle账号
su oracle
# 编辑用户环境变量
echo 'export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=$PATH:$ORACLE_HOME/bin ' >> ~/.bashrc
# 立即生效
source ~/.bashrc
  • 配置监听以及监听的相关命令
# 静默方式配置监听
netca /silent/responseFile /usr/local/oracle/netca.rsp
# 启动监听
lsnrctl start
# 暂停监听
lsnrctl stop
# 查看监听
lsnrctl status
# 检查是否监听正常启动
netstat -tnulp | grep 1521
(No info could be read for "-p": geteuid()=1001 but you should be root.)
tcp6       0      0 :::1521                 :::*                    LISTEN 

1.2.3 静默方式建立新库

  • 新建 dbca.rsp
su oracle
vi /home/oracle/dbca.rsp
# --------------------------------------------------
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
# 必须指定为创建数据库
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
# 数据库的Global database name
GDBNAME = "orcl"
# 数据库的实例名
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
STORAGETYPE=FS
# 指定数据文件存储的目录
DATAFILEDESTINATION =/usr/local/oracle/oradata
# 指定数据文件恢复的目录
RECOVERYAREADESTINATION=/usr/local/oracle/flash_recovery_area
# 指定字符集
CHARACTERSET = "AL32UTF8"
# 指定国家字符集
NATIONALCHARACTERSET= "AL16UTF16"
LISTENERS=LISTENER
TOTALMEMORY = "700"
# 指定sys用户密码[必填]
SYSPASSWORD = "123456"
# 指定system用户密码[必填]
SYSTEMPASSWORD = "123456"
# 指定使用自动内存管理
AUTOMATICMEMORYMANAGEMENT = "TRUE"
# --------------------------------------------------
  • 以静默方式开始创建数据库
dbca -silent -responseFile /home/oracle/dbca.rsp
  • 修改 Oracle 用户的环境变量
vi ~/.bashrc 
# --------------------------------------------------
# 与上述安装的数据库SID一致
export ORACLE_SID=orcl
export ORACLE_OWNER=$ORACLE_SID
# --------------------------------------------------

# 立即生效
source ~/.bashrc

# 修改监听文件
vi /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora

# --------------------------------------------------
# 添加SID相关配置注意 SID_NAME区分大小写
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME =/usr/local/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /usr/local/oracle
# --------------------------------------------------

# 重启监听
lsnrctl stop
lsnrctl start
  • 出现以下信息则表明服务启动成功

image-20200202131123106

1.2.4 开启远程连接

# 关闭centos7防火墙
systemctl stop firewalld.service
# 关闭开机启动
systemctl disable firewalld.service
# 安装iptables防火墙
yum install iptables-services
# 新增1521接口
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT  
service iptables save
# 设置开机启动
systemctl enable iptables
# 重启iptabls服务
systemctl restart iptables.service

1.2.5 开机自动启动

vi /usr/local/oracle/product/11.2.0/db_1/bin/dbstart
# -------------------------------
# 修改ORACLE_HOME_LISTNER参数
ORACLE_HOME_LISTNER=$ORACLE_HOME
# -------------------------------

vi /usr/local/oracle/product/11.2.0/db_1/bin/dbshut
# -------------------------------
# 修改ORACLE_HOME_LISTNER参数
ORACLE_HOME_LISTNER=$ORACLE_HOME
# -------------------------------

vi /etc/oratab
# -------------------------------
# 修改为 :Y
orcl:/usr/local/oracle/product/11.2.0/db_1:Y
# -------------------------------

切换到 root 用户,执行 vi /etc/init.d/oracle

#!/bin/sh  
# chkconfig: 345 61 61  
# description: Oracle 11g R2 AutoRun Servimces  
# /etc/init.d/oracle  
# Run-level Startup script for the Oracle Instance, Listener, and  
# Web Interface  
export ORACLE_BASE=/usr/local/oracle  
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=$ORACLE_SID    
export PATH=$ORACLE_HOME/bin:/user/sbin:$PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH  
ORA_OWNR="oracle"  
# if the executables do not exist -- display error  
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]  
then  
echo "Oracle startup: cannot start"  
exit 1  
fi  
# depending on parameter -- startup, shutdown, restart  
# of the instance and listener or usage display  
case "$1" in  
start)  
# Oracle listener and instance startup  
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart  
echo "Oracle Start Succesful!OK."  
;;  
stop)  
# Oracle listener and instance shutdown  
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut  
echo "Oracle Stop Succesful!OK."  
;;  
reload|restart)  
$0 stop  
$0 start  
;;  
*)  
echo $"Usage: `basename $0` {start|stop|reload|reload}"  
exit 1  
esac  
exit 0

保存退出后执行以下命令

cd /etc/init.d
chmod +x oracle
chkconfig --add oracle 
chkconfig oracle on

1.2.6 创建表空间与用户

  • 进入sqlplus
sqlplus / as sysdba
  • 创建表空间
create tablespace e9 logging datafile'/usr/local/oracle/oradata/orcl/e9.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
  • 创建用户
create user weaver identified by 123456 default tablespace e9;
  • 5.4 给用户赋权限
grant dba to weaver;

1.2.7 常见问题

  • ORA-01034: ORACLE not available ORA-27101
# Step1: 启动oracle监听
lsnrctl start
# Step2: 设置实例名,实例名一般是"orcl"
set ORACLE_SID=orcl
# Step3: 启动oracle服务
# 进入 sql 控制台,执行 startup命令如果被告知已经启动可以先输入shutdown immediate, 然后在输入startup
sqlplus / as sysdba
startup;

1.3 下载与安装 E9

安装包下载文档:https://www.e-cology.com.cn/spa/document/index.jsp?id=3861088&newsDataType=fullSearch&router=1#/main/document/detail?_key=niim1h

ecologyjdk, resin 下载并放置在同一目录下

1.3.1 E9 程序包介绍

  • EcologyE9 的主程序包
  • JdkJava 运行程序
  • ResinResin 中间件

1.3.2 Resin 基本配置

resin/conf/resin.xml

<!-- 修改jdk路径可以是相对路径也可以是绝对路径 -->
<javac compiler="../jdk/bin/javac" args="-encoding UTF-8"/>

<!-- 修改ecology路径可以是相对路径也可以是绝对路径 -->
<web-app id="/" root-directory="../ecology">

resin/conf/resin.properties

# 修改服务端口
app.http          : 80
app.https         : 8443

1.3.3 Resin-Win 配置

window 环境下,resin/resinstart.bat 为启动文件,可右键编辑内容,其中 java_homejdk 路径,这里使用相对路径即可,当然也可以使用绝对路径 。单击 resinstart.bat 启动服务

set java_home=../jdk
resin.exe

1.3.4 Resin-Linux 配置

  • 编译安装 resin
# prefix: resin路径
# with-java-home: jdk路径
cd /usr/local/weaver/resin
chmod +x ./configure
./configure --prefix=/usr/local/weaver/resin --with-java-home=/usr/local/weaver/jdk --enable-64bit
make
make install
  • 修改相关配置文件
# 修改 resin/bin/resin.sh 中的jdk路径
sed -i "s/jdk1.8.0_151/jdk/g" /usr/local/weaver/resin/bin/resin.sh
sed -i "s/weaver/local\\/weaver/g" /usr/local/weaver/resin/bin/resin.sh
#  修改 resin.sh 路径
sed -i "s/weaver/local\\/weaver/g" /usr/local/weaver/resin/bin/startresin.sh
sed -i "s/weaver/local\\/weaver/g" /usr/local/weaver/resin/bin/stopresin.sh
# 修改 resin/conf/resin.xml 中的jdk和ecology路径
# jdk 必须是绝对路径ecology可以是绝对路径也可以是相对  路径
sed -i "s/#INSTALLDIR#JDK\\\bin\\\javac/\\/usr\\/local\\/weaver\\/jdk\\/bin\\/javac/g" /usr/local/weaver/resin/conf/resin.xml
sed -i "s/#INSTALLDIR#ecology/..\\/ecology/g" /usr/local/weaver/resin/conf/resin.xml
  • 启动 resin,打开浏览器输入 http://127.0.0.1 即可使用 e9

1.4 Redis 部署以及配置

E9 默认使用 ehcache2.x 进行数据缓存,支持使用 redis 进行数据缓存。

Redis 是完全开源免费的遵守BSD协议是一个高性能的key-value数据库。

1.4.1 window 安装 Redis

window安装 redis 比较简单,下载安装包即可,地址: https://github.com/microsoftarchive/redis/releases

下载安装包 Redis-x64-3.2.100.msi,点击下一步即可~

image-20200201225802580

1.4.2 Linux 安装 Redis

  • 安装编译环境
# ubuntu
sudo apt-get install make gcc
# centos
yum install make gcc
  • 安装 redis
cd ~
# 下载 redis 源码
wget http://download.redis.io/releases/redis-5.0.6.tar.gz
# 解压
tar xzf redis-5.0.6.tar.gz
# 切换到解压目录
cd redis-5.0.6
# 切换到 root 权限
su root
# 编译安装
make PREFIX=/usr/local/redis install
  • 配置和启动

redis.conf 是 redis 的配置文件redis.conf 在 redis 源码目录下

拷贝配置文件到安装目录下

# 进入源码目录
cd ~/redis-5.0.6
# 拷贝配置文件至安装目录
cp ~/redis-5.0.6/redis.conf /usr/local/redis/redis.conf
  • 前台启动
# 进入安装目录
cd /usr/local/redis/bin
./redis-server
  • 后端模式启动

修改 redis.conf 配置文件daemonize 参数设置为 yes表示以后端模式启动

image-20191114111003527

修改完毕后保存退出,重新启动 redis

 # 进入安装目录
 cd /usr/local/redis
 # 已后端模式启动 redis
 ./bin/redis-server ./redis.conf

1.4.3 E9 使用 Redis

ecology/WEB-INF/prop/weaver_new_session.properties开启redis并修改相关配置注意redis的密码一定要有否则会报错

# 1表示启用新的session方式其他值表示不启用
status=1
# 用于调试的USERID
debugUsers=
# session id生成模式1表示自定义生成模式UUID模式其他值表示中间件自定义生成模式
useCustomSessionId=1
# 同步频率设置(单位,秒)
# 主表同步频率
SessionTableSync=2
# 明细表同步频率
SessionItemTableSync=5
# 超时扫描频率
SessionOverTime=300
# 垃圾数据清理扫描频率
SessionLeak=3600

#启动模式,默认是数据库模式
# className=weaver.session.util.DBUtil
className=weaver.session.util.RedisSessionUtil
# redis ip
redisIp=127.0.0.1
# redis port
redisPort=6379
# redis password, 注意密码必须设置,否则会报错!
redisPassword=123456
enableImmediatelySync=true
etoken=

使用 redis 可视化工具可以看到如下结果则表明启动了redis

image-20200201224037086

2. 集群部署

e9 集群部署与 e8 基本一致,只增加了一个redis 配置。

集群方案有很多,比如:ec+nginx+weblogic ec+nginx+resinec+F5+resin,本文只介绍 ec+nginx+resin

2.0 集群准备

集群部署需要准备:

  • 一台文件服务器(NFS)服务器地址:192.168.44.143
  • 一台主服务器(Ecology+MySQL+Nginx)服务器地址:192.168.44.139
  • 一台从服务器(Ecology)服务器地址:192.168.44.144

2.1 文件服务器配置

2.1.1 NFS 服务器部署
  • 安装nfs
yum install -y nfs-utils
# 设置开启启动
sudo systemctl enable rpcbind
sudo systemctl enable nfs
  • 配置对外共享文件:/etc/exports
vi /etc/exports
# 在 /etc/exports 中添加以下内容
# 意思是将本地文件夹 /data 共享给192.168.44.139和144服务器
# 也可以用*号代替,比如: /data *(rw,sync,no_root_squash)
# 意思是将本地文件夹 /data 共享到所有和这个文件服务器相通的机器
/data 192.168.44.139(rw,sync,no_root_squash)
/data 192.168.44.144(rw,sync,no_root_squash)
  • 重启nfs服务
exportfs -rv
systemctl restart nfs
# 针对 rhel5
systemctl resatrt portmap
# 针对 rhel6
systemctl restart rpcbin
2.1.2 文件同步配置

切换至主(从)服务器操作

  • 在需要共享的节点挂载共享文件到对应目录
# 主服务器192.168.44.139
yum install -y nfs-utils
# 创建挂载目录
mkdir /data
# 设置文件挂载
mount -t nfs 192.168.44.143:/data  /data
  • 将 ecology 以下目录拷贝到 /data/e9 中,一般情况下主服务器做拷贝即可。
# 备份文件注意这里使用mv而不是cp
cd /usr/local/weaver/ecology
mkdir -p nfs_bak/WEB-INF
# 移动以下目录至 nfs_bak 下
\mv album formmode mobilemode mobile  email  filesystem  images  images_face  images_frame  LoginTemplateFile messager  m_img  others page  upgrade wui nfs_bak
# 进入WEB-INF目录移动以下文件夹至 nfs_bak/WEB-INF 下
cd WEB-INF
\mv securityRule securityXML service lib/keys weaver_security_rules.xml weaver_security_config.xml hrmsettings.xml ../nfs_bak/WEB-INF

# 将相关文件拷贝到 /data 目录下
# 在/data中创建 ec/WEB-INF 目录
mkdir -p /data/ec/WEB-INF
\cp -rf /usr/local/weaver/ecology/nfs_bak /data/ec
# 以下两个文件是不存在的,需要手动创建
mkdir -p /data/ec/LoginTemplateFile /data/ec/others
  • 创建软链接
ln -sf /data/ec/album /usr/local/weaver/ecology
ln -sf /data/ec/formmode /usr/local/weaver/ecology
ln -sf /data/ec/mobilemode /usr/local/weaver/ecology
ln -sf /data/ec/email /usr/local/weaver/ecology
ln -sf /data/ec/filesystem /usr/local/weaver/ecology
ln -sf /data/ec/images /usr/local/weaver/ecology
ln -sf /data/ec/images_face /usr/local/weaver/ecology
ln -sf /data/ec/images_frame /usr/local/weaver/ecology
ln -sf /data/ec/LoginTemplateFile /usr/local/weaver/ecology
ln -sf /data/ec/messager /usr/local/weaver/ecology
ln -sf /data/ec/m_img /usr/local/weaver/ecology
ln -sf /data/ec/others /usr/local/weaver/ecology
ln -sf /data/ec/page /usr/local/weaver/ecology
ln -sf /data/ec/upgrade /usr/local/weaver/ecology
ln -sf /data/ec/wui /usr/local/weaver/ecology
ln -sf /data/ec/WEB-INF/securityRule /usr/local/weaver/ecology/WEB-INF
ln -sf /data/ec/WEB-INF/securityXML /usr/local/weaver/ecology/WEB-INF
ln -sf /data/ec/WEB-INF/service /usr/local/weaver/ecology/WEB-INF
ln -sf /data/ec/WEB-INF/lib/keys /usr/local/weaver/ecology/WEB-INF/lib/keys
ln -sf /data/ec/WEB-INF/weaver_security_rules.xml /usr/local/weaver/ecology/WEB-INF/weaver_security_rules.xml
ln -sf /data/ec/WEB-INF/weaver_security_config.xml /usr/local/weaver/ecology/WEB-INF/weaver_security_config.xml
ln -sf /data/ec/WEB-INF/hrmsettings.xml /usr/local/weaver/ecology/WEB-INF/hrmsettings.xml
2.1.3 缓存同步设置
  • 配置 /etc/hosts清空原有127默认配置将集群各节点 ip地址加入到hosts

image-20200207081746240

  • 修改 ecology/WEB-INF/weaver.properties,加入以下内容。注意,所有节点都需要配置!
# 主节点ip(集群中任意一个节点,但有且只能有一个)
MainControlIP = 192.168.44.139
# 本机ip:本机服务端口port
ip = 192.168.44.144:80
broadcast=231.12.21.132
syncType=http
# initial_hosts为参数为所有的应用服务器的节点的访问地址
# 格式ip1:port,ip2:port  (中间以逗号分隔)
initial_hosts= 192.168.44.139:80,192.168.44.144:80

2.2 部署 Nginx

  • 在主服务器192.168.44.139)下载安装 nginx
# 下载nginx安装包
yum install -y wget
wget https://nginx.org/download/nginx-1.17.8.tar.gz
# 下载编译依赖包
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
tar -zxvf nginx-1.17.8.tar.gz
cd nginx-1.17.8
# 编译安装
./configure --prefix=/usr/local/nginx
make && make install
# 查看安装目录
whereis nginx
# nginx: /usr/local/nginx
  • 编辑 /usr/local/nginx/conf/nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    upstream ecologycluster {
        ip_hash;
        # e-cology服务器地址1
        server 192.168.44.139:80;
        # e-cology服务器地址2
        server 192.168.44.144:80;
        # ...
    }
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;
    server {
        listen       8889;
        server_name  e9;
        location / {
            root                    html;
            index                   index.html index.htm index.jsp;
            proxy_pass              http://ecologycluster;
            proxy_next_upstream     http_502 http_504 http_500 http_404 http_403 error timeout invalid_header;
            proxy_redirect          off;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        Host $http_host;
            proxy_read_timeout      3600;
            proxy_send_timeout      3600;
            access_log              off;
            send_timeout            300;
        }
    }
}
  • 启动nginx
cd /usr/local/nginx/sbin 
./nginx -c /usr/local/nginx/conf/nginx.conf
  • 打开浏览器输入 http://192.168.44.139:8889 注意这里访问的是 nginx 地址!

2.3 故障测试

  • 将两台服务器都停掉,再访问 http://192.168.44.139:8889
  • 开启从服务器将主服务器192.168.44.139)停掉,再访问 http://192.168.44.139:8889
  • 开启主服务器将从服务器192.168.44.144)停掉,再访问 http://192.168.44.139:8889

3. Docker 部署

Docker 部署适用于客户服务器系统为 linuxwindow 系统不推荐使用。

Docker 部署不是成熟方案,并且需要一定技术支撑,该方案量力而为。

下面使用 CentOS 系统进行Docker-E9部署

3.1 Docker 安装

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

3.2 配置加速器

# 配置阿里云加速器
echo "{
  \"registry-mirrors\": [\"https://xh36jugz.mirror.aliyuncs.com\"]
}">/etc/docker/daemon.json
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

3.3 制作 E9 镜像

创建目录:mkdir /usr/local/weaver

3.3.1 使用 ubuntu 依赖
  • 上传 Ecology9.00.xxxx.xx.zipjdk-8u231-linux-x64.tar.gz Resin-4.0.58.zip/usr/local/weaver 目录
  • 解压文件
# 安装解压工具,如果已经安装可省略
yum install unzip
# 解压文件夹, ecology按照具体的版本号
unzip Ecology9.00.xxxx.xx.zip
unzip Resin-4.0.58.zip
unzip jdk-8u231-linux-x64.tar.gz
# 对解压出来的文件夹重命名
mv Resin resin
mv jdk1.8.0_231 jdk
  • 修改 resin 相关配置:查看 [1.3.4 Resin-Linux 配置](#1.3.4 Resin-Linux 配置)

  • 创建 ubuntu 依赖的 Dockerfile

echo 'FROM ubuntu
COPY ecology/ /usr/local/weaver/ecology/
COPY resin/ /usr/local/weaver/resin/
COPY jdk/ /usr/local/weaver/jdk/
EXPOSE 8080
RUN chmod +x /usr/local/weaver/resin/bin/resin.sh
CMD ["/bin/sh", "-c", "/usr/local/weaver/resin/bin/resin.sh console"]'>/usr/local/weaver/Dockerfile
3.3.2 使用 resin:e9 依赖
  • 使用该依赖则只需上传 Ecology9.00.xxxx.xx.zip/usr/local/weaver 目录即可

  • 解压文件

# 安装解压工具,如果已经安装可省略
yum install unzip
# 解压文件夹, ecology按照具体的版本号
unzip Ecology9.00.xxxx.xx.zip
  • 创建 resin:e9 依赖的 Dockerfile
echo 'FROM registry.cn-hangzhou.aliyuncs.com/weaver/resin:e9
COPY ecology/ /usr/local/weaver/ecology/'>Dockerfile
3.3.3 构建镜像
  • 路径切换到 /usr/local/weaver 下,执行镜像构建命令,注意末尾的 . 号是必须的!
cd /usr/local/weaver
# ec系统瘦身
rm -rf $(find /usr/local/weaver/ecology -name="**.map.js")
# 修改初始验证码
sed -i 's/wEAver2018/1/g' /usr/local/weaver/ecology/WEB-INF/code.key
# 开始构建镜像
docker build -t e9:191202 .
  • 出现以下信息表示镜像构建成功

image-20200202145325222

3.3.4 镜像瘦身

e-cology9 构建镜像时,会存在一个让客户吐槽的问题,那就是构建出的镜像过大,从图中可以看出,e9:191202 镜像包已经达到 5.05GB 大小,下面介绍几个镜像瘦身的方案,大约能瘦身 1-2G 左右

通过软件分析e-cology9 程序,发现文件扩展名为 .map, .jar, .js 的文件占比重最大。其中 .jar 为后端文件,.js 为前端文件,这两个不要轻易的进行删减!那么我们可以动的只剩下 .map 文件了。

image-20200206212702901

关于 .map.js 文件介绍:

source map文件是js文件压缩后,文件的变量名替换对应、变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下。 比如压缩后原变量是map压缩后通过变量替换规则可能会被替换成a这时source map文件会记录下这个mapping的信息这样的好处就是说在调试的时候如果有一些 js报错那么浏览器会通过解析这个map文件来重新merge压缩后的js,使开发者可以用未压缩前的代码来调试,这样会给我们带来很大的方便!

换句话说以 .map 后缀的文件,唯一的作用是方便在开发过程中进行调试,但是在生产环境中,可以被删除。

OK删除掉 .map 文件后,整个程序的体积瞬间少了 1.0GB 左右,接下来还有一个能删除的目录,那就是 ecology/data,这个目录下存放的是数据库初始化的 sql 文件,从图中可以看出这些 sql 文件差不多占 200M 左右,个人建议第一次构建镜像时不要删除这些文件,等待数据库初始化完毕,二次构建镜像时把这些文件删除,这样 e-cology9 镜像体积又能瘦下来了~

image-20200206214039366

3.4 安装 docker-compose

百度云盘下载:https://pan.baidu.com/s/1bEGXrwbQo32Gu8UbXgyFQQ

下载 docker-compose 上传至 /usr/local/bin/ 下,然后执行以下命令

chmod +x /usr/local/bin/docker-compose

3.5 启动 Ecology

3.5.1 创建 docker-compose.yml
version: '3.1'
services: 
  ecology:
    restart: always
    image: e9-mysql:190902
    container_name: e9
    ports: 
      - 8080:80
    volumes:
      - ./ecology/album:/usr/local/weaver/ecology/album
      - ./ecology/formmode:/usr/local/weaver/ecology/formmode
      - ./ecology/messager:/usr/local/weaver/ecology/messager
      - ./ecology/mobilemode:/usr/local/weaver/ecology/mobilemode
      - ./ecology/mobile:/usr/local/weaver/ecology/mobile
      - ./ecology/email:/usr/local/weaver/ecology/email
      - ./ecology/filesystem:/usr/local/weaver/ecology/filesystem
      - ./ecology/images_face:/usr/local/weaver/ecology/images_face
      - ./ecology/images_frame:/usr/local/weaver/ecology/images_frame
      - ./ecology/license:/usr/local/weaver/ecology/license
      - ./ecology/log:/usr/local/weaver/ecology/log
      - ./ecology/LoginTemplateFile:/usr/local/weaver/ecology/LoginTemplateFile
      - ./ecology/m_img:/usr/local/weaver/ecology/m_img
      - ./ecology/wui:/usr/local/weaver/ecology/wui
      - ./ecology/others:/usr/local/weaver/ecology/others
      - ./ecology/page:/usr/local/weaver/ecology/page
      - ./ecology/upgrade:/usr/local/weaver/ecology/upgrade
      - ./ecology/WEB-INF/securityRule:/usr/local/weaver/ecology/WEB-INF/securityRule
      - ./ecology/WEB-INF/securityXML:/usr/local/weaver/ecology/WEB-INF/securityXML
      - ./ecology/WEB-INF/service:/usr/local/weaver/ecology/WEB-INF/service
      - ./ecology/WEB-INF/prop:/usr/local/weaver/ecology/WEB-INF/prop
      - ./resin/log:/usr/local/weaver/resin/log
      - ./resin/logs:/usr/local/weaver/resin/logs
    environment:
      TZ: Asia/Shanghai
3.5.2 数据持久化说明

docker 中,无论是原生的 -v 参数也好,还是 docker-composevolumes 参数也罢。在启动容器时,会将宿主机上的相关目录复制到容器内部。以 ecology/album 目录为例,当宿主机上 ./ecology/album目录不存在,或者该目录下不存在任何文件,那么启动容器后,使用 exec 命令登陆容器后会发现容器内的 /usr/local/ecology/album 目录下的所有文件都被清空!

image-20200207144203566

总结:在启动容器时,需要手动创建所要持久化的目录,并且将相关目录下的文件copy到对应目录中

如果使用已经构建好的镜像,不确定镜像内的文件是什么。那么可以采用以下方案:

  1. 启动容器时先不挂载数据卷:docker run -itd --name=e9 e9-mysql:190902
  2. 使用 cp 命令将容器内的文件 copy 到宿主机中:sudo docker cp containerID:container_path host_path

image-20200207145051503

3.5.3 启动服务
  • 执行 docker-compose up 启动服务,出现以下信息表示服务启动成功

image-20200203033722839

  • 打开浏览器输入:http://ip:8080

4. 移动平台部署

移动平台可以通过泛微官方地址:

https://emobile.weaver.com.cn/emp/download

4.1 常规部署

关于 E-mobile7 常规部署参考 泛微移动平台安装手册 即可!

4.2 独立部署

E-Mobile7 包含 em7 redismysqlactive-mqtomcat 五大组成部分。其中 em7 依赖于 tomcat 启动。其他部分均可独立部署。也就是说 E-Mobile7 可以拆分成四大部分独立部署。

相关配置可查看: https://yq.weaver.com.cn/eb/qa/view/#/question/5fb7e8e6124948129b1bfada0737f9f6

4.3 Docker部署

4.3.1 镜像制作
  • 下载解压安装包和补丁包

image-20200210134926003

image-20200210135000703

tar -zxvf emp_install_linux64_20191226.tar.gz 
# 如果已经安装unzip则跳过
# yum install unzip
unzip -o emp_patch_20200109.zip
  • 创建 /usr/local/docker/emp,将 appsvrjdkwork copy到该目录下
mkdir -p /usr/local/docker/emp
\cp -r appsvr /usr/local/docker/emp
\cp -r jdk /usr/local/docker/emp
\cp -r work /usr/local/docker/emp
  • 使用 ubuntu 依赖的 Dockerfile
FROM ubuntu
COPY appsvr/tomcat /usr/local/emp/tomcat/
COPY work/ /usr/local/emp/work/
COPY start.sh /usr/local/emp/
COPY jdk/ /usr/local/jdk/
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk/bin:/usr/local/emp/tomcat/bin:/usr/local/emp/tomcat/bin
ENV TZ=Asia/Shanghai
ENV JAVA_HOME=/usr/local/jdk
ENV CLASSPATH=/usr/local/jdk/lib/dt.jar:/usr/local/jdk/lib/tools.jar
ENV CATALTNA_HOME=/usr/local/emp/tomcat
ENV CATALINA_HOME_BASE=/usr/local/emp
ENV LC_ALL=zh_CN.gbk
ENV LANG=zh_CN.gbk
EXPOSE 8095
EXPOSE 8999
EXPOSE 9443
RUN [ "/bin/sh", "-c", "chmod +x /usr/local/emp/start.sh" ]
CMD [ "/bin/sh", "-c", "/usr/local/emp/start.sh" ]
  • 下载 start.sh/usr/local/docker/emp

  • 创建 /usr/local/docker/emp/docker-compose.yml

version: '3.1'
services: 
  em7:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    image: em7
    container_name: em7
    ports: 
      - 8999:8999
    environment: 
      EMP_ACTIVEMQ_ENABLED: "true"
      EMP_ACTIVEMQ_IP: "192.168.44.155"
      EMP_ACTIVEMQ_PORT: 61616
      EMP_ACTIVEMQ_USER: "system"
      EMP_ACTIVEMQ_PASSWORD: "manager"
      EMP_JTA_ENABLED: "false"
      EMP_DB_TYPE: "mysql"
      EMP_DB_NAME:  "emp_app"
      EMP_DB_IP: "192.168.44.155"
      EMP_DB_PORT: 3306
      # oracle 使用 EMP_DB_SID: orcl
      EMP_DB_USERNAME: "root"
      EMP_DB_PASSWORD: 123456
      EMP_REDIS_ENABLED: "true"
      EMP_REDIS_HOST: "192.168.44.155"
      EMP_REDIS_PORT: 6381
      EMP_REDIS_PASSWORD: "WEAVERemobile7*()"
      EMP_REDIS_DB: 0
      # # 集群配置
      # 集群节点ID:全局唯一
      EMP_CLUSTER_NODE_ID: 1
      # CDN地址
      EMP_CDN_URL:   
      # session存储介质支持none、jdbc和redis
      # none表示session存储在servlet容器即原生session
      # jdbc表示session存储在数据库redis表示session存储在redis里面需配置redis数据源
      EMP_SESSION_STORE_TYPE: "none"
      # session有效期默认7天
      EMP_SESSION_TIMEOUT: "7d"
      # 基本信息缓存方式支持none、ehcache和redis
      # none表示不缓存数据
      # ehcache表示数据缓存在ehcache里面
      # redis表示数据缓存在redis里面需配置redis数据源
      EMP_BASE_CACHE_TYPE: "ehcache"
      # 操作日志保留期限小于或者等于0表示不清理
      EMP_LOG_RETAIN_DAYS: 30
      # 从OA下载的文件保留期限小于或者等于0表示不清理
      EMP_DOWNLOAD_RETAIN_DAYS: 10
  • 构建镜像命令:docker-compose build

image-20200211204511641

4.3.2 启动 Ecology
  • 使用命令:docker-compose up

image-20200211205007406

  • 打开浏览器,输入 http://ip:port 即可进入E-Mobile7后台!