实现分别在Linux、Docker、Kubernetes上安装部署Mysql、Redis、Nginx软件

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

实现目的:

Linux上一键安装Mysql、Nginx、Redis软件

一键安装Mysql脚本

一键安装Redis脚本

一键安装Nginx脚本

docker上安装部署Mysql、Nginx、Redis容器

Kubernetes上安装部署Mysql、Nginx、Redis的Pod和通过Service发布

创建Pod生成容器

使用Service发布


实现目的:

目的是方便用户快速安装Mysql、Redis、Nginx这三个软件,其中有部分配置可以自行舍取,脚本经供参考,实际工作可按需求调整。

Linux上一键安装Mysql、Nginx、Redis软件

一键安装Mysql脚本

[root@localhost ~]# cat onekey_install_mysql_binary.sh 
#!/bin/bash
 
#步骤:
#解决软件依赖关系
yum install libaio cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y

#需要自己下载Mysql二进制镜像

#解压二进制安装包
tar -xvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
 
#移动mysql解压文件到/usr/local下,改名为mysql
mv mysql-8.0.33-linux-glibc2.28-x86_64 /usr/local/mysql
 
#新建组和用户 mysql
groupadd mysql
 
#mysql这个用户的shell 是/bin/false 无法被调用 表示系统用户 属于mysql这个组
useradd -r -g mysql -s /bin/false mysql
 
#进入/usr/local/mysql
cd /usr/local/mysql
 
#关闭firewalld防火墙服务,并且设置开机不启动
service firewalld stop
systemctl disable firewalld 
 
#临时关闭selinux,永久关闭selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
 
#mysql初始化操作
#创建/data/mysql文档用于存放数据使用
mkdir /data/mysql -p
#修改文件权限和组别,这样mysql用户可以对这个文件夹进行读写操作了
chown -R mysql:mysql /data/mysql/
chmod -R 750 /data/mysql/
 
#进入/usr/local/mysql/bin目录下进行初始化操作
cd /usr/local/mysql/bin
#设置启动用户为mysql base目录为/usr/local/mysql/ data目录为/data/mysql   &>passwd.txt目的是将生成的临时密码存入passwd.txt文件中
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql --lower-case-table-names=1 &>passwd.txt 
 
#让mysql支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
 
#获得临时密码
tem_passwd=$(cat passwd.txt| grep "temporary" | awk '{print $NF}')
#$NF表示最后一个字段
 
#修改环境变量,添加我们编译安装的mysql的可执行命令的路径
#临时修改PATH变量的值
export PATH=/usr/local/mysql/bin/:$PATH
#永久修改
echo "PATH=/usr/local/mysql/bin:$PATH" >>/root/.bashrc

#刷新环境变量
source ~/.bashrc
 
#复制support-files里的mysql.server文件到/etc/init.d目录下叫mysqld
cp ../support-files/mysql.server  /etc/init.d/mysqld
 
#修改/etc/init.d/mysqld内的第70行的内容(datadir目录的值)
sed -i '70c  datadir=/data/mysql' /etc/init.d/mysqld
 
#生成/etc/my.cnf配置文件
cat  >/etc/my.cnf  <<EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m  mysql>
EOF
 
#启动mysqld服务
service mysqld start
 
#将mysqld添加到linux系统里的服务管理名单里
chkconfig --add mysqld
#设置mysqld服务开机启动
/sbin/chkconfig mysqld on
 
#登录重新设置初始密码为123456
#初次修改密码需要使用 --connect-expired-password 选项
#-e 后面接的命令是表示我们需要在mysql里执行的命令
#set password='123456'; 表示修改root用户的密码为:123456 
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123456';"
 
#建议修改密码是否修改成功
mysql -uroot -p123456 -e 'show databases;' && echo "database is installed success" 

[root@localhost ~]# 

注意:当部署好Mysql的时候,需要外部访问的时候,我们需要在Mysql内创建一个用户使他有权限被外部访问,因为我们的Mysql默认是不允许root用户外部登陆的

参考:Mysql服务器的外部连接_mysql外部连接_Claylpf的博客-CSDN博客

一键安装Redis脚本

[root@localhost ~]# cat onekey_install_redis.sh 
#!/bin/bash

#安装Redis依赖
yum install gcc tcl -y

mkdir /usr/local/redis/

#下载好的redis安装包
#wget https://github.com/redis/redis/archive/7.2.1.tar.gz

#上传到/usr/local/src目录下
#mv redis-7.2.1.tar.gz /usr/loacl/redis/redis-7.2.1.tar.gz

cd /usr/local/redis/

#解压redis安装包
tar -zxvf redis-7.0.11.tar.gz

#进入redis包,并运行编译
cd redis-7.0.11
make && make install

#关闭firewalld防火墙服务,并且设置开机不启动
service firewalld stop
systemctl disable firewalld

#临时关闭selinux,永久关闭selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config

#将redis配置文件备份一份
cp redis.conf redis.conf.bck

# 修改redis备份文件
sed -i 's/^bind .*/bind 0.0.0.0/' redis.conf
sed -i 's/^\(daemonize\) no$/\1 yes/' redis.conf
sed -i '/^# requirepass/s/^# //; /^requirepass/s/.*/requirepass 123456/' redis.conf
sed -i 's/^logfile ""$/logfile "redis.log"/' redis.conf

#重新启动redis
redis-server redis.conf

#实现redis开机自启

cat  >/etc/systemd/system/redis.service  <<EOF
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis-7.0.11/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

#重载系统服务
systemctl daemon-reload

#重启redis
systemctl restart redis

#实现开机自启
systemctl enable redis

#查看redis状态
systemctl status redis

#查看redis版本
redis-server --version

[root@localhost ~]# 

一键安装Nginx脚本

[root@localhost ~]# cat onekey_install_nginx.sh 
#!/bin/bash
 
#新建一个文件夹用来存放下载的nginx源码包
mkdir -p  /nginx
cd /nginx
 
#新建工具人用户、设置无法登录模式
useradd  -s /sbin/nologin  clay
 
#下载nginx
#wget  http://nginx.org/download/nginx-1.23.2.tar.gz
#curl -O http://nginx.org/download/nginx-1.24.0.tar.gz

mv ~/nginx-1.24.0.tar.gz nginx-1.24.0.tar.gz 
 
#解压nginx源码包
tar xf nginx-1.24.0.tar.gz
 
#解决软件依赖关系、需要安装的软件包
yum install epel-release -y
yum install gcc gcc-c++ openssl openssl-devel  pcre pcre-devel  automake  make  psmisc  net-tools lsof vim geoip  geoip-devel wget  zlib zlib-devel -y  
 
#到达nginx配置文件目录下
cd nginx-1.24.0
 
#编译前的配置
./configure  --prefix=/usr/local/nginx  --user=clay  --with-http_ssl_module --with-http_v2_module --with-stream --with-http_stub_status_module --with-threads 
 
#编译、开启一个进程同时编译
make -j 1
 
#编译安装
make install
 
#启动nginx
/usr/local/nginx/sbin/nginx
 
#永久修改PATH变量
PATH=$PATH:/usr/local/nginx/sbin
echo "PATH=$PATH:/usr/local/nginx/sbin"  >>/root/.bashrc
#设置nginx的开机启动--手动添加
#在/etc/rc.local中添加启动命令
#/usr/local/scnginx66/sbin/nginx
echo "/usr/local/nginx/sbin/nginx"  >>/etc/rc.local
#给文件可执行权限
chmod +x /etc/rc.d/rc.local

#刷新/root/.bashrc配置文件
source ~/.bashrc

#selinux和firewalld防火墙都需要关闭
service firewalld stop
systemctl disable firewalld
 
#临时关闭selinux
setenforce 0
 
#永久关闭selinux (需要开机重启)
#vim /etc/selinx/config 
sed -i '/^SELINUX=/ s/enforcing/disabled/'  /etc/selinux/config

#查看nginx是否运行成功
ps aux|grep nginx

[root@localhost ~]# 

安装完成后查看效果:

docker上安装部署Mysql、Nginx、Redis容器

首先拉取其中的镜像

下图为拉取的镜像类型(nginx:1.24.0  Mysql:8.0.33  redis:7.0.11)

 使用docker run命令部署容器

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql-8.0.33 mysql:8.0.33

docker run -d -p 80:80 --name nginx-1.24 nginx:1.24

docker run -d -p 6379:6379 --name redis-7.0.11 redis:7.0.11

部署成果:

Kubernetes上安装部署Mysql、Nginx、Redis的Pod和通过Service发布

创建Pod生成容器

首先编辑nginx-deployment.yaml 文件

(base) root@sd-cluster-04:~# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: testns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.24
        ports:
        - containerPort: 80
(base) root@sd-cluster-04:~# 

编辑mysql-deployment.yaml文件

(base) root@sd-cluster-04:~# cat mysql-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
  namespace: testns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0.33
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        ports:
        - containerPort: 3306
(base) root@sd-cluster-04:~# 

编辑 redis-deployment.yaml 

(base) root@sd-cluster-04:~# cat redis-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-deployment
  namespace: testns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:7.0.11
        ports:
        - containerPort: 6379
(base) root@sd-cluster-04:~# 

使用 kubectl apply -f 命令运行.yaml文件

(base) root@sd-cluster-04:~# kubectl apply -f mysql-deployment.yaml 

查看效果

(base) root@sd-cluster-04:~# kubectl get pods -n testns -o wide
NAME                                READY   STATUS        RESTARTS   AGE   IP             NODE            NOMINATED NODE   READINESS GATES
mysql-deployment-66c4d975f5-zm4sz   1/1     Running       0          77m   10.244.0.212   sd-cluster-04   <none>           <none>
nginx-deployment-76bd958557-slspm   1/1     Running       0          89m   10.244.1.250   sd-cluster-05   <none>           <none>
redis-deployment-f7d7dd455-xk7h8    1/1     Running       0          21m   10.244.0.215   sd-cluster-04   <none>           <none>
(base) root@sd-cluster-04:~# 

使用Service发布

创建nginx-service.yaml文件

(base) root@sd-cluster-04:~# cat nginx-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: testns
  labels:
    app: nginx
spec:
  type: NodePort
  selector:
    app: nginx  
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
(base) root@sd-cluster-04:~# 

编辑mysql-service.yaml文件

(base) root@sd-cluster-04:~# cat mysql-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  namespace: testns  
  labels:
    app: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306  
      protocol: TCP
  selector:
    app: mysql 
(base) root@sd-cluster-04:~# 

编辑redis-service.yaml 文件

(base) root@sd-cluster-04:~# cat redis-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: testns
  labels:
    app: redis
spec:
  type: NodePort
  selector:
    app: redis
  ports:
    - protocol: TCP
      port: 6379
      targetPort: 6379
(base) root@sd-cluster-04:~#

使用kubectl apply -f 命令运行.yaml文件

(base) root@sd-cluster-04:~# kubectl apply -f nginx-service.yaml 

查看效果

(base) root@sd-cluster-04:~# kubectl get service -n testns -o wide
NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
mysql-service   NodePort   10.96.132.123   <none>        3306:30859/TCP   85m   app=mysql
nginx-service   NodePort   10.96.16.39     <none>        80:30325/TCP     87m   app=nginx
redis-service   NodePort   10.96.10.164    <none>        6379:30026/TCP   89m   app=redis
(base) root@sd-cluster-04:~# 

Kuboard(k8s)安装部署mysql8.0 出现如下内容就表示安装成功。 阅读详情

相关推荐

Kubernetes部署_06_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

Kubernetes部署_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

毛毛的专栏 2724

kubernetes安装配置详解

kubernetes安装配置详解,docker配置,路由配置,k8s的监控实例配置以及nginx实例配置等等。下载app注册免费获取:http://m3w.cn/jcsh

从零搭建K8s集群:Docker容器化与Kubernetes部署实战指南

如果你是一名运维工程师、开发人员,或者正在向云计算转型的技术人,最近是否被“云原生”、“容器化”、“微服务”这些词反复轰炸,却感觉它们离自己的日常工作很远?你是否尝试过学习 Docker Kubernetes,但被复杂的网络模型、YAML 配置各种抽象概念劝退,感觉看了一堆教程,还是无法在自己的项目里真正用起来? 问题不在于技术本身,而在于学习路径。很多教程要么停留在 docker run hello-world ,要么直接跳入复杂的生产级 K8s 集群部署,中间缺少了最关键的一环: 如何将容器技术平

diaogan4202的博客 356

云原生之在kubernetes集群下部署Mysql应用

云原生之在kubernetes集群下部署Mysql应用

jks212454的博客 3226

应用上云-在kubernetes部署MySQL

kubernetes部署MySQL,对比使用DeploymentStatefulSet部署MySQL的区别。

weixin_45093078的博客 1452

Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

上一篇,介绍基于 k8s 项目部署流程设计;本篇,介绍 MySQL 服务的部署

BraveWangDev 4089

K8s+Docker+KubeSphere+DevOps笔记

提示:这里可以添加本文要记录的大概内容:提示:以下是本篇文章正文内容,下面案例可供参考。

qq_44637753的博客 4070

Docker Compose到K8s:现代化应用部署全流程实战解析

容器化技术通过将应用及其依赖打包成标准单元,实现了环境一致性与快速部署。其核心原理基于操作系统级虚拟化,利用命名空间控制组实现资源隔离。这一技术为微服务架构提供了理想的部署载体,显著提升了开发、测试与运维效率。在实际工程中,Docker Compose作为轻量级编排工具,常用于定义运行多容器应用,是快速搭建复杂服务栈的利器。随着应用规模扩大,生产环境对高可用弹性伸缩的需求日益增长,此时Kubernetes等成熟的容器编排平台成为自然选择。本文聚焦于“毕昇”这类现代化应用工作流引擎,详细拆解其从开发测试

weixin_30924087的博客 277

DockerKubernetes:ToolJet开源低代码平台生产级部署全指南

低代码平台通过可视化拖拽模型驱动,极大降低了应用开发门槛,使业务人员也能快速构建内部工具。其核心原理在于将通用功能组件化,并通过连接器与数据库、API等数据源对接,实现快速集成。这一技术价值在于显著提升开发效率,缩短项目交付周期,并降低对专业开发资源的依赖。典型的应用场景包括构建数据看板、CRM系统、审批流程等内部管理工具。本文以开源低代码平台ToolJet为例,深入探讨其从Docker Compose单机快速部署,到基于外部数据库Redis的生产级Docker部署,再到利用Kubernetes实现

weixin_33824363的博客 372

docker 环境配置 php+nginx+redis

docker 安装niginx php redis

weixin_43506030的博客 1861

DockerKubernetes从零实战:容器化部署与集群管理完整指南

最近在帮团队做容器化改造时,发现很多刚接触云原生的小伙伴对 Docker Kubernetes 的学习路径感到迷茫。网上的资料要么过于零散,要么版本老旧,照着操作总是遇到各种环境报错。本文旨在整合一套从零开始的实战教程,内容基于当前主流稳定版本,涵盖从 Docker 基础到 K8S 集群部署的核心操作,并提供完整的课件与可复现的代码示例。无论你是想转型运维、提升后端部署技能,还是学生备战面试,都能通过本文构建清晰的知识体系并动手实践。 1. 容器与编排技术核心概念 在深入实操之前,有必要厘清几个核心概念

chongkuachan8070的博客 307

Docker与K8S实战入门:从零搭建容器化集群与Linux运维核心技能

如果你正在寻找一套能让你从零开始,快速掌握 Docker、K8S Linux 云计算运维核心技能的学习路径,那么这篇文章就是为你准备的。这不是一个简单的概念介绍,而是一套面向实战、强调动手操作的“速通”教程。它的核心价值在于,将 Docker 容器化、K8S 集群编排 Linux 系统运维这三个紧密关联的技术栈,整合成一条清晰的学习主线,并提供配套的课件资源,帮助你绕过零散的资料,直接构建可落地的技能体系。 对于初学者希望系统提升的运维工程师来说,最大的痛点往往是:Docker 命令学了但不知道如何

weixin_34275734的博客 405

容器云部署实战:从Docker到K8s的商城系统全链路部署指南

容器化技术是现代应用部署的核心,它通过将应用及其依赖打包成标准化的镜像,实现了环境一致性快速部署。其原理基于操作系统级虚拟化,利用命名空间控制组实现资源隔离。这项技术的价值在于提升了部署效率、增强了可移植性,并为企业微服务架构转型奠定了基础。在应用场景上,容器化广泛用于持续集成/持续部署(CI/CD)流水线、微服务治理云原生应用开发。本文聚焦于一个典型的商城系统,详细拆解其从传统部署向容器云迁移的全过程,涵盖Docker镜像构建、服务编排、数据持久化等关键环节,并深入探讨了Kubernetes在生产环

weixin_34315485的博客 421

从零搭建Linux测试环境:Nginx+Java+MySQL+Redis实战指南

软件开发运维领域,环境一致性是保障应用稳定运行的核心基础。其原理在于通过隔离与标准化配置,消除因操作系统、软件版本及依赖差异导致的不确定性。这项技术的核心价值在于为开发、测试部署提供可复现的沙盒环境,从而显著提升软件质量与团队协作效率。典型应用场景包括Web应用的功能验证、配置变更测试以及技术栈集成调试。本文基于CentOS/Ubuntu系统,详细演示了如何手动部署包含Nginx、Java、MySQLRedis的完整Linux测试环境,涵盖了从系统初始化、服务安装配置到应用部署与故障排查的全流程,并

weixin_30268071的博客 324

悟空CRM Docker一键部署:从零到生产环境的完整实践指南

如果你正在寻找一个开源的、功能全面的客户关系管理系统,并且希望用最简单的方式快速部署上线,那么悟空CRM(WukongCRM)的Docker一键部署方案,很可能就是你当前最需要的解决方案。 在过去,部署一个包含前后端、数据库、缓存、搜索、配置中心、任务调度等组件的企业级应用,对很多开发者来说都是一个耗时且容易出错的过程。你需要分别安装配置MySQLRedis、Elasticsearch、Nacos、Nginx等,处理它们之间的网络通信、依赖关系启动顺序,任何一个环节出错都可能导致整个系统无法启动。这种

weixin_30340819的博客 420

Docker与K8S零基础入门:从环境搭建到集群部署实战指南

1. 先搞清楚这套教程到底能帮你解决什么问题 如果你正在看Linux运维、云计算或者想转行做运维开发,大概率会碰到DockerKubernetes这两个词。它们几乎是现在企业里做应用部署管理的标配。但很多新手一上来就被各种概念、命令复杂的集群环境劝退,网上资料又多又杂,不知道从哪里开始,更不知道怎么才算“学会”。 这套“Docker+K8S”教程,核心目标就是解决这个“从零到一”的落地问题。它不是一个单纯的概念科普,而是试图通过一期集中的视频内容,配合课件,让你能动手把环境搭起来,把最基本的容器跑起来

快马扬鞭须努力! 394

飞桨(PaddlePaddle)QAT INT8 MKL-DNN 量化推理全指南:Quant2Int8OnednnPass 模型转换与基准复现

本文以飞桨(PaddlePaddle)官方测试文档 [test/quantization/README.md](https://link.gitcode.com/i/a0ca38d0b17ae44d2a43ad37b4254387) 为核心脉络,系统讲解如何将 PaddleSlim 量化感知训练(QAT)产出的 Quant 模型,通过 `Quant2Int8OnednnPass`(即文档所称 Qu

gitblog_00959的博客 908

Ubuntu 18.04 上用 Kubernetes 部署 PHP 应用实战指南

PHP 应用部署长期面临环境不一致、扩缩容困难、状态管理混乱等核心挑战,而 Kubernetes 作为现代容器编排平台,通过声明式配置、服务发现与自动伸缩能力,为 PHP 提供了标准化、可复用的高可用运行底座。其关键在于理解 PHP-FPM 的进程模型与 Pod 生命周期的对齐机制,并将 session、缓存、文件上传等有状态组件外置至 Redis、对象存储等云原生服务。在 Ubuntu 18.04 这类 EOL 但广泛使用的旧系统上,需适配 cgroup v1、降级 K8s 至 1.20.x 等兼容性策略

weixin_33816300的博客 401

Docker镜像定制实战:从基础镜像到部署Nginx服务

如果你已经掌握了 Docker 的基本命令,能够拉取镜像、运行容器,但每次进入容器,都感觉像进入了一个“毛坯房”——没有你熟悉的工具,网络不通,想装个软件都找不到源。于是,你开始手动 yum install ,却发现容器里连 yum 仓库都没配置,或者速度慢得让人绝望。最终,你可能会选择放弃,回到熟悉的物理机或虚拟机环境。 这恰恰是很多开发者从 Docker “入门”到“放弃”的关键一步。他们理解了容器是轻量级的,却没能跨越“如何高效地定制一个真正可用的容器环境”这道坎。今天这篇文章,就是要彻底解决这个问题

weixin_30642869的博客 383
上一篇: Redis List类型命令 - Set类型命令 - SortedSet类型命令
下一篇: Kubernetes 部署发布镜像(cubefile:0.4.0)
Claylpf
博客等级 码龄6年 69粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值