一. 准备工作
1.1 创建用户及工作目
root用户登录后执行
useradd csdn -------创建用户csdn
passwd csdn -------
说明:新创建的用户会在/home下创建一个用户目录csdn
1.2.1 系统
centOS 64位
1.2.2 软件
Nginx:1.12.1 stable version及相关库
JDK:8u141/1.8
Memcached及相关jar包
tomcat1/2/3:7.0.79
二. JDK的安装
2.1 准备
从Java官方网站下载相应的JDK版本,如jdk-8u141-linux-x64.tar.gz,并放在/usr/java目录下。
2.2 安装步骤
进入放有jdk安装包的目录
cd /usr/java
直接解压,配置环境变量
# tar –xvf jdk-8u141-linux-x64.tar.gz
1、 修改环境变量
# vi /etc/profile
2、 在最后加入以下几行:
export JAVA_HOME=/usr/java/jdk-8u141-linux-x64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
3、 执行以下命令让配置文件生效
source /etc/profile
三. Tomcat的安装3.1 准备tomcat安装包
apache-tomcat-7.0.79.zip
3.2 安装步骤
将tomcat上传到相应用户目录
使用Xftp工具把tomcat安装包apache-tomcat-7.0.79.zip包在windows环境下解压后,文件夹apache-tomcat-7.0.79直接传输到/home/ csdn/目录下即可。
3.3 配置tomcat
/home/csdn/apache-tomcat-7.0.79/conf/server.xml中以下代码处添加utf-8编码,如下图所示:
3.4 启动tomcat
#使用命令进入到tomcat的bin目录下
#./startup.sh 启动tomcat
#./shutdown.sh 关闭tomcat
以上,一个tomcat就配置好了。
3.5 配置多台tomcat
如果要同时配置多个及以上tomcat(以两个为例,多个依此类推)
则需修改环境变量如下:
vi /etc/profile
加入以下代码
CATALINA_1_BASE=/home/csdn/tomcat1
CATALINA_1_HOME=/home/csdn/tomcat1
export CATALINA_1_BASE CATALINA_1_HOME
CATALINA_2_BASE=/home/csdn/tomcat2
CATALINA_2_HOME=/home/csdn/tomcat2
export CATALINA_2_BASE CATALINA_2_HOME
TOMCAT_1_HOME=/home/csdn/tomcat1
export TOMCAT_1_HOME
TOMCAT_2_HOME=/home/csdn/tomcat2
export TOMCAT_2_HOME
并分别修改tomcat的startup.sh和shutdown.sh(两个文件都需要)
第一个tomcat:
export CATALINA_HOME=$CATALINA_1_HOME
export CATALINA_BASE=$CATALINA_1_BASE
第二个tomcat:
export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME
然后配置tomcat/conf/server.xml文件
Tomcat1端口分配表(tomcat全部采用默认配置)
端口 | 端口号 |
关闭指令端口 | 8005 |
http端口 | 8080 |
https端口 | 8443 |
Ajp端口 | 8009 |
Tomcat2端口分配表
端口 | 端口号 |
关闭指令端口 | 9005 |
http端口 | 9080 |
https端口 | 9443 |
Ajp端口 | 9009 |
四.Nginx安装及配置
http://blog.csdn.net/u010028869/article/details/50485245
http://www.cnblogs.com/zrbfree/p/6419043.html
https://jingyan.baidu.com/article/02027811617b971bcd9ce541.html
http://blog.csdn.net/tx122/article/details/7534273
4.1 先决条件4.1.1 GCC 安装
yum -y install gcc gcc-++ autoconf automake
或
yum install gcc
4.1.2 PCRE库
yum -y install pcre-devel
或
yum install pcre pcre-devel
4.1.3 zlib库
yum install zlib zlib-devel
下载zlib-1.2.11.tar.gz包
上传zlib源码到服务器的/usr/local/src
tar - zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make install
4.1.4 OpenSSL库yum install openssl openssl-devel
4.2 Nginx安装4.2.1 安装
上传nginx-1.12.1.tar.gz源码到服务器的/usr/local/src
tar – zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx
make & make install
4.2.2 启动&关闭首先介绍如何查看Nginx的进程号:
用命令:ps -ef|grep nginx 查看
① 启动方式:
【Nginx启动文件地址】 -c 【Nginx配置文件地址】
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
② 三种关闭方式:从容停止 :
Kill -QUIT 13421
快速停止 :
kill -TERM 13421 或 kill -INT 13421
强制停止 :
pkill -9 nginx
③ 重启第一种reload命令:
[root@localhost local]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s reload
第二种发送信号方式:
kill -HUP 13421
4.2.3 配置修改Nginx核心配置文件nginx.conf
下面配置文件中的几个关键点:
(1) 进程数与每个进程的最大连接数
#是否启用nobody用户
#user nobody;
#工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍
worker_processes 2;
#单个进程最大连接数
events{
worker_connections 1024;
}
① nginx进程数,建议设置为和服务器cup核数相等,或者是核数的两倍② 单个进程最大连接数,该服务器的最大连接数=连接数*进程数;
服务器支持最大并发数=(连接数*进程数) /2 ,因为反向代理是双向的。
(2)Nginx的基本配置
#nginx基本配置
server{
listen 8088; #端口号
server_name localhost; #服务名
}
① 监听端口一般都为http端口:80;可以修改为其他,这里修改为8088。② server_name :默认为localhost ,这里修改为服务器ip地址。
(3)负载均衡列表基本配置
#服务器集群
upstream mycluster{
#这里添加的是上面启动好的两台Tomcat服务器
server 10.22.50.129:8080 weight=1;
server 10.22.50.129:9080 weight=1;
}
location /{
#将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应
proxy_pass http://mycluster;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
① location / {}:负载均衡访问的请求,可以添加筛选,假如我们要对所有的jsp后缀的文件进行负载均衡时,可以这样写:location ~ .*.jsp$ {}② proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://mycluster 的负载均衡服务器列表;
③ 在负载均衡服务器列表的配置中,Server指令:指定服务器的ip地址,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被访问到的几率越大;
(4)配置定向转发
#定向转发至某台服务器
location ~ ^/csdnupdate/.*\.tml$ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#配置定向转发远程可访问文件,资源文件下载使用
location ^~ /csdnupdate/update/ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#配置定向转发远程可访问文件
location ^~ /upload/ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
(5)完整的配置文件示例
#设置用户组
user nobody;
#工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍
worker_processes 2;
#单个进程最大连接数
events{
worker_connections 1024;
}
http{
keepalive_timeout 65;
gzip on;
#服务器集群
upstream mycluster{
#集群有几台服务器即可配置几台,weight表示权重,权重越大被访问到的几率越大
#这里添加的是上面启动好的两台Tomcat服务器
server 10.22.50.129:8080 weight=1;
server 10.22.50.129:9080 weight=1;
}
#nginx基本配置
server{
listen 8088; #端口号
server_name localhost; #服务名
#通用匹配至集群
location /{
#将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应
proxy_pass http://mycluster;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#定向转发至某台服务器
location ~ ^/csdnupdate/.*\.tml$ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#配置定向转发远程可访问文件,资源文件下载使用
location^~ /csdnupdate/update/ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#配置定向转发远程可访问文件
location^~ /upload/ {
#将访问请求转向至特定服务器
proxy_pass http://10.22.50.129:9080;
#真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
转发条件可以按需修改。以上,最基本的Nginx配置差不多就是上面这些内容,当然仅仅是最基础的配置。
五.配置session共享
http://blog.csdn.net/u013628152/article/details/50485949
http://blog.csdn.net/shirdrn/article/details/9731215
http://blog.csdn.net/a__java___a/article/details/8738932
http://www.cnblogs.com/carbon3/p/5870230.html
http://blog.csdn.net/u010028869/article/details/50773174
http://blog.csdn.net/big1980/article/details/84543335.1 Memcached安装及配置
a) 安装包准备
i. http://libevent.org/ 下载安装memcached前必需要的包libevent-2.0.15 我安装的是这个版本
ii. http://memcached.org/下载linux下的memcached的安装包
b) 安装libevent-2.0.15
首先检查系统中是否安装了libevent
rpm -qa|grep libevent
如果安装了则查看libevent的安装路径,后续安装时需要用到
rpm -ql libevent
如果没有安装,则先安装libevent
wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar -zxvf libevent-1.4.12-stable.tar.gz -C /usr/local/
cd libevent-1.4.12-stable/
./configure -prefix=/usr/libevent
make
make install
c) 安装memcached
1.首先是下载memcached的安装包
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
2.修改安装包的执行操作权限
chmod 777 memcached-1.4.15.tar.gz
3.解压安装包到指定目录
tar -zxvf memcached-1.4.15.tar.gz -C /usr/local
4.进入解压后的目录
cd /usr/local/memcached-1.4.15/
5.配置、编译、安装
注:configure时需要指定libevent的安装路径
./configure -with-libevent=/usr/libevent -prefix=/usr/local/memcached
make
make install
6.安装成功后启动一下看安装是否成功
/usr/local/memcached/bin/memcached -d -m 64 -p 11211 -u root
/usr/local/memcached/bin/memcached -d -m 64 -p 11211 -u nobody
d) 给出memcached启动命令参数详解
-p <num> TCP端口,默认为11211,可以不设置
-U <num> UDP端口,默认为11211,0为关闭
-s <file> UNIX socket
-a <mask> access mask for UNIX socket, in octal (default: 0700)
-l <addr> 监听的 IP 地址,本机可以不设置此参数
-d 以守护程序(daemon)方式运行
-u 指定用户,如果当前为 root ,需要使用此参数指定用户
-m <num> 最大内存使用,单位MB。默认64MB
-M 禁止LRU策略,内存耗尽时返回错误,而不是删除项
-c <num> 最大同时连接数,默认是1024
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-vvv extremely verbose (also print internal state transitions)
-h 帮助信息
-i print memcached and libevent license
-P <file> 保存PID到指定文件
-f <factor> 增长因子,默认1.25
-n <bytes> 初始chunk=key+suffix+value+32结构体,默认48字节
-L 启用大内存页,可以降低内存浪费,改进性能
-t <num> 线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用
-R 每个event连接最大并发数,默认20
-C 禁用CAS命令(可以禁止版本计数,减少开销)
-b Set the backlog queue limit (default: 1024)
-B Binding protocol-one of ascii, binary or auto (default)
-I 调整分配slab页的大小,默认1M,最小1k到128M
上面加粗的参数,需要重点关注,正常启动的例子
启动:
/usr/bin/memcached -m 64 -p 11212 -u nobody -c 2048 -f 1.1 -I 1024 -d -l 10.211.55.9
连接:
telnet 10.211.55.9 11212
Trying 10.211.55.9...
Connected to 10.211.55.9.
Escape character is '^]'.
e) 结束Memcache进程
# kill `cat /tmp/memcached.pid`
或是 通过ps -ef | grep memcached 找到pid ,然后kill
也可以启动多个守护进程,不过端口不能重复。
# ps -ef | grep memcached
root 28914 1 0 07:27 ? 00:00:00 memcached -d -m 128 -l localhost -p 11211 -u root (启动ok)
f) 测试memcached
#telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
5.2 配置所需jar包
http://code.google.com/p/memcached-session-manager/downloads/list可以下载所需要的包。
不管你选择哪种序列化策略,你都需要 memcached-session-manager-${version}.jar,如果你使用的是tomcat6,则还需要下载 memcached-session-manager-tc6-${version}.jar,如果使用的是tomcat7则下载 memcached-session-manager-tc7-${version}.jar。同时还需要下载 spymemcached-2.7.3.jar和memcached-2.5.jar 。
每种序列号策略下载单独需要的jar包,具体如下:
- kryo-serializer: msm-kryo-serializer, kryo-serializers, kryo, minlog, reflectasm, asm-3.2
- javolution-serializer: msm-javolution-serializer, javolution-5.4.3.1
- xstream-serializer: msm-xstream-serializer, xstream, xmlpull, xpp3_min
- flexjson-serializer: msm-flexjson-serializer, flexjson
5.3 context.xml配置
a) 非黏性session管理的配置示例, 修改每台tomcat的conf目录下得context.xml文件或者server.xml文件
<Context>
...
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
其中,n1:host1.yourdomain.com:11211, n2:host2.yourdomain.com:11211是memcache的地址和端口,可使用127.0.0.1:11211
b) 黏性session管理的配置示例
<Context>
...
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
以上就是tomcat1的配置信息,对于tomcat2我们只需要修改一下failoverNodes属性的值为"n2" ,这样tomcat2就会优先把session存放到memcached "n1"节点,其余配置信息都一样。
说明:n1,n2为memcached启动检测节点。
启动tomcat的结果如下:说明:以上部分内容有些转载自上面列举出的链接博客,此篇博文是在具体项目实践中对整个过程的整理。