javaWeb后端开发之Linux项目部署3和Docker部署1

1.前端项目部署

  • 将nginx的安装目录的html中的静态资源文件先删除掉
  • 将静态资源文件,全部上传到nginx安装目录下的 html 目录中

  • 修改资料中提供的 nginx.conf 配置文件,将其上传到nginx安装目录下的 conf 目录中

  • 重新加载nginx服务的配置文件

sbin/nginx -s reload

  • 再次访问nginx (可能会存在浏览器缓存, 可以按Ctrl+F5, 强制刷新清理缓存)

nignx服务常见操作指令

启动:sbin/nginx

重载:sbin/nginx -s reload

停止:sbin/nginx -s stop

2.后端项目部署

环境准备:

再准备一份文件 application.yml 将里面的配置的mysql的ip地址及相关配置信息修改一下(配置Linux上安装的MySQL的信息):

改造完毕之后,可以在本地的idea中先启动当前项目,然后访问一下,看看工程是否正常访问

打包部署:

  • 执行 package 指令,进行打包操作,将当前的springboot项目,打成一个jar包(跳过测试)

  • 在Linux服务器上创建一个目录,将jar包上传到服务器

mkdir -p /usr/local/app

  • 通过java命令,启动项目

/usr/local/app cd /usr/local/app

java -jar tlias-web-management-0.0.1-SNAPSHOT.jar

  • 项目启动之后,就可以打开浏览器进行测试

阿里云OSS密钥配置:

由于在开发的时候,将访问阿里云OSS的AccessKeyId,AccessKeySecret都配置在了系统的环境变量中了。那现在项目部署到了Linux服务器中,调用阿里云OSS进行文件上传时,程序就会获取Linux系统中的环境变量。所以,需要将AccessKeyId,AccessKeySecret配置为Linux系统的环境变量

  • 查看Windows系统之前配置的环境变量

echo %OSS_ACCESS_KEY_ID%

echo %OSS_ACCESS_KEY_SECRET%

将上述自己的 AccessKeyId 与 AccessKeySecret 复制出来,然后在linux系统中配置环境变量

  • 执行如下命令

echo "export OSS_ACCESS_KEY_ID=自己阿里云OSS账号的 OSS_ACCESS_KEY_ID" >> /etc/profile

echo "export OSS_ACCESS_KEY_SECRET=自己的阿里云OSS账号的OSS_ACCESS_KEY_SECRET" >> /etc/profile

source /etc/profile

  • 执行完毕后,将finalShell的窗口关闭掉,重新打开一个新窗口(让环境变量生效),重新运行项目测试

后台运行:

  • 后台运行程序

nohup java -jar tlias-web-management-0.0.1-SNAPSHOT.jar &> tlias.log &

服务运行之后, 所有的日志信息都会输出到 tlias.log 文件中

  • 停止服务

nohup命令说明:

用于不挂断地运行指定命令,退出终端不会影响程序的运行

语法:nohup command [ args ... ] [&]

参数说明:

command:要执行的命令

args:一些参数,可以指定输出文件

&:让命令在后台运行

Docker项目部署

1.快速入门

部署MySQL

使用Docker安装,仅仅需要一步即可,在命令行输入下面的命令:

MySQL安装完毕!通过任意客户端工具即可连接到MySQL

这里下载的不是安装包,而是镜像

镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库

因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了

这套独立运行的隔离环境我们称为容器

Docker安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程

总结:

Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了

命令解读:

docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

--name mysql : 给容器起个名字叫mysql,你可以叫别的

-p 3307:3306 : 设置端口映射

  • e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

mysql:8 :设置镜像名称,Docker会根据这个名字搜索并下载镜像

镜像的名称不是随意的,而是要到DockerRegistry中寻找,镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到

2.Docker基础

常见命令:

注:

默认情况下,每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。通过命令可以实现开机自启:

systemctl enable docker Docker开机自启

docker update --restart=always 容器名/容器id Docker容器开机自启

演示:(以Nginx为例)

3.数据卷:

程序运行产生的数据、程序运行依赖的配置都应该与容器解耦

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

以Nginx为例,我们知道Nginx中有两个关键的目录:

html:放置一些静态资源;conf:放置配置文件

要让Nginx代理静态资源,最好是放到html目录;

要修改Nginx的配置,最好是找到conf下的nginx.conf文件

创建了两个数据卷:confhtml

Nginx容器内部的conf目录和html目录分别与两个数据卷关联

而数据卷conf和html分别指向了宿主机的/var/lib/docker/volumes/conf/_data目录和/var/lib/docker/volumes/html/``_data目录

所以容器内的confhtml目录就 与宿主机的confhtml目录关联起来,我们称为挂载

命令:

注:

容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建

演示(nginx的html目录挂载):

演示(MySQL的匿名数据卷):

第一是.Config.Volumes部分:

发现这个容器声明了一个本地目录,需要挂载数据卷,但是数据卷未定义。这就是匿名卷

.Mounts部分:

Name:数据卷名称。由于定义容器未设置容器名,这里的就是匿名卷自动生成的名字,一串hash值。

Source:宿主机目录

Destination : 容器内的目录

相关推荐
PiaoKe___1 小时前
云手机原理与 Python 自动化实战:ADB 批量控制、任务调度与落地建议
服务器·arm开发·python·自动化
NamoAmitabha1287 小时前
libpng12-0 1.2.54-1ubuntu1.1 (amd64 binary) in ubuntu xenial
linux·ubuntu20.4
Madison-No78 小时前
搭建项目测试环境
linux·运维·服务器·python
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·课程设计
吴声子夜歌9 小时前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
悠悠121389 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
Nicander10 小时前
我给 Excalidraw 做了一个本地工作区:DrawSpace
前端·开源
xiaoye-duck10 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
云老大-阿里云国际站代理商11 小时前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
zx_7414848111 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式