java运维

来源:互联网 发布:网络女主播这么赚钱 编辑:程序博客网 时间:2024/06/06 23:16

1. jboss的基本目录

jboss 的目录根据自己的打包习惯可以放置在不同的绝对路径;在jboss下面的目录是固定的:

  •   bin目录是:jboss start和stop 脚本的目录;但这个目录可以根据打包的习惯自己指定;比如:/etc/init.d/jbossctl
  •  client 目录:client 与jboss 通信需要的java库 jar包
  •  docs:配置的样本文件【数据库配置文件样本】
  • doc/dtd: jboss 里面各种xml 的DTD
  • lib: 一些jar jboss  启动时加载;而且被jboss 配置共享
  • server:这个目录下面是应用的appname;一个jboss 可以提供多个服务,每个appname代表一个应用;
  •                 每一个appname里面有jboss的配置
  • server/default:jboss 只提供一个服务时,又没有指定appname;默认就是default 
  •   server/default/conf :Jboss 的配置文件
  •   server/default/data :jboss的数据库文件
  •   server/default/deploy    Jboss 的热部署目录;放到这里的任何文件或目录都会被jboss 自动部署 EJB  WAR EAR,设置服务
  •          在deploy 里面下面如果只有一个war目录;那么在启动jboss时会默认加载 这个目录下面的war;所以如果我们的rpm包
  •         对应的应用war目录没有安装在个目录下面;需要在  ...../deploy/***.war --> /****/***/.war   做一个软连接
  • server/default/lib :一些JAR jboss 在启动特定配置时加载他们
  • server/default/log :jboss 的日志文件;如果jboss启动有问题会在这里面包error
  • server/default/tmp:这个目录是jboss启动存放的临时文件;可以删除
  • server/default/work:jboss启动的工程的工作文件;

2. jboss 启动应用的基本原理

(1).  jboss的应用名称

/home/a/jboss-4.2.2.GA/default    #default 就是应用的name

应用的name 在没有认为指定时,就用default,可以设置成不通的appname

所以我们查看jboss 跑的应用name 是什么就看:

/home/a/jboss-4.2.2.GA/   --->下面  目录,每一个目录就是一个应用。

(2). jboss 的启动

sudo -u user /etc/init.d/jbossctl start appname  # 后面需要添加appname

(3). jboss的工作原理

一个war目录就是一个完整的应用,一个war目录启动后就是一个完整的工程;把war 打包成rpm包,并把

rpm包按照不同的版本来迭代是为了方便部署和管理。

我们启动jboss 时jboss 会到 /home/a/jboss-4.2.2.GA/server/default/deploy/ 目录下面找war目录;【default <--> appname】

会把这个war目录作为一个应用来启动。

如果你安装的包或者自己写的war目录不在这个jboss的默认目录下;需要做一个软连接过去;否则即使你安装rpm包,启动了jboss服务

发现应用也是不可用的。

ll /home/a/jboss-4.2.2.GA/server/default/deploy/minisite.war lrwxrwxrwx 1 ads users 24 Apr 16  2012 /home/a/jboss-4.2.2.GA/server/default/deploy/test.war -> /home/a/project/test.war
所以,如果在你安装所有的环境都部署好,发现应用还不能用时,要看看这个jboss下面是不是建立了这个软连接。

如果你用scp 从远程机器上面把正常服务的机器scp过来;scp过程中软连接失效;但是会把之前软连接的的目录全部cp过来;这样此次服务肯定是正常的

但是如果下次上线;rpm包更新后没有ln -是那jboss 默认还是启动的自己目录下面的war目录;此时rpm包更新了也没有起作用。


(4). jboss 用的jdk 版本

一般jboss的依赖的jbk 有不通的版本;但一台机器上面安装了不同的jdk版本;这时要设置jdk的版本;

看java的版本:

rpm -ql jdk*|egrep "*/java$"  看2个jkd的java目录是哪个;然后查看jboss 配置的JAVA_HOME是哪个jdk的版本;

grep JAVA_HOME /etc/init.d/jbossctl         export JAVA_HOME=/opt/**/javaexport JAVA_HOME=/opt/**/javasudo -u ads sed -i 's/\/opt\/**\/java/\/**\/**\/java/ge' /etc/init.d/jbossctl     这样jboss 启动时就可以指定想要的jdk版本了!


JDK 版本升级的另一种方法:采用软连接的方式,跟第一种方式是一样的,不过这样更加好维护而已;

sudo rm -rf /home/a/project/java/sudo -u user ln -s 新版本jdkjava目录    /home/a/project/java


(5). jboss 服务的根目录

      apache/nginx +jboss的形势提供网页服务;apache nginx只是起到反向代理的作用,把请求转发到jboss;所以真正web 服务器是 jboss;上面说的jboss启动时会启动

/server/appname/deploy/appname.war/  启动服务;一般用HTTP协议,即 jboss 启动的是8080端口;也可以用AJP协议,jboss启动的8009协议。

jboss web服务器需要设置一个index 页面;这样需要jboss设置一个web服务的根目录:

<jboss-web>    <context-root>/</context-root></jboss-web>
通常就在下面这个 ll /home/a/jboss-4.2.2.GA/server/default/test.war/WEB-INF/jboss-web.xml  的xml中设置;

此目录下面可能还有 web.xml 这个xml中也会设置;看具体是用的哪个!!

如果上面的2个xml中都没有设置;则jboss会用默认的根目录;就是 /home/a/jboss-4.2.2.GA/server/default/deploy/test.war/  ;而这个目录可能又会软连接到另外一个目录;

这样负载均衡的LB 进行健康检测时只要能找到 监控检测文件就ok;所以需要在这个根目录下面touch status.html的监控检测文件。


(6). jboss web服务器的中文乱码;

在用jboss web服务时会出现中文乱码;对应的web页面可能是不能上传图片和文件;或者是显示中文乱码;这是要设置jboss 的编码格式是UTF-8:

vim /home/a/jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/server.xml<Connector port="8080" address="${jboss.bind.address}"             maxThreads="250" maxHttpHeaderSize="8192"         emptySessionPath="true" protocol="HTTP/1.1"         enableLookups="false" redirectPort="8443" acceptCount="100"         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>

在下面的xml中设置:/home/a/jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/server.xml;上面是HTTP协议的8080;如果用的是AJP协议的8009 则在下面的对应的8009也需要修改成UTF-8


3. nginx 【tengine】

(1). access_log error_log

nginx 中 error_log 的格式是固定的;在conf中log_format 是对access_log 做的格式设置;

request_time_usec :指此次响应的时间;但是有的access log 显示 - 原因是什么?需要问清楚;