本文详细介绍了在Linux平台安装部署系统的步骤,供运维人员参考。本文的所有范例,建立在以下平台之上:
硬件:Intel x86_64平台,64位CPU
操作系统:CentOS 6.4 x86_64 SMP 64位操作系统
JDK:SUN JDK 7 Update for Linux 64位
从Oracle官网下载JDK的rpm安装包 jdk-6u35-linux-x64-rpm.bin,上传至Linux系统的某目录下(本文以/data目录为例)。以root用户登录Linux,然后切换到/data目录,查看上传的安装包:
[root@centos ~]# ls -l total 67296 -rw-r--r-- 1 root root 96316511 Feb 12 16:14 jdk-7u25-linux-x64.tar.gz 解压[root@centos ~]# tar zxvf jdk-7u25-linux-x64.tar.gz
JDK软件包安装成功后,需要正确配置环境变量才能使用。以root身份编辑/etc/profile文件:
[root@centos ~]# vi /etc/profile 在文件末尾添加以下内容并保存: export JAVA_HOME=/data/jdk1.7.0_25 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
编辑/etc/profile文件后,环境变量需要在下次登录Linux时才生效,如需在当前登录中生效,执行以下命令:
[root@centos ~]# source /etc/profile
强烈建议把环境变量配置在/etc/profile中,这样,所有用户都能共享JDK环境变量,而不需要为每个用户单独配置。
检查环境变量是否配置成功,执行以下命令:
[root@centos ~]# java -version java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
如果看到以上显示结果,说明环境变量配置成功。
为使系统正确运行,需要配置必要的操作系统环境,本系统使用默认系统环境。
jboss是开源的应用服务器软件,可以从官网免费获取。本文以jboss-as-7.1.1.Final版本为例进行说明。
上传jboss的安装包jboss-as-7.1.1.Final.zip到/usr/local目录,然后解压缩安装包解压缩完成后,将自动在/usr/local目录下创建jboss-as-7.1.1.Final目录,无需执行其它操作,重命名为jboss
mv jboss-as-7.1.1.Final jboss
jboss-as-7.1.1.Final就安装完成了,下文将介绍启动和停止jboss的方法
进入jbossl目录,看一下该目录的结构:
[root @centos opt]$ cd jboss [root @centos jboss-as-7.1.1.Final]$ ls -l total 336 drwxr-xr-x. 3 jboss jboss 4096 Mar 10 2012 appclient drwxr-xr-x. 4 jboss jboss 4096 Mar 10 2012 bin drwxr-xr-x. 4 jboss jboss 4096 Mar 10 2012 bundles -rw-r--r--. 1 jboss jboss 2451 Mar 10 2012 copyright.txt drwxr-xr-x. 4 jboss jboss 4096 Mar 10 2012 docs drwxr-xr-x. 5 jboss jboss 4096 Mar 10 2012 domain -rw-r--r--. 1 jboss jboss 266549 Mar 10 2012 jboss-modules.jar -rw-r--r--. 1 jboss jboss 26530 Mar 10 2012 LICENSE.txt drwxr-xr-x. 13 jboss jboss 4096 Mar 10 2012 modules -rw-r--r--. 1 jboss jboss 2421 Mar 10 2012 README.txt drwxr-xr-x. 6 jboss jboss 4096 Mar 10 2012 standalone drwxr-xr-x. 2 jboss jboss 4096 Mar 10 2012 welcome-content
其中有一些重要的目录和文件,下面将说明之。
bin/standalone.conf
该文件是jboss的启动参数文件,描述了jboss启动时的环境设置。系统运行前,需要修改该文件的以下配置:
1. 添加以下一行:
MAX_FD=4096
该配置描述了jboss在运行时,最大可以打开的文件描述符(File Descriptor, FD)数量,由于系统运行时,需要打开的文件描述符数量超过了jboss的默认最大值1024,因此需要添加上述一行。
2. 修改JVM启动参数:
JAVA_OPTS="-Xms512m �CXmx1024m -XX:MaxPermSize=256m …"
解释一下以上参数的作用:
-Xms512m,该参数描述了JVM启动时分配的堆内存大小;
-Xmx1024m,该参数描述了JVM运行时可以分配的最大堆内存大小;
-XX:MaxPermSize=256m,该参数描述了JVM运行时分配的永久代大小。
上述参数需要根据实际环境进行调整,主要的考虑因素是运行jboss的计算机的物理内存大小和运行在jboss上的应用系统。一般来说-Xms和-Xmx应尽可能大一些,但不能超过物理内存总量,-XX:MaxPermSize调整为512M或更大。
3. 修改以下一行:
JAVA_OPTS="$JAVA_OPTS -Djboss.socket.binding.port-offset=100"
jboss的默认端口是8080,如果想要改变jboss的端口,则需要添加上述配置,-Djboss.socket.binding.port-offset=100的意思是,相对于默认端口(8080)的偏移量是100,即jboss的监听端口是8080 + 100 = 8180。
standalone/configuration/standalone.xml
该文件是jboss运行时环境配置文件。系统运行前需要修改以下配置:
1. 添加以下段落:
<system-properties> <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/> <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/> <property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="5000"/> </system-properties>
该配置的作用是修改http请求能够接受的最大参数(parameter)数量为5000,由于系统运行时需要接受的参数数量超过jboss的默认值,所以需要添加上述配置。
2. 修改以下配置:
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" deployment-timeout="1200"/>
其中deployment-timeout="1200"是jboss自动部署的超时时间,单位是秒。如果超过超时时间还没有部署成功,则jboss停止部署。默认超时时间是60秒,运行时需要调整这个值以延长超时时间,否则容易出现部署失败的情况。
3. 注释掉一下内容
<!--subsystem xmlns="urn:jboss:domain:jpa:1.1">
<jpa default-datasource=""/>
</subsystem> -->
bin/standalone.sh
该文件是jboss在Linux平台下的启动脚本,后文将介绍如何启动和停止jboss。
standalone/deployments/
该目录是jboss的独立部署目录,应用系统的.war文件会放置在该目录下,jboss可以自动部署该目录下的war工程。
standalone/tmp/vfs/
jboss的临时目录,standalone/deployments/目录下的war工程自动部署时,会解压缩到该目录下的子目录中,子目录名称由jboss自动分配。随着部署次数的增多,standalone/tmp/vfs/目录下的内容也会逐渐增多。为避免磁盘空间不够用,可以在jboss每次启动之前,先删除该目录下的所有内容。
standalone/tmp/work/
jboss的临时目录,供jboss上部署的应用系统作缓存和其它临时用途。同样,每次启动jboss之前,可以先删除该目录下的所有内容。
jboss的启动脚本是bin/standalone.sh文件,配置好jboss的相关参数后,可以执行 /usr/local/jboss /bin/standalone.sh 来启动jboss,但不推荐这种方法,因为这样启动的话,一旦启动该脚本的终端退出时,jboss就停止了,并且扩展性不强。我们编写简单的shell脚本来启动jboss,使其可以在后台运行。
在/usr/local/bin目录下,创建jboss启动脚本,本文中,创建的脚本文件名为start.sh。
[root @dbserver345 bin]$ vi start.sh
在start.sh文件中添加以下内容:
#!/bin/bash SV1LOG=/data/logs/jboss_start.log SV1PID=`ps -ef|grep "java"|grep "Final$"|grep -v "grep"|awk '{print $2}'` JBOSS_HOME="/usr/local/jboss" start(){ SV1PID=`ps -ef|grep "java"|grep "Final$"|grep -v "grep"|awk '{print $2}'` if [ -z "$SV1PID" ];then echo "Starting JBOSS..." $JBOSS_HOME/bin/standalone.sh > $SV1LOG 2>&1 & sleep 5 echo -e "Please see $SV1LOG for details" else echo "JBOSS is already running...!" exit 1 fi } stop(){ if [ -z "$SV1PID" ];then echo "JBOSS is not running!!" exit 1 else echo "Shuting down JBOSS..." kill -15 "$SV1PID" > /dev/null 2>&1 fi sleep 5 SV1CHK=`ps -ef|grep "java"|grep "Final$"|grep -v "grep"|awk '{print $2}'` if [ -z "$SV1CHK" ];then echo "Shutdown JBOSS successfully!" else echo "JBOSS is still running,Please try again!" fi } status(){ if [ -z "$SV1PID" ];then echo "JBOSS is not running!!" exit 1 else echo -e "JBOSS is listening on\n\n`netstat -antp|grep "$SV1PID" |awk '{print $4}'`" fi } restart(){ stop sleep 5 start } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; *) echo "Usage: `basename $0` {start|stop|status|restart}" ;; esac
最后,给start.sh赋予可执行权限:
[root @centos bin]$ chmod a+x start.sh
简单解释一下这个脚本。首先给3个变量赋值:SV1LOG、SV1PID、JBOSS_HOME,分别代表jboss启动日志文件路径、jboss进程ID(PID)、jboss主目录,脚本的后续内容基于这3个变量撰写,这3个变量应根据实际情况进行赋值。
该脚本的核心是这个命令:
$JBOSS_HOME/bin/standalone.sh > $SV1LOG 2>&1 &
其效用是,在操作系统后台执行/usr/local/jboss/bin/standalone.sh 这个脚本,并且把jboss的启动日志保存在/data/logs/jboss_start这个文件里面。
使用该脚本的语法如下:
/usr/local/bin/start.sh {start | stop | restart}
因此我们使用 /usr/local/bin/start.sh start来启动jboss,使用/usr/local/bin/start.sh stop来停止jboss。
本手册描述了如何安装JDK、jboss,并详细介绍了jboss的重要配置文件以及如何修改以适用于具体环境。本手册提供给运维人员部署系统时参考。