- Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其余一些公司及我的共同开发而成。
- java程序写的网站用tomcat+jdk来运行,tomcat是一个中间件,真正起做用的,解析java脚本的是jdk
- jdk(java development kit)是整个java的核心,它包含了java运行环境和一堆java相关的工具以及java基础库。
- 最主流的jdk为sun公司发布的jdk,除此以外,其实IBM公司也有发布JDK,CentOS上也能够用yum安装openjdk。
咱们已经学过了LAMP和LNMP架构;针对的开发语言是PHP;能够说PHP是一门开发Web程序很是流行的语言;早期的比较流行的是asp,是在windows平台上运行的一种编程语言;可是由于安全性不高;因此愈来愈多作网站的人用Php去开发网站,相对来讲也是比较安全的。php
除了PHP外,还有一门语言叫java;java是一门很是庞大的开发语言;不只仅是能够开发开网站;也能够开发大型的软件、工具、甚至是游戏均可以;tomcat其实是一个中间件,用来运行Java语言写的网站;那咱们Php写的代码,要用php去解析;java就要用tomcat加上JDK一块儿去解析。css
先在windows环境下,下载好jdk,用xftp传输到linux虚拟机root下java
[root@ying01 ~]# ls 10 11 221.txt 3 555 8 anaconda-ks.cfg ccc grep ib_logfile1 NBA sed1 test wenben ysb 100 12zhang 222 5 6 9 awk ch ib_logfile0 jdk-8u171-linux-x64.tar.gz sed shiyan test.txt xargs [root@ying01 ~]# mv jdk-8u171-linux-x64.tar.gz /usr/local/src/ [root@ying01 ~]# cd !$ cd /usr/local/src/ [root@ying01 src]# tar zxf jdk-8u171-linux-x64.tar.gz //解压包 [root@ying01 src]# du -sh jdk1.8.0_171/ 374M jdk1.8.0_171/ [root@ying01 src]# mv jdk1.8.0_171 /usr/local/jdk1.8 //移动并更名
在/etc/profile增长如下代码mysql
[root@ying01 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
加载服务后,查看下载版本是否正确;linux
[root@ying01 src]# source /etc/profile //加载服务 [root@ying01 src]# java -version //查看java版本 java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
其实Tomcat只是一个中间件,真正起做用的就是我们已经安装的jdk。没有Tomcat还不能够,他的做用就是监听8080;8005;8009端口。假如说,访问站点,须要一个webserver,而Tomcat就能够理解为webserver!nginx
在官网找到二进制包,下载;web
[root@ying01 src]# wget http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
解压、并把解压包移到 /usr/local/tomcat下;sql
[root@ying01 src]# tar -zxf apache-tomcat-8.5.32.tar.gz [root@ying01 src]# mv apache-tomcat-8.5.32 /usr/local/tomcat
开启服务与关闭服务数据库
[root@ying01 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 Tomcat started. [root@ying01 src]# ps aux |grep java //java已经启动 root 7794 9.9 5.1 3000080 96832 pts/0 Sl 19:58 0:05 /usr/local/jdk1.8/bin/java -java.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start root 7852 0.0 0.0 112720 984 pts/0 S+ 19:58 0:00 grep --color=auto java [root@ying01 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 [root@ying01 src]# !ps //没有java进程 ps aux |grep java root 7897 0.0 0.0 112720 984 pts/0 S+ 20:00 0:00 grep --color=auto java
查看java有关端口apache
[root@ying01 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 Tomcat started. [root@ying01 src]# netstat -lntp |grep java tcp6 0 0 :::8080 :::* LISTEN 8986/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 8986/java tcp6 0 0 :::8009 :::* LISTEN 8986/java
三个端口释义:
- 8080为提供web服务的端口;
- 8005为管理端口;//显示调用会慢
- 8009端口为第三方服务调用的端口,好比httpd和Tomcat结合时会用到
在关闭防火墙后,用浏览器访问其默认主页:192.168.112.136:8080
[root@ying01 src]# systemctl stop firewalld [root@ying01 src]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
要给Tomcat监听80端口,那先看戏80监听端口,是否占用;
[root@ying01 src]# netstat -lntp |grep 80 //被nginx占用 tcp 0 0 0.0.0.0:37580 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1072/nginx: master tcp6 0 0 :::8080 :::* LISTEN 8986/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 8986/java tcp6 0 0 :::8009 :::* LISTEN 8986/java [root@ying01 src]# /etc/init.d/nginx stop //关闭nginx服务 Stopping nginx (via systemctl): [ 肯定 ] [root@ying01 src]# netstat -lntp |grep 80 tcp 0 0 0.0.0.0:37580 0.0.0.0:* LISTEN - tcp6 0 0 :::8080 :::* LISTEN 8986/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 8986/java tcp6 0 0 :::8009 :::* LISTEN 8986/java
在确认80端口处于空闲状态,在tomcat主配置文件,把8080端口改成80端口;
[root@ying01 src]# vim /usr/local/tomcat/conf/server.xml
从新加载tomcat主配置文件,并查看80端口状况;
[root@ying01 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 [root@ying01 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 Tomcat started. [root@ying01 src]# netstat -lntp |grep 80 //java占用80端口 tcp 0 0 0.0.0.0:37580 0.0.0.0:* LISTEN - tcp6 0 0 :::80 :::* LISTEN 9350/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 9350/java tcp6 0 0 :::8009 :::* LISTEN 9350/java
此时再在浏览器测试8080,已经打不开网页,而用80就能够;
在tomcat的配置文件中,增长一个虚拟主机,代码以下:
[root@ying01 ~]# vim /usr/local/tomcat/conf/server.xml <Host name="www.123.cn" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/data/wwwroot/www.123.cn/" debug="0" reloadable="true" crossContext="true"/> </Host>
以上代码关键词释义:
- name 定义域名;
- appBase 定义应用的目录;
- unpackWARs=”true” 是否自动解压;(也是就是说,当咱们往站点目录里面直接上传一个war的包,它会自动解压)
- docBase,这个参数用来定义网站的文件存放路径,若是不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase能够同样。在这一步操做过程当中,可能会遇到过访问404的问题,其实就是docBase没有定义对。
下载站点程序zrlog;
[root@ying01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
把此war包,复制一份到/usr/local/tomcat/webapps/下,在此目录下会自动解压;
[root@ying01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/ [root@ying01 src]# ls /usr/local/tomcat/webapps/ //多了一个zrlog的目录 docs examples host-manager manager ROOT zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war
如今咱们作实验,把zrlog-1.7.1-baaecb9-release解压包,更名为zrlog;
[root@ying01 src]# cd /usr/local/tomcat/webapps/ [root@ying01 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog [root@ying01 webapps]# ls docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release.war [root@ying01 webapps]# ls docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war
此时在浏览器中输入:http://192.168.112.136/zrlog
进入mysql,建立一个数据库,并建立用户
[root@ying01 webapps]# mysql -uroot -pyinglinux 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 4 Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2017, 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 zrlog; //建立zrlog数据库 Query OK, 1 row affected (0.07 sec) mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 indentified by 'yinglinux1'; //指定密码 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indentified by 'yinglinux1'' at line 1 mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'yinglinux1'; Query OK, 0 rows affected (0.19 sec) mysql> quit Bye
使用新用户,及密码登陆
[root@ying01 webapps]# mysql uzrlog -h127.0.0.1 -pyinglinux1 Warning: Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) [root@ying01 webapps]# mysql -uzrlog -h127.0.0.1 -pyinglinux1 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 6 Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2017, 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> show databases; //显示当前库,里面有zrlog数据库 +--------------------+ | Database | +--------------------+ | information_schema | | test | | zrlog | +--------------------+ 3 rows in set (0.00 sec) mysql> quit
配置好数据库后,如今回到刚才的网页上,按下面填写;
点击下一步,按下图填写;
点击下一步,按下图操做;
此时,博客配置好,里面有一篇文章;
在上个页面,点击管理,进入后台操做;
在后台写一篇文章,自定义,它随时保存;
点击保存,刷新页面,这时主页出现新建的文章;
在windows下,host文件下,配置www.123.cn;在cmd下ping此域名;
Microsoft Windows [版本 10.0.17134.165] (c) 2018 Microsoft Corporation。保留全部权利。 C:\Users\zqsgq>ping www.123.cn 正在 Ping www.abc.com [192.168.112.136] 具备 32 字节的数据: 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 192.168.112.136 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms C:\Users\zqsgq>
按虚拟主机配置文件,建立相应的网站目录
[root@ying01 webapps]# mkdir /data/wwwroot/123.cn
把zrlog目录下全部文件,移到新建立的网站目录123.cn
[root@ying01 webapps]# mv zrlog/* /data/wwwroot/123.cn/
从新加载tomcat配置文件
[root@ying01 webapps]# /usr/local/tomcat/bin/shutdown.sh [root@ying01 webapps]# /usr/local/tomcat/bin/startup.sh [root@ying01 webapps]# netstat -lntp |grep 80 tcp 0 0 0.0.0.0:37580 0.0.0.0:* LISTEN - tcp6 0 0 :::80 :::* LISTEN 10068/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 10068/java tcp6 0 0 :::8009 :::* LISTEN 10068/java [root@ying01 webapps]#
回到浏览器下,用域名www.123.cn访问,此时获得以下页面;
网站的图标和一些重要信息都在/usr/local/tomcat/webapps/ROOT下
[root@ying01 webapps]# ls ROOT/ asf-logo-wide.svg bg-middle.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.gif tomcat-power.gif WEB-INF bg-button.png bg-nav-item.png bg-upper.png index.jsp tomcat.css tomcat.png tomcat.svg [root@ying01 webapps]#
好比ROOT下tomcat-power.gif 动图,就是主页上一个图;
再好比这个按钮:bg-button.png
Tomcat日志目录位置/usr/local/tomcat/logs
[root@ying01 ~]# cd /usr/local/tomcat/ [root@ying01 tomcat]# ls logs catalina.2018-07-16.log localhost.2018-07-17.log catalina.2018-07-17.log localhost_access_log.2018-07-16.txt catalina.out localhost_access_log.2018-07-17.txt host-manager.2018-07-16.log manager.2018-07-16.log host-manager.2018-07-17.log manager.2018-07-17.log localhost.2018-07-16.log
日志目录下,各类日志的做用:
- catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
- catalina.2017-xx-xx.log和catalina.out内容相同,前者会天天生成一个新的日志。
- host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
- localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
访问日志默认不会生成,须要在server.xml中配置;
[root@ying01 tomcat]# vim /usr/local/tomcat/conf/server.xml 此为虚拟主机下的,访问日志配置: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" //关键字logs prefix="localhost_access_log" suffix=".txt" //定义的前缀名,后缀名 pattern="%h %l %u %t "%r" %s %b" /> //定义日志格式
新增长的虚拟主机默认并不会生成相似默认虚拟主机的那个localhost.日期.log日志; 错误日志会统一记录到catalina.out中。
关于Tomcat日志,最须要关注catalina.out,当出现问题时,咱们应该第一想到去查看它。