部署项目到 Linux

travel 项目介绍

travel 项目是在 IDEA 下开发的 maven 的 web 项目,可以查询旅游信息。这里练习将它部署到 linux 服务器上。

部署之前

准备数据库环境

  1. 连接到开发时使用的本机的 mysql 服务器,备份 travel 数据库,导出为 travel.sql
    1. 使用 SQLYog 连接到本机 mysql 服务器
    2. 选中 travel 数据库
    3. 右键 → 备份/导出 → 备份数据库,转储到 SQL → 导出为 travel.sql
  2. 连接到部署后使用的远程的 mysql 服务器,根据 sql 文件恢复出 travel 数据库。
    1. 使用 SQLYog 连接到远程 mysql 服务器
    2. 空白处右键 → 执行 SQL 脚本 → 执行 travel.sql

修改资源地址

MySQL 服务器地址

druid.properties:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///travel?characterEncoding=utf-8
username=root 
password=root
initialSize=5
maxActive=10
maxWait=3000

分析:

  • 因为 mysql 服务器和 tomcat 安装在同一台计算机上,因此 url 中主机部分依然可以省略。
  • 部署时用的 mysql 服务器和开发时使用的 mysql 服务器端口号、用户名、密码均相同,不必修改。
  • 其他连接池配置信息也不必修改。
  • 但是需要在 url 中添加 characterEncoding=utf-8,原因如下:
    • 部署时使用的 mysql 服务器的默认字符集是 latin1,而 travel 数据库的字符集是 utf-8。如果不写,如果不写,则发送到 mysql 服务器的查询语句或者更新语句中的中文字符会被替换为 ?。
    • 开发时使用的 mysql 服务器在安装后进行的 MySQL Server Instance Configuration Wizard 中已经将默认字符集设置为 utf-8,和 travel 数据库使用的字符集相同,这种情况下可以省略 characterEncoding=utf-8。

Redis 服务器地址

jedis.properties:

host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10

分析:

  • 因为 redis 服务器和 tomcat 安装在同一台计算机上,因此 host=127.0.0.1 没有问题,不必修改。
  • 部署时用的 redis 服务器 和 开发时使用的 redis 服务器端口号相同,不必修改。
  • 其他连接池配置信息也不必修改。

修改网页资源地址

  • header.html:

    location.href="http://localhost/travel/route_list.html?cid=" + cid + "&rname=" + rname;
    修改为:
    location.href="route_list.html?cid=" + cid + "&rname=" + rname;
    
  • route_detail.html:

    location.href="http://localhost/travel/login.html";
    修改为
    location.href="login.html";
    

修改编译插件配置

由于 linux 服务器上安装的是 jdk 1.7,因此需要修改 pom 文件中编译插件的配置。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>utf-8</encoding>
    </configuration>
</plugin>
  • source:提供与指定发行版的源兼容性
  • target:生成特定 VM 版本的类文件

指定产生的构件名

<finalName>travel</finalName>

finalName 是产生的构件的文件名,默认值是${artifactId}-${version},在这里是 travel-1.0-SNAPSHOT,改成 travel,那么打包以后会生成 travel.war,名称短一点方便项目部署以后访问。

部署

个人理解:部署就是把什么东西放到什么地方,听候调遣。部署项目就是把项目(war包)放到 tomcat 指定目录,供运行时的 tomcat 调遣。

打包

mvn clean package
  • 将项目打成 war 包
  • 根据控制台提示信息可以知道 war 包位置

    [INFO] Building war: C:\Users\Admin\Documents\travel\travel\target\travel.war
    

上传

将 war 包放到 linux 服务器里的 tomcat 的 webapps 目录

  1. 使用 SecureCRT 连接远程 linux 服务器
  2. 启动 redis

    cd /usr/local/redis/bin
    ./redis-server
    
  3. 启动 tomcat

    SecureCRT 会话标签页头部右键 → 克隆会话
    cd /root/apache-tomcat-7.0.57/bin
    ./startup.sh
    
  4. 动态查看日志

    SecureCRT 会话标签页头部右键 → 克隆会话
    cd /root/apache-tomcat-7.0.57/logs
    tail -f catalina.out
    
  5. 将 travel.war 上传至 tomcat 的 webapps 目录

    SecureCRT 会话标签页头部右键 → 克隆会话
    cd /root/apache-tomcat-7.0.57/webapps
    rz
    
    由于 tomcat 是启动状态,当检测到 war 包之后,会自动解压缩,然后完成 travel 项目的部署。
    但是上传时间较长,tomcat 会解压一个没有上传完的 war,因此在日志里有如下错误信息:
    java.util.zip.ZipException: error in opening zip file
    travel 项目也因此没有部署成功
    
    只要先将 travel.war 上传至 linux 服务器其他目录,再移动到 webapps 下就没有上面的问题了。
    cd /root/apache-tomcat-7.0.57/
    rz
    mv travel.war webapps
    
    不一会儿,catalina.out 中追加了这么一段
    INFO: Server startup in 1515 ms
    Aug 28, 2020 8:04:21 AM org.apache.catalina.startup.HostConfig deployWAR
    INFO: Deploying web application archive /root/apache-tomcat-7.0.57/webapps/travel.war
    Aug 28, 2020 8:04:26 AM org.apache.catalina.startup.HostConfig deployWAR
    INFO: Deployment of web application archive /root/apache-tomcat-7.0.57/webapps/travel.war has finished in 4,446 ms
    
    travel 项目部署成功!
    

访问

部署成功之后,使用本地的火狐浏览器,地址栏输入 http://192.168.214.128:8080/travel/ 可以访问 travel项目!不要使用 Microsoft Edge 浏览器!

posted @ 2020-08-28 10:57  学习java进行时  阅读(153)  评论(0编辑  收藏  举报