购买阿里云服务器,同时按照的镜像市场的Java运行环境:
https://market.aliyun.com/products/53400005/jxsc000032.html?spm=a2c2e.8906434.0.0.6d5b1eeasK4NZY
Windows2008 64位 | JDK1.7 | Tomcat7.0
本地开发的项目运行环境:
Tomcat7.0,JDK1.8
Tomcat是web服务器,
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
不使用镜像部署环境,参考有道笔记:Java Web服务器部署指南(windows版) - 简书
https://www.jianshu.com/p/57491128a224
tomcat和Apache的区别:
一
apache支持静态页,tomcat支持动态的,比如servlet等,
一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。
apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
这两个有以下几点可以比较的: 1、两者都是apache组织开发的 2、两者都有HTTP服务的功能 3、两者都是免费的
不同点:
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器
二:
APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行
如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话
就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK
整合的好处是:
如果客户端请求的是静态页面,则只需要Apache服务器响应请求 如果客户端请求动态页面,则是Tomcat服务器响应请求
因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销
三:
apache:侧重于http server
tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效 , 支持JSP,但对静态网页不太理想;
apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。 换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。
将项目放到服务器上:
(1)在eclipse中将web项目使用本地的JDK1.8导出成 war包。
(2)通过FTP把你导出的WAR包上传到你的服务器上。
(3)部署项目WAR包到tomcat上。
(4)方式一:把war包复制到你安装的tomcat的目录中的webapps中,重启tomcat即可。然后用:“http://localhost:8080/你的war包文件夹名”进行访问。
(5)方式二:在服务器上打开 http://localhost:8080 如图所示,显示的是Tomcat的默认首页,在Tomcat/ROOT/index.jsp
重新启动一下tomcat(建议)
在tomcat中绑定域名
修改 tomcat 下的 conf /server.xml 配置文件:
(1)修改 端口号:8080 改成 80 ;如图所示
(2)增加域名
<Engine name="Catalina" defaultHost="huodong.seiyongev.com"><!--For clustering, please take a look at documentation at:/docs/cluster-howto.html (simple how to)/docs/config/cluster.html (reference documentation) --><!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--><!-- Use the LockOutRealm to prevent attempts to guess user passwordsvia a brute-force attack --><Realm className="org.apache.catalina.realm.LockOutRealm"><!-- This Realm uses the UserDatabase configured in the global JNDIresources under the key "UserDatabase". Any editsthat are performed against this UserDatabase are immediatelyavailable for use by the Realm. --><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="huodong.seiyongev.com" appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern="common" --><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /><Context path="" docBase="\prize\"></Context></Host></Engine>
appBase=”webapps”设置的是项目根目录。
path相当于路由,不写的话就是根域名,
docBase是项目路径。\prize的意思是webapps\prize文件夹。可以写绝对路径,也可以写相对路径。建议写相对路径,更加兼容。这里写的相对路径。拿域名可以访问到这个项目,在域名后面加上prize也可以访问到这个项目。不知道是不是和设置相对路径有关系,待测试?
webapps目录下有我们上次的prize.war文件,Tomcat服务访问的时候会将war包解析出来生成一个目录prize。如果有prize目录的话就直接访问这个目录,没有的话就找没有任何war包,所以最终访问的还是prize目录。
上面的配置的是:使用huodong.seiyongev.com这个域名访问根目录下的prize目录
保存,然后重启Tomcat。
打开这个文件重启:Tomcat/bin/startup.bat
出现的问题:
使用huodong.seiyongev.com访问的时候,不是prize项目,出现的还是默认的Tomcat首页,但是把域名绑定到一个静态界面的时候就能访问到这个静态界面。唯独Java项目不行。(当时没有仔细看根目录下是否吧prize.war包解析成prize目录了。)
首先想到的是应该不是配置域名访问的问题,但是将路径配置设置成不同的组合,相对路径,绝对路径,加war后缀等各种尝试。依旧解决不了问题。
看日志解决,大约是JDK解析项目的时候出现问题了。
解决办法
将服务器上的JDK版本由1.7换成和本地开发环境一样的1.8。然后重新启动Tomcat,运行项目,使用域名访问,正常访问到我们的prize项目。
总结:
本地开发环境和服务器运行环境要保持一致,避免项目出错。使用docker容器是最好的办法。服务器的环境和开发环境一样。
