tomcat

可能会遇到的问题

tomcat无法正常启动

---tomcat运行时需要随机字符串,默认从 /dev/random 获取

---某些系统中没有足够的字符,导致tomcat无法正常开启

解决方法:

[root@web1 tomcat]# mv /dev/random /dev/random.bak
[root@web1 tomcat]# ln -s /dev/urandom /dev/random    #创建软链接
[root@web1 ~]# yum -y install java-1.8.0-openjdk    #环境准备
[root@web1 ~]# java -version                        #检查
openjdk version "1.8.0_332"
[root@web1 ~]# ls ~/lnmp_soft/apache-tomcat-8.0.30.tar.gz    #软件包
/root/lnmp_soft/apache-tomcat-8.0.30.tar.gz
[root@web1 ~]# cd lnmp_soft/
[root@web1 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@web1 lnmp_soft]# cp -r apache-tomcat-8.0.30 /usr/local/tomcat
[root@web1 lnmp_soft]# cd /usr/local/tomcat/
[root@web1 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
##################
conf    配置文件
logs    日志
bin     主程序
webapps 页面
temp    临时文件目录
lib     库文件目录(提前写好的某些功能文件)
work    编译文件目录
###################
[root@web1 tomcat]# bin/startup.sh           #运行tomcat
[root@web1 tomcat]# ss -ntulp | grep java    #少于3个端口,服务异常
tcp   LISTEN 0      100                     *:8080            *:*    users:(("java",pid=2136,fd=50))
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005            *:*    users:(("java",pid=2136,fd=73))
tcp   LISTEN 0      100                     *:8009            *:*    users:(("java",pid=2136,fd=55))
[root@web1 tomcat]# bin/shutdown.sh                                #关闭tomcat
[root@web1 tomcat]# echo tomcat-test > webapps/ROOT/test01.html    #自定义页面
[root@web1 tomcat]# bin/startup.sh 
[root@web1 tomcat]# curl 192.168.99.100:8080/test01.html           #访问测试
tomcat-test

虚拟web主机

<Host name="域名" appBase="页面位置">

</Host>

配置服务器虚拟主机

[root@web1 tomcat]# vim conf/server.xml           #修改配置文件
      <Host name="www.b.com"  appBase="web_b">    #添加虚拟主机
      </Host>
      <Host name="www.a.com"  appBase="webapps"   #修改域名,测试
            unpackWARs="true" autoDeploy="true">  #自动解war包 自动更新开发工程师编写的网站功能
      ...
      ...
      </Host>
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh 
[root@web1 tomcat]# mkdir -p web_b/ROOT
[root@web1 tomcat]# echo tomcat-A > webapps/ROOT/index.html
[root@web1 tomcat]# echo tomcat-B > web_b/ROOT/index.html
[root@web1 tomcat]# echo 192.168.99.100 www.a.com www.b.com > /etc/hosts 
[root@web1 tomcat]# curl www.a.com:8080
tomcat-A
[root@web1 tomcat]# curl www.b.com:8080
tomcat-B
[root@web1 tomcat]# yum -y install java-1.8.0-openjdk-devel    #安装可以制作war包的工具
[root@web1 tomcat]# jar -cf a.war /var/log                     #之后可以使用jar命令打war包
[root@web1 tomcat]# cp a.war webapps/                          #将war包放入虚拟主机的网页目录
[root@web1 tomcat]# ls webapps/                                #检查,可以看到已经自动解开,如果无效可以尝试重启tomcat
a  a.war  docs  examples  host-manager  manager  ROOT
                                

tomcat访问路径与页面位置

[root@web1 tomcat]# vim conf/server.xml 
      <Host name="www.b.com"  appBase="web_b">
              <Context path="" docBase="" />
      </Host>
[root@web1 tomcat]# echo "web_b/ROOT/index.html" > web_b/ROOT/index.html    #默认页面路径
[root@web1 tomcat]# echo "web_b/index.html" > web_b/index.html    #创建素材,定义新路径
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# curl www.b.com:8080    #重启测试可以看到新路径
web_b/index.html

###
[root@web1 tomcat]# vim conf/server.xml
      <Host name="www.b.com"  appBase="web_b">
              <Context path="" docBase="abc" />    #修改成abc
      </Host>
[root@web1 tomcat]# mkdir web_b/abc                #创建测试目录
[root@web1 tomcat]# echo "web_b/abc/index.html" > web_b/abc/index.html    #测试页面
[root@web1 tomcat]# bin/shutdown.sh &> /dev/null 
[root@web1 tomcat]# bin/startup.sh &> /dev/null 
[root@web1 tomcat]# curl www.b.com:8080            #重启,见到新路径
web_b/abc/index.html

###
[root@web1 tomcat]# vim /usr/local/tomcat/conf/server.xml
      <Host name="www.b.com"  appBase="web_b">
              <Context path="" docBase="/abc" />    #修改成/abc
      </Host>
[root@web1 tomcat]# mkdir  /abc                     #创建测试目录
[root@web1 tomcat]# echo  "/abc/index.html"  > /abc/index.html    #创建测试文件
[root@web1 tomcat]# bin/shutdown.sh &> /dev/null 
[root@web1 tomcat]# bin/startup.sh &> /dev/null 
[root@web1 tomcat]# curl www.b.com:8080              #重启访问
/abc/index.html

###
[root@web1 tomcat]# vim /usr/local/tomcat/conf/server.xml
      <Host name="www.b.com"  appBase="web_b">
              <Context path="/test" docBase="/abc" />    #path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容
      </Host>
[root@web1 tomcat]# bin/shutdown.sh &> /dev/null 
[root@web1 tomcat]# bin/startup.sh &> /dev/null 
[root@web1 tomcat]# curl www.b.com:8080/test/
/abc/index.html
[root@web1 tomcat]# curl www.b.com:8080
web_b/ROOT/index.html

###
[root@web1 tomcat]# vim /usr/local/tomcat/conf/server.xml
      <Host name="www.b.com" appBase="web_b">
              <Context path="/test" docBase="abc" />    #修改成abc,当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容;当用户访问www.b.com:8080,看到web_b/ROOT的内容
      </Host>
[root@web1 tomcat]# bin/shutdown.sh &> /dev/null 
[root@web1 tomcat]# bin/startup.sh &> /dev/null 
[root@web1 tomcat]# curl www.b.com:8080/test/
web_b/abc/index.html
[root@web1 tomcat]# curl www.b.com:8080
web_b/ROOT/index.html

SSL加密网站

-genkeypair        生成密钥对

-alias tomcat       密钥别名

-keyalg RSA       定义密钥算法为RSA算法

-keystore             定义密钥文件存储在:/usr/local/tomcat/keystore

修改配置文件,创建支持加密连接的Connector

[root@web1 tomcat]# vim conf/server.xml 
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" />
#默认这段Connector被注释掉,去掉注释,添加密钥信息即可

      <Host name="www.b.com"  appBase="web_b">
      </Host>
[root@web1 tomcat]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore    #创建加密用的私钥和证书文件
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# ss -ntulp | grep java
tcp   LISTEN 0      100                *:8443            *:*    users:(("java",pid=5610,fd=55))
[root@web1 tomcat]# curl -k https://www.b.com:8443
web_b/ROOT/index.html

配置tomcat日志

directory        目录

prefix             前缀

suffix              后缀

例子:localhost_access_log.2023-12-13.txt

#复制默认虚拟主机的例子,适当修改即可
      <Host name="localhost"  appBase="webapps"
...
...
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

集群

tomcat环境、软件准备(99.100、99.200)

[root@web2 tomcat]# yum -y install java-1.8.0-openjdk
[root@web2 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz 
[root@web2 lnmp_soft]# cp -r apache-tomcat-8.0.30 /usr/local/tomcat
[root@web2 lnmp_soft]# cd /usr/local/tomcat/
[root@web2 tomcat]# echo tomcat-B > webapps/ROOT/index.html
[root@web2 tomcat]# bin/startup.sh 
[root@web2 tomcat]# curl 192.168.99.200:8080
tomcat-B

nginx(99.5/88.5)

[root@proxy ~]# cd /usr/local/nginx/
[root@proxy nginx]# cp conf/nginx.conf.default conf/nginx.conf    #这里是之前做过实验,配置文件恢复默认
[root@proxy nginx]# vim conf/nginx.conf
    upstream tomcat {
        server 192.168.99.100:8080;
        server 192.168.99.200:8080 weight=3;    #权重配置
    }
        location / {
            proxy_pass http://tomcat;
            ...
            ...
        }
[root@proxy nginx]# sbin/nginx -s reload    #重载命令成功的前提是nginx是开启的
[root@proxy nginx]# ss -ntulp | grep nginx  #查看服务端口
[root@proxy nginx]# curl 192.168.99.5       #测试访问 B出现三次,A出现一次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值