写给还用Win服务器的朋友,该转型Linux啦

语言: CN / TW / HK

theme: fancy highlight: arduino-light


前言

  • 在线音乐戳我呀!
  • 音乐博客源码上线啦!
  • 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
  • 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
  • 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
  • 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
  • 下面一步一步带你走进全过程 | Java篇。

阿玲第一次混搭爆炒,还不是为了把虾吃掉。

269675952909cc05cb6471f09aebd2b.jpg

需求

目前音乐博客部署在Win7上,应用主要有: - 后端有 - Java作为第三方应用,需要安装Java镜像(✔️) - Node作为主后台,需要安装Node镜像 - 数据库有 * Java连接Oracle,需要安装Oracle镜像 * Node连接Mysql,需要安装Mysql镜像 - 前端项目部署在Nginx,需要安装Nginx镜像 - 歌词服务也是部署在Node上 - Node连接的是Mysql,需要安装Mysql镜像 - Java连接的是Oracle,需要安装Oracle镜像 - 音乐文件存放在Minio上

需要将以上应用迁移到Linx上,干!

很多公司不让碰服务器,现在可以看看关注我,记录从Linux上无到有,全过程。
这一篇是主要还是写给还在用win服务器的、准备迁移Linux的朋友,可以练习迁移服务器到Linux,Linux有很多好处,最可见的就是空间、速度快...
迁移过程中,势必会有很多坑等着你来解决,上方的需求都会写上,本篇主要讲解Docker部署Java,其他应用后续持续更新,敬请期待!

一、阿里云换Linux系统

首先是将服务器换成Linux系统。

如果要使用Linux,我们需要两个软件xshell、xfrp来连接服务器,可以看看使用xshell实现windows和vm虚拟机上的centos文件互传功能(以及安装xshell)

选择阿里云后台 -- 服务器运维 -- 重置系统

2.png

系统镜像就像官方原版,应用镜像就像在官方原版的基础上,安装了一些软件。

1.1 系统镜像

Alibaba Cloud Linux:新出的镜像,CentOS的分叉(如果不需要安装什么应用环境就建议安装)

1.2 应用镜像

Docker

PS:系统镜像、应用镜像只能二选一。

最终决定:选择Docker应用镜像,因为就算选了阿里的系统镜像,也会去安装docker,程序放在docker,到时候打包搬家也方便,也顺便学学docker(是主要😁)。

1.png

✔️服务器环境已成功将Win7换成linux、Docker。

1.3 系统镜像和应用镜像是什么区别

系统镜像就像官方原版,应用镜像就像在官方原版的基础上,安装了一些软件,省去了自己安装的烦恼。

二、Docker运行Jar包

上面选择Docker应用镜像后,服务器上会自动安装Docker环境。

我将jar包放在 /home/java 目录下。

2.1 Dockerfile的创建

构建镜像需要创建一个Dockerfile文件,这是一个构建镜像用的文本文件,它没有后缀格式,就叫Dockerfile。

Dockerfile文件:

FROM java:8 MAINTAINER zeze COPY eureka-server.jar app.jar CMD java -jar app.jar EXPOSE 7000

参数说明

  • FROM java:8

    • 基础镜像是docker仓库的java8镜像,这样我们创建的镜像就有jdk了,才能运行jar包。
  • MAINTAINER zeze

    • 镜像作者是zeze。
  • COPY eureka-server.jar app.jar

    • 简化jar的名字路径,因为eureka的jar包在当前文件夹下,所以直接写文件名字就行。
  • CMD java -jar app.jar

    • 运行cmd命令,会在启动容器时运行(其实就是写我们平时运行jar包的命令)。
  • EXPOSE 7000

    • 设置对外端口为7000。

2.2 构建镜像

在docker中,使用cd命令切换到jar包文件夹目录下(我在/home/java目录),然后运行命令。

java docker build -t eureka .

如此就构建成功了。

注意:
build的时候,镜像名字不能是大写,之前命名叫bokeJava是会报错的。
当然你写成boke.java也是可以的。

2.3 查看docker镜像

使用docker images命令可以查看已有镜像

17.png

可以看到我们创建的eureka镜像。

2.4 使用镜像启动容器

java docker run -d -p 7000:7000 eureka

参数说明

  • -d

    • 后台运行,去掉-d的话我们启动容器后会进入该容器,看到日志的打印什么的。
  • -p 7000:7000

    • 端口映射,后一个7000表示镜像的端口(这里我们eureka端口是7000,所以都统一用了7000端口)。
  • eureka

    • 我们的镜像名称,也可以换成镜像id。

18.png

如此就启动成功了。

2.5 查看容器

docker ps -a

19.png

可以看到我们的eureka容器。

使用docker ps查看的是成功运行的容器,而docker ps -a查看的是全部容器,包括运行失败的容器。

2.6 测试

jar包看日志是没有报错的,外网访问一下,发现不通。

解决:端口要全部保持一致,springboot里面的端口、Dockerfile的端口、Linux的端口要映射好,也就是docker run -d -p 7000:7000 eureka要映射对应。阿里云端口要开放,也怀疑是网关没配,但阿里云默认帮我们配置了。

检查一遍,发现springboot项目里面的端口写的不是7000,所以改过来就访问成功了。

26.png

最后

我们完成了需求之一:Java作为第三方应用,已迁移到Linux的Docker中。

我们总是喜欢以项目来驱动学习,不是吗?

我也是,通过个人项目 - 在线音乐 来驱动我学习Linux系统、Docker、Java、Nginx等等前端可能接触不到的知识,我想这可能就是管理层的“广度”。

下篇讲解Mysql,回见啦~

相关文献

系统镜像和应用镜像是什么区别

Docker运行jar包

以往推荐

Typora拖拉图片生成在线图片 | Gitee图床

多图详解,一次性啃懂原型链(上万字)

Vue-Cli3搭建组件库

Vue实现动态路由(和面试官吹项目亮点)

项目中你不知道的Axios骚操作(手写核心原理、兼容性)

VuePress搭建项目组件文档

vue-typescript-admin-template后台管理系统

原文链接

http://juejin.cn/post/7021284581022105636/