安装JDK
上传JDK
# cd /usr/local/src/ # tar zxvf jdk-8u271-linux-x64.tar.gz # mv jdk1.8.0_271/ /usr/local/jdk1.8 # vi /etc/profile JAVA_HOME=/usr/local/jdk1.8/ JAVA_BIN=/usr/local/jdk1.8/bin JRE_H0ME=/usr/local/jdk1.8/jre PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar # source /etc/profile //使其生效 # java -version //检测配置是否正确
如果显示不正常,可能是系统调用了rpm的openjdk。
# which java //检测
如果结果是/usr/bin>Java则说明这是rpm的JDK,而且执行java -version时会有openjdk字样。其实 我们也可以直接使用openjdk做后续实验,但为了和实验结果保持一致,需要做一个临时处理:
# mv /usr/bin/java /usr/bin/java_bak
# source /etc/profile
再次执行java -version,显示结果就正常了。
安装tomcat
上传包
# tar zxvf apache-tomcat-8.5.60.tar.gz # mv apache-tomcat-8.5.60 /usr/local/tomcat # /usr/local/tomcat/bin/startup.sh //因为是二进制包就免去了编译,启动toncat Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk1.8 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. 查看是否启动 # ps aux |grep tomcat # netstat -lnpt |grep java //正常来说这里应该有三个端口,8080(提供web服务的端口)。8005(管理端口)8009(为第三方服务调用的端口)。
如果你这里没有8009端口那么不要慌,后面我会附上一个配置文件,将那个配置文件放在server.xml文件里就好了。
# echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local /这里将启动命令加到这个文件里,使其可以开机启动。 # chmod a+x /etc/rc.d/rc.local 在登陆浏览也之前别忘记关闭防火墙 # setenforce 0 # systemctl stop firewalld
这里我们就成功安装Tomcat了
------------------------
配置tomcat
配置tomcat的访问端口
tomcat的默认启动端口是8080,想要修改为80的话,就要修改它的配置文件
# vi /usr/local/tomcat/conf/server.xml 将<Connector port="8080" protocol="HTTP/1.1”修改为<Connector port="80" protocol="HTTP/1.1" # /usr/local/tomcat/bin/shutdown.sh //关闭服务 # /usr/local/tomcat/bin/startup.sh //启动服务 //tomcat的关闭启动需要使用它自带的脚本,在正常的生产环境中tomcat使用的是8080端口,80端口是留给nginx的就是说正常访问tomcat是需要tomcat代理的。
tomcat的虚拟主机
在tomcat的虚拟主机配置中<!-- --!>里面的都是注释,正常的内容(这里的内容复制到你的server.xml文件里面就会出现8009端口了):
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector protocol="AJP/1.3" port="8009" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
<Host></Host>之间为虚拟机主体的部分,name定义域名,appbase定义应用的目录,访问的tomcat默认页就是在appbase下面,在它的子目录ROOT中。
增加一个虚拟主机 //这是为测试准备的
<Host name="www.123.cn" appBase="/data/tomcatweb/" unpackWARs="false" autoDeploy="ture" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="ture" crossContext="ture"/> </Host>
docBase是定义一个存储位置的,如果不定义的话,默认是在appBase/ROOT目录下的。
创建目录和测试文档:
# mkdir -p /data/tomcatweb # echo "tomcat test page." > /data/tomcatweb/1.html 重启tomcat # /usr/local/tomcat/bin/shutdown.sh # /usr/local/tomcat/bin/startup.sh # curl -x127.0.0.1:80 www.123.cn/1.html //访问一下刚才创建的html tomcat test page.
测试tomcat解析JSP
先创建一个测试页面
# vi /data/tomcatweb/111.jsp <html><body><center> Now time is : <%=new java.util.Date()%> </center></body></html>
保存后进行curl
<html><body><center> Now time is : Wed Dec 09 03:09:30 CST 2020 </center></body></html>
同时也可以在本地电脑上配置hosts然后在浏览器上进行访问。
tomcat日志
tomcat的日志在/usr/local/tomcat/logs
tomcat的日志分为四大类,catalina开头的是综合日志,catalina.20....和catalinaout的内容相同,前者会每天生成一个新的日志,host-manager和manager是管理相关的日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志,访问日志默认不会生成,需要在server。xml中进行配置:
# vi /usr/local/tomcat/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
tomcat连接MySQL
tomcat连接MySQL是通过自带的JDBC驱动实现的
首先配置mysql 创建实验用的库,表以及用户:
# mysql -uroot //# /usr/local/mysql/bin/mysql -uroot 这里如果你没有安装mariadb就用绝对路劲进吧 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.6.43 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> create database java_test; Query OK, 1 row affected (0.00 sec) mysql> use java_test Database changed mysql> grant all on java_test.* to 'java'@'127.0.0.1' identified by 'dailinux'; Query OK, 0 rows affected (0.00 sec) mysql> create table dailinux (`id` int(4), `name` char(40)); Query OK, 0 rows affected (0.00 sec) mysql> insert into dailinux values (1,'abc'); Query OK, 1 row affected (0.00 sec) sql> insert into dailinux values (2,'aaa'); Query OK, 1 row affected (0.00 sec) mysql> insert into dailinux values (3,'ccc'); Query OK, 1 row affected (0.00 sec) mysql> Ctrl-C -- exit! Aborted
创建完表以及用户后退出mysql并验证用户是否可用:
[root@localhost ~]# mysql -ujava -pdailinux -h127.0.0.1 Welcome to the MariaDB monitor. Commands end with ; or g. Your MySQL connection id is 3 Server version: 5.6.43 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MySQL [(none)]> Ctrl-C -- exit! Aborted
验证用户是否可用
# mysql -ujava -pdailinux -h127.0.0.1
正常进入说明没有问题,接下来去配置tomcat相关文件。在</Context>下添加
# vi /usr/local/tomcat/conf/context.xml <Resource name="jdbc/mytest" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxwait="10000" username="java" password="dailinux" driverclassName=" com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/java_test"> </Resource>
//name定义为jdbc/mytest,这里的mytest可以自定义,后面还会用到它。username为mysql用户,password为密码,url定义MySQL的IP、端口以及库名,接下来还要修改另一个配置文件。
# vi /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/mytest</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> //每一个应用下面都有一个WEB-INF目录,里面有对应的配置文件,web.xml //用来定义JDBC相关资源的,res-ref-name和前面定义的resource name保 //持一样,还需要再ROOT目录下创建测试JSP文件。
# vi /usr/local/tomcat/webapps/ROOT/t.jsp
<%@page import="java.sql.*"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx
.lookup("java:comp/env/jdbc/mytest");
Connection conn = ds.getConnection();
Statement state = conn.createStatement();
String sql = "select * from dailinux";
ResultSet rs = state.executeQuery(sql);
while (rs.next()) {
out.println(rs.getString("id") +"<tr>");
out.println(rs.getString("name") +"<tr><br>");
}
rs.close();
state.close();
conn.close();
%>
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
使用浏览器查看
这个时候如果显示的是404,就重新登陆tomcat界面就会发现那个界面也404,不要担心回过头重新检查配置文件,里面一定有错误,因为有的错误重启的时候不会进行提示,在浏览器上访问不了但是在本地虚拟机上却你够访问。
我在进行检查配置文件排错后浏览器访问变成了500显示配置文件错误,但是无任何错误,将哪一行打了一遍之后变成了解析jsp错误,应该是前面出错了,又重来了一边,将一个MySQL包下载上传到tomca/lib文件里之后浏览网页就好使了
就是这个包。