有时候网络不能直接访问外网, 需要设置代理
设置方式如下:
一、检测本地网络是否不能直接访问Maven的远程中央仓库,命令为ping repo1.maven.org
二、要检查代理服务器是否畅通,
比如现在有一个IP地址为192.168.10.117,端口为3267的代理服务,我们需要先运行telnet 192.168.10.117 3267来检查该地址的该端口是否畅通,
如果得道出错信息需要先获取正确的代理服务器信息,
如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。
三、检查完毕之后,在安装目录中编辑~/.m2/settings.xml文件,
代码如下:
添加代理配置如下:
<settings>
...
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.10.117</host>
<port>3267</port>
<!--
<username>shihuan</username>
<password>123456</password>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
-->
</proxy>
</proxies>
...
</settings>
这段配置十分简单,proxies下可以有多个proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。
这里声明了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和端口(port元素)。
上述XML配置中我注释掉了username、password、nonProxyHost几个元素,当你的代理服务需要认证时,就需要配置username和password。
nonProxyHost元素用来指定哪些主机名不需要代理,可以使用 | 符号来分隔多个主机名。
此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。
已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来business-central是只可以有一个kie-server的远程服务器. 天生就不能集群部署,五来,搭建kie-server的集群是是不能使用 --link参数来指定对应的business-central的, 也就是说搭建的kie-server集群暂时不能指定business-central.ok结论是 kie-server是三个node的集群, business-central不集群部署,只部署一台服务器. 而且business-central与kie-server不再进行连接. 也就是b 不指定kie-server远程服务器 . 现状暂时如此,以下是讲如此架构下的发布流程.
kie-server对外暴露了一个接口, 用于发布项目.
get请求 http://xxxx.104:8180/kie-server/services/rest//server/containers/testCreate
body:
每个node是有本地maven库的, 会根据请求的三个参数从maven本地库找到这个jar 然后部署成一个kie-server里的一个容器. 容器就是kie-server对外提供服务的一个服务器之下的一个最高的组织方式.
ok为了验证可用性 手动把jar分别放进每个node里 并分别执行cp命令将jar从服务器的临时目录copy到容器里maven本地库下的指定目录里
结果是确实发送了get命令后会部署成功. ok验证通过. 但问题也很明显. 发布过程过于手动化, 对于开发人员来说很容易造成误操作, 比如某个node遗漏了cp命令, 还有一个问题 更严重, 因为已经利用了swarm的特性 已经是负载均衡的了, 所以put请求到了哪个node是不确定的, 需要打开日志发送多次put请求 确保每个node都发布成功了. 这个操作很…很蠢
ok在上一步的基础上更进一步假设如果每个node都连接同一个远程maven库, 那就只需要将代码发布到这个远程库, 即可以达到让每个node都能接受到这个资源从而进行发布, 就不需要人工把jar copy到各个node了./opt/jboss/.m2/repository目录会自动建的, 下面有setting.xml配置文件 文件内容很有帮助,
首先setting.xml是maven的配置文件 配置了服务器在哪等等信息. 注释的大致意思是
KIE_MAVEN_REPO - Defaults to http://localhost:8080/drools-wb/maven2
KIE_MAVEN_REPO_USER - Defaults to admin
KIE_MAVEN_REPO_PASSWORD - Defaults to admin
文件使用环境变量来配置, 三个关键的环境变量如上.
也就是说我们创建 kie-server集群的时候如果指定了环境变量 也就可以给每个node指定他的maven服务器地址. 很nice
ok下一步要开一个maven远程服务器 ,并验证可以将本地代码install的jar报 deploy到远程maven服务器.
docker run -d -p 8001:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
第一步利用docker创建一个maven服务器的容器. docker真是越用越好用.
然后http://172.16.250.104:8001 就可以看到maven的管理页面了, 需要密码
进入容器根目录, 下面有nexux-date目录, 里面原来有个admin.password的文件. 打开里面就是admin 的密码 .因为登录后改密码之后这个默认密码的文件消失了, 所以截图里没有
主要是复制下这两个的url
然后本地pc打开 IDEA, 设置 maven /user serttings file override . 然后编辑本地的setttings.xml 全文如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>9b1f9129-0b87-460c-9435-37a754198655</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>9b1f9129-0b87-460c-9435-37a754198655</password>
</server>
</servers>
<mirrors>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<properties>
<altSnapshotDeploymentRepository>
nexus-snapshots::default::http://172.16.250.104:8001/repository/maven-snapshots/
</altSnapshotDeploymentRepository>
<altReleaseDeploymentRepository>
nexus-releases::default::http://172.16.250.104:8001/repository/maven-releases/
</altReleaseDeploymentRepository>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
关键信息是server和两个url.
maven的配置好了, 然后是项目代码的配置,
对项目来说 ,因为项目用的maven 的配置文件里有了profile nexus, 所以在IDEA里打开项目可以看到profiles nexus是固定选中的
打开项目文件里的 pom.xml 顶级节点下添加如下代码
<distributionManagement>
<!--正式版本-->
<repository>
<!-- 在settings.xml中<server>的id-->
<id>nexus-releases</id>
<url>http://172.16.250.104:8001/repository/maven-releases/</url>
</repository>
<!--快照版本-->
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://172.16.250.104:8001/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ok 这样项目在执行 maven deploy命令的时候就会把install的时候生成的jar发布到远程服务器.根据版本号是否是快照 决定发布到正式还是快照的repostitory, 效果如下
这时候就可以在maven的后台管理页面看到刚deploy的jar
ok至此maven服务器和发布流程已经验证通过, 结束.
下一步是kie-server在部署集群的时候设置环境变量, 让集群中的每个node都连上maven服务器.
还有个问题没有解决, 即put发布命令是被负载均衡了的, 怎么保证每个节点都能确保发布.可能要发布的时候指定一下网络,不用ingress 发布好了之后再改成ingress ? 这要考虑下, 不过还好问题不大
安装JDK先查看下 yum list java*
yum install java-1.7.0-openjdk* -y
环境变量应该是会自动配置的
或者手动配置编辑/etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_25
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
安装maven
yum -y install apache-maven
这时候可能会报错
这时候需要用wget命令去网络上下载资源包
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
然后重新安装maven
mvn -V 查看maven的安装路径,jdk的也一起显示啦
安装ant
yum install -y ant
6
查看下ant的安装路径
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)