美文网首页
在腾讯云上部署自己java web工程 初步探索

在腾讯云上部署自己java web工程 初步探索

作者: dwwl | 来源:发表于2019-06-15 12:09 被阅读0次

    腾讯云服务器的远程连接方式通过secureCRT进行连接 (需要配置在腾讯云后台生成的公钥)

    连接之后,在linux虚拟机上安装docker

    1、检查内核版本,必须是3.10及以上
    uname -r
    2、安装docker
    yum install docker
    3、输入y确认安装
    4、启动docker
    [root@luyuhui java]# systemctl status docker
    [root@localhost ~]# systemctl start docker
    [root@localhost ~]# docker -v
    Docker version 1.12.6, build 3e8e77d/1.12.6
    5、开机启动docker
    [root@localhost ~]# systemctl enable docker
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
    6、停止docker
    systemctl stop docker
    

    在安裝过程中也出现了些问题,不过网上都有解决方案

    docker常用命令

    镜像操作
    • docker search 关键字
    • docker pull 镜像名:tag tag是可选的,tag表示标签,多为软件的版本,默认是lastest
    • docker images 查看所有本地镜像
    • docker rmi image-id 删除指定的本地镜像
    容器操作
     docker run --name mytomcat -d tomcat:latest    
    
     使用docker镜像tomcat:latest以后台模式启动一个容器,并将容器命名为mytomcat。
     
     docker ps  查看运行中的容器
     
     docker ps -a  查看所有的容器
     
     docker start 容器id
     
     docker rm 容器id
    

    创建容器时的端口映射

    docker run -d -p 8080:8080 tomcat:latest
    

    使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到主机8080端口。

    linux的防火墻操作

    service firewalld status ;查看防火墙状态
    service firewalld stop:关闭防火墙
    

    linux上的jdk安装在linux文件系统即可,容器可以正常使用。

    docker安裝tomcat后,工程的部署过程

    比较重要的几条命令

    docker exec -it  CONTAINER_ID  bash
    进入容器终端并且的保留为容器终端的输入形式
    
    在sftp中用put命令上传war包到linux系统(secureCRT按alt + p进入sftp界面)这种方式的自我感觉传输速度较快,但是传输上去之后是放在当前用户的根文件夹,比如root用户登录,传输的文件放在/root文件夹,
    
    linux下docker 拷贝linux文件系统下 文件到docker容器的命令
    docker cp chang.war cfa3f9d36b1b:/usr/local/tomcat/webapps 
    命令中的cfa3..表示的容器id
    
    将war包copy到wenapps下后就完成java web工程的部署
    

    SpringBoot项目打成war包过程:

    SpringBoot项目默认的是使用的内置的tomcat,所以直接打成war包还是有问题的

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

    作用返回scope = compile,也就是说这个项目在编译,测试,运行阶段都是需要这个artifact(模块)对应的jar包在classpath中。对于scope = provided的情况,可以以为这个模块,在要运行的容器中已经有这个模块了,只影响编译、测试

    maven中三种classpath 
    编译,测试,运行 
    1.compile:默认范围,编译测试运行都有效 
    2.provided:在编译和测试时有效 
    3.runtime:在测试和运行时有效 
    4.test:只在测试时有效 
    5.system:在编译和测试时有效,与本机系统关联,可移植性差
    

    疑问**:在引入spring-boot-starter-web后添加spring-boot-starer-tomcat会不会出现依赖冲突问题。有空利用idea分析,

    在tomcat starter中有这么的描述

    Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web
    

    应该是不会冲突,打的war包也能正常启动,但是现在不知道是怎么进行处理的。

    pom文件修改后,修改启动类

    @SpringBootApplication
    public class ResttemplatedemoApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(ResttemplatedemoApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ResttemplatedemoApplication.class, args);
        }
    }
    

    关于为何继承SpringBootServletInitializer,这个类在spring启动过程中,启动什么作用,还需要研究研究源码。

    然后maven clean package即可。

    相关文章

      网友评论

          本文标题:在腾讯云上部署自己java web工程 初步探索

          本文链接:https://www.haomeiwen.com/subject/xqqbfctx.html