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 : 容器内的目录

相关推荐
瞬间&永恒~7 分钟前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
Ashley的成长之路13 分钟前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎18 分钟前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥18 分钟前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare22 分钟前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
oil欧哟29 分钟前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding
审小匠OpenCPAi1 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
撩得Android一次心动1 小时前
Linux编程笔记3【个人用】
linux·笔记
Revolution611 小时前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化