坚持#第269天~tomcat(安装、配置文件、虚拟主机、多实例)

# tomcat服务安装脚本

#jdk-7u67-linux-x64.tar.gz apache-tomcat-7.0.73.tar.gz这两个包拷贝进来不需解压(注意对应版本jdk7对应的tomcat7)

tar xzfjdk-7u67-linux-x64.tar.gz

mvjdk1.7.0_67 /usr/local

cat >/etc/profile.d/tomcat.sh <<ok

exportJAVA_HOME=/usr/local/jdk1.7.0_67

# 注意JAVA_HOME的陷阱,变量的引用最好用{},避免有干扰

exportPATH=${JAVA_HOME}/bin:$PATH:/usr/local/tomcat/bin

ok

tar xzfapache-tomcat-7.0.73.tar.gz

mvapache-tomcat-7.0.73 /usr/local/tomcat

useradd -M-s /sbin/nologin tomcat

chown -R tomcat.tomcat/usr/local/tomcat

./etc/profile.d/tomcat.sh

echo "已经将/usr/local/tomcat/bin下面的命令作为了环境变量"

# tomcat配置管理APP

sed -i -r'40a\  <rolerolename="manager-gui"/>\n <role rolename="manager-script"/>\n  <role rolename="manager-jmx"/>\n  <role rolename="manager-status"/>\n  <user username="tomcat"password="123"roles="manager-gui,manager-script,manager-jmx,manager-status"/>'/usr/local/tomcat/conf/tomcat-users.xml

echo "已经配置好管理APP"

echo "可以直接使用startup.sh启动tomcat服务了,shutdown.sh是停止服务"

# $PATH默认是、$PATH默认值、$PATH的默认值是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

 

# 配置tomcat虚拟主机脚本

read -p"请输入要做虚拟主机的域名:"yuMing

read -p"请输入要做虚拟主机ROOT上级目录的绝对路径:" rootup

# 不要使用\t,因为有bug,在sed里面看的和在vim里面看的不一样

sed -i -r'/<\/Host>/a\      <Hostname="'${yuMing}'" appBase="'${rootup}'">\n        <Context path=""docBase="ROOT" />\n     </Host>' /usr/local/tomcat/conf/server.xml

mkdir -p${rootup}/ROOT

echo "已经创建网页的目录${rootup}/ROOT,请去该目录里面写jsp网页."

 

 

# tomcat多实例创建脚本

# 注意将/tomcat/conf/server.xml自己添加的虚拟主机注释掉

read -p"请输入您要创的实例名:"instance

read -p"请输入您要创的实例的shutdown的端口:" shutdownPort

read -p"请输入您要创的实例的tomcat的端口:" tomcatPort

cd/usr/local/tomcat

mkdir$instance

chown -Rtomcat.tomcat $instance

cp -r -plogs temp work conf webapps $instance

sed -i -r -e'/"8009"/s#<#<!--#' -e '/"8009"/s#>#-->#'${instance}/conf/server.xml

echo "注释8009端口成功"

sed -i -r -e'/"8005"/s#8005#'${shutdownPort}'#' -e'/"8080"/s#8080#'${tomcatPort}'#' ${instance}/conf/server.xml

 

 

# tomcat多实例服务的开启、停止、重启脚本

exportCATALINA_HOME="/usr/local/tomcat"

exportCATALINA_BASE="/usr/local/tomcat/$2"

# 可以直接在后面写参数

# 为什么没用用到CATALINA_BASE变量?因为原始有个脚本是/usr/local/tomcat/catalina.sh,它是有用途的

case"$1" in

start)

     ${CATALINA_HOME}/bin/startup.sh;;

stop)

     ${CATALINA_HOME}/bin/shutdown.sh;;

restart)

     ${CATALINA_HOME}/bin/shutdown.sh

     ${CATALINA_HOME}/bin/startup.sh;;

esac


关于上周五测试的经验:

一个真实服务器里基于域名的虚拟主机它是靠什么来分的?

1.不是靠虚拟网卡,不需要用虚拟网卡

2.是靠server_name来定义域名的

3.是靠$Host来获取间接主机的域名

哇塞,老师用yum安装的apache

cd/etc/httpd/conf.d

ls

rpm -qlhttpd|grep vhost

cp/usr/share

cp/usr..     .

vim vhost

23行改80端口

24行”/var/www/html”默认的,改为/vhosts/google,还要去主配置文件里面改权限:

主配置文件第127行复制,切换到vhost,23行粘贴,下行写:

“/vhosts”

</Directory>

再进入主配置文件,156行复制,粘贴到vhost的第24行放行权限

28行, www.google.com

29行:/httpd/google_err_log

/google_access_log

 

复制6行到下方

改4个google为163

mkdir/vhosts/{google,163} -p

chownapache.apache -R /vhosts

echo 163> /vhosts/163/index.html

echo google> /vhosts/google/index.html

systemctlstart httpd

换到客户端,添加/etc/hosts

curlwww.google.com

curlwww.163.com

ok可以

在真实服务器抓包

tcpdump -nv-i ens33 port 80 -w a1.dump

在客户端访问

切换生成报文,查看

Host

再配置代理服务器nginx

注释掉root和index,不然会在本机上面找

proxy_passhttp://真实客户端的ip;

proxy_set_headerHost $Host;

哈哈哈哈,yum安装的apache居然还能做虚拟主机呀

切换到yum安装的apache机:

vim../conf/httpd.conf

197行,因为在vhosts里面看到调用的是那个嘛,%h换成你想要的变量

 

 

tomcat:

网页服务:apache、nginx、tomcat(针对jsp网页)

tomcat是一个容器

容器的特点:免费的、占用资源小、跨平台性好、运行的时候不依赖于系统,应用直接丢在tomcat里面就能运行,相当于一个环境

 

tomcat专门处理html的话不如apache,它擅长于处理jsp网页

 

/var包放入tomcat web 目录下,自动解包

 

tomcat 将jsp 转为servlet文件

 

通常把apache和tomcat整合到一起

 

start:

jdk-7u67-linux-x64.tar.gzapache-tomcat-7.0.73.tar.gz这两个包拷贝进来

tar xzf jdk-7u67-linux-x64.tar.gz注意对应版本jdk7对应的tomcat7

mvjdk1.7.0_67 /usr/local/jdk1.7

cd /usr/local/jdk1.7

./bin/java-version查看版本

pwd

vim/etc/profile.d/tomcat.sh部署环境变量

exportJAVA_HOME=/usr/local/jdk1.7必须的java安装目录

exportPATH=$JAVA_HOME/bin:$PATH我们要让jdk1.7生效

. /etc/profile.d/tomcat.sh

java-version看java是否部署好了

cd -

ls

tar xzf apache-tomcat-7.0.73.tar.gz

mv apache-tomcat-7.0.73/usr/local/tomcat

cd/usr/local/tomcat

ls

这是一个二进制的包,直接解压出来就能用了

webapps把var包放到webapps里面就能用了

useradd -M-s /sbin/nologin tomcat

chown -R tomcat.tomcat/usr/local/tomcat

/usr/local/tomcat/bin/startup.sh运行tomcat

vim/etc/profile.d/tomcat.sh

PATH后面添加:/usr/local/tomcat/bin/

./etc/profile.d/tomcat.sh

startup.sh

netstat-luantp |grep 8080这个是蓝桥老师教我的tomcat部署的端口8080哈

浏览器输入ip:8080

进入之后猫的右边有Manager App管理应用,点他,点取消,出现401页面,

把用户名和密码按照上面的配出来

配置好了后重启服务才会生效:shutdown.sh;startup.sh

 

为什么echo $PATH只有tomcat没有jdk?

因为JAVA_HOME的陷阱,变量的引用最好用{},避免有干扰

 

vim/usr/local/tomcat/conf/tomcat-users.xml用户名是tomcat,密码

18:开始

写在里面,不要写到外面去了

38:有多个role角色可以用逗号隔开,用一个用户管理所有的东西就可以了

35和38复制到role1注释下面

复制为4份,修改rolename

maneger-gui

maneger-script

maneger-jmx

maneger-status

<><userusername=”tomcat” password=”123” roles=”授权的role访问哪些(将rolename复制将来用逗号隔开)”>

 

41:结束

停止服务

查看8080端口

TIME_WAIT是什么时候产生的?

四次挥手的时候产生TIME_WAIT啊

监听listen的没有了就行了,wait的无所谓

startup.sh启动服务

哈哈哈,在浏览器输入ip:8080哈哈

进入猫网页,右边tomcat服务器状态,点它,输入用户名和密码进去

manager app就可以直接点进去了,因为已经记住密码了

 

应用解压之后就是一个目录,看状态看有没有运行

war file todeploy发布war文件:浏览-deploy发布

deploy同名的文件,有解包、编译的过程

管理应用,开启停止重载、undeploy

cd /bin

ls

.bat是windows里的批处理文件

只用看.sh就行了

catalina.sh这个脚本是非常重要的

lib是java的库,放jar包的

cd ..

cd conf

ls

vimserver.xml主配置文件

22:server服务端口为8005,shutdown=”SHUTDOWN”>连8005端口再SHUTDOWN也能关闭tomcat服务

41:auth是授权

50多行的路径就是我们为什么之前要改那个目录的原因了

73:连接超时时间20000ms,也就是20s

redirectPort=”8443”做https的端口

8009端口使用的是AJP协议,用来整合apache的

106:defaultHost=”localhost虚拟主机的名称,一定要是定义的(127行定义的)”默认进入到那个虚拟主机

127:appBase=”webapps”应用的发布目录,unpackWARs=”true”自动解包为真,autoDeploy=”true”自动发布为真,放哪儿呢?应用的发布目录

140:日志呀

prefix=“后缀写后面,最后面写个.就可以了”是我们访问的日志,suffix=”.txt”说明后缀是.txt

62行:78行:94行各自端口的最大连接数

 

配置虚拟主机:

一个host就是一个虚拟主机,增加host就行了,位置要放对,放在前一个host旁

网页是在应用目录下的ROOT目录

cd../webapps

ls

网页就是放在ROOT下面

vimROOT/index.jsp可以看到猫网页的代码

appBase=”应用目录发布的位置”

docBase=”ROOT”在ROOT下面

vim../conf/server.xml

/Host

121:复制

141: 粘贴<Hostname="www.google.com" appBase="/google">
<Context path="" docBase="ROOT" />
</Host>

 

ok

复制上面粘贴到下面,改google为163

网页写在哪儿?写在appBase对应目录

125:www.up.com

105: defaultHost=www.google.com

shutdown.sh报错144行没有Context结束

修改好之后

startup.sh

mkdir -p/{google,163}/ROOT

vim/google/ROOT/index.jsp

<html>

          <head>

            <title>google</title>  (title 是页面的标签,)

          </head>

          <body>

            <% out.println("google");%>(test1 是页面的内容)

          </body>

</html>

vim/google/ROOT/index.jsp

<html>

          <head>

            <title>163</title>  (title 是页面的标签,)

          </head>

          <body>

            <% out.println("163");%>(test1 是页面的内容)

          </body>

</html>

客户端:

vim/etc/hosts添加

浏览器输入:

www.google.com:8080

无法访问

查看服务器的8080状态,没有起来

重启一下

www.google.com:8080

www.163.com:8080

www.up.com:8080

 

3个端口:

8005端口:监听关闭服务的

8080端口:http协议的

8009:ajp服务的

telnet127.0.0.1 8005监听在本机,没有这个命令用yum安装

直接在里面敲SHUTDOWN就可以关闭tomcat服务了

 

多实例:

多实例运行相同的应用可以实现负载均衡,一个容器支持一个实例进程,多个容器就支持多个实例进程,支持高并发处理

 

start:
cd tomcat
mkdir instance1
mv logs temp work conf webapps instance1
ls
cp -p instance1 instance2
cp -p instance1 instance3
ls
vim instance1/conf/server.xml
注释虚拟主机,不动,注释8009端口
vim instance2/conf/server.xml
71行8081
注释虚拟主机
vim instance3/conf/server.xml
25行 8005》8006修改shutdown的端口,若不修改一shutdown端口就全都shutdown了
71行 8080 》8081改tomcat的端口,启动后看这个端口起来了没
注释虚拟主机
cd instance1

vim /scripts/tomcatServer.sh
# tomcat多实例服务的开启、停止、重启脚本
export CATALINA_HOME="/usr/local/tomcat"
export CATALINA_BASE="/usr/local/tomcat/$2"
# 可以直接在后面写参数
# 为什么没用用到CATALINA_BASE变量?因为原始有个脚本是/usr/local/tomcat/catalina.sh,它是有用途的
case "$1" in
start)
${CATALINA_HOME}/bin/startup.sh;;
stop)
${CATALINA_HOME}/bin/shutdown.sh;;
restart)
${CATALINA_HOME}/bin/shutdown.sh
${CATALINA_HOME}/bin/startup.sh;;
esac
. /scripts/tomcatServer.sh start instance1启动多实例1的服务
其他两份实例目录里也是一样
netstat -luantp | grep 80
../instance1/instance1.sh start.sh看看是用start还是start,停止是stop,重启是restart
../instance2/instance2.sh start.sh
../instance3/instance3.sh start.sh
netstat -luantp | grep 80
原理:一台服务器中开启多台tomcat
多实例运行不同的应用(类似虚拟主机,使用前要注释掉虚拟主机)
不加机器的情况下提高并发量,一机双实例,实例的数据
多个实例相当于多个tomcat服务
每一个实例写一个脚本太麻烦了,能不能一个脚本控制所有实例?可以啊,直接声名个变量来输入接收要启动关闭那个实例就可以了

tomcat的虚拟主机和多实例总结:
虚拟主机:一个容器里运行多台机器
多实例:一个容器里只运行一台机器,可以有多个容器,性能比虚拟主机好

 

 

cd webapps

ls

cp/root/jenkins.war

ls

重启服务restart

ls

自动解包了

访问的时候就可以访问jenkins目录了

浏览器输入www.up.com:8081/jenkins

 

服务启动脚本

底端

exec$

$PRG

$0

bin/starup.sh

PRGDIR绝对路径

vimbin/catalina.sh

26_HOME

28_BASE

120:PRG $0

139如果BASE为空,BASE=HOME

部位空的话,

 

思考1:

nginx和tomcat怎么整合起来?

可以做动静分离

静态的交给nginx

动态的交给tomcat

 

答:访问动态的话存在资源的问题,发现只晓得访问那一个页面,而那个页面旁边的资源都像不认识一样,解决方法:需要将动态的资源拷贝到代理机上(缺点是不能同步更改,而且占资源),使用nfs挂载无效,发现使用匹配~ \.jsp|.png|.jpg|.js$可以神奇的认识动态页面旁边的资源,目前为止设置匹配是最好的办法了

 

 

思考2:

nginx使用代理做负载均衡

         客户机

 

       nginx代理机

 

tomcat1       tomcat2多实例

 

做负载均衡的话可以起一个组upstream tomgroup{server ip:端口;serverip:端口;}

但是做了负载均衡之后,匹配的图片效果就会大减,感觉又不认识动态页面旁边的资源了

 

这匹配有 bug ,当访问自己 nginx 上静态的网站时 ( 这网站自带图片、 js ), 就会误认为匹配到了 png js 等而转向了 tom 机,导致不认识 nginx 本机上网站里的图片和 js




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值