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

目录

实现目的:

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 -ymkdir /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.gzcd /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.gzmv ~/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.33docker run -d -p 80:80 --name nginx-1.24 nginx:1.24docker 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-deploymentnamespace: testns
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.24ports:- 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-deploymentnamespace: testns
spec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:8.0.33env:- name: MYSQL_ROOT_PASSWORDvalue: "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-deploymentnamespace: testns
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:7.0.11ports:- 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-servicenamespace: testnslabels:app: nginx
spec:type: NodePortselector:app: nginx  ports:- protocol: TCPport: 80targetPort: 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-servicenamespace: testns  labels:app: mysql
spec:type: NodePortports:- port: 3306targetPort: 3306  protocol: TCPselector: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-servicenamespace: testnslabels:app: redis
spec:type: NodePortselector:app: redisports:- protocol: TCPport: 6379targetPort: 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:~# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130217.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp项目实践总结(十三)封装文件操作方法

导语&#xff1a;在日常 APP 开发过程中&#xff0c;经常要进行文件的保存、读取列表以及查看和删除文件等操作&#xff0c;接下来就看一下具体的方法。 目录 原理分析方法实现实战演练案例展示 原理分析 主要是以下 API。 uni.saveFile&#xff1a;保存文件到本地缓存列表…

thinkphp5.0 composer 安装oss提示php版本异常

场景复现&#xff1a; 本地 phpstudy 环境&#xff0c;安装的有7.0到7.3三个版本&#xff0c;首先确认composer已经安装 composer安装阿里云oss的命令为&#xff1a;composer require aliyuncs/oss-sdk-php 运行报错&#xff1a; Problem 1- Root composer.json requires php…

C++数据结构--红黑树

目录 一、红黑树的概念二、红黑树的性质三、红黑树的节点的定义四、红黑树结构五、红黑树的插入操作参考代码 五、代码汇总 一、红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过…

mysql 的增删改查以及模糊查询、字符集语句的使用

一、mysql启动与登陆(windows下的mysql操作) 1.启动mysql服务 net start mysql81 2.登陆mysql mysql -uroot -p 3.查看所有数据库 show databases; 二、模糊查询&#xff08;like&#xff09; 1. _代表查询单个 2.%代表查询多个 3.查找所有含有schema的数据库&#xff1b;…

文心一言、讯飞星火与GPT-4/3.5在回答中文历史问题的表现

最近&#xff0c;随着备受关注的文心一言正式免费向全社会开放&#xff0c;再次引起了社会层面对国产大模型的兴趣。 以文心一言为代表的国产大模型性能究竟如何&#xff1f;如果将它们相互比较&#xff0c;并且和GPT系列模型等国际前沿水平的LLM进行比较&#xff0c;会得到什么…

自动化测试入门知识 —— 数据驱动测试

一、什么是数据驱动测试&#xff1f; 数据驱动测试是一种测试方法&#xff0c;它的核心思想是通过不同的测试数据来验证同一个测试逻辑。通常情况下&#xff0c;测试用例中的输入数据和预期结果会被提取出来&#xff0c;以便可以通过不同的测试数据进行重复执行。 数据驱动测…

算法通过村第六关-树白银笔记|层次遍历

文章目录 前言1. 层次遍历介绍2. 基本的层次遍历与变换2.1 二叉树的层次遍历2.2 层次遍历-自底向上2.3 二叉树的锯齿形层次遍历2.4 N叉树的层次遍历 3. 几个处理每层元素的题目3.1 在每棵树行中找出最大值3.2 在每棵树行中找出平均值3.3 二叉树的右视图3.4 最底层最左边 总结 前…

【已解决】uniapp使用vant-ui中的tab标签页的时候,发现底下红色的切换线不见了

问题截图 解决办法 按F12查看vant-ui源码你会发现他的Tab标签页里面有个width&#xff0c;但是我们引入到uniapp之后发现width没有了&#xff08;不知道什么情况&#xff0c;可能是兼容问题吧&#xff09; 所以我们解决的办法&#xff0c;只需要在App.vue中给全局.van-tabs__l…

人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流

随着科技的不断进步和人们生活质量的提高&#xff0c;智能化家居逐渐成为一种时尚和生活方式。 人体存在传感器作为智能家居中的重要组成部分&#xff0c;能够实时监测环境中人体是否存在&#xff0c;为智能家居系统提供更加精准的控制和联动。 在这个充满创新的时代&#xf…

华为云云耀云服务器L实例评测|在 Centos Docker 中使用Nginx部署Vue项目

目录 前言 项目构建 使用CentOS部署 安装Nginx 配置Nginx 项目启动 访问重定向 使用Docker部署 编写docker文件 dockerfile nginx dockercompose 项目启动 前言 本期我们测试在云耀云服务器L实例中分别演示如何在 系统镜像Centos 与 应用镜像 Docker 中使用Nginx…

机器学习——自然语言处理(NLP)一

机器学习——自然语言处理&#xff08;NLP&#xff09;一 文章目录 前言一、TF-IDF算法1.1. 原理1.2. 算法步骤&#xff1a;1.2.1. 文本预处理1.2.2. 构建词袋模型1.2.3. 计算TF-IDF值1.2.4. 特征选择 1.3. 代码实现1.3.1. TF-IDF1.3.2 计数器向量化文本1.3.3. 两者的区别1.3.4…

630. 课程表 III

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;贪心优先队列 写在最后 Tag 【贪心】【优先队列】【数组】 题目来源 630. 课程表 III 题目解读 有 n 门编号从 1 到 n 的课程&#xff0c;有一个数组 courses&#xff0c;其中 courses[i] [duration, lastDay] 表示…

idea报错“Static methods in interface require -target:jvm-1.8”

如题&#xff0c;在 idea 中跑 java 、scala 混编代码时&#xff0c;出现上面的错误。 问题的原因很明显是 idea 中的 jdk 版本设置有问题&#xff0c;针对性作如下排查&#xff1a; 检查项目的 java 版本 在File-> Project Settings中&#xff0c;检查检查idea的 java 版本…

【数据结构】树和二叉树概念

1.树概念及结构 树概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff0c;…

EditPlus 配置python 及Anaconda中的python

若不是pycharm vscode 太大&#xff0c;太占内存&#xff0c;谁会想到用Notepad&#xff0c;EdirPlus 配置python呢&#xff01;&#xff01;&#xff01; 话不多说&#xff0c;首先你自己安装好EditPlus。开始 菜单栏 选择 工具 -> 配置自定义工具 组名:python 命令:d:\*…

组件间方法传递和响应(重要)

1、子组件通知父组件某时执行父组件的函数 父组件 当子组件emit时&#xff0c;父组件clickEven函数就执行了 子组件 ——————————————————————————————————————————— 2、父组件通知子组件某时执行自己的一个函数 父组件 一定要有…

Java 多线程系列Ⅶ(线程安全集合类)

线程安全集合类 前言一、多线程使用线性表二、多线程使用栈和队列三、多线程下使用哈希表 前言 在数据结构中&#xff0c;我们学习过 Java 的内置集合&#xff0c;但是我们知道&#xff0c;我们学过的大多数集合类都是线程不安全的&#xff0c;少数如 Vector&#xff0c;Stack…

【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(下)

前言 在上一篇我们主要介绍了有关计算机网络概述的内容&#xff0c;下面这一篇我们将来介绍有关计算机网络体系结构与参考模型的内容。这一篇博客紧紧联系上一篇博客。 这一篇博客主要内容是&#xff1a;计算机网络体系结构与参考模型&#xff0c;主要是计算机网络分层结构、协…

easypoi和poi版本兼容问题记录

最近在开发导出word的功能&#xff0c;遇到下面的问题 提示xml报错的问题&#xff0c;我一度以为是项目换了java11造成的。经过询问朋友&#xff0c;得知有可能是版本冲突造成的&#xff0c;就猛然想起来&#xff0c;我的项目里面还引入了poi这个包。 于是我吧poi的版本降低到了…

从零开发一款ChatGPT VSCode插件

‍本文作者是360奇舞团开发工程师 引言 OpenAI发布了ChatGPT&#xff0c;就像是给平静许久的互联网湖面上扔了一颗重磅炸弹&#xff0c;刹那间所有人都在追捧学习它。究其原因&#xff0c;它其实是一款真正意义上的人工智能对话机器人。它使用了深度学习技术&#xff0c;通过大…