web服务器
web服务器是安装在服务端主机上实现了http协议的软件,也叫http服务器,如微软的IIS,当前排名第一开源免费的Apache(个人认为,凡是实现了应用层协议的软件都可以叫web服务器,如ftp服务器,smtp服务器,只不过我目前只关心http服务)。
必备的功能是对某个端口(通常是80端口)循环监听,被动接受客户端发送到该端口的http请求,并进行响应。
根据这个原理,我们可以自己编写web服务器,如socket编程。若客户端使用http协议,如浏览器,那我们必须根据应用层的http协议来自己解析和封装要交互的数据。
通常B/S架构的开发,即web开发,必须使用http协议,因为B是已经实现的浏览器,必使用http协议。
通常C/S架构的开发,都是在传输层直接交互数据,无需再封装数据为http格式,因为客户端和服务端都是我们自己做,我们自己定义数据格式。
Tomcat服务器
通常意义上的web服务器接受请求后,只是单纯地响应静态资源,如html文件,图片文件等,不能在后端进行一定的处理操作。
Tomcat是Apache下的一个子项目,它具备web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的java代码servlet,同时将执行的结果以html代码的形式写回客户端。
Tomcat由一系列的组件构成,其中核心的组件有三个:
web容器——完成web服务器的功能。
servlet容器——名字为catalina,用于处理servlet代码。
jsp容器——用于将jsp动态网页翻译成servlet代码。
Tomcat的目录
bin:主要存放启动和配置Tomcat服务器的可执行文件。
conf:存放Tomcat服务器的全局配置文件。
lib:存放Tomcat服务器运行以及部署在Tomcat服务器上的web项目运行所需要的jar包,该目录下的内容被全部该服务器上的web项目共享。
logs:
temp:
webapps:存放部署在Tomcat服务器上的web项目,该目录可以改变。
work:工作目录,存放web项目运行时生成的过渡资源。
LICENSE:协议内容。
NOTICE:注意事项。
RELEASE-NOTES:当前版本的注意事项。
RUNNING.txt:Tomcat的下载、安装、环境配置以及运行等等的流程详细介绍。
脚本语言
脚本语言的特点是不能单独运行,必须嵌入到其它语言才能运行,如网页脚本必须嵌入到html代码。有的脚本语言是在前端运行的,如javascript,有的脚本语言是在后端运行的,如php、jsp、asp,通常称后端运行的脚本为动态脚本语言,相应的网页称为动态网页。动态网页被翻译成静态html页写回到客户端。
###############tomcat-->java
tomcat用来处理动态页面 nginx处理静态效率低
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
cd /usr/local/
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
vim test.java
public class test {
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
测试
javac test.java
java test
在
vim /usr/local/openresty/nginx/conf/nginx.conf
修改
http {
upstream tomcat {
server 172.25.11.1:8080;
server 172.25.11.3:8080;
}
76行
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
注释之前 location /memc
和
#set $key $uri$args;
#srcache_fetch GET /memc $key;
#srcache_store PUT /memc $key;
cd /usr/local/tomcat/webapps/ROOT
写一个
vim test.jsp
the time is: <%=new java.util.Date() %>
cd /usr/local/tomcat/bin
sh startup.sh
然后访问
server2 只需要转移tomcat 和 jdk 作好软连接开启tomcat 服务就好
scp -r /usr/local/apache-tomcat-7.0.37 /usr/local/tomcat1 root@172.25.11.2:/usr/local
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
环境变量一样
vim /etc/profile
source /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
server2 the time is: <%=new java.util.Date() %>
sh /usr/local/tomcat/bin/startup.sh
172.25.11.1:8080是 tomcat的主页面
访问172.25.11.1/test.jsp 就可以轮询了
重起后
server1
/etc/init.d/php-fpm start
/etc/init.d/mysqld start
/usr/local/openresty/nginx/sbin/nginx
sh /usr/local/tomcat/bin/startup.sh
server2
sh /usr/local/tomcat/bin/startup.sh
实现sticky 功能
nginx-sticky-module-ng.tar.gz
解压到/root/
使用nginx-1.10.1
server1
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
make && make install
mv /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf/
vim /usr/local/lnmp/nginx/conf/nginx.conf
在http的tomcat函数中加入
sticky;
mv test.jsp /usr/local/tomcat/webapps/ROOT/
############test.jsp##########
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
####################################################
清除日志
> /usr/local/tomcat/logs/catalina.out
实现资源共享
server2 1 都要作下面的
yum install -y memcached
/etc/init.d/memcached start
需要
kryo-1.03.jar
kryo-serializers-0.8.jar
memcached-2.5.jar
memcached-session-manager-1.5.1.jarmemcached-session-manager-tc7-1.5.1.jar
minlog-1.2.jar
msm-kryo-serializer-1.5.1.jar
reflectasm-0.9.jar
jar中的memcache-session-* 放到tomcat/lib中
scp memcached-session-manager-* root@server3:/usr/local/tomcat/lib/
rm -fr /usr/local/tomcat/lib/memcached-session-manager-tc6-1.6.3.jar
vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.11.1:11211,n2:172.25.11.3:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
添加两个节点
然后 /usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
关闭
mysqld
memcached
php-fpm
nginx -s stop
tomcat
/usr/local/tomcat/bin/shutdown.sh