Tomcat服务器 、 Tomcat应用案例 、 Maven应用案例
operation 05
=============================================
一,使用tomcat搭建网站服务
cd ~/lnmp_soft/ tar -xf apache-tomcat-8.0.30.tar.gz //释放tomcat软件包 cp -r apache-tomcat-8.0.30 /usr/local/tomcat cd /usr/local/tomcat/ yum -y install java-1.8.0-openjdk //安装java程序运行环境包
tomcat目录:
bin 存放主程序
logs 存放日志
conf 配置文件
webapps 存放网站页面
lib 存放库文件
work 存放编译后页面文件
[root@proxy tomcat]# bin/startup.sh //开启服务
http://192.168.2.5:8080/ //使用火狐访问
netstat -ntulp | grep java //检查如果有8005、8009、8080端口则正常
由于tomcat服务开启时需要大量随机字符,但系统中随机字符
不够多的话会导致tomcat服务启动失败
解决方案1:
mv /dev/random /dev/random.bak //将random改名 ln -s /dev/urandom /dev/random //用urandom替换random
解决方案2:
yum -y install rng-tools systemctl start rngd
killall java //杀掉所有java程序 [root@proxy tomcat]# bin/startup.sh //重新开启服务 netstat -ntulp | grep java //检查如果有8005、8009、8080端口则正常
测试静态页面:
cd /usr/local/tomcat echo "tomcat-test~~~~" > webapps/ROOT/test01.html
http://192.168.2.5:8080/test01.html 火狐访问测试
测试动态页面
vim webapps/ROOT/test02.jsp
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
http://192.168.2.5:8080/test02.jsp 火狐访问测试
-----------------------------------------------------------
二,使用tomcat创建虚拟主机
回顾,
httpd搭建虚拟主机
<virtualhost *:80>
servername www.a.com
documentroot /var/www/html
</virtualhost>
nginx搭建虚拟主机
http {
server {
listen 80;
server_name www.a.com;
root html;
index index.html;
}
}
tomcat搭建虚拟主机
<Host name=域名 appBase=网站页面位置 >
</Host>
vim conf/server.xml //打开配置文件在122行添加虚拟主机配置
<Host name="www.b.com" appBase="web_b"> //这里顺便把下面的默认的
虚拟主机的name="localhost"改成 name="www.a.com"
</Host>
mkdir -p web_b/ROOT //之后创建b网站的目录 echo "tomcat-A~~~" > webapps/ROOT/index.html echo "tomcat-B~~~" > web_b/ROOT/index.html
tail -1 /etc/hosts //查看域名解析
192.168.2.5 www.a.com www.b.com
bin/shutdown.sh //关闭tomcat bin/startup.sh //开启 [root@proxy tomcat]# curl www.a.com:8080 //测试 tomcat-A~~~ [root@proxy tomcat]# curl www.b.com:8080 tomcat-B~~~
再次修改虚拟主机配置
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true"> //添加unpackWARs自动
解war包,和autoDeploy可以自动更新开发工程师编写的网站功能代码
</Host>
bin/shutdown.sh //然后重启tomcat bin/startup.sh //开启服务 netstat -ntulp | grep java //检查 yum -y install java-1.8.0-openjdk-devel //安装可以制作war包的工具 jar -cf b.war /var/log //之后可以使用jar命令打war包 cp b.war web_b/ //将war包放入虚拟主机的网页目录 ls web_b/ //检查,可以看到已经自动解开
-----------------------------------------------------------------
三,tomcat访问路径与页面位置
Context path 匹配用户访问路径
docBase 定义页面位置
测试 1:
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="" />
</Host>
echo "web_b/ROOT/index.html" > web_b/ROOT/index.html //默认页面路径 echo "web_b/index.html" > web_b/index.html //创建素材,定义新路径
curl www.b.com:8080 //测试可以看到的是默认的页面路径
web_b/ROOT/index.html
之后重启tomcat
curl www.b.com:8080 //重启后测试可以看到新路径
web_b/index.html
测试 2:
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="abc" /> //修改成abc
</Host>
mkdir web_b/abc //创建测试目录 echo "web_b/abc/index.html" > web_b/abc/index.html //测试页面
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080//查看,见到新路径
web_b/abc/index.html
测试 3:
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/abc" /> //修改成/abc
</Host>
mkdir /abc //创建测试目录 echo "/abc/index.html" > /abc/index.html //创建测试文件
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080//得到新路径
/abc/index.html
测试 4:
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/abc" /> //path后面添加内容可以匹配
用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果
访问www.b.com:8080就看到web_b/ROOT的内容
</Host>
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/ /abc/index.html [root@proxy tomcat]# curl www.b.com:8080 web_b/ROOT/index.html
测试 5:
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="abc" /> //将/abc改成abc
当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容
当用户访问www.b.com:8080时就看到web_b/ROOT的内容
重启tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/ web_b/abc/index.html [root@proxy tomcat]# curl www.b.com:8080 web_b/ROOT/index.html
如何实现?
访问www.b.com:8080 看到的是 /usr/local/tomcat/dc/dcc目录里面的内容
访问www.b.com:8080/abc/ 看到的是 /var/www/html 目录里面的内容
<Host name="www.b.com" appBase="dc"
unpackWARs="true" autoDeploy="true">
<Context path="/abc" docBase="/var/www/html" />
<Context path="" docBase="dcc" />
</Host>
---------------------------------------------------------------------------------
四,给新创建的虚拟主机添加日志功能
vim conf/server.xml //修改配置文件,复制最后一页默认虚拟主机的日志配置
其中prefix是日志名称,suffix是日志后缀名
<Host name="www.b.com" appBase="test01"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="abc" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www_b_com" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
配置好之后开启或者重启tomcat服务
curl www.b.com:8080 //访问一次网站,可以产生日志记录
[root@proxy tomcat]# ls logs/ 查看日志目录可以看到b网站的日志名称
--------------------------------------------------------------------------
五,通过maven构建项目
maven是一个项目管理工具
1, 将三个文件传入虚拟机root的家目录,原地释放
apache-maven-3.6.3-bin.tar.gz //maven工具包
cms.tar.gz //网站项目,代码已经都编写完毕
m2.tar.gz //依赖程序,释放之后是隐藏目录.m2
如果有软件包无法释放可以尝试安装bzip2软件包
2,配置maven
mv apache-maven-3.6.3 /usr/local/maven //将maven移动到/usr/local下
yum -y install java-1.8.0-openjdk
yum -y install java-devel
vim /usr/local/maven/conf/settings.xml //打开配置文件在第158下面添加
公网服务器地址
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
3,配置数据库
yum -y install mariadb mariadb-server
systemctl start mariadb
[root@proxy ~]# cd ~/CMS/
cp src/main/resources/shishuocms.properties . //拷贝网站数据库
配置文件到当前目录,该文件定义了数据的用户名和密码等信息
mysql -uroot -p < sql/install.sql //导入网站相关数据库文件
Enter password: 直接回车
mysqladmin password //修改数据库密码
New password: //接下来输入12345678
Confirm new password: //在输入一次12345678
---------------------------------------------------------
如果密码输入错误
mysqladmin password -uroot -p
先输入旧密码,然后输入两次新密码
如果密码忘记
systemctl stop mariadb //停服务
yum -y remove mariadb-server //删除
rm -rf /var/lib/mysql/ //删除数据库文件,这样密码就没了
yum -y install mariadb-server //重装
systemctl start mariadb //启动数据库
-------------------------------------------------------------
4,利用maven打包项目
/usr/local/maven/bin/mvn clean package //按照之前定义的
公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行
rm -rf /usr/local/tomcat/webapps/ROOT //删除原有默认页面目录
cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war
//将新项目移动到tomcat中,然后会自动解包
打开浏览器 访问 www.a.com:8080 看到“师说”页面则成功
如果真机无法解析www.a.com,或者tomcat配置文件有误,则按以下方式恢复
cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/
cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"? y //把tomcat的配置
文件恢复默认
重启tomcat
然后真机打开浏览器访问192.168.2.5:8080看到“师说”页面则成功
六,使用tomcat搭建https网站
1,准备工作,先还原环境
killall java cd ~/lnmp_soft rm -rf /usr/local/tomcat/ cp -r apache-tomcat-8.0.30 /usr/local/tomcat yum -y install java-1.8.0-openjdk cd /usr/local/tomcat/ bin/startup.sh //开启服务 netstat -ntulp | grep java //检查端口,需要看到8005、
8009、8080端口
vim conf/server.xml //修改配置文件,打开找到85行,将前后的注释删除 <!-- -->
<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" /> //这里
添加keystoreFile(指定公钥私钥文件)和keystorePass(公钥私钥文件密码)
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore //创建密钥对,别名是tomcat,加密算法是RSA,最后是存储位置
输入密钥库口令: 输入123456
再次输入新口令: 再次输入123456
您的名字与姓氏是什么?
[Unknown]: dc
。。。。。
CN=dc, OU=dc, O=dc, L=dc, ST=dc, C=dc是否正确?
[否]: y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车): 直接回车
Warning:
ls /usr/local/tomcat//检查下下面会产生keystore则成功
bin/shutdown.sh //重启tomcat bin/startup.sh netstat -ntulp | grep java //检查可以看到8443端口 echo "tomcat-https~~" > webapps/ROOT/index.html //准备测试页面 curl -k https://192.168.2.5:8443 //访问安全加密网站
------------------------------------------------------------