精华内容
下载资源
问答
  • 1.前言web项目一般有3种环境:dev,test,online;...服务器中环境准备: jdk和Tomcat对于数据库来说,一般大型项目数据库都是单独部署在不同的服务器上,所以不需要单独配置数据库环境2.maven自动部署we...

    1.前言

    web项目一般有3种环境:dev,test,online;

    test和online大都部署在Linux服务器上,所以对于java开发人员来说,需要了解Linux的基本操作以及对于开发项目,如何从本地部署web项目至服务器上也是很重要的。

    服务器中环境准备: jdk和Tomcat

    对于数据库来说,一般大型项目数据库都是单独部署在不同的服务器上,所以不需要单独配置数据库环境

    2.maven自动部署web项目至远程Tomcat

    1.配置服务器Tomcat访问权限:服务器中Tomcat根目录 conf/tomcat-user.xml,在标签中添加如下,打开Tomcat中的manager功能。如下图所示,配置好即可在本地通过http://服务器ip:8080/manager访问manager(需要输入账户密码)。Tomcat的webApp下默认有docs examples host-manager manager等几个web项目。

    复制代码

    74ca5f025bc79e4d6fe27b07ee57e062.png

    2.本地web项目的pom.xml中添加配置,如下,pathA为Tomcat服务器中的部署路径,username和password是上面user.xml配置的账户密码。

    org.apache.tomcat.maven

    tomcat7-maven-plugin

    ${tomcat.maven.version}

    http://服务器ip:8080/manager/text

    /pathA

    tomcat

    tomcat

    复制代码3.本地在项目根目录下,使用maven打包一键部署:-DskipTests 跳过测试 -DAPP_ENV=dev 开发环境;

    4.运行时需保证远程Tomcat服务器在启动状态

    第一次部署

    mvn -DskipTests -DAPP_ENV=dev tomcat7:redeploy

    再次部署

    mvn -DskipTests -DAPP_ENV=dev tomcat7:redeploy

    -- 也可以使用idea界面maven build。

    复制代码5.部署完成

    5f1779be733efda05f0819d05788b67d.png

    本机可以使用ip访问服务器中的web项目~

    实时查看Tomcat运行日志:warName war包名

    tail -f /data/logs/warName.log

    复制代码

    3.idea调试远程Tomcat

    为什么要这么做?本地的测试通过,放到test环境就出问题了,或者只能在test环境测试的流程。由于test是在虚机上的,仅通过查看test环境log无法解决,且无法debug代码。

    通过本地idea连接test环境的Tomcat,直接debug。

    步骤待更。

    n.总结

    需要了解的部分包括:

    1.maven打包项目

    2.Tomcat的作用

    3.Linux的基本使用

    展开全文
  • 使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间。本文章适用于tomcat的7.x ,8.x, 9.x版本。下面是自动部的步骤1,首先,配置tomcat的manager编辑远程tomcat服务器下的...

    使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间。

    本文章适用于tomcat的7.x ,8.x, 9.x版本。

    下面是自动部的步骤

    1,首先,配置tomcat的manager

    编辑远程tomcat服务器下的conf/tomcat-users.xml,在末尾增加(其实只要拉到文件末尾,去掉注释改一下就可以了)

    将上面的password改为自己的密码,注意对于tomcat9来说,不能同时赋予用户manager-script和manager-gui角色。

    保存tomcat-users.xml。

    在tomcat服务器的conf/Catalina/localhost/目录下创建一个manager.xml文件,写入如下值:

    保存退出。

    然后在浏览器中输入http://serverip:port/manager/html,此时会弹出要求输入用户名和密码对话框,输入manager-gui对应的用户和密码登录管理控制台(其中serverip为服务器ip,如果服务器在本地就是localhost或者127.0.0.1,端口为tomcat端口,默认8080)。以此确认manager是否配置正确。正确结果示例如下:

    10a7d3eea1da4c94e899c7319699d49b.png

    2,在maven项目中添加配置

    在pom.xml文件中,在plugins节点下添加如下plugin节点

    org.apache.tomcat.maven

    tomcat7-maven-plugin

    2.2

    http://serverip:port/manager/text

    admin

    password

    true

    /webapp

    将上面的serverip和port换成自己tomcat服务器的ip和端口。密码换成上面配置的manager-script角色的密码。path改为项目在tomcat服务器中的部署路径。

    然后进行部署,如果是第一次部署,运行mvn tomcat7:deploy进行自动部署(对于tomcat8,9,也是使用tomcat7命令),如果是更新了代码后重新部署更新,运行mvn tomcat7:redeploy,如果第一次部署使用mvn tomcat7:redeploy,则只会执行上传war文件,服务器不会自动解压部署。如果路径在tomcat服务器中已存在并且使用mvn tomcat7:deploy命令的话,上面的配置中一定要配置true,不然会报错。

    如果IDE是eclipse,就在runas->run configurations中配置一个maven build,intellij类似。

    3. 内存泄漏

    使用上面的方法进行部署后会出现严重的内存泄漏现象。tomcat的manager提供了诊断在部署时是否产生内存泄漏的功能,在上面提到的http://serverip:port/manager/html这个页面底部有一个“Find leaks”的按钮,如下:

    5ac5112fda458dc1f68005a85924a5ca.png

    点击按钮,网页头部出现如下信息说明在部署的时候有内存泄漏:

    e5a34301547ed6ae7577f7753cc0ed18.png

    上面的消息显示部署的test项目存在内存泄漏,如果同一项目多次重新部署,则一个项目名可能会出现多次。

    部署时产生内存泄漏的原因是每次(重新)部署时,Tomcat会为项目新建一个类加载器,而旧的类加载器没有被GC回收。maven的库classloader-leak-prevention-servlet可以用来解决这个问题。具体方案为:

    (1)添加maven依赖:

    se.jiderhamn.classloader-leak-prevention

    classloader-leak-prevention-servlet

    2.1.0

    (2)在项目的web.xml中添加一个Listener(必须让此Listener成为web.xml中的第一个Listener,否则不起作用)

    se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorListener

    这样部署时的内存泄漏就解决了。

    注意:

    1) 添加这个Listener后,默认在tomcat关闭5s后jvm会进行内存回收的操作,具体时间设置可在下面的第三个参考链接中找到,所以,在关闭后的5s内,再次启动tomcat,可能会存在问题,导致启动无效(如果出现tomcat重启后日志显示正常但是服务器不工作的话考虑一下是不是这个问题)。

    2)这个Listener只解决部署的内存泄漏,其他问题(如jdbc等)产生的内存泄漏还需要自己解决。

    参考:

    http://stackoverflow.com/questions/7788280/memory-leak-when-redeploying-application-in-tomcat#answer-36295683

    http://java.jiderhamn.se/2011/12/11/classloader-leaks-i-how-to-find-classloader-leaks-with-eclipse-memory-analyser-mat/

    https://github.com/mjiderhamn/classloader-leak-prevention

    4,错误排除。

    (1) 执行tomcat7:deploy显示Build Success成功但是没有效果,也没有在本地生成war包,检查一下maven配置文件中packaging标签是否设置为war。即:

    war

    如果不是(比如说是pom),那么改成war应该就可以了。

    (2) 如果出现在本地tomcat服务器自动部署没有任何问题,部署到远程服务器出现下面的Cannot invoke Tomcat manager: Connection reset by peer: socket write error 错误:

    [ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project webapp: Cannot invoke Tomcat manager: Connection reset by peer: socket write error -> [Help 1]

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project clyf_wechat: Cannot invoke Tomcat manager

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)

    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)

    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)

    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)

    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)

    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)

    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)

    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)

    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)

    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)

    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:497)

    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)

    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)

    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)

    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

    Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager

    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)

    at org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68)

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)

    ...20more

    Caused by: java.net.SocketException: Connection reset by peer: socket write error

    at java.net.SocketOutputStream.socketWrite0(Native Method)

    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)

    at java.net.SocketOutputStream.write(SocketOutputStream.java:153)

    at org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:181)

    at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115)

    at org.apache.tomcat.maven.common.deployer.TomcatManager$RequestEntityImplementation.writeTo(TomcatManager.java:880)

    at org.apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:89)

    at org.apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:108)

    at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:117)

    at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:265)

    at org.apache.http.impl.conn.ManagedClientConnectionImpl.sendRequestEntity(ManagedClientConnectionImpl.java:203)

    at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:236)

    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)

    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:682)

    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)

    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)

    at org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:742)

    at org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:705)

    at org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:388)

    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)

    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:82)

    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132)

    ...23 more

    使用mvn tomcat7:redeploy时出现如下情况

    6023047a47733079d303673d6b383f1b.png

    经过查询Tomcat文档后发现,这是由于Tomcat的远程地址拦截器造成的结果,默认情况下,Tomcat的Manager和Host-Manager只接受本机的请求,而要让它接受远程的请求,需要添加上面提到的manager.xml的配置(第一步配置过了就不要加了),也就是:

    由于Tomcat的Manager可以执行项目的部署、卸载等敏感操作,如果你只想允许特定的IP地址访问Manager,可在上面的allow属性中设置规则。具体规则设置见下面的链接:

    http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Remote_Address_Filter

    问题说明:http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Configuring_Manager_Application_Access

    (3)自动部署显示成功,war包也上传成功,但是war不自动解压自动部署。

    如果你在tomcat的server.xml中通过设置标签来部署相同名称的项目的话,maven发布到该服务器的war不会被自动解压,部署,更新,需要去掉server.xml中该项目的标签。

    5. 其他

    如果想要实现对部署路径加版本,可将上面tomcat7-maven-pluginconfiguration的path设置为

    /webapp#version

    的形式,部署后,当前项目在服务器端的路径就是/webapp/version。举个例子,如果path设置为 test#1.0,那么服务端项目实际的路径就是/test/1.0。如下:

    f4b8a331fc1f8b0e88bf9a84a74546aa.png

    如果名字和版本号之间是两个#,效果就是制定当前项目在manager网页中显示的版本,路径不变,举个例子,path设置为test##1.0,实际部署路径为/test,但是在manager网页中,显示如下,注意Version一栏的值:

    fc1c6d3474722183491fb6bdc46068a4.png

    参考:

    http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Naming

    展开全文
  •  

     

     

     

     

     

     

     

     

    展开全文
  • 将自己做好的web项目部署到远程服务器 部署步骤: 在服务器的数据库链接上创建一个相同名字的数据库,将自己数据库中的结构和数据一并导出,然后导入服务器下的对应的相同名字的数据库中(自己创建的那个数据库)...

    将自己做好的web项目部署到远程服务器

    部署步骤:

    1. 在服务器的数据库链接上创建一个相同名字的数据库,将自己数据库中的结构和数据一并导出,然后导入到服务器下的对应的相同名字的数据库中(自己创建的那个数据库)。
    2. 安装xshell,新建一个会话,根据提供给的ip、用户名、密码连接到服务器。
    3. 在分配给的目录下创建对应的文件夹。
    4. 下载对应的tomcat的linux版本。
    5. 传入tomcat的linux版本压缩包,然后解压(命令:tar -xvf 文件名.后缀)。
    6. 然后进入到tomcat的对应的webapps目录下。
    7. 在本地中找到tomcat目录下的webapps中对应的项目文件,将其压缩后,导入到linux下的tomcat对应的webapps下。
    8. 在xshell中再新建一个会话,进入tomcat的logs目录。(用于查看日志,命令:tail -f catalina.out)。
    9. 进入linux下的tomcat的bin目录,启动tomcat(命令:sh startup.sh)。
    10. 查看日志,若没有错误,则根据ip:8080/项目名为url进行访问项目。若出错,则根据错误信息进行修改后,重新启动tomcat。

    遇到的错误:init datasource error(初始化数据源错误)

     原因:数据库5.5升级到8.0后,数据库连接配置没有改造成的
      服务器的mysql数据库估计是8.0之后的版本。

    解决:在maven项目的pom.xml文件下,修改mysql-connection-java的版本为8.0以后的版本
    			修改对应的连接数据库的配置文件中的驱动信息和url信息:
    				jdbc.driver=com.mysql.cj.jdbc.Driver
    				jdbc.url=jdbc:mysql://localhost:3306/ny_3line?useUnicode=true&characterEncoding=utf-8&userSSL=false&serverTimezone=GMT%2B8
    
    展开全文
  • 以下假设数据库与应用在一起过程如下:本地maven打包上传服务器服务器数据库库备份服务器关闭tomcat服务器应用程序备份服务器清除应用、work服务器启动tomcat/utils/SSHConnection.py ,远程操作工具类#!...
  • 使用Jenkins自动化构建、部署远程服务器tomcat项目 废话不多说,直接上代码: pipeline脚本 def createVersion() { return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}" } pipeline { //定义执行...
  • Linux上的Tomcat中,部署Web应用的主要步骤为: 1、配置Tomcat的账户密码权限(登录Tomcatweb管理界面使用)。 2、将Web应用上传至Tomcat安装目录webapps中。
  • 如何将web项目部署到远程桌面,通过远程地址访问web项目 进入公司会经常让你把某个项目或者一些展示数据的html文件放到远程服务器上,可供大家一起访问查看,看了网上的一些办法大部分都是nginx,tomcat,jdk什么的...
  • 前言应用场景在本地 IDEA 下开发 JavaWeb 项目并部署到远程服务器上的 Tomcat,传统方式是在本地运行项目生成 war 文件.但其实我们可以通过 IDEA 以及相关配置,来实现在 IDEA 运行项目的同时自动将项目上传部署到...
  • 7u79-linux-i586.gz(可oracle官网下载.gz格式的压缩包,地址http://www.oracle.com/technetwork/java/javase/archive-139210.html)压缩包上传/usr/local 目录下使用ssh远程连...
  • 使用这个方式的话需要tomcat中有初始时Manage这个项目,本质上是通过http://ip:port/manager/html这个地址的上传接口进行上传,进行热部署(需要远程tomcat 必须开启)一、需在tomcat中配置用户账号和权限:在conf/...
  • Tomcat服务部署和优化一、Tomcat介绍1.1 什么是Tomcat1.2 Tomcat的构成组件1.2.1 Java Servlet 介绍1.2.1 JSP介绍1.3 Tomcat顶层架构1.3.1 四个子容器的作用分别是:1.4 Tomcat请求过程二、Tomcat服务部署2.1 Tomcat...
  • 项目上线也就是将项目部署到远程服务器,开发好的web项目,经过测试,先打成war,然后按照下面顺序进行部署:1)连接远程服务器,这里首先得下载两个软件,putty和FileZilla,putty是用来操作远程服务器,FileZilla...
  • 前提条件:1、安装linux系统2、打开linux系统的ssh服务3、关闭linux系统远程防火墙4、在linux系统安装tomcat服务5、提前准备好应用war包6、需要安装paramiko服务使用场景:节省重复又麻烦的手动部署动作,自动化多...
  • tomcat部署

    2021-04-15 19:10:32
    Tomcat部署:webapps下的项目正在运行,直接把开发的新版本发布正在运行的Tomcat下(不能关闭Tomcat再发布新版本)​开发者本地将代码通过Gitpush服务器端,服务器自动编译-打包-发布等等;也就是说发布到tomcat...
  • 云服务器+tomcat+mysql+web项目搭建部署1.老样子,开头墨迹两句。作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不太喜欢吧。但是都是从头...
  • 一、创建一个系统用户 以 root 用户运行 Tomcat 有一个安全风险。我们将会创建一个系统用户和用户组,其主目录为/opt/...使用wget来下载 Tomcat zip 文件/tmp目录: VERSION=9.0.45 wget https://mirrors.bfsu.edu.
  • 这样,在服务器端用jrebel部署的项目和本地项目就可以远程同步了。修改class 和xml 等 都可以远程部署,省去了打包重新上传的时间。记录一下 今天几个小时的心酸路程。由于网上很少这方面的教程,很多网友可能也用...
  • install,单击右键选择Run ‘maven-web [install]’ war包所在目录就是控制台打印的就是war包的目录 [INFO] Installing E:\仓库\java学习笔记、源码\04-框架技术\01-jQueryEasyui\code\jquery-easyui\target\ssh.war...
  • 在本地安装虚拟机模仿远程linux: 首先使用winSCP连接虚拟机 登陆虚拟机,使用ifconfig命令查看虚拟机ip 再用winSCP连接虚拟机 进入虚拟机后可以先熟悉linux目录结构: /bin ###二进制可执行文件,系统常规...
  • 今天小编在面试的时候被问如何实现tomcat的热部署,当时一脸的懵逼,因为小编都不知道tomcat部署是什么意思,于是回来google了一下,然后在自己的Linux服务器上实现了tomcat的热部署功能,从此以后就不用担心...
  • idea导入web项目并部署到tomcat 首先在idea中用open打开该项目另一个窗口(一路next就可以了),然后点击idea文件夹小图标, 或者file---->Project Structure 选择jdk 点击Modules,点击+号,选择web 然后...
  • 利用IDEA远程部署项目...
  • Android 开发其实也算是前端开发的一种。在标准的开发流程中,Android 应用并不承担过多的业务逻辑处理Android 主要负责提供...Android都应被划分为前端领域但是只有前端显然是不行的目前主流的架构还是 Java Web + ...
  • [导读]这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给大家。很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在...
  • 7u79-linux-i586.gz(可oracle官网下载.gz格式的压缩包,地址http://www.oracle.com/technetwork/java/javase/archive-139210.html)压缩包上传/usr/local 目录下使用ssh远程连...
  • 本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下。注:部署之前必须已经在Linux上安装好JDK,具体如何在...
  • 我刚在百度云购买了云服务器和公网ip,但不知怎么把项目部署上去? 有详细。1. 在云主机上搭建好 java 开发环境,如 openjdk 的安装、tomcat 的安装、mysql 数据库的安装。2. 将项目上传云服务器,基本分为三个...
  • 一:下载安装jdk,tomcat,eclipse:使用eclipse建立动态web项目lcj,更改编译文件目录,方法如下:右键点击→工程名称→属性(Properties)或(Building Path)→构建路径(Java Building Path)→源代码选项卡(Source)→...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,895
精华内容 16,358
关键字:

web部署到远程tomcat