|
环境需求:tomcat7,jdk7,mongoDB最新版(搭建replacia set模式),maven 服务器nexus,,svn, php
linux 版本centos
jdk7+tomcat7+centos 安装
http://blog.sina.com.cn/s/blog_704836f40100yyc9.html
安装jdk7的时候要先卸载之前的 OpenJDK
[root@localhost ~]# java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.13) (rhel-1.65.1.11.13.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
[root@localhost ~]# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.0-1.65.1.11.13.el6_4.x86_64
tzdata-java-2013g-1.el6.noarch
[root@localhost ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.65.1.11.13.el6_4.x86_64
[root@localhost ~]# rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
[root@localhost ~]# rpm -qa | grep java
[root@localhost bin]# cd commons-daemon-1.0.15-native-src/unix/
[root@localhost unix]# ./configure
*** Current host ***
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking cached host system type... ok
*** C-Language compilation tools ***
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
需要安装gcc组件
yum -y install gcc
nexus做Mave私服
http://my.oschina.net/shootercn/blog/12269
http://blog.csdn.net/cuker919/article/details/6338039
Maven.pdf 2.2节基于unix的系统上安装
Maven.pdf 第9章Nexus 创建私服
出现这个状况是因为 nexus目录权限的问题修改权限即可。
chown -R apaduser:apaduser nexus-2.6.4-02
chown -R apaduser:apaduser nexus
install MongoDB on Red Hat Enterprise,CentOS,or Fedora Linux
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
mongodb replica set configuration
http://docs.mongodb.org/manual/reference/replica-configuration/
centos svn server 安装配置
http://www.ha97.com/4467.html
相关下载:
jdk7_linux_64
http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.rpm
apche-tomcat7.0.42
http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz
————————————————————————————————————————————————————————
mongodb安装(centos or redhat)
vim /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum install mongo-10gen mongo-10gen-server
yum install mongo-10gen-2.4.6 mongo-10gen-server-2.4.6
防止意外的升级mongodb 在 /etc/yum.conf 增加如下内容
exclude=mongo-10gen,mongo-10gen-server
配置文件位置/etc/mogod.conf ,初始化脚本位置/etc/rc.d/init.d/mongod
这个MongoDB实例,的数据文件在/var/lib/mongo 日志文件位置 /var/log/mongo
#如果切换用户运行MongoDB进程,需要修改/var/lib/mongo 和/var/log/mongo 的文件夹权限。
启动MongoDB
service mongod start
停止MongoDB
service mongod stop
重启MongoDB
service mongod restart
————————————————————————————————————————————————————————
第五部分架构篇第二十一章 Replica Sets 复制集
MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为 MongoDB 提供了数据一致性的保障。担当 Primary 角色的机器能把读操作分发给 slave。
MongoDB 高可用可用分两种:
Master-Slave 主从复制:
只需要在某一个服务启动时加上–master 参数,而另一个服务加上–slave 与–source 参数, 即可实现同步。MongoDB 的最新版本已不再推荐此方案。
ReplicaSets复制集:
MongoDB 在 1.6 版本对开发了新功能 replica set,这比之前的 replication 功能要强大一些,增加了故障自动切换和自动修复成员节点,各个 DB 之间数据完全一致,大大降低了维护成功。auto shard 已经明确说明不支持 replication paris,建议使用 replica set,replica set 故障切换完全自动。
如果上图所示,Replica Sets 的结构非常类似一个集群。是的,你完全可以把它当成集群,因为它确实跟集群实现的作用是一样的,其中一个节点如果出现故障,其它节点马上会将业务接过来而无须停机操作。
21.1 部署 Replica Sets 接下来将一步一步的给大家分享一下实施步骤:
1、创建数据文件存储路径
2、创建日志文件路径
[root@localhost ~]# mkdir -p /data/log
3、创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一致,程序将不能正常用。
4、启动 3 个实例
[root@localhost ~]# mkdir -p /data/data/r0
[root@localhost ~]# mkdir -p /data/data/r1
[root@localhost ~]# mkdir -p /data/data/r2
[root@localhost ~]# mkdir -p /data/key
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r0
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r1
[root@localhost ~]# echo "this is rs1 super secret key" > /data/key/r2
[root@localhost ~]# chmod 600 /data/key/r*
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r0 --fork --port 28010 --dbpath /data/data/r0 --logpath=/data/log/r0.log --logappend
all output going to: /data/log/r0.log
forked process: 6573
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r1 --fork --port 28011 --dbpath /data/data/r1 --logpath=/data/log/r1.log --logappend
all output going to: /data/log/r1.log
forked process: 6580
[root@localhost ~]# /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r2 --fork --port 28012 --dbpath /data/data/r2 --logpath=/data/log/r2.log --logappend
all output going to: /data/log/r2.log
forked process: 6585
[root@localhost ~]#
5、配置及初始化 Replica Sets
配置 replca set
[root@localhost data]# mongo -port 28010
MongoDB shell version: 2.4.6
connecting to: 127.0.0.1:28010/test
> config_rs1 = {_id:'rs1',members:[
... {_id: 0,host:'localhost:28010',priority:1},
... {_id: 1,host:'localhost:28011'},
... {_id: 2,host:'localhost:28012'}]
... }
{
"_id" : "rs1",
"members" : [
{
"_id" : 0,
"host" : "localhost:28010",
"priority" : 1
},
{
"_id" : 1,
"host" : "localhost:28011"
},
{
"_id" : 2,
"host" : "localhost:28012"
}
]
}
初始化配置
> rs.initiate(config_rs1);
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
查看复制集的状态
rs1:SECONDARY> rs.status()
{
"set" : "rs1",
"date" : ISODate("2013-10-25T11:14:53Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "localhost:28010",
"health" : 1, 1表示正常;0表示异常
"state" : 1, 1表明是 Primary;2表示是 Secondary;
"stateStr" : "PRIMARY", 表明此机器是主库
"uptime" : 1168,
"optime" : Timestamp(1382699470, 1),
"optimeDate" : ISODate("2013-10-25T11:11:10Z"),
"self" : true
},
{
"_id" : 1,
"name" : "localhost:28011",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 218,
"optime" : Timestamp(1382699470, 1),
"optimeDate" : ISODate("2013-10-25T11:11:10Z"),
"lastHeartbeat" : ISODate("2013-10-25T11:14:53Z"),
"lastHeartbeatRecv" : ISODate("2013-10-25T11:14:53Z"),
"pingMs" : 0,
"syncingTo" : "localhost:28010"
},
{
"_id" : 2,
"name" : "localhost:28012",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 218,
"optime" : Timestamp(1382699470, 1),
"optimeDate" : ISODate("2013-10-25T11:11:10Z"),
"lastHeartbeat" : ISODate("2013-10-25T11:14:53Z"),
"lastHeartbeatRecv" : ISODate("2013-10-25T11:14:52Z"),
"pingMs" : 0,
"syncingTo" : "localhost:28010"
}
],
"ok" : 1
}
还可以用 isMaster 查看 Replica Sets 状态。
rs1:PRIMARY> rs.isMaster()
{
"setName" : "rs1",
"ismaster" : true,
"secondary" : false,
"hosts" : [
"localhost:28010",
"localhost:28012",
"localhost:28011"
],
"primary" : "localhost:28010",
"me" : "localhost:28010",
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"localTime" : ISODate("2013-10-25T11:18:38.231Z"),
"ok" : 1
}
读写分类
1,主库中插入一条测试数据
[root@localhost data]# mongo --port 28010
MongoDB shell version: 2.4.6
connecting to: 127.0.0.1:28010/test
rs1:PRIMARY> db.c1.insert({age:30})
rs1:PRIMARY> db.c1.find()
{ "_id" : ObjectId("526a5841f38d5f1304bcff8c"), "age" : 30 }
2,在从库中进行查询等操作
rs1:SECONDARY> show collections
Fri Oct 25 19:40:29.837 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:128
rs1:SECONDARY> db.getMongo().setSlaveOk()
rs1:SECONDARY> db.c1.find()
{ "_id" : ObjectId("526a5841f38d5f1304bcff8c"), "age" : 30 }
rs1:SECONDARY> show collections
c1
system.indexes
————————————————————————————————————————————————————————
软件下载
apache-maven
http://apache.fayea.com/apache-mirror/maven/binaries/apache-maven-3.0.5-bin.tar.gz
nexus
http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
maven安装配置
1,创建用户和用户组
groupadd apaduser
useradd -g apaduser apaduser
passwd apaduser //设置密码
2,创建解压目录
mkdir -p /opt/maven
mv apache-maven-3.0.5-bin.tar.gz /opt/maven
cd !$
tar -zvxf apache-maven-3.0.5-bin.tar.gz
ln -s apache-maven-3.0.5 apache-maven
chown -R apaduser:apaduser /opt/maven
3,配置环境变量
cd
vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
M2_HOME=/opt/maven/apache-maven
export M2_HOME
PATH=$PATH:$M2_HOME/bin
export PATH
source .bash_profile
4,查看版本
/opt/maven/apache-maven/bin -version
5,查看.m2目录
cd /home/apaduser/.m2
如果没有这个目录则创建一个
mkdir .m2
6、如果需要把maven的repository目录指定到其他目录,则修改maven安装目录下conf中的配置文件settings.xml文件
1. #vi /opt/maven/apache-maven/conf/settings.xml
2. 将文件中….的注释打开
3. 或者在文件中增加在这个注释下增加
4. your repository path
二、搭建nexus私服
1、解压nexus-oss-webapp-1.8.0-bundle.tar.gz文件到指定目录
使用root用户进行操作
1.#cp nexus-oss-webapp-1.8.0-bundle.tar.gz /usr/local
2.#tar -zvxf nexus-oss-webapp-1.8.0-bundle.tar.gz
3.#ln –s nexus-oss-webapp-1.8.0 nexus
4.chown -R apaduser:apaduser /usr/local/sonatype-work/ /usr/local/nexus /usr/local/nexus-2.6.4-02/
2、启动nexus
1.#cd /usr/local/nexus/bin/jsw
2.
3.选择自己机器的版本:
4.
5.#cd linux-x86-64/
6.#./nexus start
7.
8.重启:
9.#./nexus restart
10.停止:
11.#./nexus stop
3、运行nexus
在浏览器中输入:http://changethislocalhost:8081/nexus
就可以看到nexus 的主页,点击右上角Log in
默认用户名和密码是:admin/admin123
运行后会自动生成一个nexus工作目录sonatype-work,nexus下载的jar包会存放在
sonatype-work/nexus/storage中
4、配置
1) 点击左侧菜单Repositories
分别将右侧列表中
1. Apache Snapshots 2. Codehaus Snapshots 3. Maven Central
三个repository 的configuration配置选项中的Download Remote Index 配置改为True,并保存设置,
然后在列表中分别右键点击三个Repository,点击ReIndex
true是开启,false是关闭由于中央仓库内容比较多,因此其索引文件比较大,需要查看下载是否完成了,我们可以单击界面左边导航栏中的 Scheduled Tasks 链接后,就可以看到系统调度的任务其状态为 runing,在说哦因下载完毕之后,该任务就会消失。
Scheduled Tasks 界面:
只有下载了,在search查询才会有东西,不然什么都搜索不到。
2)增加新的Repository,有一些比较常用jar包在nexus提供的repository中可能找不到,
一般比较常用的有
1.JBOSS的两个:
2.http://repository.jboss.org/maven2/
3.http://repository.jboss.org/nexus/content/repositories/releases/
4.SUN的:
5.http://download.java.net/maven/2/
6.K-INT的:
7.http://developer.k-int.com/maven2/
8.
9.因为找juel:juel-impl:2.2.1这个jar包,所以我还添加了一个自己找的:
10.http://repository.exoplatform.org/content/groups/public/
添加步骤:
点击Add->Proxy Repository->填写Repository> 3) 将新增的Repository添加到Public Repositories中
在Public Repositories 的Configuration中,将多选Select中的项全部添加到左边,然后保存。
4) 添加自己的jar包
1.在repository列表中有一个3rd party,也就是第三方jar包,点击会看到一个Artifact Upload选项卡,点击后,填写相应的信息。
2.GAV Definition 一般选择 GAV Parameters
3.然后添加Group:Artifact:Version:Package
4.示例 juel:juel-impl:2.2.1:jar
然后选择要上传的jar包,保存即可
比如我们项目需要如下几个包:
javax.jms:jms:1.1:jar
proxool:proxool:0.9.1:jar
proxool:proxool-cglib:0.9.1:jar
com.lowagie:itextasian:1.0:jar
com.danga.MemCached:memcached:2.0.1:jar
5) nexus中设置代理服务器
选择左侧administrator菜单中的Server选项,在右侧打开的页面的中下部,有一个选择项:Default HTTP Proxy Settings(optional) 将前面的复选框选中,填写相应的代理服务器信息即可。web-proxy.cce.hp.com:8080
6) 编写自己的settings.xml,文件内容如下:
1.
2.
3.
4. normal
5. true
6. http
7. deployment
8. deploy
9. changethislocalhost:8081/nexus
10. 80
11. changethislocalhost:8081/nexus
12.
13.
14.
15.
16.
17.
19. nexus-public-snapshots
20. public-snapshots
21. http://changethislocalhost:8081/nexus/content/groups/public-snapshots
22.
23.
24.
25. nexus
26. *
27. http://changethislocalhost:8081/nexus/content/groups/public
28.
29.
30.
31.
32.
33. nexus
34.
35.
36. central
37. http://central
38. true
39. true
40.
41.
42.
43.
44. central
45. http://central
46. true
47. true
48.
49.
50.
51.
52.
53. public-snapshots
54.
55.
56. public-snapshots
57. http://public-snapshots
58. false
59. true
60.
61.
62.
63.
64. public-snapshots
65. http://public-snapshots
66. false
67. true
68.
69.
70.
71.
72.
73. nexus
74.
75.
将settings.xml文件复制到${user}/.m2目录下
7) 测试
创建一个maven项目
#mvn archetype:generate
如果创建一个web项目可以选择83
填写相应的信息,maven会从私服上下载相应的jar包,看到的地址应该都是changethislocalhost的
项目创建成功后,将自己的pom.xml文件放在项目,执行
#mvn install 或者#mvn package
mvn会下载pom.xml文件定义的jar依赖
下载完成后,你可以在自己指定的repository目录下, 如果没有指定则是在 .m2/repository目录下查看自己的jar包
至此,我们的maven安装以及私服的搭建工作就完成了。
|
|