项目部署

来自ling
跳转至: 导航搜索

有问题打我电话

报表部署

全量部署

部署报表服务器

  • 从ftp://139.196.179.172/中下载rpt.rar,解压后放置在tomcat的webapps目录中,ftp用户名和密码都是ftp
  • 修改webapps\rpt\WEB-INF\resources\config.xml中的数据库配置为方软数据库的配置,如果应用数据库和报表数据库没有分开,和应用数据库配置一样即可(方软)
<JDBCDatabaseAttr url="jdbc:oracle:thin:@127.0.0.1:1521:vatsdb" driver="oracle.jdbc.driver.OracleDriver" user="fr" password="fr" encryptPassword="false"/>
  • 修改webapps\rpt\WEB-INF\resources\datasource.xml中的配置 注意password要在方软的软件中加密.(应用)
<JDBCDatabaseAttr url="jdbc:oracle:thin:@127.0.0.1:1521:vatsdb" driver="oracle.jdbc.driver.OracleDriver" user="tmsvat" password="___0067002300790079000500a1" encryptPassword="true">
  • 修改webapps\rpt\WEB-INF\classes\config.properties中的第一行为webapps\rpt\WEB-INF\reportlets的绝对路劲 注意linux环境使用/替代\
  • 替换webapps\rpt\WEB-INF\reportlets下所有*.cpt中的tmsvat为应用数据库的用户名.如果一致,不用替换
  • 启动报表的tomcat
  • 打开地址http://ip:prot/rpt/ 如果看到Hello World!证明报表服务已经正确启动

修改应用服务器

  • 修改应用下的配置文件\WEB-INF\classes\config\configure.properties,替换所有类似139.196.179.172的ip地址为你实际报表地址ip,注意rmi端口
fineRptUrl=http://139.196.179.172/rpt/ReportServer
fineMotherTpl=cjsc_normal.cpt
fineXgmTpl=cjsc_xgm.cpt
ovfineMotherTpl=cjsc_ovnormal.cpt
ovfineXgmTpl=cjsc_ovxgm.cpt
fineReportRmi=rmi://139.196.179.172:23457/rms
  • 重启应用服务器

增量部署

重要变化

更多请参考环境安装模块 项目初始化与配置 请先确定web.xml中相关log4j配置如下

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/log4j.properties</param-value>
	</context-param>

然后修改log4j.properties中关键字c:/logs为你自己的日志目录

并把附件中的文件放到WEB-INF/log4j.properties

weblogic部署

weblogic 12c 部署

  • WEB-INF/weblogic.xml 是否存在
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
	<container-descriptor>
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
		<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
		<!-- <prefer-application-packages>  
	      <package-name>org.python.core.*</package-name>  
	    </prefer-application-packages> -->
	</container-descriptor>
</weblogic-web-app>
  • 冲突jar包处理
    • hibernate-jpa-2.0-api-1.0.1.Final.jar,log4j-1.2.17.jar放入weblogic实例的lib下
    • 删除xml-apis-ext.jar、xml-apis.jar及sax2.jar (如果有)
    • 删除2个javaee jar文件(如果有)

weblogic 10.3.6部署

  • WEB-INF/weblogic.xml 是否存在
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
	<container-descriptor>
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
		<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
		<!-- <prefer-application-packages>  
	      <package-name>org.python.core.*</package-name>  
	    </prefer-application-packages> -->
	</container-descriptor>
</weblogic-web-app>
  1. 例如安装目录为 C:\oracle\Middleware
  2. 请确认weblogic使用jdk版本 C:\oracle\Middleware\jdk160_29或C:\oracle\Middleware\jrockit_160_29_D1.2.0-10
  3. copy hibernate-jpa-2.0-api-1.0.1.Final.jar到jdk下jre\lib\ext 目录,如果不确认使用了那个jdk,2个jdk下都放
  4. domain lib下放置xml-apis-ext.jar、xml-apis.jar
  5. war包中删除xml-apis-ext.jar、xml-apis.jar,2个j2ee.jar

tomcat部署

更多请参考tomcat目录结构及配置文件说明

tomcat7部署

tomcat7文件的获取

http://139.196.179.172/ 下soft/server/tomca7.rar 如果没有权限请申请

参数配置

window环境参数配置
  1. 进入tomcat根目录
  2. cmd启动内存设置bin/setenv.bat 设置内存大小 默认为:-Xms512m -Xmx1024m -XX:MaxPermSize=256m
  3. 设置bin/service.bat 默认设置为:-XX:PermSize=256m;-XX:MaxPermSize=1024m;-Dfile.encoding=utf-8" --JvmMs 512 --JvmMx 2048

set "JAVA_OPTS=%JAVA_OPTS% -server -Xms12288m -Xmx12288m -Xss2048K -XX:PermSize=512m -XX:MaxPermSize=768m -XX:NewSize=4096m -XX:MaxNewSize=8192m -XX:+PrintGCDetails -Xloggc:gc.log" 
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  1. 修改启动端口conf/server.xml,默认为8080
    1. 如果为集群环境,注意修改以下关键字,数字累加不重复导致冲突就行
      1. port="8004" shutdown="SHUTDOWN"
      2. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
      3. <Connector port="8008" protocol="AJP/1.3" redirectPort="443" />
  2. 推荐项目使用目录形式发布,修改目录形式发布的程序路径,配置在文件conf/server.xml
    1. 搜索关键字<Context path="/vat" docBase="C:/server/war/vat" debug="0" useHttpOnly="true" crossContext="true" ></Context>并修改为需要的路径
  3. 设置为window下的服务启动
    1. 修改server名称
      1. 查找关键字rem Set default Service name
      2. set SERVICE_NAME=Tomcat7_0
      3. set PR_DISPLAYNAME=Tomcat7_0
    2. 打开cmd(admin)
    3. cd 到tomcat根目录,比如C:\ftp\soft\server\tomcat7\bin
    4. 运行命令service.bat install
    5. 参考如下:
    6. Microsoft Windows [Version 6.2.9200]
      (c) 2012 Microsoft Corporation. All rights reserved.
      
      C:\Windows\system32>cd C:\ftp\soft\server\tomcat7\bin
      
      C:\ftp\soft\server\tomcat7\bin>service.bat install
       C:\ftp\soft\server\tomcat7\bin\
      C:\ftp\soft\server\tomcat7
      Installing the service 'Tomcat7_0' ...
      Using CATALINA_HOME:    "C:\ftp\soft\server\tomcat7"
      Using CATALINA_BASE:    "C:\ftp\soft\server\tomcat7"
      Using JAVA_HOME:        "C:\ftp\soft\server\tomcat7/1.7_64"
      Using JRE_HOME:         "C:\ftp\soft\server\tomcat7/1.7_64\jre"
      Using JVM:              "C:\ftp\soft\server\tomcat7/1.7_64\jre\bin\server\jvm.dl
      l"
      The service 'Tomcat7_0' has been installed.
      
      C:\ftp\soft\server\tomcat7\bin>
    7. 设置tomcat7服务为自动启动
    8. Tomcat install1.PNG
linux环境参数配置

参考项目部署#重庆农商行部署方案

路径形式发布

  1. 上传全量发布的war包到目标服务器
  2. 关闭cmd窗口或停止tomcat服务(如需要)
  3. 进入配置目录发布的文件夹 如:C:/server/war/vat
  4. 备份原有文件到备份目录 如:C:/server/warbarkup
  5. 解压新发布文件到发布目录,如:C:/server/war/vat
  6. copy hibernate-jpa-2.0-api-1.0.1.Final.jar 到tomcat 下lib目录(已做过忽略)
  7. 删除2个javaee.jar(已做过忽略)
  8. 修改项目配置tms_ecs项目配置
  9. 重新启动cmd或tomcat服务

路径形式的增量发布

war包形式发布

参数调优

nginx

nginx和tomcat集群

参考本文项目部署#多个tomcat等章节

常见异常

    • WebLogic包含了xml的解析器,如果与应用中的jar冲突,会ClassCastException。诸如涉及如下类的类型转换错误:
      • weblogic.apache.xerces.parsers.SAXParser
      • weblogic.xml.jaxp.RegistryDocumentBuilderFactory
  • 涉及版本:

WebLogic10g

  • 问题原因:

WebLogic包含了xml的解析器,与应用中的jar冲突。

  • 解决方案:
    • 步骤1,在WEB-INF/weblogic.xml配置文件的<container-descriptor>元素内添加<prefer-web-inf-classes>true</prefer-web-inf-classes>配置片断,用于强制WebLogic优先使用应用的jar;
    • 步骤2,删除xml-apis-ext.jar、xml-apis.jar及sax2.jar (如果有)。
  • 备注

无。

  • 部署后报错Java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXTransformerFactory cannot be cast to javax.xml.transform.TransformerFactory
           这个错有几种说法,一个老外的帖子说,要把xml解析的jar包去掉xercesImpl-2.9.1.jarxml-apis-1.3.04.jar,xmlParserAPIs-2.0.2.jar

还找到一个帖子http://hi.baidu.com/zhoushugen/blog/item/27e1caf71bbc0024730eecdc.html 说,到apache官网上下载最新的xalan包替换你lib下面的一些包。 我是使用第二个方法解决的。

Java.lang.ClassCastException: CommonContext cannot be cast to DoradoContext 未知的枚举常量 javax.persistence.CascadeType.DETACH

  • java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXTransformerFactory cannot be cast to javax.xml.transform.TransformerFactory
    • xml-apis和xmlbeans 移动到domain下的lib下
  • java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
    • 如果使用目录形式发布没这个问题
    • 如果war包方式发布,如果有问题,参考如下方式解决
      • log4j.properties移动到WEB-INF,修改web.xml中相关配置如下:
<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/log4j.properties</param-value>
	</context-param>


  • org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#0' defined in class path resource [config/uflo-servlet-context.xml]: Cannot resolve reference to bean 'uflo.marshallingConverter' while setting bean property 'messageConverters' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uflo.marshallingConverter' defined in class path resource [config/uflo-servlet-context.xml]: Cannot resolve reference to bean 'uflo.jaxbMarshaller' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uflo.jaxbMarshaller' defined in class path resource [config/uflo-servlet-context.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException


  • 项目中引用的javaee.jar太老,删除就好了
  • 与下面2个写法无关
	<bean id="uflo.jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
		<property name="classesToBeBound">
			<list>
				<value>com.deloitte.tms.pl.workflow.client.model.BatchCompleteTaskInfo</value>
				<value>com.deloitte.tms.pl.workflow.client.model.CompleteTaskInfo</value>
				<value>com.deloitte.tms.pl.workflow.model.task.Task</value>
				<value>com.deloitte.tms.pl.workflow.model.HistoryTask</value>
				<value>com.deloitte.tms.pl.workflow.model.ProcessInstance</value>
			</list>
		</property>
	</bean>
	<bean id="uflo.jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
		<property name="packagesToScan">
			<list>
				<value>com.deloitte.tms.pl.workflow.model*</value>
				<value>com.deloitte.tms.pl.workflow.console.rest.model</value>
			</list>
		</property>
	</bean>

tomcat中文 get 乱码

添加 URIEncoding="UTF-8"
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

weblogic12c公司电脑安装

  • 设置文件win7模式,管理员运行
  • cmd admin下运行安装程序
  • xml-apis和xmlbeans 移动到domain下的lib下

weblogic/Wb102010

was发布

db2创建数据源

  1. 将db2jcc4.jar放入/opt/IBM/WebSphere/AppServer/lib文件夹 命令为cp db2jcc4.jar /opt/IBM/WebSphere/AppServer/lib/db2jcc.jar


  1. 进入was控制台
  2. 选择左侧菜单 依次点击resources-->jdbc-->data sources
  3. 选择scope为:cell-dmgrcell 点击new
  4. 设置data source name:jndivat,jndi name:jndivat点击next
  5. 设置database type:db2 provider type:db2 universal jdbc driver provider implementation type :connection pool data source点击next
  6. 设置${DB2UNIVERSAL_JDBC_DRIVER_PATH}为:/opt/IBM/WebSphere/AppServer/lib点击next
  7. 设置Driver type:4 database name:VATSDB server name:22.5.244.199 port number:50000点击next
  8. 点击next
  9. 点击finish
  10. 点击save
  11. 点击jndivat进入编辑界面
  12. 点击 jaas -j2c authentication data
  13. 点击 new
  14. 设置alias jndivatsecurity user id:db2inst1 password:123456点击Apply
  15. 点击save
  16. 点击jndivat进入编辑界面
  17. 设置security settings component-managed authentication alias:DMnode/jndivatsecurity点击Apply
  18. 点击save
  19. 勾选 jndivat 点击test connection



两台机子的集群,dm在单独的机子上,配置数据源时,新建JAAC-J2C认证数据的别名时: 在别名处输入testDSAuth、添好用户标识和密码,点击确定后,在列表中显示的却是DMCellName/testDSAuth,前边给加了dm的节点名称

测试连接时报错: Failed to connect to the database: "[ibm][db2][jcc][t4][10205][11234] Null userid is not supported.


解决方法: 方法一:设置cell-dmgrcell

停掉所有节点服务器,下载适应db2版本的jdbc驱动包,我的db2版本是DB2 V9.1.0.7,下载v9fp7_db2driver_for_jdbc_sqlj.zip

将其中的db2jcc.jar,db2jcc_license_cu.jar,sqlj.zip复制到节点配置文件wkplc_dbtype.properties中db2.DbLibrary指定的位置。

启动所有节点服务器。

重庆农商行部署方案

实施前需要确认内容

  • 集群与负载均衡策略:f5负责,架构支持session共享,所以不需要考虑session共享和复制
  • jdk版本和tomcat版本选取,安装包由谁提供,谁安装,谁配置:linuxjdk自带 1,7_64 应用支持此jdk,不需要重新安装,德勤选用tomcat7.0并负责,安装配置,优化
  • tomcat实例数量,分布在几台服务器上,服务器ip是多少:多台服务器,每台一个tomcat实例,我们负责参数配置,优化,数据库连接池(行方要求10个连接池)生产2台,同城2台,灾备2台.
  • 数据库地址和用户名密码,上线时提供:oracle数据库,有2个数据库,交易认定数据库utf-8字符集和ods数据库gbk字符集,这2个数据库负责向营改增系统提供接口数据,营改增数据库需要配置到应用jdbc.properties文件中
  • 是否有共享存储,决定了war包发布方式:没有共享存储.分开发布
  • war包用目录形式发布还是每次war包全量发布,建议目录形式发布,便于做增量部署:行方选用直接上传war包发布,所以需要准备job和没有job的2个war包
  • linux下tomcat自动启动:需要德勤提供配置.
  • 服务器内存大小,允许tomcat设置的最大内存:服务器内存为6g,所以tomcat配置的内存为2-3g

jdk安装

  • 使用linux环境jdk,忽略此步骤,可以通过下面的命令查看安装的jdk版本和jdk安装路径
java -version 
echo $JAVA_HOME

安装tomcat

  • 使用root用户权限操作以下步骤
  • 下载apache-tomcat-7.0.70.tar.gz 如果没有,可以去http://tomcat.apache.org/download-70.cgi下载apache-tomcat-7.0.70.tar.gz
  • 上传apache-tomcat-7.0.70.tar.gz到服务器
  • 解压apache-tomcat-7.0.70.tar.gz:命令为
tar -zxvf apache-tomcat-7.0.70.tar.gz
  • 拷贝apache-tomcat-7.0.70到/usr/local/下并重命名为tomcat 命令为:
cp -R apache-tomcat-7.0.70 /usr/local/tomcat
  • 启动tomcat 测试是否可用 命令为:
sh /usr/local/tomcat/bin/startup.sh
  • 测试tomcat是否正确启动,在浏览器中打开http://ip:8080查看tomcat的启动,也可以通过下面的命令查看启动日志,命令为:
cd /usr/local/tomcat/logs
tail -f catalina.out

配置tomcat管理员用户名和密码

命令为:

cd /usr/local/tomcat/conf
vi tomcat-users.xml

并设置

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->

比如设置为:

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
  <user username="admin" password="!Dtt123456" roles="manager-gui"/>
  • 验证设置有效性
    • 重启tomcat 命令为:
cd /usr/local/tomcat/bin
sh shutdown.sh
sh startup.sh
    • 进入http://ip:8080/manager

输入用户名admin和密码!Dtt123456查看效果

配置tomcat启动参数

见自动启动中参数配置

配置tomcat自动启动

  • 查看jdk安装路径 命令为:
echo $JAVA_HOME

假设结果为 /server/java/jdk1.7_64

  • 到tomcat子目录bin目录下找到catalina.sh 文件。复制文件到/etc/init.d 并改名为tomcat 命令为
cp /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
  • 编辑/etc/init.d/tomcat文件.修改# OS specific support. $var _must_ be set to either true or false.行上面内容,命令为
vi /etc/init.d/tomcat 

内容为,其中-Dserver.InstanceName=???请为每个tomcat设置不同值:

# chkconfig: 2345 10 90      //这个地方必须加(决定chkconfig --list 的结果),否则出现错误:tomcat 服务不支持 chkconfig
# description:Tomcat service 
#Licensed to the Apache Software Foundation (ASF) under one or more 
-----------------------------------------------------------------------------
CATALINA_HOME=/usr/local/tomcat
JAVA_HOME=/server/java/jdk1.7_64
JAVA_OPTS="-Xms1024m -Xmx3072m -Xss1024K -XX:PermSize=64M -XX:MaxPermSize=128m -Dfile.encoding=utf-8 -Dserver.InstanceName=server11"
 
# OS specific support. $var _must_ be set to either true or false.
  • 添加tomcat 服务 将服务添加到自动启动列表服务中,命令为
chkconfig --add tomcat  
  • 测试服务的停止和启动,查看是否有错误提示,命令为
service tomcat stop ####关闭tomcat 服务 
service tomcat start ####启动tomcat 服务
  • 查看tomcat 服务运行级别 命令为
chkconfig --list |grep tomcat  

tomcat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 如果345 为关闭状态。执行如下命令设置tomcat为开机自启动。 命令为:

chkconfig tomcat on  
  • 重启服务器,检查是否开机启动 命令为:
netstat -an|grep 8080

多个tomcat

cp /etc/init.d/tomcat /etc/init.d/tomcat1
  • 复制tomcat文件
cp -rf /usr/local/tomcat/* /usr/local/tomcat1
  • 编辑相关端口
vi /usr/local/tomcat1/conf/server.xml
port="8005" shutdown="SHUTDOWN"
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
<Connector port="8109" protocol="AJP/1.3" redirectPort="8444" />
  • 设置自动启动配置
vi /etc/init.d/tomcat1

内容为,-Dserver.InstanceName=server11请为每个tomcat设置不同值:

# chkconfig: 2345 10 90      //这个地方必须加(决定chkconfig --list 的结果),否则出现错误:tomcat 服务不支持 chkconfig
# description:Tomcat service 
#Licensed to the Apache Software Foundation (ASF) under one or more 
-----------------------------------------------------------------------------
CATALINA_HOME=/usr/local/tomcat1
JAVA_HOME=/server/java/jdk1.7_64
JAVA_OPTS="-Xms1024m -Xmx3072m -Xss1024K -XX:PermSize=64M -XX:MaxPermSize=128m -Dfile.encoding=utf-8 -Dserver.InstanceName=server11"
 
# OS specific support. $var _must_ be set to either true or false.
  • 添加tomcat 服务 将服务添加到自动启动列表服务中,命令为
chkconfig --add tomcat1
  • 测试是否可用
service tomcat1 stop ####关闭tomcat 服务 
service tomcat1 start ####启动tomcat 服务

打war包注意

  1. copy hibernate-jpa-2.0-api-1.0.1.Final.jar 到tomcat 下lib目录(已做过忽略)
  2. 删除2个javaee.jar(已做过忽略)
  3. 与中信不同,tomcat部署的是标准war包,结构见Java的JAR包, EAR包 ,WAR包内部结构#WAR包
  4. var包的名字为vat.war

上海光大nginx安装方案

环境

静安区新闸路1508号18楼 计财部

PRD环境 中间那台跳板机.332211

Guangda.physical.PNG

共用 数据库服务器 10.0.26.126 1521 SID=VAT ,tmsvat/TmsVat2016

安装nginx依赖:查看是否已经安装

rpm -qa |grep gcc
rpm -qa |grep openssl-devel
rpm -qa |grep pcre-devel
rpm -qa |grep zib-devel
  • 安装依赖(如果没有)
  1. yum安装
yum -y install 上面的依赖
  • 手工安装
  1. 安装pcre
    1. 获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本 wget https://ftp.pcre.org/pub/pcre/pcre2-10.23.tar.gz
    2. 解压缩pcre-xx.tar.gz包。 tar -zxf pcre2-10.23.tar.gz
    3. 进入解压缩目录,执行./configure。
    4. make & make install
  2. 安装perl5
    1. wget http://www.cpan.org/src/5.0/perl-5.25.12.tar.gz
    2. tar -xzf perl-5.25.12.tar.gz
    3. 编译并安装,目录可以自定义
    4. cd perl-5.25.12
    5. ./Configure -des -Dprefix=/usr/local/perl
    6. make
    7. make install
    8. 如果系统以前已安装了旧版本的perl的话,替换系统原有的版本。
    9. mv /usr/bin/perl /usr/bin/perl.bak
    10. ln -s /usr/local/perl/bin/perl /usr/bin/perl
    11. 再看看是不是最新的版本
    12. perl -v
  3. 安装openssl
    1. 获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
    2. 解压缩openssl-xx.tar.gz包。tar -zxf openssl-1.1.0e.tar.gz
    3. 进入解压缩目录,执行./config。
    4. make & make install
  4. 安装zlib
    1. 获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
    2. 解压缩openssl-xx.tar.gz包。tar -zf zlib-1.2.11.tar.gz
    3. 进入解压缩目录,执行./configure。
    4. make & make install
yum -y install gcc openssl-devel pcre-devel zib-devel pcre openssl zlib

安装nginx

  • 获取nginx,在http://nginx.org/en/download.html上可以获取当前最新的版本。 这里下载的是http://nginx.org/download/nginx-1.10.1.tar.gz
  • 将下载下来的Nginx上传到服务器并解压
tar -zxvf nginx-1.10.1.tar.gz
cp -R nginx-1.10.1 /usr/local/nginx
  • 切换到/usr/local/nginx目录下,运行./configure进行初始化配置。
cd /usr/local/nginx
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-stream
  • 运行 make install 进行编译。
make 
make install
  • 切换到步骤4生成的nginx运行目录下,运行./nginx,启动Nginx。
cd sbin
./nginx
  • 在浏览器中输入IP:端口号,出现如下图所示,说明安装成功。

nginx自动启动

创建文件/etc/init.d/nginx并写入

touch nginx
chmod 777 nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 3
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
chkconfig --add nginx
chkconfig nginx on
chkconfig --list |grep nginx
cp nginx.conf conf/nginx.conf
chmod 777 nginx.conf
测试service nginx reload

配置

  • 查看cpu个数
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream  vat{  
	ip_hash;
	server 127.0.0.1:8080 weight=1 max_fails=1 fail_timeout=90s; 
	#server 10.172.128.201:8081 weight=1 max_fails=1 fail_timeout=90s;  
 	#keepalive 20;
    } 

    server {
        listen       80;
        charset utf-8;

        location / {
          proxy_pass  http://vat;
	  proxy_http_version 1.1;        	
          proxy_set_header   Connection       "";					     					
          proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_connect_timeout 2;
          client_max_body_size    1000m;
        }
    }

}

安装keeplived

安装keepalive

官方最新版 http://www.keepalived.org/

tar zxvf keepalived-1.2.23.tar.gz
cd keepalived-1.2.23
或wget http://www.keepalived.org/software/keepalived-1.2.23.tar.gz

在此之前。请安装一下一些简单的工具

yum install -y gcc openssl-devel popt-devel

libnfnetlink headers

http://www.netfilter.org/projects/libnfnetlink/index.html

tar -jxvf libnfnetlink-1.0.1.tar.bz2
./configure
make && make install

不然会编译不成功的。然后:

./configure
make && make install 

cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig keepalived on
mkdir /etc/keepalived
ln -s /usr/local/sbin/keepalived /usr/sbin/

配置keepalive

ifconfig -a #查看网卡信息

两台服务器端keepalived.conf内容都为如下,都设置为backup,不抢占,注意修改优先级不同,更详细的keepalived配置文件说明可以执行man keepalived.conf查看:

vi /etc/keepalived/keepalived.conf
! Configuration file for keepalived
vrrp_instance VI_1 {
    state BACKUP  #主从设置 MASTER
    interface eth1  #网卡名
    virtual_router_id 51
    priority 50  #从机小于主机
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass chtopnet
    }
    virtual_ipaddress {
        10.0.2.244  #VIP 的IP
    }
}

绑定虚拟IP:

 ifconfig eth1:1 10.0.2.244 broadcast 10.0.2.255 netmask 255.255.255.0 up  
 route add -host 10.0.2.244 dev eth1:1

本地虚拟机测试备份

ifconfig eth1:1 192.168.1.30 broadcast 192.168.1.255 netmask 255.255.255.0 up
route add -host 192.168.1.30 dev eth1:1 
 
ifconfig eth3:1 192.168.1.30 broadcast 192.168.1.255 netmask 255.255.255.0 up
route add -host 192.168.1.30 dev eth3:1

启动 keepalived

service keepalived restart

查看日志

tail -f /var/log/messages

keepalive相关参数说明

 ! Configuration File for keepalived

global_defs {
   notification_email {
     admin@lvtao.net             #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
   }
   notification_email_from  admin@lvtao.net        #设置邮件的发送地址
   smtp_server 127.0.0.1                                #设置smtp server地址
   smtp_connect_timeout 30                              #设置连接smtp server的超时时间
   router_id LVS_DEVEL                                  #表示运行keepalived服务器的一个标识。发邮件时显示在邮件主题的信息
}

vrrp_instance VI_1 {
    state MASTER              #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
    interface eth0            #指定HA监测网络的接口
    virtual_router_id 51      #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
    priority 100              #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
    advert_int 1              #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {          #设置验证类型和密码
        auth_type PASS        #设置验证类型,主要有PASS和AH两种
        auth_pass 1111        #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {       #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        10.0.0.148
    }
}

virtual_server 10.0.0.148 80 {      #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
    delay_loop 6                    #设置运行情况检查时间,单位是秒
    lb_algo rr                      #设置负载调度算法,这里设置为rr,即轮询算法
    lb_kind DR                      #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
    persistence_timeout 50          #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。
                                    #有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。
                                    #需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果50秒内没有执行任何操作,
                                    #那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制
    protocol TCP                    #指定转发协议类型,有TCP和UDP两种

    real_server 10.0.0.137 80 {     #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开
        weight 3                    #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器
                                    #分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源
        TCP_CHECK {                 #realserver的状态检测设置部分,单位是秒
            connect_timeout 10      #表示3秒无响应超时
            nb_get_retry 3          #表示重试次数
            delay_before_retry 3    #表示重试间隔
            connect_port 80
        }
    }
    real_server 10.0.0.139 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

其他

/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT #开启8080端口
etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启防火墙

lsof -i :80 |grep "(LISTEN)" #查看80端口占用
ps -aux | grep nginx
nginx -s stop #停止服务器  
nginx -s reload #重新加载配置

删除nginx

rm -rf /usr/local/nginx
rm -rf /etc/init.d/nginx

上海华瑞安装

  • 远程用户名密码 vatsdb/vatsdb
  • 数据库配置
jdbc.username=vats
jdbc.password=vats
jdbc.pool_size_min=5
jdbc.pool_size_max=30
jdbc.pool_size_initial=5
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.129.35.160:1521:vatsdb
  • jdk:/app/vats/jdk1.7.0_79
  • war: /app/vats/vat
  • logs: /app/vats/logs
  • 8080端口vat服务
  1. /app/vats/tomcat01/bin/shutdown.sh
  2. /app/vats/tomcat01/bin/startup.sh
  3. tail -f /app/vats/tomcat01/logs/catalina.out
  • 8180端口vat服务
  1. /app/vats/tomcat02/bin/shutdown.sh
  2. /app/vats/tomcat02/bin/startup.sh
  3. tail -f /app/vats/tomcat02/logs/catalina.out
  • 8280 报表服务
  1. /app/vats/tomcatrpt/bin/shutdown.sh
  2. /app/vats/tomcatrpt/bin/startup.sh
  3. tail -f /app/vats/tomcatrpt/logs/catalina.out
  • 如需安装nginx,执行以下命令即可
cd /app/vats/pcre2-10.20
make
make install


cd /app/vats/nginx
 ./configure --prefix=/app/vats/nginx --conf-path=/app/vats/nginx/conf/nginx.conf
make
make install


SELECT * FROM TMS_MD_CUSTOMERS_INF;
SELECT * FROM TMS_MD_CUST_BANK_ACC_INF;
SELECT * FROM TMS_CRVAT_SS_TRX_INF;

SELECT * FROM TMS_MD_CUSTOMER;
SELECT * FROM tms_md_cust_site;
SELECT * FROM tms_md_cust_bank_accounts;

SELECT * FROM TMS_CRVAT_SS_TRX_ALL;
SELECT * FROM TMS_CRVAT_TRX_AFFIRM;



SELECT COUNT(1) FROM TMS_MD_CUSTOMERS_INF;--7803,15606
SELECT COUNT(1) FROM TMS_MD_CUST_BANK_ACC_INF;--10540,21080
SELECT COUNT(1) FROM TMS_CRVAT_SS_TRX_INF;--3597,7194

SELECT COUNT(1) FROM TMS_MD_CUSTOMER;--7804,7804
SELECT COUNT(1) FROM tms_md_cust_site;--0
SELECT COUNT(1) FROM tms_md_cust_bank_accounts;--4452,4452

SELECT COUNT(1) FROM TMS_CRVAT_SS_TRX_ALL;--3597,10791
SELECT COUNT(1) FROM TMS_CRVAT_TRX_AFFIRM;--3597,10791

问题解决

received an invalid passwd!

  • 网段内有其他配置使用了相同的virtual_router_id

虚拟IP不能访问,但是真实IP却可以访问

  • 经过这两的不懈奋斗和大家的帮助,我的lvs在开启了iptables后,终于实现了负载均衡了,哈哈!
  • 添加的几条命令分别是
  • 192.168.1.20(虚拟IP地址)
    • 在lvs上执行
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.200 --dport 80 -j REDIRECT
iptables -I INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT
    • 在每台真实服务器上运行
ifconfig lo:0 192.168.1.20 netmask 255.255.255.255 up


echo "1" > /proc/sys/net/ipv4/ip_forward

光大直接vat后不能访问

配置80端口直接跳转? redirect ip ip:9080

登录后仍然跳转到登录

原因:未知

解决方案:所有tomcat都访问一遍后好了?

修改nginxi参数

  • 通过???进入linux控制台
  • 打开nginx.conf
vi /usr/local/nginx/conf/nginx.conf
  • 修改配置
按 i进入文件编辑模式
按右键修改upstream 中的参数
  • 保存配置
按esc键
输入:wq!保存并退出编辑
  • reload nginx
nginx -s reload

打开端口

vi /etc/sysconfig/iptables

80下新增一行

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT

重启 iptables

service iptables restart

常用命令

chmod -R 777 /home/dttserver/server/tomcat8080/logs

初始化脚本备份

delete from TMS_CRVAT_INVOICE_RECORD;
delete from TMS_CRVAT_SS_TRX_INF;
delete from TMS_CRVAT_SS_TRX_ALL;
delete from TMS_CRVAT_TRX_AFFIRM;--交易认定结果处理
delete from TMS_MD_TRX_CAT_BSN_STR;

delete from TMS_MD_FLEX_VALUE_SETS;

delete from TMS_MD_FLEX_STRUCTURES;
delete from TMS_MD_ORG_BSN_STRUCTURES;
delete from TMS_MD_TAX_TRX_TYPE;
delete from TMS_MD_BSN_COMBINATION;
delete from TMS_CRVAT_SPIT_ADJUST_POOL;


delete from TMS_CRVAT_CYCLE_COUNT_ENTRY;--(盘点库存表)
delete from TMS_CRVAT_CYCLE_COUNT_H;--(发票盘点主表)
delete from TMS_CRVAT_CYCLE_COUNT_INVOICE;--(盘点发票)
delete from TMS_CRVAT_CYCLE_COUNT_SUM;--(盘点汇总表)
delete from TMS_CRVAT_INVOICE_ALLOT_H;--(销项税发票分发头)
delete from TMS_CRVAT_INVOICE_ALLOT_L;--(销项税发票分发行)
delete from TMS_CRVAT_INVOICE_ALLOT_D;--(销项税发票分发明细表)
delete from TMS_CRVAT_INVOICE_ONHAND;--(库存明细表按照发票编码存储)
delete from TMS_CRVAT_INVOICE_TRX_H;--(销项税发票请领入库单头)
delete from TMS_CRVAT_INVOICE_TRX_L;--(销项发票请领入库单行)


delete from TMS_CRVAT_INV_REVERSE_REQ;--(销项发票红冲申请)
delete from TMS_CRVAT_INVOICE_ABOLISH;--(销项发票作废)
delete from TMS_CRVAT_INVOICE_ARCH_H;--(销项发票归档头表)
delete from TMS_CRVAT_INVOICE_ARCH_L;--(销项发票归档行表)
delete from TMS_CRVAT_INVOICE_LOST_H;--( 发票丢失—头信息)
delete from TMS_CRVAT_INVOICE_LOST_L;--(发票丢失—明细信息)
delete from TMS_CRVAT_INVOICE_RETURN_H;--(销项发票退回头表)
delete from TMS_CRVAT_INVOICE_RETURN_L;--(销项发票退回行表)
delete from TMS_CRVAT_INV_DELIVERY_H;--(发票寄送)
delete from TMS_CRVAT_INV_DELIVERY_L;--(发票寄送批明细)


delete from TMS_CRVAT_TRX_POOL_ALL;--(销项税开票交易池)
delete from TMS_CRVAT_INVOICE_REQ_H;--(销项税开票申请单-头表)
delete from TMS_CRVAT_INVOICE_REQ_L;--(销项税开票申请单-行表)
delete from TMS_CRVAT_INVOICE_REQ_P;--(销项税特殊开票申请单明细)
delete from TMS_CRVAT_INVOICE_PRE_H;--(销项税开票准备单-头表)
delete from TMS_CRVAT_INVOICE_PRE_L;--(销项税开票准备单-行表)
delete from TMS_CRVAT_INVOICE_PRE_P;--(销项税特殊开票准备单明细)
delete from TMS_CRVAT_INV_PRT_POOL_D;--(发票打印池明细表)
delete from TMS_CRVAT_INV_PRT_POOL_H;--(发票打印池-头表)
delete from TMS_CRVAT_INV_PRT_POOL_L;--(发票打印池-行表)
delete from TMS_CRVAT_INV_PRT_POOL_HIS_D;--(发票打印池明细历史表)
delete from TMS_CRVAT_INV_PRT_POOL_HIS_H;--(发票打印池历史头表)
delete from TMS_CRVAT_INV_PRT_POOL_HIS_L;--(发票打印池历史行表)


delete from TMS_MD_CUSTOMER;--(购方信息)
delete from TMS_MD_CUSTOMER_HIS;--(购方变更历史信息)
delete from TMS_MD_CUST_BANK_ACCOUNTS;--(购方银行或资金账户信息)

delete from TMS_MD_EQUIPMENT t;--(服务器与终端信息维护)
delete from TMS_MD_LEGAL_ENABLE_PRINT;--(纳税人主体与打印店关系)
delete from TMS_MD_LEGAL_EQUIPMENT;--(纳税主体与打印终端的关系)
delete from TMS_MD_LEGAL_INVOICE;--(纳税主体与发票种类限额关系)
delete from TMS_MD_LEGAL_TAX_CATEGORY;--(纳税主体与汇缴(税种)关系)
delete from TMS_MD_USAGE_LOCAL_LEGAL;--(最终打印发票纳税人)

--进项,需要重新整理
delete from TMS_DRVAT_INVOICE_TRX_D;
delete from TMS_DRVAT_INVOICE_TRX_L;
delete from TMS_DRVAT_INVOICE_TRX_H;

delete from TMS_DRVAT_INVOICE_RECORD;

delete from base_org t where t.org_id!='ORGID-0000-0000-0000-0000-0000-00001';--机构
delete from TMS_MD_LEGAL_ENTITY t where t.legal_entity_id!='ENTITYID-0000-0000-0000-00000000001 ';--纳税主体
delete from tms_md_org_legal_entity t where t.legal_entity_id!='ENTITYID-0000-0000-0000-00000000001 ';--机构和纳税主体

delete from base_user t where t.username!='admin';

delete from base_user_org t
 where t.username != 'admin'
   and t.org_id != 'ORGID-0000-0000-0000-0000-0000-00001'
   and t.deleted_flag != '1';

delete from base_role_resource;

delete from base_log;