Linux|minio对象存储服务的部署和初步使用总结

本文涉及的产品
对象存储 OSS,20GB 3个月
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Linux|minio对象存储服务的部署和初步使用总结

前言:

minio是一个非常轻量化的对象存储服务,是可以算到云原生领域的。

该服务是使用go语言编写的,因此,主文件就一个文件,它的下载,部署什么的都是非常简单的,一般两三步就可以搭建好了,只是有一些细节问题需要在部署使用的时候注意。

本文将就一个可用的minio存储服务部署做一个尽量详细的讲解,并探讨如何将该技术落地。

一,

minio的简介

MinIO现在也是CNCF成员,在云原生存储部分和ceph等一起作为目前的解决方案之一,因此,该服务的一个落地方向是应用在云计算以及云原生的服务编排管理系统kubernetes内的,其次,该服务可以作为一个简单的类ftp服务器(平常给服务器传个文件还是比较方便的)

但由于存储服务的自身特性(与宿主机的操作系统联系紧密,一般是底层服务),因此,该服务爆出的漏洞通常也是比较高危的,因此,我们使用minio这种服务特别需要注意版本问题,推荐使用高版本(高版本的漏洞比较少嘛),如果是实验,测试性质,那么,版本无所谓了。(漏洞相关问题就不在这里啰嗦了,百度一大堆)

其实官网介绍的就比较详细了,官网地址:MinIO | 高性能, Kubernetes 原生对象存储

下载地址:MinIO中国镜像站

二,

minio的部署方式

1 ,rpm部署

这个没什么好说的,简单,方便,但不可定制,在上面的官方下载网站上就有

下载地址:https://dl.minio.org.cn/server/minio/release/linux-amd64/minio-20230413030807.0.0.x86_64.rpm

安装rpm包并查询出自启脚本位置和执行程序位置并加入启动

[root@EULEER ~]# rpm -ivh minio-20230413030807.0.0.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:minio-0:20230413030807.0.0-1     ################################# [100%]
[root@EULEER ~]# rpm -ql minio-20230413030807.0.0-1.x86_64
/etc/systemd/system/minio.service
/usr/local/bin/minio
[root@EULEER ~]# systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

根据自启脚本编写配置文件,自启脚本内容如下:

##需要注意的是,User和Group已被我修改成了minio

[root@EULEER ~]# cat /etc/systemd/system/minio.service 
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
User=minio
Group=minio
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})

OK,根据以上脚本内容,添加普通用户minio(此用户无登陆权限,可以提高系统的安全),并创建minio服务的配置文件:/etc/default/minio

useradd -M -s /bin/nologin

配置文件定义minio使用/data1目录,服务开放端口是39111,web端的登陆用户为minio,密码我这里省略了。

####注:data1这个目录不是随便来的,官方通常建议是用一个单独的硬盘内的目录,实际的生产中肯定是使用数据盘的,(如何挂载数据盘这里就不废话了)。如果集群的话,不使用数据盘,那么,minio会报错数据目录不能和root根文件系统在同一个磁盘,需要使用单独的磁盘,否则启动失败见下图(双硬盘,一个盘挂载到data1目录下的):

 

 

[root@EULEER ~]# cat /etc/default/minio 
MINIO_VOLUMES="/data1"
MINIO_OPTS="--address :39111"
MINIO_ACCESS_KEY=minio
MINIO_SECRET_KEY=密码

新建上述的data1目录并赋权给minio这个用户,需要注意,/data1这个目录必须是空目录:

mkdir /data1
chown -Rf minio. /data1

以上工作完成后,就可以启动minio服务并打开浏览器登陆minio的客户端了,登陆地址是服务器地址+39111:

服务启动和服务状态:

systemctl start minio
[root@EULEER ~]# systemctl status minio 
● minio.service - MinIO
   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-05-18 05:56:36 CST; 9min ago
     Docs: https://docs.min.io
  Process: 5063 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
 Main PID: 5064 (minio)
   CGroup: /system.slice/system-hostos.slice/minio.service
           └─5064 /usr/local/bin/minio server --address :39111 /data1
May 18 05:56:37 EULEER minio[5064]: Copyright: 2015-2023 MinIO, Inc.
May 18 05:56:37 EULEER minio[5064]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
May 18 05:56:37 EULEER minio[5064]: Version: RELEASE.2023-04-13T03-08-07Z (go1.20.3 linux/amd64)
May 18 05:56:37 EULEER minio[5064]: Status:         1 Online, 0 Offline.
May 18 05:56:37 EULEER minio[5064]: API: http://192.168.76.11:39111  http://127.0.0.1:39111
May 18 05:56:37 EULEER minio[5064]: Console: http://192.168.76.11:42317 http://127.0.0.1:42317
May 18 05:56:37 EULEER minio[5064]: Documentation: https://min.io/docs/minio/linux/index.html
May 18 05:56:37 EULEER minio[5064]: Warning: The standard parity is set to 0. This can lead to data loss.
May 18 05:56:38 EULEER minio[5064]: You are running an older version of MinIO released 3 weeks ago
May 18 05:56:38 EULEER minio[5064]: Update: Run `mc admin update`

浏览器的状态:

上图停留的标签在创建桶,具体的创建桶流程如下:

  • bucket name:bucket名字。
  • versioning: 版本控制允许在同一个键下保留同一个对象的多个版本。
  • object locking:对象锁定防止对象被删除。需要支持保留和合法持有。只能在创建桶时启用。
  • quota:配额用于限制桶内的数据量。
  • retention:保留是指在一段时间内防止对象删除的规则。为了设置桶保留策略,必须启用版本控制。

由于minio安装太过于容易了,因此,难度其实在后面的使用,比如,安全方面的设置,权限方面的设置,审计的设置这些。

下面以审计功能为例,讲解如何配置minio的审计功能:

可以看到审计在这里叫消息,不过无所谓,叫什么不重要。minio支持的审计存储很多,刚好我有安装redis,就用redis吧,

redis开启的端口如下:

[root@EULEER yum.repos.d]# netstat -antup |grep redis
tcp        0      0 192.168.76.11:15379     0.0.0.0:*               LISTEN      5581/./redis-server 
tcp        0      0 192.168.76.11:15379     192.168.76.1:51519      ESTABLISHED 5581/./redis-server 
tcp        0      0 192.168.76.11:15379     192.168.76.1:51542      ESTABLISHED 5581/./redis-server 
tcp        0      0 192.168.76.11:15379     192.168.76.1:51570      ESTABLISHED 5581/./redis-server 
tcp        0      0 192.168.76.11:15379     192.168.76.1:51541      ESTABLISHED 5581/./redis-server 
tcp        0      0 192.168.76.11:15379     192.168.76.1:51689      ESTABLISHED 5581/./redis-server 

回到minio,点击redis的图标,进入如下界面:

保存后,显示一个警告,意思需要重启minio服务以应用刚才修改的配置,点restart就重启服务了:

重启完毕后就可以看到有显示redis了:

还差最后一哆嗦,桶指定消息源:

把增删改勾选了,第一个选择redis,保存即可:

随意上传和删除两个文件,在看redis,大概如下:




二,

OK,以上的安装部署是只有一个drive  data1(minio将存放文件的文件夹叫drive)

那么,如何多drive呢?

其实,很简单的,其它的地方都不变,配置文件增加一组文件夹即可(注意是空格隔开,不是分号哦):

[root@EULEER data1]# cat /etc/default/minio 
MINIO_VOLUMES="/data1/test1 /data1/test2 /data1/test3 /data1/test4"
MINIO_OPTS="--address :39111"
MINIO_ACCESS_KEY=minio
MINIO_SECRET_KEY=shiguang32

那么,我们还需要建立实际存在的上述目录并且给这些目录赋予给启动脚本内定义的那个用户,本例是minio:

mkdir /data1/test{1..4}
chown -Rf minio. /data1/

再次启动minio服务,可以看到以下内容:

[root@EULEER data1]# ls -al
total 4
drwxr-xr-x   7 minio minio   76 May 19 09:37 .
dr-xr-xr-x. 22 root  root  4096 May 17 10:31 ..
drwxr-xr-x   7 minio minio   98 May 18 10:42 .minio.sys
drwx------   4 minio minio   36 May 19 09:52 test1
drwx------   4 minio minio   36 May 19 09:52 test2
drwx------   4 minio minio   36 May 19 09:52 test3
drwx------   4 minio minio   36 May 19 09:52 test4
[root@EULEER data1]# tree -a --dirsfirst \./
./
├── .minio.sys
│   ├── buckets
│   │   ├── .bloomcycle.bin
│   │   │   └── xl.meta
│   │   ├── test
│   │   │   ├── .metadata.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage-cache.bin
│   │   │       └── xl.meta
│   │   ├── .usage-cache.bin
│   │   │   └── xl.meta
│   │   └── .usage.json
│   │       └── xl.meta
│   ├── config
│   │   ├── config.json
│   │   │   └── xl.meta
│   │   ├── history
│   │   │   ├── 1ab6e422-56c1-4777-8869-21ccafdfe6c6.kv
│   │   │   │   └── xl.meta
│   │   │   └── 67f69168-adcc-45e5-a5c6-a49ad6c1afa8.kv
│   │   │       └── xl.meta
│   │   └── iam
│   │       ├── format.json
│   │       │   └── xl.meta
│   │       └── sts
│   │           └── RR5YLHZGDAC64AIGJ3U2
│   │               └── identity.json
│   │                   └── xl.meta
│   ├── multipart
│   ├── pool.bin
│   │   └── xl.meta
│   ├── tmp
│   │   └── .trash
│   └── format.json
├── test1
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
├── test2
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
├── test3
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
└── test4
    ├── .minio.sys
    │   ├── buckets
    │   │   ├── .background-heal.json
    │   │   │   └── xl.meta
    │   │   ├── .bloomcycle.bin
    │   │   │   └── xl.meta
    │   │   ├── test
    │   │   │   ├── .metadata.bin
    │   │   │   │   └── xl.meta
    │   │   │   └── .usage-cache.bin
    │   │   │       └── xl.meta
    │   │   ├── .usage-cache.bin
    │   │   │   └── xl.meta
    │   │   └── .usage.json
    │   │       └── xl.meta
    │   ├── config
    │   │   ├── config.json
    │   │   │   └── xl.meta
    │   │   └── iam
    │   │       ├── format.json
    │   │       │   └── xl.meta
    │   │       └── sts
    │   │           └── 0ESAM6BK1PEF87AZ59E2
    │   │               └── identity.json
    │   │                   └── xl.meta
    │   ├── multipart
    │   ├── pool.bin
    │   │   └── xl.meta
    │   ├── tmp
    │   │   └── .trash
    │   └── format.json
    └── test
110 directories, 56 files

OK,启动minio的服务,随意创建一个桶,然后随意上传一个文件后,再次查看文件夹:

[root@EULEER data1]# tree -a --dirsfirst ./
./
├── .minio.sys
│   ├── buckets
│   │   ├── .bloomcycle.bin
│   │   │   └── xl.meta
│   │   ├── test
│   │   │   ├── .metadata.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage-cache.bin
│   │   │       └── xl.meta
│   │   ├── .usage-cache.bin
│   │   │   └── xl.meta
│   │   └── .usage.json
│   │       └── xl.meta
│   ├── config
│   │   ├── config.json
│   │   │   └── xl.meta
│   │   ├── history
│   │   │   ├── 1ab6e422-56c1-4777-8869-21ccafdfe6c6.kv
│   │   │   │   └── xl.meta
│   │   │   └── 67f69168-adcc-45e5-a5c6-a49ad6c1afa8.kv
│   │   │       └── xl.meta
│   │   └── iam
│   │       ├── format.json
│   │       │   └── xl.meta
│   │       └── sts
│   │           └── RR5YLHZGDAC64AIGJ3U2
│   │               └── identity.json
│   │                   └── xl.meta
│   ├── multipart
│   ├── pool.bin
│   │   └── xl.meta
│   ├── tmp
│   │   └── .trash
│   └── format.json
├── test1
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
│       └── \351\242\234\350\211\262.png
│           └── xl.meta
├── test2
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
│       └── \351\242\234\350\211\262.png
│           └── xl.meta
├── test3
│   ├── .minio.sys
│   │   ├── buckets
│   │   │   ├── .background-heal.json
│   │   │   │   └── xl.meta
│   │   │   ├── .bloomcycle.bin
│   │   │   │   └── xl.meta
│   │   │   ├── test
│   │   │   │   ├── .metadata.bin
│   │   │   │   │   └── xl.meta
│   │   │   │   └── .usage-cache.bin
│   │   │   │       └── xl.meta
│   │   │   ├── .usage-cache.bin
│   │   │   │   └── xl.meta
│   │   │   └── .usage.json
│   │   │       └── xl.meta
│   │   ├── config
│   │   │   ├── config.json
│   │   │   │   └── xl.meta
│   │   │   └── iam
│   │   │       ├── format.json
│   │   │       │   └── xl.meta
│   │   │       └── sts
│   │   │           └── 0ESAM6BK1PEF87AZ59E2
│   │   │               └── identity.json
│   │   │                   └── xl.meta
│   │   ├── multipart
│   │   ├── pool.bin
│   │   │   └── xl.meta
│   │   ├── tmp
│   │   │   └── .trash
│   │   └── format.json
│   └── test
│       └── \351\242\234\350\211\262.png
│           └── xl.meta
└── test4
    ├── .minio.sys
    │   ├── buckets
    │   │   ├── .background-heal.json
    │   │   │   └── xl.meta
    │   │   ├── .bloomcycle.bin
    │   │   │   └── xl.meta
    │   │   ├── test
    │   │   │   ├── .metadata.bin
    │   │   │   │   └── xl.meta
    │   │   │   └── .usage-cache.bin
    │   │   │       └── xl.meta
    │   │   ├── .usage-cache.bin
    │   │   │   └── xl.meta
    │   │   └── .usage.json
    │   │       └── xl.meta
    │   ├── config
    │   │   ├── config.json
    │   │   │   └── xl.meta
    │   │   └── iam
    │   │       ├── format.json
    │   │       │   └── xl.meta
    │   │       └── sts
    │   │           └── 0ESAM6BK1PEF87AZ59E2
    │   │               └── identity.json
    │   │                   └── xl.meta
    │   ├── multipart
    │   ├── pool.bin
    │   │   └── xl.meta
    │   ├── tmp
    │   │   └── .trash
    │   └── format.json
    └── test
        └── \351\242\234\350\211\262.png
            └── xl.meta
114 directories, 60 files

把test1文件夹下的那个png文件删除,稍等几秒,文件会自动恢复:

[root@EULEER data1]# rm -rf test1/test/颜色.png/
[root@EULEER data1]# ls -al !$
ls -al test1/test/颜色.png/
ls: cannot access test1/test/颜色.png/: No such file or directory
#等待几秒后,发现文件回来了
[root@EULEER data1]# ls -al test1/test/颜色.png/
total 28
drwxr-xr-x 2 minio minio    21 May 19 10:33 .
drwxr-xr-x 3 minio minio    24 May 19 10:33 ..
-rw-r--r-- 1 minio minio 28337 May 19 10:33 xl.meta

OK,一个高可用的分布式minio集群就搭建完毕了,当然,drive可以在几台服务器上,均匀分布,下面一节说如何完全意义的分布式minio集群。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
目录
相关文章
|
1月前
|
人工智能 运维 API
10分钟零代码,0元立即部署OpenAI开源模型 GPT-OSS
8月,OpenAI推出开源模型gpt-oss-120b和gpt-oss-20b,在多项测试中表现优异,甚至超越GPT-4o等模型。为方便用户部署,阿里云人工智能平台PAI提供一键部署方案,无需编码,可免费体验。用户可通过Model Gallery快速部署模型并使用Cherry Studio客户端进行对话体验。
|
2月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
3月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
423 7
ERPNext 搭建教程:Linux 一键部署与维护
|
5月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
1423 57
|
3月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
353 13
|
3月前
|
关系型数据库 Linux Nacos
Rocky Linux 部署 Docker 和 NACOS 实例
本文介绍在阿里云环境下基于 Rocky Linux 搭建 Docker 并部署 Nacos 的完整流程。涵盖 Docker 安装、镜像加速配置、网络设置及 MySQL 与 Nacos 容器的创建,适用于开发与生产环境。
461 0
|
5月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
303 41
|
5月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
404 17
|
5月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
125 18