把web项目打成war包

  1. 使用eclipse
  • 右击项目选择export,选择web文件夹中的war file
  • 选择存储位置,可以直接选Tomcat下的webapps目录,反正等一下部署到服务器上也是要放到那里去的
  1. 使用命令行
  • 命令行进入项目StudentInfoManager中,运行

    jar -cvf StudentInfoManager.war *
    
  • 等待打包
  1. maven打包
  • 如果是对多模块maven项目打成war包则对web模块执行mvn package即可。
  • 可以在pom.xml中指定war包的一些特性,不声明以下插件则使用默认配置:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <!--打成war包名,则部署到tomcat后访问https://localhost:8443/finalName(/login)
          跳转登录页面-->
          <warName>${project.build.finalName}</warName>
          <webResources>
            <resource>
              <directory>${basedir}/src/main/webapp/WEB-INF</directory>
              <filtering>true</filtering>
              <targetPath>WEB-INF</targetPath>
              <includes>
                <include>**/web.xml</include>
              </includes>
            </resource>
          </webResources>
        </configuration>
    </plugin>
    
  • 以上三种方法打包成功后会在项目或项目target下生成StudentInfoManager.war文件,将其放到tomcat的webapps目录下

  • 然后直接启动tomcat就行,一般都用自动部署而不配置server了,不过可以了解下server配置。一般Tomcat/conf/server.xml如下配置即可:

      <!--host虚拟主机的作用是运行多个web应用;
    AppBase:指定web应用所在目录(相对于tomcat根目录)
    deployOnStartup:启动时检测是否有新的web并自动部署,一般有autoDeploy就够了
    autoDeploy:运行时定期检测是否有新的web并应用-->
      <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false"> 
              <!--一个Context代表一个web应用,每个web应用基于war文件,或war文件解压后对应的目录
              docBase:war包位置和appBase不一样才需要指定
              path:访问路径,默认是/项目名;path=""表示这是虚拟主机的默认web应用,当请求的url与all path都不符合的时候就用它;
              但是在自动部署的场景下,不能指定path属性-->
              <Context path="/StudentInfoManage" docBase="D:\Eclipse\webApp\StudentInfoManage.war"
                  reloadable="false"/>
    
  • 启动Tomcat:双击bin/startup.bat,窗口闪退的话编辑startup.bat,在末尾增加“pause”,记得下面还要剩下一行或是两行的,否则不生效

  • 再次启动,失败的话看下日志,如果是读取环境变量失败的话,编辑startup.bat

    setlocal
    
    <!--添加这两行-->
    SET JAVA_HOME=D:\jdk\1.8
    SET TOMCAT_HOME=D:\apache-tomcat-7.0.86
    
  • 重新启动,浏览器输入localhost:8080/StudentInfoManager即可访问,访问全程不要叉掉两个启动窗口。
  • 其中一个窗口在访问过程中会打印日志,如果出现WARN:

    Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    
  • 原因是mysql在高版本需要指明是否进行SSL连接

把项目部署到Linux下的tomcat

  • 把项目war包发送到Linux下tomcat的webapps里,执行命令启动tomcat

    cd /usr/java/tomcat/apache-tomcat-7.0.91/bin //进入bin目录
    //方式一:直接启动
    ./startup.sh //缺点:客户端断开连接后tomcat服务也会立即停止
    //方式二:作为服务启动
    nohup ./startup.sh & //作为Linux服务一直运行,和方式一一样会将日志写到tomcat的日志文件catalina.out中,不能直接看到
    //方式三:在当前连接界面动态输出tomcat日志
    ./catalina.sh run //Ctrl+c退出
    //关闭tomcat
    ./shutdown.sh
    
  • 默认网址是————服务器ip:8080/项目名
  • 怕冲突想要修改端口的话可以修改server.xml,把8005改成8006,8080->8081,8009->8010.然后改bin/catalina.sh,在文件首部一堆注释里面加两个export
  • 不过好像都不改也可以的
  • 不过要保证启用的端口有添加在ECS中,添加过程:实例–管理–本实例安全组–配置规则–添加安全组规则
  • 另外,不用改jdbc的url,本地的数据库是localhost:3306,而对于在服务器上运行的web,它访问服务器上的数据库也是localhost,不过3306端口要记得添加到安全组里,虽然 不是外部访问的,但是添加上去好像也没事。