本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
- 在线音乐戳我呀!
- 音乐博客源码上线啦!
- 前两个月有一段时间没有写文章了,不是我懒,而是最近项目加班太严重了,连续加班一个星期,项目经理自己下班早,看不到凌晨三点努力的我们,就说版本不可延期,上线后请一天假休息还撕破嘴皮。
- 做一件事,最心酸的莫过于你已经很努力干活了,甚至没有一点怨言,只想听到别人对你的赞扬,心里可能就足矣,最怕人家根本不领情,反倒过来说你这不好,那不好。
- 当然晚上还是会花点时间学习,毕竟时间就像牛奶一样,挤一点总会有的。
- 之前在顺德工作服务器是Win,导致我的服务器一直都是Win,换工作到广州,服务器基本都是Linx,发现Linx各种好,对于我现在,空间是一道硬伤,于是我决定迁移成Linx系统。
- 下面一步一步带你走进全过程 | Java篇。
阿玲第一次混搭爆炒,还不是为了把虾吃掉。
需求
目前音乐博客部署在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)
选择阿里云后台 -- 服务器运维 -- 重置系统
系统镜像就像官方原版,应用镜像就像在官方原版的基础上,安装了一些软件。
1.1 系统镜像
Alibaba Cloud Linux:新出的镜像,CentOS的分叉(如果不需要安装什么应用环境就建议安装)
1.2 应用镜像
Docker
PS:系统镜像、应用镜像只能二选一。
最终决定:选择
Docker应用镜像,因为就算选了阿里的系统镜像,也会去安装docker,程序放在docker,到时候打包搬家也方便,也顺便学学docker(是主要😁)。
✔️服务器环境已成功将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目录),然后运行命令。
docker build -t eureka .
如此就构建成功了。
注意:
build的时候,镜像名字不能是大写,之前命名叫bokeJava是会报错的。
当然你写成boke.java也是可以的。
2.3 查看docker镜像
使用docker images命令可以查看已有镜像
可以看到我们创建的eureka镜像。
2.4 使用镜像启动容器
docker run -d -p 7000:7000 eureka
参数说明
-
-d:- 后台运行,去掉-d的话我们启动容器后会进入该容器,看到日志的打印什么的。
-
-p 7000:7000:- 端口映射,后一个7000表示镜像的端口(这里我们eureka端口是7000,所以都统一用了7000端口)。
-
eureka:- 我们的镜像名称,也可以换成镜像id。
如此就启动成功了。
2.5 查看容器
docker ps -a
可以看到我们的eureka容器。
使用
docker ps查看的是成功运行的容器,而docker ps -a查看的是全部容器,包括运行失败的容器。
2.6 测试
jar包看日志是没有报错的,外网访问一下,发现不通。
解决:端口要全部保持一致,springboot里面的端口、Dockerfile的端口、Linux的端口要映射好,也就是docker run -d -p 7000:7000 eureka要映射对应。阿里云端口要开放,也怀疑是网关没配,但阿里云默认帮我们配置了。
检查一遍,发现springboot项目里面的端口写的不是7000,所以改过来就访问成功了。
三、在线音乐后台Java部署过程史
讲到Docker安装使用Java,我也顺便贴上实战过程中,我的在线音乐后台Java部署遇到的错误也分享一下下。
在Oracle安装完成后,用本地远程连接Oracle数据库,测试一下。
结果提示:java.sql.SQLException: Listener refused the connection with the following error
jdbc连接ORACLE数据库(11g)时出现如题错误的一种可能:
//oracle连接标识
String url = "jdbc:oracle:thin:@192.168.0.200:1521:orcl";
必须与文件:oracle\product\10.2.0\db_1\network\admin\tnsnames.ora中:
RHORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
对应:@后面接相对应的HOST,PORT,SERVICE_NAME的值。
查了一遍,发现是述符写得不对。
怎么查的?
在Linux上输入:vi /etc/profile中查到是:helowin,修改过来即可。
最后
我们完成了需求之一:Java作为第三方应用,已迁移到Linux的Docker中。
我们总是喜欢以项目来驱动学习,不是吗?
我也是,通过个人项目 - 在线音乐 来驱动我学习Linux系统、Docker、Java、Nginx等等前端可能接触不到的知识,我想这可能就是管理层的“广度”。
下篇讲解Mysql,回见啦~
相关文献
java.sql.SQLException: Listener refused the connection with the following error
以往推荐
vue-typescript-admin-template后台管理系统