Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker部署Discuz论坛

docker部署Discuz论坛

作者头像
全栈程序员站长
发布于 2022-06-29 07:55:19
发布于 2022-06-29 07:55:19
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

环境准备:

ip

服务

192.168.2.10(server1)

docker、k8s

192.168.2.20(server2)

docker、k8s

192.168.2.30(server3)

docker、k8s

k8s集群如何搭建

如果是刚开机的k8s集群的主机开机后启动服务(集群还是ready)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 ~]# systemctl enable kubelet.service && systemctl start kubelet.service
[root@server1 ~]#  systemctl stop firewalld && systemctl start docker.service

开始我把防火墙都关了不然端口太多

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld

server1:pull所需要的mysql镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
8559a31e96f4: Pull complete 
d51ce1c2e575: Pull complete 
c2344adc4858: Pull complete 
fcf3ceff18fc: Pull complete 
16da0c38dc5b: Pull complete 
b905d1797e97: Pull complete 
4b50d1c6b05c: Pull complete 
d85174a87144: Pull complete 
a4ad33703fa8: Pull complete 
f7a5433ce20d: Pull complete 
3dcd2a278b4a: Pull complete 
Digest: sha256:32f9d9a069f7a735e28fd44ea944d53c61f990ba71460c5c183e610854ca4854
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

server1:pull所需要的nginx和php的整合镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 ~]# docker pull richarvey/nginx-php-fpm
Using default tag: latest
latest: Pulling from richarvey/nginx-php-fpm
aad63a933944: Pulling fs layer 
b61c449d5d91: Pulling fs layer 
3fde16e1397a: Pulling fs layer 
b1096698ab2a: Pulling fs layer 
96de990b7ad3: Pulling fs layer 
c280bfe25221: Pulling fs layer 
02be9679a029: Pulling fs layer 
01973f657634: Pulling fs layer 
75924d0578e0: Pulling fs layer 
7545938f30ed: Pull complete 
267be130ac8a: Pull complete 
5b9ce6473ee0: Pull complete 
0cb267b5005b: Pull complete 
0bbcede612f0: Pull complete 
6f23dfb3d18c: Pull complete 
363732275cc7: Pull complete 
679aa7f9f360: Pull complete 
d47507c4f094: Pull complete 
17ba4fac2074: Pull complete 
b16f52630a15: Pull complete 
e8c7df728273: Pull complete 
3b3bc6c69299: Pull complete 
d0f1d1b1ad30: Pull complete 
b8af2e53bd85: Pull complete 
7e439df1bb98: Pull complete 
f28361c951da: Pull complete 
126a49c3e514: Pull complete 
39838375a23b: Pull complete 
1ca506cbf594: Pull complete 
Digest: sha256:8b7c47b940fd79b5764ec12fdfbc7a1a198889316347963c9e9bd1aa78eec098
Status: Downloaded newer image for richarvey/nginx-php-fpm:latest
docker.io/richarvey/nginx-php-fpm:latest
NFS
server2下载nfs
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 ~]# yum -y install nfs-utils 
[root@server2 ~]# mkdir -p /data/k8s/{web,db}
[root@server2 ~]# vim /etc/exports
[root@server2 ~]# cat /etc/exports
/data/k8s 192.168.2.0/24(rw,sync,no_root_squash)
[root@server2 ~]# exportfs -rv
exporting 192.168.2.0/24:/data/k8s
[root@server2 ~]# systemctl start nfs
[root@server2 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

server1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 ~]# mkdir -p /home/k8s/lnmp/mysql
[root@server1 ~]# cd /home/k8s/lnmp/mysql
[root@server1 mysql]# kubectl create secret generic mysql-pass --from-literal=password=123.com
secret/mysql-pass created
[root@server1 mysql]# vim mysql-pv.yml
#内容:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteMany
  nfs:
    path: /data/k8s/db
    server: 192.168.2.20
[root@server1 mysql]# kubectl apply -f mysql-pv.yml 
persistentvolume/mysql-pv created
[root@server1 mysql]# vim mysql-pvc.yml
#内容:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-claim
  labels:
    app: discuz
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

[root@server1 mysql]# kubectl apply -f mysql-pvc.yml 
persistentvolumeclaim/mysql-claim created
[root@server1 mysql]# vim mysql-dp.yml
#内容:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dz-mysql
  labels:
    app: discuz
spec:
  selector:
    matchLabels:
      app: discuz
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: discuz
        tier: mysql
    spec:
      imagePullSecrets:
      - name: my-secret
      containers:
      - image: mysql:5.7
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
          name: dz-mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-claim


[root@server1 mysql]# kubectl apply -f mysql-dp.yml 
deployment.apps/dz-mysql created
[root@server1 mysql]# vim mysql-svc.yml
#内容:
apiVersion: v1
kind: Service
metadata:
  name: dz-mysql
  labels:
    app: discuz
spec:
  ports:
    - port: 3306
  selector:
    app: discuz
    tier: mysql

[root@server1 mysql]# kubectl apply -f mysql-svc.yml 
service/dz-mysql created

[root@server1 mysql]# kubectl get pv,pvc
NAME                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   REASON   AGE
persistentvolume/mysql-pv   10Gi       RWX            Retain           Bound    default/mysql-claim                           17m

NAME                                STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/mysql-claim   Bound    mysql-pv   10Gi       RWX                           8m6s
[root@server1 mysql]# vim web-pv.yml
#内容:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /data/k8s/web 
    server: 192.168.2.20

[root@server1 mysql]# kubectl apply -f web-pv.yml 
persistentvolume/web-pv created
[root@server1 mysql]# vim web-pvc.yml
#内容:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: web-claim
  labels:
    app: discuz
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

[root@server1 mysql]# kubectl apply -f web-pvc.yml 
persistentvolumeclaim/web-claim created

[root@server1 mysql]# vim web-dp.yml
#内容:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dz-web
  labels:
    app: discuz
spec:
  replicas: 1
  selector:
    matchLabels:
      app: discuz
      tier: nginx-php
  template:
    metadata:
      labels:
        app: discuz
        tier: nginx-php
    spec:
      imagePullSecrets:
      - name: my-secret
      containers:
      - image: richarvey/nginx-php-fpm
        name: dz-web
        ports:
        - containerPort: 9000
        - containerPort: 80
          name: dz-web
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: web-claim
[root@server1 mysql]# kubectl apply -f web-dp.yml 
deployment.apps/dz-web created

[root@server1 mysql]# vim web-svc.yml
#内容:
apiVersion: v1
kind: Service
metadata:
  name: dz-web
  labels:
    app: discuz
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30001
  selector:
    app: discuz
    tier: nginx-php
[root@server1 mysql]# kubectl apply -f web-svc.yml 
service/dz-web created

#如果下一步操作显示0/1别着急先往下做(等3-5分钟即可)
[root@server1 mysql]# kubectl get pod -o wide
NAME                        READY   STATUS             RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
dz-mysql-5dcd86b5c8-qgqbm   1/1     Running            0          22m     10.244.1.24   server2   <none>           <none>
dz-web-68959dc478-879qr     1/1     Running            0          6m43s   10.244.2.28   server3   <none>           <none>

[root@server1 mysql]# kubectl get pv,pvc
NAME                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   REASON   AGE
persistentvolume/mysql-pv   10Gi       RWX            Retain           Bound    default/mysql-claim                           33m
persistentvolume/web-pv     10Gi       RWX            Retain           Bound    default/web-claim                             11m

NAME                                STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/mysql-claim   Bound    mysql-pv   10Gi       RWX                           23m
persistentvolumeclaim/web-claim     Bound    web-pv     10Gi       RWX                           5m22s

server2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server2 data]#  git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git
[root@server2 data]# mv DiscuzX/upload/* k8s/web/
[root@server2 data]# ls
DiscuzX  k8s
[root@server2 data]# cd k8s/web
[root@server2 web]# ls
admin.php        data         m           source
api              favicon.ico  member.php  static
api.php          forum.php    misc.php    template
archiver         group.php    plugin.php  uc_client
config           home.php     portal.php  uc_server
connect.php      index.php    robots.txt
crossdomain.xml  install      search.php
[root@server2 web]# chmod -R 777 /data/k8s/web/

server1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@server1 mysql]# kubectl get pod -o wide
NAME                        READY   STATUS             RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
dz-mysql-5dcd86b5c8-qgqbm   1/1     Running            0          40m   10.244.1.24   server2   <none>           <none>
dz-web-68959dc478-879qr     1/1     Running            0          24m   10.244.2.28   server3   <none>           <none>
[root@server1 mysql]# kubectl exec -it dz-mysql-5dcd86b5c8-qgqbm -- mysql -uroot -p123.com
mysql> create database hy;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on hy.* to 'hy'@'%' identified by '123.com';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

验证:IP:30001 下面的步骤跟着走就行了!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101953.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
盘点一下 Python 和 JavaScript 的主要区别(详细)
这两种语言非常流行且功能强大,但是它们之间确实存在关键差异,我们将在这里详细介绍它们
AirPython
2021/03/12
6.7K0
盘点一下 Python 和 JavaScript 的主要区别(详细)
一文读懂 JavaScript 和 Python 九大语义区别
我是一名全栈开发。前几天我一直在研究算法和数据结构,因为对于程序员而言,最重要能力的就是解决问题,所有任何程序员都应该拥有强大的解决问题的基础能力。
CDA数据分析师
2020/02/27
1.2K0
一文读懂 JavaScript 和 Python 九大语义区别
Python入门篇基础语法
Python入门篇基础语法 数据类型初探 int 类型 [整数] float 类型 [小数] str 类型 [字符串] 注:字符串以单引号或者双引号包裹 bool类型 [True] 或 [False] Python标识符 标识符介绍: 所谓的标识符就是对变量、常量、函数、类等对象取的名字 标识符命名规定: 大小写敏感 √ 只能以字母、数字、下划线组成(数字不能开头) √ 见名知意 蛇形|小驼峰|大驼峰命名法 变量(小写);常量(大写) 不以关联词作为标识符 √ 查看内置关键词: import keywo
小柒qi
2021/01/08
6420
【Python】Python中的条件语句
在上一篇内容中我们介绍了Python中运算符与注释的相关内容。下面我们先简单的回顾一下相关内容:
蒙奇D索隆
2024/09/07
4130
【Python】Python中的条件语句
Web前端基础【3】--JavaScript基础
JavaScript是一种轻量级的客户端脚本语言,和Python语言是一样的,只不过JavaScript是由浏览器进行解释执行的。JavaScript可以插在HTML页面中,可由现行的所有浏览器执行。
爱吃西瓜的番茄酱
2018/04/03
1.3K0
Web前端基础【3】--JavaScript基础
Java Script脚本语言入门(上)
JavaScript没有char数据类型,要表示单个字符,必须使用长度为1的字符串。
海盗船长
2020/08/27
1.7K0
Python 基础知识学习
      Python中默认的编码格式是 ASCII 格式在没修改编码格式时无法正确打印汉字所以在读取中文           时会报错解决方法为只要在文件开头加入# -*- coding: UTF-8 -*- 或者 #coding=utf-8 就了
py3study
2020/01/15
1.8K0
Javascript入门学习
本文介绍了技术社区在内容编辑人员工作中需要注意的五个关键点,分别是:1)正确性,确保内容准确无误;2)简洁性,让内容易于理解;3)一致性,遵循统一的写作风格;4)可阅读性,使用简单易懂的语言;5)可传播性,内容易于分享和流传。同时,还探讨了技术社区中常见的几种内容类型,如FAQ、知识库、教程、指南、实战案例和技术新闻等,以及如何进行内容整合和优化,以提高技术社区的活跃度和用户满意度。
别先生
2017/12/29
2.2K0
Javascript入门学习
JavaScript初探 一(认识JavaScript)
typeof 运算符把对象、数组或null返回 object typeof 运算符不会把函数返回 object ps:因为JavaScript中数组即是对象,所以 typeof [数组] 返回为”object“
Mirror王宇阳
2020/11/13
1.4K0
JavaScript初探 一(认识JavaScript)
python基础(01)
今天开始更新python的基础知识,首先是为了能够帮助刚接触python的小白更好的学习python这门语言,其次是自己的一个知识巩固。注:我是认为你有C或者java语言基础的角度上去做的知识梳理。
PM小王
2019/07/01
4180
PSR-12 编码规范扩充
此规范起到继承,扩展和替换 PSR-2 的作用, 同时编码风格遵守 PSR-1 这个基础编码标准。
mousemin
2023/06/10
8560
JavaScript 权威指南第七版(GPT 重译)(二)
本章记录了 JavaScript 表达式以及构建许多这些表达式的运算符。表达式 是 JavaScript 的短语,可以 评估 以产生一个值。在程序中直接嵌入的常量是一种非常简单的表达式。变量名也是一个简单表达式,它评估为分配给该变量的任何值。复杂表达式是由简单表达式构建的。例如,一个数组访问表达式由一个评估为数组的表达式、一个开放方括号、一个评估为整数的表达式和一个闭合方括号组成。这个新的、更复杂的表达式评估为存储在指定数组索引处的值。类似地,函数调用表达式由一个评估为函数对象的表达式和零个或多个额外表达式组成,这些额外表达式用作函数的参数。
ApacheCN_飞龙
2024/03/23
6390
JavaScript 权威指南第七版(GPT 重译)(二)
Python|Google Python样式指南(3)
在元组周围可以使用括号。但千万不要在返回语句或条件语句中使用它们,除非将括号用于隐含的行继续或表示元组。
算法与编程之美
2020/08/06
8790
计算机二级Python考点解析第一天
距离2018年全国计算机二级Python考试还有一个半月时间,本公众号尽量在考试前对计算机二级Python的考试内容进行全面的介绍,希望大家都至少达到合格水平!上一节对Python的考试大纲做了介绍,大家要经常回看大纲~
Minerva
2020/05/21
6860
Python学习笔记:PEP8常用编程规
PEP8编码规范是一种非常优秀的编码规范,也得到了Python程序员的普遍认可,如果实践中或者项目中没有统一的编码规范,建议尽量遵循PEP8编码规范,当然如果项目中已经有了自身的编码规范,应当优先遵循自身的编码规范,哪怕原先的代码风格在你看来很糟糕,也要尽量与源代码风格保持一致。 原文地址:https://blog.csdn.net/ratsniper/article/details/78954852,原文很详细,有代码示例和更多讲解,如果有足够时间,建议阅读原文,这篇笔记只是根据此文来整理了一些常用的点。
py3study
2020/02/10
9170
飞速搞定数据分析与处理-day2-Python入门
Python 中,一切皆对象(object)。数字、字符串、函数,以及我们会在本章中见到的其他所有东西,它们都是对象。
用户10002156
2023/08/07
2630
飞速搞定数据分析与处理-day2-Python入门
一天快速入门python
Python 是由Guido Van Rossum在 90 年代早期设计,现在是最常用的编程语言之一。特别是人工智能的火热,再加之它的语法简洁且优美,实乃初学者入门AI必备的编程语言。
yuquanle
2019/05/27
8630
Python基础知识---入门
风中的云彩
2024/11/07
880
Python基础知识---入门
【JavaScript】 基础
简称JS,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行。主要用来实现网页的动态效果,用户交互及前后端的数据传输等。
杨丝儿
2022/02/24
2.2K0
【JavaScript】 基础
35分钟教你学dart(第二节)
其实说35分钟教你学会dart,有点言过其实了,不过你依旧可以在这篇文章中学到了解 Dart 基础知识
徐建国
2021/12/01
13.3K0
35分钟教你学dart(第二节)
相关推荐
盘点一下 Python 和 JavaScript 的主要区别(详细)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验