jboss单机环境搭建
1、操作系统:centos7
2、需要的包:apache,wildfly,postgres(要初始化),activemq
3、安装流程:
一、安装依赖包并部署服务:httpd,wildfly,mq,postgres,然后启动各个服务
二、mq和postgres之间的配置:需要postgres的jdbc驱动上传到mq的lib,并修改activemq.xml文件,登录postgres对mq授权
三、postgres:执行createDatabaseRolesSchemasTablespaces.sql,创建用户表空间并授权
四、postgres:导入数据库文件,最后重启postgres和mq
五、wildfly和postgres的数据源配置:上传postgres的jdbc驱动(/u01/opt/prodclusterscb/modules/org/postgresql/main)通过命令添加postgres数据源;上传驱动,修改standalone-full.xml里面数据源配置,启动服务
六、httpd配置对wildfy的监听(反向代理和负载均衡):用apache自带的mod_proxy_balancer.so多节点的集群代理方法
七、配置httpd的ssl证书并浏览器验证
4、配置:
一、apache和wildfly:
首先
##http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/ 去这个地方下载个 当前apache 同版本的 mod_jk.so 文件
然后将下载到的mod_jk.so 拷贝到 apache 的modules 目录下
在 apache 的配置文件中添加
Include "conf/mod_jk.conf"
在 apache 的conf 目录下
创建 mod_jk.conf
并写入内容:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkShmFile logs/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /* jboss
创建:workers.properties
写入内容
worker.list=jboss
worker.jboss.type=ajp13
worker.jboss.host=localhost
worker.jboss.port=8009
worker.jboss.lbfactor=50
worker.jboss.cachesize=10
worker.jboss.cache_timeout=600
worker.jboss.socket_keepalive=1
worker.jboss.socket_timeout=300
其实有些配置项是可选的 可根据实际需要做适当的增减
写完这些之后 先启动 WildFly 打开WidFly控制台
依次找到并点击 Web>>HTTP>>View>>AJP listener Add
最后填写如下内容 点击 finnish
然后再重启 Apache 不出意外外的话
打开浏览器 直接访问 127.0.0.1 应该出现的是 wildfly 的默认首页
好了大功告成 !!
二、wildfly和postgres:
1 下载postgresql jdbc driver
2 启动wildfly
3 添加postgresql支持到wildfly
4 增加wildfly数据源
http://activemq.apache.org/persistence.html
http://activemq.apache.org/jdbc-support.html
我并不是完全按照官网来的,
1,我备份了一份activemq.xml后就在上面改了,否则按官网的说法要每次启动ActiveMQ时都要指定配置文件,觉得这可能会是个坑
2,官网上用的是dbcp2+mysql,我用的是c3p0+postgresql,配置如下
<!--PostgreSQL DataSource By Qbit-->
<bean id="postgreSql-ds" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="org.postgresql.Driver"/>
<!-- jdbcUrl not jdbcurl -->
<property name="jdbcUrl" value="jdbc:postgresql://192.168.60.128:5432/activemq"/>
<property name="user" value="activemq"/>
<property name="password" value="mima"/>
<!-- the properties are the same with the default value -->
<property name="maxPoolSize" value="15"/>
<property name="minPoolSize" value="3"/>
<property name="initialPoolSize" value="3"/>
<property name="maxIdleTime" value="0"/>
<!-- invalid
<property name="maxIdleTime">0</property>
-->
<property name="checkoutTimeout" value="0"/>
<property name="acquireIncrement" value="3"/>
<property name="acquireRetryAttempts" value="0"/>
</bean>
后面几个完全是无聊配置的,参考的http://blog.csdn.net/caihaijiang/article/details/6843496
这里也有官方文档http://www.mchange.com/projects/c3p0/index.html
按照http://www.cnblogs.com/chenying99/articles/3172128.html上面的说法,可以使用高效日志
postgres=# create database activemq with owner = activemq encoding='UTF8' tablespace=pg_default lc_collate='zh_CN.UTF-8' connection limit=-1 template template0;
CREATE DATABASE
postgres=# grant connect on database activemq to activemq;
GRANT
activemq=# create schema activemq;
CREATE SCHEMA
activemq=# grant all privileges on schema activemq to activemq;
GRANT
activemq=# alter database activemq set search_path to activemq;
ALTER DATABASE
activemq=# alter role activemq set search_path=activemq;
ALTER ROLE
<span style="font-family:Arial;font-size:14px;line-height: 26px;">grant usage on schema activemq to activemq;</span>
<span style="font-family:Arial;font-size:14px;line-height: 26px;"><span style="font-family:Arial;font-size:14px;line-height: 26px;">grant create on schema activemq to activemq;</span>
</span>
貌似上面最后两句还是需要的,那个all privileges不好使.
activemq启动的时候会自动在postgresql里创建相应的三个数据库,到activemq的web控制台发条queue消息,勾上persistence,然后就会在数据库的msgs里看到一条记录,但是消息本身是什么内容是无法看到的,然后启动java程序消费掉那条消息后数据库的数据就没了.
最后附上java代码
import javax.jms.*;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by qbit on 12/8/16.
*/
public class PersistencedActiveMq implements Callable<Object>,Runnable,MessageListener{
public static final String user = ActiveMQConnection.DEFAULT_USER;
public static final String password = ActiveMQConnection.DEFAULT_PASSWORD;
public static final String SERVER_IP="192.168.60.128";
public static final String url ="failover://tcp://"+SERVER_IP+":61616";// ActiveMQConnection.DEFAULT_BROKER_URL;
public static final String subject = "Qbit_message";
private static final AtomicInteger counter=new AtomicInteger(0);
public static void main(String[] args) throws InterruptedException {
ExecutorService pool= Executors.newCachedThreadPool();
PersistencedActiveMq pam=new PersistencedActiveMq();
pool.submit((Callable)pam);
pool.shutdown();
}
@Override
public void run() {
try {
final int index=counter.getAndIncrement();
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
user, password, url);
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(subject);
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
connection.start();
for(int i=0;i<5;i++) {
final String message=subject+':'+index+':'+i;
TextMessage msg = session.createTextMessage(message);
System.out.println("Producer:->Sending message: " + message);
producer.send(msg);
System.out.println("Producer:->Message sent complete!");
}
if (producer != null)
producer.close();
if (session != null)
session.close();
if (connection != null)
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public Object call() throws Exception {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
user, password, url);
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(subject);
MessageConsumer consumer = session.createConsumer(destination);
connection.start();
System.out.println("Consumer:->Begin listening...");
consumer.setMessageListener(this);
Thread.sleep(9*1000);
if (consumer != null)
consumer.close();
if (session != null)
session.close();
if (connection != null)
connection.close();
return null;
}
@Override
public void onMessage(Message message) {
System.out.println("Consumer:->Received: " + message);
}
}
备注:
wildfly
wildfly启动:
./standalone.sh -bmanagement 0.0.0.0 -c=standalone-full.xml
端口:9260
访问地址:http://192.168.3.15:9260/console/index.html#deployments
部署方式:
一、命令部署:
1.进入wildfly控制台:/u01/opt/prodclusterscb/bin/jboss-cli.sh --connect controller=remote+http://192.168.3.15:9260
2.部署命令:deploy /u02/deploy_altadcb/activemq-rar.rar --force
3.先部署res.zip ,activemq-rar.rar包,然后依次部署: CDA.ear, DMS.ear, RMS.ear, POI.ear, CLS.ear, WFE.ear, SSE.ear, POM.ear, API.ear
二、控制台部署:
多节点集群思路:
1.was1(master)上面已经安装apache、jboss、postgresql、mq
2、was2(slave)上面只需要安装一个jboss就可以了,把postgres的jdbc的驱动上传到jboss的org目录(/u01/opt/prodclusterscb/modules/system/layers/base/org/postgresql/main)
3.按照部署文档和培训视频配置集群,was1:domain.xml,host.xml;was2:host_slave.xml
4.在was1的apache配置反向代理和负载均衡,把was1和was2都加进去
5.在was1的domaim.xml里面配置was1和was2的数据源(postgresql)
wildfly
wildfly启动:
./standalone.sh -bmanagement 0.0.0.0 -c=standalone-full.xml
端口:9260
访问地址:http://192.168.3.15:9260/console/index.html#deployments
部署方式:
一、命令部署:
1.进入wildfly控制台:/u01/opt/prodclusterscb/bin/jboss-cli.sh --connect controller=remote+http://192.168.3.15:9236
2.部署命令:
单机:deploy /u02/deploy_altadcb/activemq-rar.rar
集群:deploy /u02/deploy_altadcb/activemq-rar.rar --server-groups=other-server-group
3.先部署res.zip:解压到/opt/tmp_finshare/reports
4.activemq-rar.rar包,然后依次部署: CDA.ear, DMS.ear, RMS.ear, POI.ear, CLS.ear, WFE.ear, SSE.ear, POM.ear, API.ear
添加slave用户:<secret value="c2xhdmU=" />
jboss单机环境搭建的更多相关文章
- windows7 spark单机环境搭建及pycharm访问spark
windows7 spark单机环境搭建 follow this link how to run apache spark on windows7 pycharm 访问本机 spark 安装py4j ...
- [转载] Hadoop和Hive单机环境搭建
转载自http://blog.csdn.net/yfkiss/article/details/7715476和http://blog.csdn.net/yfkiss/article/details/7 ...
- Kafka 0.7.2 单机环境搭建
Kafka 0.7.2 单机环境搭建当下载完Kafka后,进行解压,其目录结构如下: bin config contrib core DISCLAIMER examples lib lib_manag ...
- kafka单机环境搭建及其基本使用
最近在搞kettle整合kafka producer插件,于是自己搭建了一套单机的kafka环境,以便用于测试.现整理如下的笔记,发上来和大家分享.后续还会有kafka的研究笔记,依然会与大家分享! ...
- HBase单机环境搭建
在搭建HBase单机环境之前,首先你要保证你已经搭建好Java环境: $ java -version java version "1.8.0_51" Java(TM) SE Run ...
- Hadoop —— 单机环境搭建
一.前置条件 Hadoop的运行依赖JDK,需要预先安装,安装步骤见: Linux下JDK的安装 二.配置免密登录 Hadoop组件之间需要基于SSH进行通讯. 2.1 配置映射 配置ip地址和主机名 ...
- win10+pyspark+pycharm+anaconda单机环境搭建
一.工具准备 1. jdk1.8 2. scala 3. anaconda3 4. spark-2.3.1-bin-hadoop2.7 5. hadoop-2.8.3 6. winutils 7. p ...
- Linux服务器Jboss运行环境搭建步骤和开机自动启动脚本编写运行
Jboss运行环境:Linux+Jdk+Jboss+jsp系统 Jboss软件说明:类似于Tomcat,就是一个跑Jsp系统的环境,他的站点路径跟Tomcat类似,Tomcat存放站点文件到webap ...
- Solr单机环境搭建及部署
一.定义 官网的定义: Solr是基于Lucene构建的流行,快速,开放源代码的企业搜索平台.它具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平衡查询,自动故障转移和恢复,集中式配 ...
- hadoop单机环境搭建
[在此处输入文章标题] Hadoop单机搭建 1. 工具准备 1) Hadoop Linux安装包 2) VMware虚拟机 3) Java Linux安装包 4) Window 电脑一台 2. 开始 ...
随机推荐
- springcloud微服务搭建demo
软件 版本 IDEA 2022.3.1 <兼容maven 3.8.1及之前的所用版本> JDK 1.8_64 Maven 3.8.2 本demo只使用了服务发现与注册.Feign调用及负载 ...
- try...catch中finally子句的使用
目录: finally的使用 finally面试题 final.finally.finalize的区别 finally子句的使用: 1.在finally子句中的代码是最后且一定会执行的,即使try语句 ...
- vue+element 返回数组或json数据自定义某列显示的处理--两种方法
本文是作者开发一个业务需求时,将返回数据列表的其中一个数据长度很长的字段处理成数组,并将其作为子表显示的过程,具体样式如下(数据做了马赛克处理) 返回的过长字段数据处理(用分号分隔的一个长字段): t ...
- echarts的颜色渐变
官网文档解释 // 线性渐变,前四个参数分别是 x0, y0, x2, y2, //范围从 0 - 1,相当于在图形包围盒中的百分比, //如果 global 为 `true`,则该四个值是绝对的像素 ...
- LG P4980【模板】Pólya 定理
\(\text{Solution}\) \[ans = \frac{1}{n}\sum_{i=1}^n n^{(i,n)} = \frac{1}{n}\sum_{d|n}n^d\varphi(\fra ...
- Vulhub 漏洞学习之:ECShop
Vulhub 漏洞学习之:ECShop 目录 Vulhub 漏洞学习之:ECShop 1 ECShop 2.x/3.x SQL注入/远程命令执行漏洞 1.1 环境安装 1.2 漏洞产生原因 1.3 漏 ...
- Infinity 和 -Infinity
认识 Infinity 在 JavaScript 中超出 1.797693134862315E+308 的数值即为 Infinity,小于 -1.797693134862316E+308 的数值为无穷 ...
- 常用的hive sql
细节:sql 中有涉及到正则匹配函数的,要注意转义符号 因为在不同语言下正则匹配规则是否需要加转义符号是不同的,举例,regexp_replace 函数,在hive sql的正则匹配规则的 \d+ 需 ...
- 从0搭建Vue3组件库(三): 组件库的环境配置
本篇文章将在项目中引入 typescript,以及手动搭建一个用于测试组件库组件 Vue3 项目 因为我们是使用 Vite+Ts 开发的是 Vue3 组件库,所以我们需要安装 typescript.v ...
- 运维排查篇 | Linux 连接跟踪表满了怎么处理
nf_conntrack (在老版本的 Linux 内核中叫 ip_conntrack )是一个内核模块,用于跟踪一个网络连接的状态 一旦内核 netfilter 模块 conntrack 相关参数配 ...