公司大多数WEB程序(如T24web、TOCF等)都部署在JBoss中,熟练且深入的掌握JBoss的部署是一切开发的前提,也是后续进行微服务、虚拟化(docker、K8S)改造基础。
[root@t24webcvm1 deployments]<20180920 09:45:55># hostnamectl
Static hostname: t24webcvm1
Icon name: computer-vm
Chassis: vm
Machine ID:
Boot ID:
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
Kernel: Linux 3.10.0-327.36.3.el7.x86_64
Architecture: x86-64
a. 所有操作都是root用户下进行,不用考虑权限问题;
b. 安装前请先关闭OS防火墙
# systemctl stop firewalld
# systemctl disable firewalld
### 查看防火墙状态命令
# systemctl status firewalld
c. 修改系统资源限制
默认情况化系统对资源的使用情况(进程级)做出来了相关限制,如:打开文件句柄数不大于1024、栈空间大小为8M等;为充分利用系统资源,我们将已有的限制改大,在/etc/security/limits.conf的文件末尾添加如下内容:
* soft core 102400
* hard core 102400
* soft nofile 102400
* hard nofile 102400
* soft nproc 102400
* hard nproc 102400
说明:
/etc/security/limits.conf文件的格式为:
Domain:代表用户或用户组,*表示所有用户
Type: 代表限制类型,一般为hard或soft。hard标识“硬限制”,不能超过此值(如:文件无法打开);soft为“软限制”,实际可以超过此值,超过后系统发出告警信息;
Item:为限制项。如:core(限制core文件大小)、stack(进程栈空间)等;
Value:表示具体值
略
a. 安装包下载,到redhat公司官网下载JBOSS安装包(可能需要注册):
如本文示例的安装包为:jboss-eap-6.2.0.zip
b. 安装包解压
用unzip命令将你所下的安装包解压,如本文将安装包解压到上级目录(-d选项指定解压路径):
unzip jboss-eap-6.2.0.zip –d ../
c. 创建JBOSS EAP的管理用户
进入解压的JBOSS_HOME/bin路径,执行./add_user.sh脚本,添加管理用户,如下:
$ /opt/jbshome/jboss-eap-6.2/bin/add-user.sh
选择a (Management User)
Username: jbossadmin
Password: 密码
Groups(输入用户所属组): 回车
ManagementRealm: yes
此命令将修改:JBOSS_HOME/standalone(或domain)/configuration/目录下mgmt-users.properties、mgmt-groups.properties等文件,用于设置JBOSS服务的管理用户。
d. 创建JBOSS EAP的实例
创建完管理用户后,即可创建Jboss实例目录,将JBOSS_HOME/standalone目录下的所有文件拷贝到Server1/目录下:
$ cp -fr /opt/jbshome/jboss-eap-6.2/standalone /opt/jbshome/appserver/Server1
拷贝后目录结构如下:
[root@t24webcvm1 Server1]<20180920 10:58:06># ls
configuration deployments lib tmp
[root@t24webcvm1 Server1]<20180920 10:58:06># pwd
/opt/jbshome/appserver/Server1
a. 创建JBOSS运行日志目录
对应JBOSS实例名,我们在/var/log目录下创建JBOSS日志路径:
mkdir -p /var/log/jbslog/eap_logs/Server1
为了日志查看方便,再在Server1目录下创建指向此日志目录的软连接,这样,以后就可以直接在Server1目录下查看JBOSS的允许日志了。
ln -s /var/log/jbslog/eap_logs/Server1 /opt/jbshome/appserver/Server1/log
b. 启动JBOSS实例
为方便JBOSS的起停,我们编写起停脚本如下。
start:
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export JAVA_OPTS="-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:NewSize=1024m -XX:MaxNewSize=1200m -XX:HeapDumpPath=/var/log/jbslog/jvm_logs/ -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true"
nohup /opt/jbshome/jboss-eap-6.4/bin/standalone.sh -Djboss.server.base.dir=/opt/jbshome/appserver/Server1/ --server-config=standalone-full.xml -b 0.0.0.0 -Djboss.bind.address.management=99.12.98.194 -Djboss.bind.address=99.12.98.194 -Djboss.socket.binding.port-offset=0 -Djboss.node.name=Server1 >> /var/log/jbslog/eap_logs/Server1/Server1-$(date "+%Y%m%d").out 2>&1 &
stop
[root@t24webcvm1 appserver]<20181029 09:34:38># cat Server1-stop.sh
/opt/jbshome/script/stop-jboss.sh /opt/jbshome/appserver/Server1
start脚本主要分为三部分:
-Xms |
2048m |
最小内存堆栈 |
-Xmx |
2048m |
最大内存堆栈 |
-XX:PermSize |
256m |
初始PermSize大小,PermGen区域,是指内存的永久保存区域,这一部分用于存放Class和Meta的信息。 |
-XX:MaxPermSize |
512m |
PermSize最大值 |
-XX:NewSize |
1024m |
新生代内存堆栈初始大小 |
-XX:MaxNewSize |
1200m |
新生代内存堆栈最大值 |
-XX:HeapDumpPath |
|
指定JVM Heap dump目录(请确保存在此目录) |
java.net.preferIPv4Stack |
|
在支持 IPv4 映射地址的 IPv6 网络堆栈中,可以使用 IPv6 套接字来连接到 IPv4 和 IPv6 主机以及接受来自这些主机的连接。 |
jboss.modules.system.pkgs |
|
This complicates matters for integration with other javaagents which alter the script because this property must also be set and it is not defined in the JVM what precedence is given to multiple same property settings on the command line. |
java.awt.headless |
|
启用headless模式 |
这些参数的功能需要自己琢磨。此外,由于JAVA_HOME 、JAVA_OPT形式export导出,可以直接通过环境变量直接设置。
nohup /opt/jbshome/jboss-eap-6.2/bin/standalone.sh
以nohup形式(对hangup信号免疫)启动脚本,然后将输出重定向指定LOG文件。后面带一堆参数(需要查看standalone.sh脚本深入理解):
jboss.server.base.dir |
/opt/jbshome/appserver/Server1/ |
JBOSS服务的基础目录 |
--server-config |
standalone-full.xml |
指定JBOSS服务的配置文件 |
-b |
0.0.0.0 |
服务绑定端口 |
jboss.bind.address.management |
99.13.43.27 |
服务管理地址(一般为本机地址) |
jboss.bind.address |
99.13.43.27 |
服务绑定地址(一般为本机地址) |
jboss.socket.binding.port-offset |
|
|
jboss.node.name |
Server1 |
节点名 |
执行脚本启动jboss实例后,就可以用ps命令查看jboss进程是否起来,也可以通过netstat命令查看监听端口是否已打开,如下:
最后,通过网页访问JBOSS服务器的8080端口测试,查看是否成功部署。
总结:熟悉Linux基本操作就可部署(权威的内容可以参考redhat官网),接下来作者将对其进行docker化部署。