Tomcat的安装分为安装JDK和安装Tomcat两个步骤,JDK是整个java的核心,它包括了java的运行环境,java工具和java基础的类库。想要运行Java程序必须要有JDK的支持,安装Tomcat的前提也是安装好JDK。
将jdk包上传到/usr/local/src/目录下然后解压。
[root@localhost ~]# cd /usr/local/src/ [root@localhost src]# tar -zxf jdk-8u131-linux-x64.tar.gz [root@localhost src]# mv jdk1.8.0_131 /usr/local/jdk1.8
然后设置环境变量,编辑配置文件vim /etc/profile在后面加入以下几行:
[root@localhost src]# vim /etc/profile //在后面加入以下几行 JAVA_HOME=/usr/local/jdk1.8/ JAVA_BIN=/usr/local/jdk1.8/bin JRE_HOME=/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命令使其生效,并检查设置是否正确,显示如下内容说明配置正确:
[root@localhost src]# source /etc/profile [root@localhost src]# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
将tomcat包上传到/usr/local/src/目录下然后解压。
[root@localhost src]# tar -zxf apache-tomcat-8.5.60.tar.gz [root@localhost src]# mv apache-tomcat-8.5.60 /usr/local/tomcat 二进制包不需要编译,启动tomcat [root@localhost src]# /usr/local/tomcat/bin/startup.sh 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.
查看是否启动成功:
[root@localhost src]# netstat -ntpl |grep java tcp6 0 0 :::8080 :::* LISTEN 29565/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 29565/java
设置开机启动
[root@localhost src]# echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local [root@localhost src]# chmod a+x /etc/rc.d/rc.local
在浏览器中输入虚拟机ip可以看到tomcat的默认界面
将tomcat的默认启动端口修改为80需要修改server.xml文件,命令如下:
编辑配置文件vim /usr/local/tomcat/conf/server.xml,搜索8080,修改为port=“80”:
--> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
保存文件后重启Tomcat
[root@localhost src]# /usr/local/tomcat/bin/shutdown.sh 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: [root@localhost src]# /usr/local/tomcat/bin/startup.sh 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.
查看配置文件/usr/local/tomcat/conf/server.xml去掉注释后剩下如下内容:
<?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定义应用的目录,java的应用通常是jar的压缩包,将jar的压缩包放到appBase目录下即可
[root@localhost src]# ls /usr/local/tomcat/webapps/ROOT/ asf-logo-wide.svg bg-middle.png bg-upper.png index.jsp tomcat.css WEB-INF bg-button.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.svg
其中index.jsp就是Tomcat的默认界面,使用curl访问tomcat.css:
[root@localhost src]# curl localhost:8080/tomcat.css -I HTTP/1.1 200 Accept-Ranges: bytes ETag: W/"5542-1605202612000" Last-Modified: Thu, 12 Nov 2020 17:36:52 GMT Content-Type: text/css Content-Length: 5542 Date: Tue, 08 Dec 2020 01:12:39 GMT
在appBase(/usr/local/tomcat/webapps)目录下面有很多子目录,每个子目录都能被访问,把自定义的应用放到webapps里,然后可以通过http://ip/应用名/来访问这个应用。如果直接访问IP,后面不加二级目录则默认会访问ROOT目录下的文件,加上二级目录会访问二级目录下的文件。
新增一个虚拟主机并定义域名,编辑文件/usr/local/tomcat/conf/server.xml,在</Host>下一行插入新的<Host>,内容如下:
<Host name="www.123.cn" appBase="/data/tomcatweb" unpackWARs="false" autoDeploy="ture" xmlValidation="flase" xmlNamespaceAware="flase"> <Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="true" crossContext="ture"/> </Host>
docbase参数用来定义网站的文件存放路径,如果不定义默认是在appBase/ROOT下面的。appBase和docBase可以一样。创建目录和测试文件并测试:
[root@localhost src]# mkdir /data/tomcatweb [root@localhost src]# echo "Tomcat test page." > /data/tomcatweb/1.html 重启服务 [root@localhost src]# /usr/local/tomcat/bin/shutdown.sh 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: [root@localhost src]# /usr/local/tomcat/bin/startup.sh 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. 访问刚才创建的1.html [root@localhost src]# curl -x127.0.0.1:8080 www.123.cn/1.html Tomcat test page.
Tomcat主要用来解析JSP页面,创建一个jsp的测试页面:
[root@localhost ~]# vim /data/tomcatweb/111.jsp <html><body><center> Now time is: <%=new java.util.Date()%> </center></body></html> 使用curl命令测试: [root@localhost ~]# curl -x127.0.0.1:8080 www.123.cn/111.jsp <html><body><center> Now time is: Tue Dec 08 16:10:02 CST 2020 </center></body></html
中间的那行代码被解析成当前系统的时间了。
Tomcat的日志目录为/usr/local/tomcat/logs,主要有四大类日志:
[root@localhost ~]# cd /usr/local/tomcat/logs/ [root@localhost logs]# ls catalina.2020-12-08.log host-manager.2020-12-08.log localhost_access_log.2020-12-08.txt catalina.out localhost.2020-12-08.log manager.2020-12-08.log
其中,catalina开头的日志为Tomcat的综合日志,他记录了Tomcat服务相关信息和错误日志。catalina.2020-12-08.log和catalina.out内容相同,前者会每天生成一个新的日志。host-manager和manager为管理相关的日志,host-manager为虚拟主机的管理日志。localhost和localhost_access为虚拟主机相关日志,其中带access字样的为日志为访问日志,不带access字样的为默认虚拟主机的错误日志。访问日志默认不会生成,需要在server.xml中配置一下。编辑文件/usr/local/tomcat/conf/server.xml,在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为localhost):
<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>
prefix定义访问日志的前缀,suffix定义日志的后缀,pattern定义日志格式。新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个“localhost.日期.log”日志,错误日志会统一记录到catalina.out中。出现问题时应该首先想到去查看它。
配置mysql创建实验用的库,表,以及用户:
先安装mysql命令,然后把mysql-connector-java-5.1.7-bin.jar文件放进tomcat/lib目录下,做一遍lamp初始化和配置mysql。使用绝对路径进入数据库
[root@localhost ~]# /usr/local/mysql/bin/mysql -uroot -p000000 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 ‘ljllinux‘; Query OK, 0 rows affected (0.00 sec) mysql> create table ljllinux (`id` int(4), `name` char(40)); Query OK, 0 rows affected (0.00 sec) mysql> insert into ljllinux values (1,‘abc‘); Query OK, 1 row affected (0.00 sec) sql> insert into ljllinux values (2,‘aaa‘); Query OK, 1 row affected (0.00 sec) mysql> insert into ljllinux values (3,‘ccc‘); Query OK, 1 row affected (0.00 sec) mysql> Ctrl-C -- exit! Aborted
创建完表以及用户后退出mysql并验证用户是否可用:
[root@localhost ~]# mysql -ujava -pljllinux -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说明刚刚创建的java用户没有问题,接着配置tomcat相关的配置文件,在</Context>上面添加如下内容:
[root@localhost ~]# vim /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="ljllinux" 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,端口以及库名。保存该文件后更改另一个配置文件,在</web-app>上面添加如下内容:
[root@localhost ~]# vim /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>
其中res-ref-name跟前边定义的Resource name保持一致。在ROOT目录下创建测试JSP文件(用浏览器访问的文件):
[root@localhost ~]# vim /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 ljllinux"; 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(); %>
这个脚本会去连接mysql,并查询一个库,表的数据。保存后重启Tomcat:
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 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: [root@localhost ~]# /usr/local/tomcat/bin/startup.sh 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.
然后在浏览器里访问http://192.168.150.40:8080/t.jsp,它会查询java_test库的ljllinux表并列出具体数据来:
这和直接用mysql命令行查询得到的结果是一致的:
[root@localhost ~]# mysql -ujava -pljllinux -h127.0.0.1 java_test -e "select * from ljllinux" +------+------+ | id | name | +------+------+ | 1 | abc | | 2 | aaa | | 3 | ccc | +------+------+
原文:https://www.cnblogs.com/lijinli/p/14147831.html