记一次JAVAWEB项目部署
需求
原本服务器上tomcat部署了一个javaweb项目在80端口,这次要部署另一个javaweb项目在8090端口,或者同时部署在同一端口不同目录下。
解决方法
不同端口部署
不同端口部署我们需要修改Tomcat\conf路径下的server.xml文件,复制一下原本标签里面的内容,然后修改Service_name port(你要的端口) Engine_name Host_appBase(存放项目的文件夹) 修改后内容如下。
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<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 port="8009" protocol="AJP/1.3" 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>
<Service name="Catalina2">
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps2"
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>
然后复制一份Tomcat目录下的webapps目录修改名字为你上面修改的appBase的值,同理复制一份Tomcat\conf目录下的catalina文件改名为上面修改的name的值,然后把javaweb项目放入webapps2(appBase值)中,重启Tomcat即可,Tomcat版本的差异会导致路径下的文件不同,安装版本和解压版本也会有所不同,我用的是安装版的Tomcat7。
同一端口不同路径部署
同一端口部署就相对简单了,只需要把javaweb项目导出的.war文件放入Tomcat路径下的webapps下重启Tomcat即可。
默认访问
更改上文中的server.xml文件,在Host标签中加入Context path="" docBase="你的项目的绝对路径"即可,示例如下。
<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" />
<Context path="" docBase="C:\Tomcat\webapps\dwsurvey" />
</Host>
遇到的问题
乱码
部署成功之后访问页面发现页面中文乱码,大概可能是三个方面出现问题,若果不能确定的话可以挨个修改排查。
工程编码
修改eclipse项目的编码为UTF-8

Tomcat编码
修改server.xml中的 Connector标签,增加属性URIEncoding="UTF-8",示例如下。
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="20000" URIEncoding="UTF-8"
redirectPort="8443" />
数据库编码
我用的是Mysql,删除掉之前导入的数据库(drop databse “数据库名”)执行以下命令重新创建数据库
CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
然后用source命令重新导入数据库,登陆之后先用use命令选择数据库,然后source sql文件的绝对路径就能成功导入了。
内存泄露
成功启动Tomcat访问项目的时候,Tomcat卡死,查看Tomcat\logs文件下的日志发现错误
Exception in thread "http-bio-8090-exec-8" java.lang.OutOfMemoryError: PermGen space,
查询得知是因为JVM内存大小设置不当,加大即可。
免安装版本的Tomcat可以修改Tomcat\bin目录下的catalina.bat文件在“echo "Using CATALINA_BASE: $CATALINA_BASE"”(大概在130+行)上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 。
安装版本bin目录下没有catalina.bat文件所以修改注册表Win+R 输入regedit打开注册表 。
32位OS打开HKEY_LOCAL_MACHINE -> SOFTWARE -> Apache Software Fundation -> Procrun2.0 -> Tomcat7 -> Parameters -> Java -> Options
64位OS打开HKEY_LOCAL_MACHINE -> SOFTWARE -> WOw6432Node -> Apache Software Fundation -> Procrun2.0 -> Tomcat7 -> Parameters -> Java -> Option
在最后加上:
-XX:PermSize=128m
-XX:MaxPermSize=512m
无法打开文件
项目运行报错,找不到数据库表,经过老师帮助查看日志发现一个路径很长的XLS文件无法打开,此文件是配置数据库映射关系的,怀疑是路径过深的问题,安装Tomcat到C盘根目录解决。
这样好暴力啊
IIS占用80端口
因为用的是Windows Server所以自带了IIS,考虑到之后可能会用到IIS,所以不彻底删除,只是禁用在管理员命令行运行iisreset/stop,服务里禁用 world wide web publishing service(IIS)就行了,或者改变IIS的端口,这个错误耽搁了好久,因为浏览器的缓存,导致我改好了还是会显示IIS页面,浏览器缓存害死人啊。
JDK环境变量
之前的项目用的是1.8,但是现在部署的项目必须是1.7,因为之前没有经验天真的以为把这俩都设置成环境变量就万事大吉了,结果1.7的项目报错,经查询原因是因为JDK版本,测试之后发现在1.7环境下之前的项目依然可以运行。所以删除1.8环境变量,cmd java -version 结果还是1.8,当时我仿佛见了鬼,气得我删除了1.8,然后继续java -version,结果输出找不到1.8,找不到你还找个头! 又查了一圈,说是可能写入了注册表,操作了一番发现并不是。最后我只好使出绝招 where java,然后在某Oracle路径下发现了一系列以java.exe为首的文件,一看环境变量,原来Oracle目录在环境变量里,但是有这个java.exe为什么会显示找不到呢,百度之后发现原来这个java.exe是一个链接文件相当于一个快捷方式,我把本体删了他自然就找不到了,删除这几个文件再次java -version 成功!
总结
这次部署耗费了我一天的时间,总结起来的错误看起来不难解决,但是遇到的时候还是要到处查,尤其是浏览器缓存已经吃过很多次亏了,总结错误就会更加熟练。你怎么这么熟练啊.jpg
虽然部署的问题解决了,项目的问题还是不断。

记一次JAVAWEB项目部署的更多相关文章
- 7-将本地的javaweb项目部署到Linux服务器的一般操作
一.基本流程介绍: 1.安装tomcat;2.安装mysql;3.将本地的javaweb导出成.war文件,传到服务器的tomcat/webapps/下面4.将数据库文件导出成.sql文件,传到服务器 ...
- 使用IDEA创建JavaWeb项目 部署本地tomcat并运行
一.下载商业版IDEA 官方链接:https://www.jetbrains.com/idea/download/#section=windows 二.新建JavaWeb项目 1.在菜单栏找到File ...
- javaWeb项目部署到阿里云服务器步骤
记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...
- 用idea将javaweb项目部署到tomcat
之前在网上找的一些web项目都是用eclipse开发的,想把这些项目导入到idea中,然后部署到tomcat中,在网上找了很多教程,很多都不靠谱,发现网上很多配置都是多余的,其实很多只需要按idea默 ...
- javaWeb项目部署到阿里云服务器步骤 完整版
记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...
- 记一次PHP项目部署过程
首先介绍一下项目的基本情况:使用PHP语言开发,数据库用的是MySQL 5.5,HTTP服务器用的是Apache 2.2.早上十点到机房看了看服务器的基本情况:Windows 2000操作系统,没有安 ...
- [linux,springboot] - 记一次java项目部署
之前部署的java项目,打包war包后放入tomcat下,并配置conf下的server.xml,设置war包路径,设置是否自动解包与否等操作. 然后重启tomcat,稍等片刻,(web)java项目 ...
- 将javaweb项目部署到阿里云服务器
主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之 ...
- 【Linux】将javaweb项目部署到CentOS的tomcat上
1.将项目打包成war包 build之后war文件就生成了. 2.拷贝war文件到CentOS的tomcat的项目文件夹中 用WinSCP将文件粘帖进这个文件夹中 /wocloud/tomcat_cl ...
随机推荐
- JavaScript中innerHTML与innerText,createTextNode的区别
innerHTML和innerText 它们都会把元素内内容替换掉,区别在于: innerHTML 会把替换内容里的 HTML 标记解释执行. innerText 会把替换内容里的 HTML 标记原样 ...
- ide phpStorm常用代码片段设置
1.打开设置(File -> Settings) 2.如图 3 . 最后,在PHP文件中输入 ll 并按 TAB 即可打出代码块
- 描述逻辑(DL)基础知识
Logic逻辑理论实际上是一个规范性(normative)的理论,而不是一个描述性的(descriptive)理论.即,它并不是用来描述人类究竟是采用何种的形式来推理的,而是来研究人类应该如何有效的进 ...
- 推送测试,生产环境无法打印log获取deviceToken,可以通过弹窗获取deviceToken
z- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:( ...
- Android的SQlite的使用
Android系统集成了一个轻量级的数据库:SQlite.SQlite不像Oracle.MySQl数据库那样需要安装.启动服务器进程,SQLite数据库只是一个文件 实例1:向数据库里插入数据 主界面 ...
- git 环境搭建
1. 生成ssh-key 并上传到 git服务器上 #cd $HOME #ssh-keygen -t rsa -C "youremail@example.com" -t 是类型,- ...
- zabbix自定义监控项、添加图形、设置触发器、远程执行命令
监控项是在zabbix中手机数据的基础,没有监控项就没有数据,系统自带模板带有大量默认item,自定义item可以定义在模板中,在应用模板即可使用对应item:也可直接在host中定义 目标:自定义监 ...
- NLog的介绍使用
https://www.cnblogs.com/zhangchengye/p/6297685.html
- 常见MQTT服务器搭建与试用
常见MQTT服务器搭建与试用 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠 ...
- turtlebot3 ubuntu mate 实现vnc连接
tuutlebot3 ubuntu mate 实现vnc连接 摘要: 在turtlebot3 安装的nbuntu mate系统实验过. 实现内容 x11vnc 安装 x11vnc自动启动 vnc分辩率 ...