需求

原本服务器上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 &quot;%r&quot; %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 &quot;%r&quot; %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 &quot;%r&quot; %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项目部署的更多相关文章

  1. 7-将本地的javaweb项目部署到Linux服务器的一般操作

    一.基本流程介绍: 1.安装tomcat;2.安装mysql;3.将本地的javaweb导出成.war文件,传到服务器的tomcat/webapps/下面4.将数据库文件导出成.sql文件,传到服务器 ...

  2. 使用IDEA创建JavaWeb项目 部署本地tomcat并运行

    一.下载商业版IDEA 官方链接:https://www.jetbrains.com/idea/download/#section=windows 二.新建JavaWeb项目 1.在菜单栏找到File ...

  3. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  4. 用idea将javaweb项目部署到tomcat

    之前在网上找的一些web项目都是用eclipse开发的,想把这些项目导入到idea中,然后部署到tomcat中,在网上找了很多教程,很多都不靠谱,发现网上很多配置都是多余的,其实很多只需要按idea默 ...

  5. javaWeb项目部署到阿里云服务器步骤 完整版

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  6. 记一次PHP项目部署过程

    首先介绍一下项目的基本情况:使用PHP语言开发,数据库用的是MySQL 5.5,HTTP服务器用的是Apache 2.2.早上十点到机房看了看服务器的基本情况:Windows 2000操作系统,没有安 ...

  7. [linux,springboot] - 记一次java项目部署

    之前部署的java项目,打包war包后放入tomcat下,并配置conf下的server.xml,设置war包路径,设置是否自动解包与否等操作. 然后重启tomcat,稍等片刻,(web)java项目 ...

  8. 将javaweb项目部署到阿里云服务器

    主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之 ...

  9. 【Linux】将javaweb项目部署到CentOS的tomcat上

    1.将项目打包成war包 build之后war文件就生成了. 2.拷贝war文件到CentOS的tomcat的项目文件夹中 用WinSCP将文件粘帖进这个文件夹中 /wocloud/tomcat_cl ...

随机推荐

  1. JAVA RPC (六) 之手把手从零教你写一个生产级RPC之client的代理

    首先对于RPC来讲,最主要的无非三点[SERVER IO模型].[序列化协议].[client连接池复用],之前的博客大家应该对thrift有一个大致的了解了,那么我们现在来说一说如何将thrift的 ...

  2. SpringBoot 2.x.x会拦截静态资源问题

    之前在看尚硅谷视频时,可谓是按照这老师的说法,一步一步按部就班,于是采坑了,在SpringBoot 2.x.x之前是不会对静态资源拦截的,但是现在已经普通使用2.x.x这个版本会对静态资源进行拦截.看 ...

  3. Mysql查询报错:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

    使用sql别名关联查询的时候,由于字符集冲突导致该错误 解决方案,查询的时候强制转换字符集类型 case when column = '' then _gbk '' collate gbk_chine ...

  4. springcloud第三步:发布服务消费者

    服务消费者 创建项目sercice-order Maven依赖 <parent> <groupId>org.springframework.boot</groupId&g ...

  5. 【VIM】-NO.140.VIM.1 -【VIM】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  6. 一位数组的最大子数组(debug版)

    package 数组; import java.util.Arrays; import java.util.Scanner; public class Sum { public static void ...

  7. Mac截图操作,自定义快捷键

    选择system preferences 下面能看到系统定义的快捷键,可以自己修改

  8. libpng warning: iCCP: known incorrect sRGB profile

    参考  http://www.cocos2d-x.org/forums/6/topics/49093 解决 I got the following warnings in console when r ...

  9. mariadb安装

    1.配置yum源 基本源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ...

  10. c#之AES加密解密

    .Net已封装好算法,直接调用即可,代码如下: 转载请注明出处:https://www.cnblogs.com/jietian331/p/9707771.html using System; usin ...