37 KiB
泛微平台系统部署
本文主要描述了泛微平台环境部署的几种方案,包括
window / linux
环境下的e-cology
,e-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
,因为该安装包中包含数据库管理工具。
安装 SQL Server 2014
- 提取安装包,开始安装。注意以下窗口在安装过程中不允许关闭掉,否则会安装失败!
- 一直下一步,直到以下步骤时进行
sa
账号密码设置
- 选择下一步,等待安装完毕即可
1.2 Oracle 部署
如果客户服务器系统是 linux,那么一般采用
Oracle
或MySql
作为数据库,这边要向客户表述Oracle
与MySQL
的区别,其主要区别是Oracle
属于商业产品,盗版可能会被告,但是其性能卓越,抗压性较强。MySQL
属于开源产品,抗压性较弱。一般企业用户所使用的
linux
发行版本都是CentOS
或者Red Hat
,接下来会以CentOS
系统为例进行 Oracle 部署的介绍
1.2.0 快速安装
如果选择脚本安装的方式,则只要看 1.2.0
即可,其他的为具体步骤。
脚本地址:
install.sh
: https://github.com/Y-Aron/cloud-note/blob/master/weaver/shell/oracle/install.shdbca.rsp
: https://github.com/Y-Aron/cloud-note/blob/master/weaver/shell/oracle/dbca.rspnew_sid.sh
: https://github.com/Y-Aron/cloud-note/blob/master/weaver/shell/oracle/new_sid.sh
shell
脚本安装步骤如下:
-
上传
install.sh
,dbca.rsp
,new_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
- 下载
Oracle11gR2
:https://pan.baidu.com/s/1gA33_cOlyzq6Bu3C4R8Vfw
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读取安装应答文件
- 出现以下提醒则表示安装成功
- 安装成功后还需要执行以下命令
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
- 出现以下信息则表明服务启动成功
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
将
ecology
,jdk
,resin
下载并放置在同一目录下
1.3.1 E9 程序包介绍
Ecology
:E9
的主程序包Jdk
:Java
运行程序Resin
:Resin
中间件
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_home
为 jdk
路径,这里使用相对路径即可,当然也可以使用绝对路径 。单击 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
,点击下一步即可~
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,表示以后端模式启动
修改完毕后保存退出,重新启动 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
2. 集群部署
e9
集群部署与e8
基本一致,只增加了一个redis
配置。集群方案有很多,比如:
ec+nginx+weblogic
,ec+nginx+resin
,ec+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
中
- 修改
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 部署适用于客户服务器系统为
linux
,window
系统不推荐使用。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.zip
,jdk-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 .
- 出现以下信息表示镜像构建成功
3.3.4 镜像瘦身
e-cology9
构建镜像时,会存在一个让客户吐槽的问题,那就是构建出的镜像过大,从图中可以看出,e9:191202
镜像包已经达到5.05GB
大小,下面介绍几个镜像瘦身的方案,大约能瘦身1-2G
左右
通过软件分析e-cology9
程序,发现文件扩展名为 .map
, .jar
, .js
的文件占比重最大。其中 .jar
为后端文件,.js
为前端文件,这两个不要轻易的进行删减!那么我们可以动的只剩下 .map
文件了。
关于 .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
镜像体积又能瘦下来了~
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-compose
的 volumes
参数也罢。在启动容器时,会将宿主机上的相关目录复制到容器内部。以 ecology/album
目录为例,当宿主机上 ./ecology/album
目录不存在,或者该目录下不存在任何文件,那么启动容器后,使用 exec
命令登陆容器后会发现容器内的 /usr/local/ecology/album
目录下的所有文件都被清空!
总结:在启动容器时,需要手动创建所要持久化的目录,并且将相关目录下的文件copy
到对应目录中
如果使用已经构建好的镜像,不确定镜像内的文件是什么。那么可以采用以下方案:
- 启动容器时先不挂载数据卷:
docker run -itd --name=e9 e9-mysql:190902
- 使用
cp
命令将容器内的文件copy
到宿主机中:sudo docker cp containerID:container_path host_path
3.5.3 启动服务
- 执行
docker-compose up
启动服务,出现以下信息表示服务启动成功
- 打开浏览器输入:
http://ip:8080
4. 移动平台部署
移动平台可以通过泛微官方地址:
4.1 常规部署
关于 E-mobile7
常规部署参考 泛微移动平台安装手册
即可!
4.2 独立部署
E-Mobile7
包含 em7
,redis
,mysql
,active-mq
,tomcat
五大组成部分。其中 em7
依赖于 tomcat
启动。其他部分均可独立部署。也就是说 E-Mobile7
可以拆分成四大部分独立部署。
相关配置可查看: https://yq.weaver.com.cn/eb/qa/view/#/question/5fb7e8e6124948129b1bfada0737f9f6
4.3 Docker部署
4.3.1 镜像制作
- 下载解压安装包和补丁包
tar -zxvf emp_install_linux64_20191226.tar.gz
# 如果已经安装unzip则跳过
# yum install unzip
unzip -o emp_patch_20200109.zip
- 创建
/usr/local/docker/emp
,将appsvr
,jdk
,work
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
4.3.2 启动 Ecology
- 使用命令:
docker-compose up
- 打开浏览器,输入
http://ip:port
即可进入E-Mobile7
后台!