程序笔记   发布时间:2022-07-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1.制作Nginx镜像

1.1 使用Nginx:1.21.1官方镜像

# 下载官方镜像
docker pull nginx:1.21.1

# 打本地harbor的tag
docker tag 192.168.1.110/base/nginx:1.21.1

# 上传到本地harbor仓库
docker push 192.168.1.110/base/nginx:1.21.1

1.2 编写nginx配置文件的configmap的yaml并创建

k8s部署nginx时,在deployment yaml中使用COnfigmap的方式挂载使用Nginx配置文件

# nginx-configmap.yaml
cat nginx-configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
  namespace: yan-test
data:
 default: |
    server {
        listen       80;
        server_name  localhost;

        LOCATIOn / {
            root   /var/www/html;
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;
        LOCATIOn = /50x.html {
            root   /var/www/html;
        }

        LOCATIOn ~ .php$ {
            root           /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILename  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        LOCATIOn ~ /.ht {
            deny  all;
        }
    }

# 创建
kubectl apply -f nginx-configmap.yaml

# 查看
# -n yan-test: namespace为yan-test
kubectl get configmaps -n yan-test
NAME               DATA   AGE
nginx-config       1      4d17h

2.制作php镜像

基础镜像使用Ubuntu20.04,打tag后上传到本地harbor仓库

2.1 制作镜像使用的文件列表

-rw-r--r-- 1 root root  4427 11月  4 11:40 php-fpm.conf
-rw-r--r-- 1 root root 74562 11月  4 10:44 php.ini
-rwxr-xr-x 1 root root    85 11月  5 18:39 run_php-fpm.sh*
-rw-r--r-- 1 root root   387 11月  5 16:33 sources.list
-rw-r--r-- 1 root root 18589 11月  4 11:54 www.conf

2.2 php镜像Dockerfile

FROM 192.168.1.110/base/ubuntu:20.04

COPY sources.list /etc/apt
COPY run_php-fpm.sh /

RUN apt update && 
    DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y && 
    add-apt-repository ppa:ondrej/php -y && 
    apt install --no-install-recommends --no-install-suggests -y inetutils-ping vim curl procps net-tools software-properties-common php5.6-fpm php5.6-mys
ql php5.6-curl php5.6-gd php5.6-mbString php5.6-mcrypt php5.6-xml php5.6-xmlrpc php5.6-zip php5.6-opcache

COPY php-fpm.conf /etc/php/5.6/fpm/php-fpm.conf
COPY www.conf /etc/php/5.6/fpm/pool.d/www.conf
COPY php.ini /etc/php/5.6/fpm/php.ini

CMD ["/run_php-fpm.sh"]

2.3 php其他配置文件

# php-fpm.conf
注释以下行,否则启动php会提示找不到pid文件
#pid = /run/php/php5.6-fpm.pid

# php.ini
为了网站安全,将一下参数设置为0(关闭)
cgi.fix_pathinfo=0

# www.conf
在www模块开启9000端口监听
[www]
listen = 0.0.0.0:9000

2.4 run_php-fpm.sh php启动脚本

#!/bin/bash
/usr/sbin/php-fpm5.6 -y /etc/php/5.6/fpm/php-fpm.conf
tail -f /etc/hosts

2.5 构建镜像并上传到本地harbor

docker build -t 192.168.1.110/web/php:2021-11-5_1853 .

docker push 192.168.1.110/web/php:2021-11-5_1853

3.部署StatefulSet mysql一主多从集群

3.1部署

之前的另一篇博客:https://www.cnblogs.com/yanql/p/15440022.html mysql-0主库容器的地址为:mysql-0.mysql.yan-test.svc.fx.local yan-test: namespace fx: k8s cluste name

3.2 为wordpress网站创建数据库,用户和用户密码。

@H_906_5@mysql > CREATE DATABASE wordpress;

mysql > GRANT ALL PRIVILEGES ON wordpress.* TO 'worpress'@'%' IDENTIFIED BY 'wordpress';

4.部署WordPress

4.1 编写k8s的nginx,php的svc,deployment yaml

apiVersion: v1
kind: service
metadata:
  name: nginx-php
  namespace: yan-test
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
      nodePort: 30080
  SELEctor:
    app: nginx-php
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: yan-test
spec:
  replicas: 1
  SELEctor:
    matchLabels:
      app: nginx-php
  template:
    metadata:
      labels:
        app: nginx-php
    spec:
      containers:
        - name: nginx-ct
          image: 192.168.1.110/base/nginx:1.21.1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              protocol: TCP
              name: http
          resources:
            limits:
              cpu: 2
              memory: 2Gi
            requests:
              cpu: 500m
              memory: 1Gi
          volumeMounts:
          - name: php-html
            mountPath: "/var/www/html"
          - name: nginx-config
            mountPath: "/etc/nginx/conf.d"
        - name: php-ct
          image: 192.168.1.110/web/php:2021-11-5_1853
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 9000
              protocol: TCP
              name: http
          resources:
            limits:
              cpu: 2
              memory: 2Gi
            requests:
              cpu: 500m
              memory: 1Gi
          volumeMounts:
          - name: php-html
            mountPath: "/var/www/html"
      volumes:
        - name: php-html
          nfs: 
            server: 192.168.2.10
            path: /data/k8s-data/nginx/html
        - name: nginx-config
          configMap:
            name: nginx-config
            items:
              - key: default
                path: default.conf

4.2 准备wordpress代码文件

wget https://cn.wordpress.org/wordpress-5.0.1-zh_CN.tar.gz

tar xf wordpress-5.0.1-zh_CN.tar.gz

# 将解压后的wordpress php代码移动到nginx容器中/var/www/html的挂载目录(NFS)
mv wordpress/* /data/k8s-data/nginx/html/

4.3 使用Nginx-php.yml部署启动nginx,php容器

kubctl apply -f nginx-php.yml

kubectl get pod -n yan-test
NAME                           READY   STATUS    RESTARTS   AGE
mysql-0                        2/2     Running   0          4d18h
mysql-1                        2/2     Running   1          4d18h
mysql-2                        2/2     Running   1          4d18h
nginx-deploy-744c8fb58-4s9tg   2/2     Running   0          15m

4.4 配置代理

nginx:80 --> k8s svc (nginx-php):30080

server {
        listen       80;
        server_name  yan.wd.com;
        charset utf-8;
 
        LOCATIOn / {
                proxy_pass  http://192.168.2.17:30080;
                proxy_set_header    Host   $host;
        }
}

4.5 web页面初始化wordpress

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

大佬总结

以上是大佬教程为你收集整理的8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例全部内容,希望文章能够帮你解决8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。