?博客主页: 微笑的段嘉许博客主页 ?微信公众号:微笑的段嘉许?欢迎关注?点赞?收藏⭐留言??本文由微笑的段嘉许原创!?51CTO首发时间:?2022年2月日18?✉️坚持和努力一定能换来诗与远方!?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!⭐本文介绍⭐保姆级教程通过一个综合实验案例手把手教你Tomcat的安装配置与性能优化。
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 //进入网卡配置文件
[root@centos02 ~]# systemctl restart network //重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf //查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20
[root@centos02 ~]# mount /dev/cdrom /mnt/ //挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/ //查看系统光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-32:9.9.4-50.el7 ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-chroot-32:9.9.4-50.el7 ################################# [100%][root@centos02 ~]# echo "" > /etc/named.conf //清空DNS主配置文件
[root@centos02 ~]# vim /etc/named.conf //进入DNS主配置文件
---
options {
listen-on port 53 { any ;};
};
zone "duan.com" IN {
type master;
file "var/named/duan.com.zone";
};
zone "jia.com" IN {
type master;
file "var/named/jia.com.zone";
};
zone "xu.com" IN {
type master;
file "var/named/xu.com.zone";
};
---
[root@centos02 ~]# named-checkconf /etc/named.conf //检查主配置文件修改是否有误
2)修改第一个DNS区域配置文件[root@centos02 ~]# vim /var/named/duan.com.zone //进入第一个DNS区域配置文件
---
$TTL 86400
@ SOA duan.com. root.duan.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.duan.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# vim /var/named/duan.com.zone
[root@centos02 ~]# named-checkzone duan.com /var/named/duan.com.zone
zone duan.com/IN: loaded serial 2023021710
OK //检查主配置文件修改是否有误
3)修改第二个DNS区域配置文件[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/jia.com.zone //复制第一个区域配置文件到/var/namedjia.com.zone
[root@centos02 ~]# vim /var/named/jia.com.zone //进入第二个区域配置文件
---
:%s/duan.com/jia.com/g //把duan.com替换为jia.com
$TTL 86400
@ SOA jia.com. root.jia.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.jia.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# named-checkzone jia.com /var/named/jia.com.zone //检查主配置文件修改是否有误
zone jia.com/IN: loaded serial 2023021710
OK
4)修改第三个DNS区域配置文件[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/xu.com.zone //复制第一个区域配置文件到/var/named/xu.com.zone
[root@centos02 ~]# vim /var/named/xu.com.zone //进入第三个区域配置文件
---
:%s/duan.com/xu.com/g //把duan.com替换为xu.com
$TTL 86400
@ SOA xu.com. root.xu.com. (
2023021710
1H
15M
1W
1D
)
@ NS centos02.xu.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# named-checkzone xu.com /var/named/xu.com.zone
zone xu.com/IN: loaded serial 2023021710
OK
5)启动DNS服务设置开机自启[root@centos02 ~]# systemctl start named //启动DNS服务
[root@centos02 ~]# systemctl enable named //设置开机自启
[root@centos02 ~]# netstat -anptu | grep named //监听端口
tcp 0 0 192.168.100.20:53 0.0.0.0:* LISTEN 40870/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 40870/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 40870/named
tcp6 0 0 ::1:953 :::* LISTEN 40870/named
udp 0 0 192.168.122.1:53 0.0.0.0:* 40870/named
udp 0 0 192.168.100.20:53 0.0.0.0:* 40870/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 40870/named[root@centos01 ~]# rz //上传tomcat源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls //查看是否上传成功
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
apache-tomcat-8.5.50.tar.gz 公共 视频 文档 音乐
---
[root@centos01 ~]# tar zxf ./apache-tomcat-8.5.50.tar.gz -C /usr/src/ //解压tomcat源代码程序
[root@centos01 ~]# mv /usr/src/apache-tomcat-8.5.50/ /usr/local/tomcat //剪切tomcat源代码程序到/usr/local/tomcatm目录[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml //进入tomcat主配置文件
---
73 <Connector port="80" protocol="HTTP/1.1" //监听80端口
74 connectionTimeout="20000"
75 redirectPort="8443" />
152 <Host name="www.duan.com" appBase="webapps" //域名和网站根目录
153 unpackWARs="true" autoDeploy="true">
154 <Valve className="org.apache.catalina.valves.AccessLogValve" directo ry="logs"
155 prefix="www.duan.com_access_log" suffix=".txt"
156 pattern="%h %l %u %t "%r" %s %b" />
157 </Host>
---
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听端口
tcp6 0 0 :::80 :::* LISTEN 40414/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 40414/java
tcp6 0 0 :::8009 :::* LISTEN 40414/java
3)使用win10虚拟机验证访问tomcat默认网站
[root@centos01 ~]# cd /usr/local/tomcat/webapps/ //切换到tomcat根目录
[root@centos01 webapps]# rz //上传项目
z waiting to receive.**B0100000023be50
[root@centos01 webapps]# ls //查看是否上传成功
docs examples host-manager jpress-v5.0.8.war manager ROOT
[root@centos01 webapps]# mv jpress-v5.0.8.war jpress.war //重命名
[root@centos01 webapps]# ls //查看
docs examples host-manager jpress jpress.war manager ROOT[root@centos01 ~]# mount /dev/cdrom /mnt/ //挂在系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/ //查看光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* //删除系统自带的yum源
[root@centos01 ~]# ls /etc/yum.repos.d/ //查看本地yum源目录
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo //查看本地yum源
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
---
[root@centos01 ~]# yum -y install mariadb mariadb-server //安装数据库
[root@centos01 ~]# systemctl start mariadb //启动数据库
[root@centos01 ~]# systemctl enable mariadb //设置开机自启
[root@centos01 ~]# mysqladmin -uroot password //创建管理数据库账户名为root,设置密码
New password: //输入密码
Confirm new password: //确定密码
[root@centos01 ~]# mysql -uroot -ppwd@123 //登录数据库
MariaDB [(none)]> create database jpress charset utf8; //创建数据库名字支持中文
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on jpress.* to 'duanjiaxu'@'localhost' identified by 'pwd@123'; //授权用户访问,授权用户为duanjaixu密码为pwd@123
Query OK, 0 rows affected (0.00 sec)
3)在win10客户端安装jdk
等待安装完成:
4)使用win10虚拟机验证




[root@centos01 ~]# mkdir -p /www/jia //创建虚拟网站根目录
[root@centos01 ~]# mkdir -p /www/xu
[root@centos01 ~]# echo "www.jia.com" > /www/jia/index.jsp //设置网站主页
[root@centos01 ~]# echo "www.xu.com" > /www/xu/index.jsp[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml //进入tomcat主配置文件
---
152 <Host name="www.duan.com" appBase="webapps" //第一虚拟主机
153 unpackWARs="true" autoDeploy="true">
154 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
155 prefix="www.duan.com_access_log" suffix=".txt"
156 pattern="%h %l %u %t "%r" %s %b" />
157 </Host>
158 <Host name="www.jia.com" appBase="webapps" //第二个虚拟主机
159 unpackWARs="true" autoDeploy="true">
160 <Context docBase="/www/jia/" path="" reloadble="fales"/>
161 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
162 prefix="www.duan.com_access_log" suffix=".txt"
163 pattern="%h %l %u %t "%r" %s %b" />
164 </Host>
165 <Host name="www.xu.com" appBase="webapps" //第三个虚拟主机
166 unpackWARs="true" autoDeploy="true">
167 <Context docBase="/www/xu/" path="" reloadble="fales"/>
168 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
169 prefix="www.duan.com_access_log" suffix=".txt"
170 pattern="%h %l %u %t "%r" %s %b" />
171 </Host>
3)重新启动tomcat服务[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡
tcp6 0 0 :::80 :::* LISTEN 41936/java
tcp6 0 0 :::8009 :::* LISTEN 41936/java

[root@centos01 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml //进入tomcat管理控制台配置文件
---
44 <role rolename="manager-gui"/>
45 <role rolename="manager-script"/>
46 <role rolename="manager-jmx"/>
47 <role rolename="manager-status"/>
48 <role rolename="admin-gui"/>
49 <role rolename="admin-script"/>
50 <user username="admin" password="pwd@123" roles="manager-gui,manager-scrip t,manager-jmx,manager-status,admin-gui,admin-script"/> //创建用户名和设置密码,授权角色
51 </tomcat-users>
---
[root@centos01 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml //进入访问控制配置文件
---
18 <Context antiResourceLocking="false" privileged="true" >
19 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
20 allow="192\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> //修改为192
21 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Inte ger|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter \$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
22 </Context>
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡服务
tcp6 0 0 :::80 :::* LISTEN 42514/java
tcp6 0 0 :::8009 :::* LISTEN 42514/java
2)使用win10虚拟机验证


[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml //进入tomcat主配置文件
---
73 <Connector port="80" protocol="HTTP/1.1"
74 connectionTimeout="20000" //连接请求超时时间20000毫秒
75 redirectPort="8443" //加密端口
76 maxTheads="15000" //最大线程15000
77 minspareTheads="2000" //最下空闲线程2000
78 acceptCount="2000" //列队保存2000个请求,拉长请求时间
79 />
2)修改最大内存[root@centos01 ~]# vim /usr/local/tomcat/bin/catalina.sh //进入配置文件
---
JAVA_OPTS="-server -Xms1024m -Xmx4096m -XX:NewSize=50m -XX:MaxNewSize=100m"
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh //停止tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java //监听网卡服务
tcp6 0 0 :::80 :::* LISTEN 45095/java
tcp6 0 0 :::8009 :::* LISTEN 45095/javaJVM性能优化前:
JVM性能优化后:

配置压力测试的服务器域名和端口号、协议、路径
配置线程数
异常百分之零

我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽
我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe
我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0