kubernetes启用PHP+Nginx网页环境教程

 更新时间:2023年10月31日 09:59:14   作者:小陈运维  
这篇文章主要介绍了kubernetes启用PHP+Nginx网页环境教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

kubernetes 启用 PHP + Nginx 网页环境

传统安装方式进行安装步骤较多,使用kubernetes可以实现快速启用环境,在测试或者线上都可以做到快速 启用

编写 yaml 文件

[root@k8s-master01 ~]# vim PHP-Nginx-Deployment-ConfMap-Service.yaml
[root@k8s-master01 ~]# cat PHP-Nginx-Deployment-ConfMap-Service.yaml
kind: Service # 对象类型
apiVersion: v1 # api 版本
metadata: # 元数据
  name: php-fpm-nginx #Service 服务名
spec:
  type: NodePort # 类型为nodeport
  selector: #标签选择器
    app: php-fpm-nginx 
  ports: #端口信息
    - port: 80  # 容器端口80
      protocol: TCP #tcp类型
      targetPort: 80 # Service 将 nginx 容器的 80 端口暴露出来
---
kind: ConfigMap # 对象类型
apiVersion: v1 # api 版本
metadata: # 元数据
  name: nginx-config # 对象名称
data: # key-value 数据集合
  nginx.conf: | # 将 nginx config 配置写入 ConfigMap 中,经典的 php-fpm 代理设置,这里就不再多说了
    user  nginx;
    worker_processes  auto;
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
        server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.php;
        server_name _;
        if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php) {
        rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename) {
        rewrite (.*) /index.php;
        }
        location / {
          try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
          include fastcgi_params;
          fastcgi_param REQUEST_METHOD $request_method;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_pass 127.0.0.1:9000;
        }
      }
        include /etc/nginx/conf.d/*.conf;
    }
---
kind: Deployment # 对象类型
apiVersion: apps/v1 # api 版本
metadata: # 元数据
  name: php-fpm-nginx # Deployment 对象名称
spec: # Deployment 对象规约
  selector: # 选择器
    matchLabels: # 标签匹配
      app: php-fpm-nginx
  replicas: 3 # 副本数量
  template: # 模版
    metadata: # Pod 对象的元数据
      labels: # Pod 对象的标签
        app: php-fpm-nginx
    spec: # Pod 对象规约
      containers: # 这里设置了两个容器
        - name: php-fpm # 第一个容器名称
          image: php:7.4.29-fpm # 容器镜像
          imagePullPolicy: IfNotPresent #镜像拉取策略
          livenessProbe: # 存活探测
            initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
            periodSeconds: 10 # 每多少秒执行一次存活探测
            tcpSocket: # 监测tcp端口
              port: 9000 #监测端口
          readinessProbe: # 就绪探测
            initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
            periodSeconds: 10 # 每多少秒执行一次存活探测
            tcpSocket: # 监测tcp端口
              port: 9000 #监测端口
          resources: # 资源约束
            requests: # 最小限制
              memory: "64Mi" # 内存最新64M 
              cpu: "250m" # CPU最大使用0.25核
            limits: # 最大限制
              memory: "128Mi" # 内存最新128M 
              cpu: "500m" # CPU最大使用0.5核
          ports:
            - containerPort: 9000 # php-fpm 端口
          volumeMounts: # 挂载数据卷
            - mountPath: /var/www/html # 挂载两个容器共享的 volume 
              name: nginx-www
          lifecycle: # 生命周期
            postStart: # 当容器处于 postStart 阶段时,执行一下命令
              exec:
                command: ["/bin/sh", "-c", "echo startup..."] # 将 /app/index.php 复制到挂载的 volume 
            preStop:
              exec:
                command:
                  - sh
                  - '-c'
                  - sleep 5 && kill -SIGQUIT 1 # 优雅退出
        - name: nginx # 第二个容器名称
          image: nginx # 容器镜像
          imagePullPolicy: IfNotPresent
          livenessProbe: # 存活探测
            initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
            periodSeconds: 10 # 每多少秒执行一次存活探测
            httpGet: # 以httpGet方式进行探测
              path: / # 探测路径
              port: 80 # 探测端口
          readinessProbe:  # 就绪探测
            initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
            periodSeconds: 10 # 每多少秒执行一次存活探测
            httpGet: # 以httpGet方式进行探测
              path: / # 探测路径
              port: 80 # 探测端口
          resources: # 资源约束
            requests: # 最小限制
              memory: "64Mi" # 内存最新64M 
              cpu: "250m" # CPU最大使用0.25核
            limits: # 最大限制
              memory: "128Mi" # 内存最新128M 
              cpu: "500m" # CPU最大使用0.5核
          ports:
            - containerPort: 80 # nginx 端口
          volumeMounts: # nginx 容器挂载了两个 volume,一个是与 php-fpm 容器共享的 volume,另外一个是配置了 nginx.conf 的 volume
            - mountPath: /var/www/html # 挂载两个容器共享的 volume 
              name: nginx-www
            - mountPath: /etc/nginx/nginx.conf #  挂载配置了 nginx.conf 的 volume
              subPath: nginx.conf
              name: nginx-config
          lifecycle:
            preStop:
              exec:
                command:
                  - sh
                  - '-c'
                  - sleep 5 && /usr/sbin/nginx -s quit # 优雅退出
      volumes:
        - name: nginx-www # 网站文件通过nfs挂载
          nfs:
            path: /html/
            server: 192.168.1.123
        - name: nginx-config 
          configMap: # configMap 
            name: nginx-config

部署网站

# 下载网站代码
wget https://typecho.org/downloads/1.1-17.10.30-release.tar.gz
# 解压源码包
tar xvf 1.1-17.10.30-release.tar.gz
#移动到当前目录下
mv build/* .
#设置权限
chmod 777 -R *

创建资源

kubectl  apply -f PHP-Nginx-Deployment-ConfMap-Service.yaml

测试环境

kubectl  get pod -l app=php-fpm-nginx
NAME                            READY   STATUS    RESTARTS        AGE
php-fpm-nginx-8b4bfb457-24bpd   2/2     Running   1 (6m34s ago)   16m
php-fpm-nginx-8b4bfb457-fvqd6   2/2     Running   2 (5m39s ago)   16m
php-fpm-nginx-8b4bfb457-kmzsc   2/2     Running   1 (6m34s ago)   16m

kubectl get configmaps  | grep nginx
NAME               DATA   AGE
nginx-config       1      17m

kubectl get svc | grep nginx
php-fpm-nginx   NodePort    10.98.66.104     <none>        80:31937/TCP   16m

以上就是kubernetes启用PHP+Nginx网页环境教程的详细内容,更多关于kubernetes启用PHP Nginx网页环境的资料请关注脚本之家其它相关文章!

相关文章

  • 在Nginx中拦截特定用户代理的教程

    在Nginx中拦截特定用户代理的教程

    这篇文章主要介绍了在Nginx中拦截特定用户代理的教程,并为这些被拦截的用户设置一个黑名单以方便管理,需要的朋友可以参考下
    2015-06-06
  • Nginx配置ssl实现https的全过程记录

    Nginx配置ssl实现https的全过程记录

    这篇文章主要给大家介绍了关于Nginx配置ssl实现https的相关资料,文章通过实例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Nginx优化和模块解读

    Nginx优化和模块解读

    本文介绍了Nginx的优化配置与模块应用,涵盖安装、虚拟主机设置、location匹配、隐藏版本号、进程调整、文件限制等操作,并通过实验验证了gzip压缩、缓存优化、防盗链及HTTPS重定向等安全与性能改进措施
    2025-07-07
  • Nginx与后台应用端口冲突的解决方案

    Nginx与后台应用端口冲突的解决方案

    在部署Web应用时,Nginx和后台应用(如Node.js、Python Flask、Java Spring Boot等)常常需要同时运行在一台服务器上,然而,当它们需要监听同一个端口(如8000)时,就会出现端口冲突的问题,本文将详细介绍几种解决Nginx与后台应用端口冲突的方法
    2025-02-02
  • 全面解析Nginx到底能做什么

    全面解析Nginx到底能做什么

    本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,具体内容详情大家跟随小编一起通过本文学习吧
    2018-10-10
  • Nginx 配置反向代理使用 Google fonts 字体并开启 HTTP2/SSL 支持

    Nginx 配置反向代理使用 Google fonts 字体并开启 HTTP2/SSL 支持

    nginx作为web服务器一个重要的功能就是反向代理。当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。
    2017-04-04
  • Nginx服务快速入门教程

    Nginx服务快速入门教程

    这篇文章主要介绍了Nginx服务快速入门教程的的相关资料,帮助大家更好的理解和使用nginx,感兴趣的朋友可以了解下
    2021-02-02
  • windows下nginx如何操作命令

    windows下nginx如何操作命令

    这篇文章主要介绍了windows下nginx如何操作命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • nginx中配置https的详细步骤及配置SSL/TLS证书的完整流程

    nginx中配置https的详细步骤及配置SSL/TLS证书的完整流程

    本文将详细介绍如何在 Nginx 服务器上配置 SSL/TLS 证书,包括获取证书、配置 Nginx、强化安全性等完整流程,无论您是使用 Let’s Encrypt 的免费证书还是自签名证书,都能在本指南中找到对应的配置方法,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • nginx部署https网站的实现步骤(亲测)

    nginx部署https网站的实现步骤(亲测)

    本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02

最新评论