购买阿里云服务器,同时按照的镜像市场的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 passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available 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 applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: 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容器是最好的办法。服务器的环境和开发环境一样。