java程序写的网站用tomcat+jdk来运行,tomcat是一个中间件,真正起做用的,解析java脚本的是jdkphp
jdk是整个java的核心,它包含了java运行环境和一堆java相关的工具以及java基础库。html
主流的jdk为sun公司发布的jdk,除此以外,其实IBM公司也有发布JDK,CentOS上也能够用yum安装openjdkjava
cd /usr/local/src/ tar zxvf jdk-8u144-linux-x64.tar.gz mv jdk1.8.0_144 /usr/local/jdk1.8 vi /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 /etc/profile 刷新权限 java -version
cd /usr/local/src wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz tar zxvf apache-tomcat-8.5.20.tar.gz mv apache-tomcat-8.5.20 /usr/local/tomcat /usr/local/tomcat/bin/startup.sh 打开 /usr/local/tomcat/bin/shutdown.sh 关闭 ps aux|grep tomcat netstat -lntp |grep java #三个端口8080为提供web服务的端口,8005为管理端口,8009端口为第三方服务调用的端口,好比httpd和Tomcat结合时会用到
#关闭selinux vim /etc/selinux/config SELINUX=enforcing改成disabled SELINUXTYPE=targeted注释掉 #禁掉netfilter(iptables) systemctl disable iptables systemctl stop iptables #禁掉firewalld systemctl disable firewalld systemctl stop firewalld
若是有需求tomcat监听80端口linux
vim /usr/local/tomcat/conf/server.xmlweb
Connector port="8080" 修改成80重启便可数据库
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/123.cn/" debug="0" reloadable="true" crossContext="true"/> </Host> ...
docBase,这个参数用来定义网站的文件存放路径,若是不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase能够同样(就让它同样去)apache
在这一步操做过程当中不少同窗遇到过访问404的问题,其实就是docBase没有定义对。vim
appBase为应用存放目录,一般是须要把war包/jar包直接放到该目录下面,会自动解压成一个程序目录这里若是出问题回云笔记里面找一下tomcat
[root@quyifan logs]# ls catalina.2018-01-30.log host-manager.2018-01-30.log localhost_access_log.2018-01-30.txt catalina.out localhost.2018-01-30.log manager.2018-01-30.log #catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。☆☆☆☆☆☆☆☆☆ #catalina.2017-xx-xx.log和catalina.out内容相同,前者会天天生成一个新的日志。 #host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。 #localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
配置访问日志:服务器
<Host name="www.zrlog.cn" appBase="" unpackWARs= "true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/data/wwwroot/zrlog.cn/" debug="0" reloadable="true" crossContext="true"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.zrlog.cn_access" suffix=".log" pattern="%h %l %u %t "%r" %s %b" /> </Host> 核心参数<Valve/> 说明: prefix定义访问日志的前缀; suffix定义日志的后缀; pattern定义日志格式。 新增长的虚拟主机默认并不会生成相似默认虚拟主机的那个localhost.日期.log日志,错误日志会统一记录到catalina.out中。
配置文件详细讲解:
元素名 |
属性 |
解释 |
server |
port |
指定一个端口,这个端口负责监听关闭tomcat 的请求 |
shutdown |
指定向端口发送的命令字符串 |
|
service |
name |
指定service 的名字 |
Connector ( 表示客户端和service 之间的链接) |
port |
指定服务器端要建立的端口号,并在这个断口监听来自客户端的请求 |
minProcessors |
服务器启动时建立的处理请求的线程数 |
|
maxProcessors |
最大能够建立的处理请求的线程数 |
|
enableLookups |
若是为true ,则能够经过调用request.getRemoteHost() 进行DNS查询来获得远程客户端的实际主机名,若为false 则不进行DNS 查询,而是返回其ip 地址 |
|
redirectPort |
指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号 |
|
acceptCount |
指定当全部可使用的处理请求的线程数都被使用时,能够放处处理队列中的请求数,超过这个数的请求将不予处理 |
|
connectionTimeout |
指定超时的时间数( 以毫秒为单位) |
|
Engine ( 表示指定service 中的请求处理机,接收和处理来自Connector的请求) |
defaultHost |
指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是同样的 |
Context ( 表示一个web 应用程序,一般为WAR 文件,关于WAR 的具体信息见servlet 规范) |
docBase |
应用程序的路径或者是WAR 文件存放的路径 |
path |
表示此web 应用程序的url 的前缀,这样请求的url 为http://localhost:8080/path/ **** |
|
reloadable |
这个属性很是重要,若是为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,咱们能够在不重起tomcat 的状况下改变应用程序 |
|
host ( 表示一个虚拟主机 ) |
name |
指定主机名 |
appBase |
应用程序基本目录,即存放应用程序的目录 |
|
unpackWARs |
若是为true ,则tomcat 会自动将WAR 文件解压,不然不解压,直接从WAR 文件中运行应用程序 |
|
Logger ( 表示日志,调试和错误信息) |
className |
指定logger 使用的类名,此类必须实现org.apache.catalina.Logger 接口 |
prefix |
指定log 文件的前缀 |
|
suffix |
指定log 文件的后缀 |
|
timestamp |
若是为true ,则log 文件名中要加入时间,以下例:localhost_log.2001-10-04.txt |
|
Realm ( 表示存放用户名,密码及role的数据库) |
className |
指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口 |
Valve ( 功能与Logger 差很少,其prefix 和suffix属性解释和Logger中的同样) |
className |
指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类能够记录应用程序的访问信息 |
directory |
指定log 文件存放的位置 |
|
pattern |
有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多 |
Jar、war、EAR、在文件结构上,三者并无什么不一样,它们都采用zip或jar档案文件压缩格式
Jar文件(扩展名为. Jar,Java Application Archive)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等
War文件(扩展名为.War,Web Application Archive)包含所有Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户能够对jar文件进行封装,并把它做为小型服务程序(servlet)来访问。
Ear文件(扩展名为.Ear,Enterprise Application Archive)包含所有企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。
总结:
什么时候使用war或者jar文件:当你的项目在没有彻底竣工的时候,不适合使用war文件,由于你的类会因为调试之类的常常改,这样来回删除、建立war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就至关于一个web应用程序鸟;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。