当前位置: 首页 > news >正文

网站怎么做短信ip限定装饰网站建设优惠套餐

网站怎么做短信ip限定,装饰网站建设优惠套餐,图文广告制作软件,html简单网页代码下载WordPress 是专为每个人设计的开源软件#xff0c;强调创建网站、博客或应用程序的可访问性、性能、安全性和易用性。WordPress 是一个基于 PHP 的内容管理系统#xff08;CMS#xff09;#xff0c;使用 MySQL 作为数据存储#xff0c;目前很多网站、电商独立站、个人博客… WordPress 是专为每个人设计的开源软件强调创建网站、博客或应用程序的可访问性、性能、安全性和易用性。WordPress 是一个基于 PHP 的内容管理系统CMS使用 MySQL 作为数据存储目前很多网站、电商独立站、个人博客都采用了WordPress。不过当用户访问量变多的时候单一服务器很容易出现可用性问题。所以为了补足这一点就需要建立集群。 本教程面向不熟悉 Kubernetes 的入门级用户。在本教程中你将使用 Helm 在 Kubernetes 集群上安装 WordPress创建高可用性网站。除了利用 Kubernetes 固有的可扩展性和高可用性之外这种设置还能通过 Helm 提供简化的升级和回滚工作流从而确保 WordPress 的安全。 我们还将配置 NitroPack这是一个用于代码精简、缓存、CDN 和懒加载的插件。 我们将使用外部 MySQL 服务器来抽象数据库组件因为它可以是单独集群或托管服务的一部分可以提高可用性。 完成本教程所述步骤后你就可以在 Kubernetes 管理的容器化集群环境中安装功能齐全的 WordPress并建立一个更加高可用且安全的网站了。 WordPress 设置图 目录 概述WordPress 设置图先决条件建立受 DigitalOcean 管理的 Kubernetes 集群DOKS安装和配置 OpenEBS 动态 NFS Provisioner配置 WordPress MySQL 托管数据库配置 Redis 数据库配置 Redis 托管数据库配置 Redis Helm 图安装 WordPress部署 Helm 图确保流量的安全使用 Lets Encrypt 证书安装 Nginx 入口控制器为 Nginx 配置 DNS 入口控制器安装证书管理器为 WordPress 配置生产就绪的 TLS 证书启用 WordPress 监控指标配置 WordPress 插件提高 WordPress 性能配置 NitroPack 插件升级 WordPress结论 前提条件 要完成本教程你需要 Helm用于管理 WordPress、Nginx Ingress Controller 和 Cert-Manager 的发布和升级。Doctl CLI用于管理 DigitalOcean 资源。Kubectl CLI用于与 Kubernetes API 交互。基本的 Kubernetes 知识。配置一个域名如 GoDaddy、Cloudflare 等在你的账户中。 在此之前你也可以阅读往期文章了解如何在 DigitalOcean 的 Droplet 云主机上一键安装 WordPress。 建立 DigitalOcean Kubernetes 托管集群DOKS 在开始教程步骤之前你需要有一个 DigitalOcean 托管的 Kubernetes 集群DOKS。如果你已经配置了一个可以跳到下一节 - 配置 WordPress MySQL 托管数据库。 你可以使用以下命令创建新的 DOKS 集群 doctl k8s cluster create YOUR_CLUSTER_NAME \--auto-upgradefalse \--maintenance-window saturday21:00 \--node-pool namebasicnp;sizes-4vcpu-8gb-amd;count3;tagcluster2;labeltypebasic;auto-scaletrue;min-nodes2;max-nodes4 \--region nyc1 注意我们建议使用至少有 2 个工作节点的 DOKS 集群以减少节点故障时对应用程序的影响。本教程中的示例使用了 3 个工作节点每个节点 4 CPU/8GB48 美元/月自动扩展器最大配置为 2 至 4 个节点。选择不同的节点类型你可以从 doctl compute 中查看更多选项。 请访问 How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS) 获取更多详情。 安装和配置 OpenEBS 动态 NFS Provisioner 本节介绍如何使用 Helm 安装 NFS 配置器。如果你想使用 DigitalOcean Kubernetes 一键安装请跳过本节使用 DigitalOcean Kubernetes 1-Click Apps 安装 NFS 配置器。 每次使用持久化卷PersistentVolume作为 Kubernetes 有状态应用程序的一部分时都会配置一个新的 DigitalOcean 块存储卷。StorageClass 资源会告诉 Kubernetes 可用的底层存储类型。DigitalOcean 默认使用 块存储do-block-storage。 下面的命令列出了 Kubernetes 集群的可用存储类 kubectl get sc 输出结果类似于 Output NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 24h DigitalOcean 块存储卷Block Storage Volumes是由单个节点以读写方式RWO挂载的。其他节点不能挂载同一个卷。持久卷PersistentVolume的数据内容不能被多个 Pod 同时访问。 水平 Pod 自动扩展HPA用于扩展动态 StatefulSet 中的 WordPress Pod因此 WordPress 需要一个被许多节点RWX挂载为读写器的卷。 NFS网络文件系统是在块存储上提供 RWX 卷的常用解决方案。该服务器在 RWX 模式下提供持久卷申领PVC以便多个网络应用程序能以共享的方式访问数据。 OpenEBS 动态 NFS Provisioner 允许用户创建一个 NFS PV在用户选择的后端存储之上为每个 PV 设置一个新的内核 NFS 实例。 接下来你将使用以下命令在 Kubernetes 集群上安装 OpenEBS 动态 NFS Provisioner 首先克隆 container-blueprints 仓库。然后将目录更改为你本地副本中的 DOKS-wordpress 子文件夹 git clone https://github.com/digitalocean/container-blueprints.git cd container-blueprints/DOKS-wordpress 接下来添加 Helm 仓库 helm repo add openebs-nfs https://openebs.github.io/dynamic-nfs-provisioner helm repo update 然后打开并检查仓库中提供的 assets/manifests/openEBS-nfs-provisioner-values.yaml 文件 nfsStorageClass:backendStorageClass: do-block-storage 注意上面显示的覆盖值将 backendStorageClass 的默认值更改为 do-block-storage。请访问 openebs nfs provisioner helm values 了解完整的 values.yaml 文件和更多详细信息。 最后使用 Helm 安装图表 helm install openebs-nfs openebs-nfs/nfs-provisioner --version 0.9.0 \--namespace openebs \--create-namespace \-f assets/manifests/openEBS-nfs-provisioner-values.yaml 注意使用的是特定版本的 Helm 图表。在本例中选择了 0.9.0 版本该版本对应应用程序的 0.9.0 版本。一般来说锁定特定版本是一种好的做法。这有助于获得可预测的结果并允许通过 Git 进行版本控制。 你可以通过以下方式验证 openEBS 的部署状态 helm ls -n openebs 输出结果类似于注意 STATUS 列的值为 deployed NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION openebs-nfs openebs 1 2022-05-09 10:58:14.388721 0300 EEST deployed nfs-provisioner-0.9.0 0.9.0 NFS 配置器需要一个块存储设备来创建 NFS 服务器所需的磁盘容量。接下来你将配置 DigitalOcean 提供的默认 Kubernetes Storage Class (do-block-storage) 作为 NFS 配置器的后端存储。在这种情况下任何使用新创建的 Storage Class 的应用程序都可以在 DigitalOcean 卷上通过 OpenEBS NFS 配置器使用共享存储NFS。 接下来打开并检查仓库中提供的 sc-rwx-values.yaml 文件 --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: rwx-storageannotations: openebs.io/cas-type: nsfrwxcas.openebs.io/config: |- name: NSFServerTypevalue: kernel- name: BackendStorageClassvalue: do-block-storage provisioner: openebs.io/nfsrwx reclaimPolicy: Delete 上述配置的解释 provisioner - 定义了用于配置 PV 的存储类例如 openebs.io/nfsrwxreclaimPolicy - 动态配置的卷会在用户删除相应的 PersistentVolumeClaim 时自动删除 有关 openEBS 的更多信息请访问 OpenEBS 文档。 通过 kubectl 应用 kubectl apply -f assets/manifests/sc-rwx-values.yaml 通过执行以下命令验证是否创建了 StorageClass kubectl get sc 输出结果类似于 NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 107m openebs-kernel-nfs openebs.io/nfsrwx Delete Immediate false 84m rwx-storage openebs.io/nfsrwx Delete Immediate false 84m 现在你有了一个名为 rwx-storage 的新 StorageClass可以在 DigitalOcean Block Storage 上动态配置共享卷。 配置 WordPress MySQL 托管数据库 在本节中你将创建一个专用的 MySQL 数据库例如 DigitalOcean 的托管数据库用于 WordPress。这是必要的因为你的 WordPress 安装将位于 Kubernetes 集群内的单独服务器上。可观看视频教程了解如何快速配置数据库 默认情况下WordPress Helm 图表在集群内的单独 pod 上安装 MariaDB 并将其配置为默认数据库。在决定使用托管数据库还是默认的 MariaDB 之前你应该考虑以下几个方面 使用托管数据库服务时你只需决定数据库服务器的初始大小即可。此外自动化方面也具有吸引力。执行更新、运行迁移和创建备份都是自动完成的。有关托管数据库的更多信息请参阅这篇文章。使用托管数据库会产生额外费用。使用默认的 MariaDB Helm 图表安装时需要注意 DB pods数据库应用容器是临时的因此它们可能会经常重启或失败。特定的管理任务如备份或扩展需要更多的手动工作和设置来实现这些目标。使用 MariaDB 安装不会产生任何额外费用。 如果你不想使用外部数据库请跳到下一章 - 配置 Redis 数据库。 首先创建 MySQL 托管数据库 doctl databases create wordpress-mysql --engine mysql --region nyc1 --num-nodes 2 --size db-s-2vcpu-4gb 本教程中的示例使用一个主节点和一个从节点2 个 CPU/4 GB100 美元/月。有关可用大小的列表请访问DigitalOcean API 参考。 输出结果类似于以下内容STATE 列应显示 online Output ID Name Engine Version Number of Nodes Region Status Size 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72 wordpress-mysql-test mysql 8 1 nyc1 online db-s-1vcpu-1gb 要完成 MySQL 的设置需要数据库 ID。你可以运行以下命令来打印你的 MySQL 数据库 ID doctl databases list 接下来创建 WordPress 数据库用户 doctl databases user create 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72 wordpress_user 输出结果类似于以下内容密码将自动生成 Name Role Password wordpress_user normal ******* 默认情况下新用户可以获得整个数据库的全部权限。一般来说最好的安全做法是将新用户的权限限制在 WordPress 数据库内。你可以按照 DigitalOcean 提供的如何修改 MySQL 数据库中的用户权限指南来完成这项任务。 接下来创建主要的 WordPress 数据库 doctl databases db create 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72 wordpress 输出结果类似于以下内容密码将自动生成 Name wordpress 最后你需要在 MySQL 数据库和 Kubernetes 集群 (DOKS) 之间设置可信源 首先提取 Kubernetes 集群 ID doctl kubernetes cluster list 输出结果类似于以下内容 Output ID Name Region Version Auto Upgrade Status Node Pools c278b4a3-19f0-4de6-b1b2-6d90d94faa3b k8s-cluster nyc1 1.21.10-do.0 false running basic 最后限制传入连接 doctl databases firewalls append 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72 --rule k8s:c278b4a3-19f0-4de6-b1b2-6d90d94faa3b 注意 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72表示数据库 IDc278b4a3-19f0-4de6-b1b2-6d90d94faa3b表示 Kubernetes ID 请访问如何保护 MySQL 托管数据库集群了解更多详细信息。 配置 Redis 数据库 远程字典服务器Redis是一种内存、持久、键值数据库也称为数据结构服务器。Redis 的缓存机制与 MySQL 或 MariaDB 结合使用时可以加快 WordPress 数据库查询的速度。Redis 允许你在内存中缓存和存储数据以实现高性能的数据检索和存储。使用 Redis可以将 MySQL 数据库查询处理的数据存储在 Redis 缓存实例中以便快速检索。 安装和配置 Redis 实例有两种方式。使用 DigitalOcean 的托管数据库服务或通过 Helm 图表安装。以下将探讨这两种选项。 配置 Redis DO 托管数据库 在本节中你将使用 DigitalOcean 创建一个 Redis 数据库。如果不想使用托管数据库请跳至下一节 - 配置 Redis Helm 图。 在决定使用托管数据库还是 Helm 安装的数据库之前你应该考虑以下几个方面 使用托管数据库服务时你只需决定数据库服务器的初始大小即可。此外自动化方面也具有吸引力。执行更新、运行迁移和创建备份都是自动完成的。使用托管数据库会产生额外费用。使用 Redis Helm 图表安装时需要注意 DB pods数据库应用容器是临时的因此它们可能会经常重启或失败。特定的管理任务如备份或扩展需要更多的手动工作和设置来实现这些目标。使用 Redis 安装不会产生任何额外费用。 首先创建 Redis 托管数据库 doctl databases create wordpress-redis --engine redis --region nyc1 --num-nodes 1 --size db-s-1vcpu-1gb 本教程中的示例使用一个节点1 个 CPU/1 GB10 美元/月。有关可用大小的列表请访问API 文档。 输出结果类似于以下内容STATE 列应显示 online Output ID Name Engine Version Number of Nodes Region Status Size 91180998-7fe2-450c-b353-492d8abcddad wordpress-redis redis 6 1 nyc1 creating db-s-1vcpu-1gb 接下来你需要在 Redis 数据库和 Kubernetes 集群 (DOKS) 之间设置可信源 首先提取 Kubernetes 集群 ID doctl kubernetes cluster list 输出结果类似于以下内容 Output ID Name Region Version Auto Upgrade Status Node Pools c278b4a3-19f0-4de6-b1b2-6d90d94faa3b k8s-cluster nyc1 1.21.10-do.0 false running basic 最后限制传入连接 doctl databases firewalls append 2f0d0969-a8e1-4f94-8b73-2d43c68f8e72 --rule k8s:c278b4a3-19f0-4de6-b1b2-6d90d94faa3b 请访问如何保护 Redis 托管数据库集群了解更多详细信息。 配置 Redis Helm 图表 在本节中你将使用 Bitnami Redis Helm 图表在 Kubernetes 集群中创建一个 Redis 数据库。 首先添加 Helm 仓库并列出可用的图表 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update bitnami 接下来打开并检查仓库中提供的 assets/manifests/redis-values.yaml 文件 master:persistence:enabled: truestorageClass: rwx-storageaccessModes: [ReadWriteMany]size: 5Gi auth:enabled: truepassword: YOUR_REDIS_PASSWORD_HEREarchitecture: standalone 上述配置的解释 master.persistance 块 - 启用 Redis 主节点上的持久性使用 PVC 并将 PV 存储类设置为之前创建的存储类auth 块 - 启用并设置密码认证密码由用户设置architecture - Redis 架构。独立的 Redis StatefulSet。Redis 主服务指向主节点可以在此执行读写操作。 注意大多数覆盖项可以自定义。请访问 redis helm values 了解更多详细信息。 最后使用 Helm 安装图表 helm upgrade redis bitnami/redis \--atomic \--create-namespace \--install \--namespace redis \--version 17.0.5 \--values assets/manifests/redis-values.yaml 使用的是特定版本的 Redis Helm 图表。在本例中选择了 17.0.5 版本该版本对应 Redis 的 7.0.4 版本。一般来说锁定特定版本是一种好的做法。这有助于获得可预测的结果并允许通过 Git 进行版本控制。 检查 Helm 发布状态 helm ls -n redis 输出结果类似于注意 STATUS 列的值为 deployed NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION redis redis 1 2022-06-02 08:45:38.617726 0300 EEST deployed redis-17.0.5 7.0.4 验证 Redis 是否正常运行 kubectl get all -n redis 输出结果类似于所有 Redis pods 应为 UP 和 RUNNING 状态 NAME READY STATUS RESTARTS AGE pod/redis-master-0 1/1 Running 0 2m24sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/redis-headless ClusterIP None none 6379/TCP 2m25s service/redis-master ClusterIP 10.245.14.50 none 6379/TCP 2m25sNAME READY AGE statefulset.apps/redis-master 1/1 2m26s 安装 WordPress 部署 Helm 图表 在本节中你将使用 Bitnami WordPress Helm 图表在 Kubernetes 集群中安装 WordPress。 最重要的 Helm 图表值是 externalDatabase - 配置 WordPress 使用外部数据库例如 DigitalOcean 托管的 MySQL 数据库。mariadb.enabled - 配置 WordPress 使用集群内数据库例如 MariaDB。 首先添加 Helm 仓库并列出可用的图表 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update bitnami 接下来打开并检查仓库中提供的 assets/manifests/wordpress-values.yaml 文件 # WordPress 服务类型 service:type: ClusterIP# 启用使用持久卷声明的持久性 persistence:enabled: truestorageClassName: rwx-storageaccessModes: [ReadWriteMany]size: 5GivolumePermissions:enabled: true# Prometheus 导出器 / 指标配置 metrics:enabled: false# 允许的自动更新级别。允许值major, minor 或 none。 wordpressAutoUpdateLevel: minor# 用于生成 WordPress URL 的方案 wordpressScheme: https# WordPress 凭据 wordpressUsername: YOUR_WORDPRESS_USER_NAME_HERE wordpressPassword: YOUR_WORDPRESS_USER_PASSSWORD_HERE# 外部数据库详细信息 externalDatabase:host: YOUR_WORDPRESS_MYSQL_DB_HOST_HEREport: 25060user: YOUR_WORDPRESS_MYSQL_DB_USER_NAME_HEREpassword: YOUR_WORDPRESS_MYSQL_DB_USER_PASSWORD_HEREdatabase: YOUR_WORDPRESS_MYSQL_DB_NAME_HERE# 禁用 MariaDB mariadb:enabled: falsewordpressExtraConfigContent: |define( WP_REDIS_SCHEME, REDIS_SCHEME );define( WP_REDIS_HOST, REDIS_HOST );define( WP_REDIS_PORT, REDIS_PORT );define( WP_REDIS_PASSWORD, REDIS_PASSWORD);define( WP_REDIS_DATABASE, 0 ); 大多数覆盖项可以自定义。请访问 wordpress helm values 了解更多详细信息。使用托管 Redis DO 数据库时WP_REDIS_SCHEME 参数需要设置为 tls而使用 helm 安装的 Redis 数据库时需要设置为 tcp。对于 helm 安装的 Redis 数据库可以通过以下命令获取 WP_REDIS_HOST 参数值 kubectl exec -i -t REDIS_POD --namespace redis -- hostname -i 最后使用 Helm 安装图表 helm upgrade wordpress bitnami/wordpress \--atomic \--create-namespace \--install \--namespace wordpress \--version 15.0.11 \--values assets/manifests/wordpress-values.yaml 使用的是特定版本的 WordPress Helm 图表。在本例中选择了 15.0.11 版本该版本对应 WordPress 的 6.0.1 版本。一般来说锁定特定版本是一种好的做法。这有助于获得可预测的结果并允许通过 Git 进行版本控制。 检查 Helm 发布状态 helm ls -n wordpress 输出结果类似于注意 STATUS 列的值为 deployed NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION wordpress wordpress 1 2022-03-22 14:22:18.146474 0200 EET deployed wordpress-15.0.11 6.0.1 验证 WordPress 是否正常运行 kubectl get all -n wordpress 输出结果类似于所有 WordPress pods 应为 UP 和 RUNNING 状态 NAME READY STATUS RESTARTS AGE pod/wordpress-6f55c9ffbd-4frrh 1/1 Running 0 23hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/wordpress ClusterIP 10.245.36.237 none 80/TCP,443/TCP 23hNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/wordpress 1/1 1 1 23hNAME DESIRED CURRENT READY AGE replicaset.apps/wordpress-6f55c9ffbd 1 1 1 23h 验证 wordpress 命名空间下创建的 PVC 和 openebs 命名空间下关联的 OpenEBS 卷 kubectl get pvc -A 输出结果类似于注意 WordPress PVC 的 RWX 访问模式以及之前通过 OpenEBS NFS provisioner 定义的新存储类 NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE openebs nfs-pvc-2b898be6-19f4-4e52-ab9b-10e73ce7d82f Bound pvc-b253c0eb-b02b-46a6-ae88-9a7dd2b71377 5Gi RWO do-block-storage 10m openebs nfs-pvc-4ce1c2a8-ee65-420f-a722-50f4e50c60a7 Bound pvc-2f2c9dd8-807d-4919-aac1-ab1af69e24c7 5Gi RWO do-block-storage 3m22s redis redis-data-redis-master-0 Bound pvc-2b898be6-19f4-4e52-ab9b-10e73ce7d82f 5Gi RWX rwx-storage 10m wordpress wordpress Bound pvc-4ce1c2a8-ee65-420f-a722-50f4e50c60a7 5Gi RWX rwx-storage 3m22s 验证集群中创建的关联 PV kubectl get pv 输出结果类似于 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-2b898be6-19f4-4e52-ab9b-10e73ce7d82f 5Gi RWX Delete Bound redis/redis-data-redis-master-0 rwx-storage 12m pvc-2f2c9dd8-807d-4919-aac1-ab1af69e24c7 5Gi RWO Delete Bound openebs/nfs-pvc-4ce1c2a8-ee65-420f-a722-50f4e50c60a7 do-block-storage 4m48s pvc-4ce1c2a8-ee65-420f-a722-50f4e50c60a7 5Gi RWX Delete Bound wordpress/wordpress rwx-storage 4m48s pvc-b253c0eb-b02b-46a6-ae88-9a7dd2b71377 5Gi RWO Delete Bound openebs/nfs-pvc-2b898be6-19f4-4e52-ab9b-10e73ce7d82f do-block-storage 12m 你还可以创建其他 pods 以展示 NFS provisioner 的能力方法是打开 wordpress-values.yaml 文件并添加 replicaCount 行设置为所需的副本数。 ... replicaCount: 3 ... 使用 helm upgrade 命令应用更改 helm upgrade wordpress bitnami/wordpress \--atomic \--create-namespace \--install \--namespace wordpress \--version 15.0.11 \--values assets/manifests/wordpress-values.yaml 验证更改是否已应用。注意增加的副本数和 pods 数量 kubectl get all -n wordpress 输出结果类似于 NAME READY STATUS RESTARTS AGE pod/wordpress-5f5f4cf94c-d7mqb 1/1 Running 0 2m58s pod/wordpress-5f5f4cf94c-qkxdq 1/1 Running 0 3m38s pod/wordpress-5f5f4cf94c-zf46h 1/1 Running 0 87sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/wordpress ClusterIP 10.245.151.58 none 80/TCP,443/TCP 35mNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/wordpress 3/3 3 3 35mNAME DESIRED CURRENT READY AGE replicaset.apps/wordpress-5f5f4cf94c 3 3 3 35m replicaset.apps/wordpress-798789f994 0 0 0 19m 我们还可以检查 pods 部署的位置 kubectl get all -n wordpress -o wide 输出结果类似于注意 pods 部署在不同的节点上 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/wordpress-5f5f4cf94c-d7mqb 1/1 Running 0 4m7s 10.244.0.206 basicnp-cwxop none none pod/wordpress-5f5f4cf94c-qkxdq 1/1 Running 0 4m47s 10.244.1.84 basicnp-cwxol none none pod/wordpress-5f5f4cf94c-zf46h 1/1 Running 0 2m36s 10.244.0.194 basicnp-cwxop none none 使用 Lets Encrypt 证书确保流量安全 Bitnami WordPress Helm 图表通过 cert-manager 内置了对 Ingress 路由和证书管理的支持。这使得使用包括 Lets Encrypt 在内的各种证书提供商的证书来配置 TLS 支持变得容易。 安装 Nginx Ingress Controller 首先添加 Helm 仓库并列出可用的图表 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update ingress-nginx 接下来使用 Helm 安装 Nginx Ingress Controller helm install ingress-nginx ingress-nginx/ingress-nginx --version 4.1.3 \--namespace ingress-nginx \--create-namespace 接下来通过运行以下命令检查 Helm 安装是否成功 helm ls -n ingress-nginx 输出结果类似于注意 STATUS 列的值为 deployed NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-nginx 1 2022-02-14 12:04:06.670028 0200 EET deployed ingress-nginx-4.1.3 1.2.1 最后列出 DigitalOcean 账户中的所有负载均衡器资源并打印 IP、ID、名称和状态 doctl compute load-balancer list --format IP,ID,Name,Status 输出结果类似于应该包含为 Nginx Ingress Controller 创建的新负载均衡器资源状态应为健康 IP ID Name Status 45.55.107.209 0471a318-a98d-49e3-aaa1-ccd855831447 acdc25c5cfd404fd68cd103be95af8ae active 为 Nginx Ingress Controller 配置 DNS 在此步骤中你将使用你拥有的域名在 DigitalOcean 账户中配置 DNS。然后你将为 WordPress 创建域名 A 记录。 首先请发出以下命令以创建新域例如 bond-0.co doctl compute domain create bond-0.co 注意你需要确保你的域名注册商已配置为指向 DigitalOcean 名称服务器。请访问 如何设置 DigitalOcean 名称服务器 获取更多信息。 接下来你将为 WordPress 应用程序添加所需的 A 记录。首先需要确定由 Nginx 部署创建的负载均衡器外部 IP kubectl get svc -n ingress-nginx 输出结果类似于注意 ingress-nginx-controller 服务的 EXTERNAL-IP 列值 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.245.109.87 45.55.107.209 80:32667/TCP,443:31663/TCP 25h ingress-nginx-controller-admission ClusterIP 10.245.90.207 none 443/TCP 25h 然后添加记录请相应替换 占位符。你可以根据需要更改 TTL 值 doctl compute domain records create bond-0.co --record-type A --record-name wordpress --record-data YOUR_LB_IP_ADDRESS --record-ttl 30 提示如果你的账户中只有一个负载均衡器请使用以下代码片段 LOAD_BALANCER_IP$(doctl compute load-balancer list --format IP --no-header) doctl compute domain records create bond-0.co --record-type A --record-name wordpress --record-data $LOAD_BALANCER_IP --record-ttl 30 观察和结果 列出 bond-0.co 域的可用记录 doctl compute domain records list bond-0.co 输出结果类似于 Output ID Type Name Data Priority Port TTL Weight 311452740 SOA 1800 0 0 1800 0 311452742 NS ns1.digitalocean.com 0 0 1800 0 311452743 NS ns2.digitalocean.com 0 0 1800 0 311452744 NS ns3.digitalocean.com 0 0 1800 0 311453305 A wordpress 45.55.107.209 0 0 30 0 安装 Cert-Manager 首先添加 Jetstack Helm 仓库并列出可用的图表 helm repo add jetstack https://charts.jetstack.io helm repo update jetstack 接下来使用 Helm 安装 Cert-Manager helm install cert-manager jetstack/cert-manager --version 1.8.0 \--namespace cert-manager \--create-namespace \--set installCRDstrue 最后通过运行以下命令检查 Cert-Manager 安装是否成功 helm ls -n cert-manager 输出结果类似于STATUS 列应显示 deployed NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION cert-manager cert-manager 1 2021-10-20 12:13:05.124264 0300 EEST deployed cert-manager-v1.8.0 v1.8.0 为 WordPress 配置生产就绪的 TLS 证书 首先需要一个集群颁发者来获取最终的 TLS 证书。打开并检查仓库中提供的 assets/manifests/letsencrypt-issuer-values-values.yaml 文件 apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata:name: letsencrypt-prodnamespace: wordpress spec:acme:# 你必须将此电子邮件地址替换为你自己的。# Lets Encrypt 将使用此地址与您联系有关证书到期和账户相关的问题。email: YOUR-EMAIL-HEREserver: https://acme-v02.api.letsencrypt.org/directoryprivateKeySecretRef:# 用于存储账户私钥的 Secret 资源。name: prod-issuer-account-key# 添加一个单一的挑战解决器使用 nginx 进行 HTTP01 验证solvers:- http01:ingress:class: nginx 通过 kubectl 应用 kubectl apply -f assets/manifests/letsencrypt-issuer-values.yaml 为了确保 WordPress 流量安全打开之前创建的 wordpress-values.yaml 文件并在末尾添加以下设置 # 启用 WordPress 的 Ingress 记录生成 ingress:enabled: truecertManager: truetls: falsehostname: YOUR_WORDPRESS_DOMAIN_HEREannotations:kubernetes.io/ingress.class: nginxcert-manager.io/cluster-issuer: letsencrypt-prodextraTls:- hosts:- YOUR_WORDPRESS_DOMAIN_HEREsecretName: wordpress.local-tls 通过 helm 升级 helm upgrade wordpress bitnami/wordpress \--create-namespace \--namespace wordpress \--version 15.0.11 \--timeout 10m0s \--values assets/manifests/wordpress-values.yaml 这会自动通过 cert-manager 创建一个证书。然后你可以通过运行以下命令验证你是否已成功获取证书 kubectl get certificate -n wordpress wordpress.local-tls 如果成功输出的 READY 列应显示 True NAME READY SECRET AGE wordpress.local-tls True wordpress.local-tls 24h 现在你可以使用之前配置的域名访问 WordPress。你将通过安装过程的引导。 启用 WordPress 监控指标 在本节中你将学习如何启用指标来监控 WordPress 实例。 首先打开之前在本教程中创建的 wordpress-values.yaml 文件并将 metrics.enabled 字段设置为 true # Prometheus 导出器 / 指标配置 metrics:enabled: true 使用 Helm 应用更改 helm upgrade wordpress bitnami/wordpress \--create-namespace \--namespace wordpress \--version 15.0.11 \--timeout 10m0s \--values assets/manifests/wordpress-values.yaml 接下来端口转发 wordpress 服务以检查可用的指标 kubectl port-forward --namespace wordpress svc/wordpress-metrics 9150:9150 现在打开 Web 浏览器并导航到 localhost:9150/metrics查看所有 WordPress 指标。 最后你需要配置 Grafana 和 Prometheus 来可视化你的新 WordPress 实例暴露的指标。请访问 如何安装 Prometheus 监控堆栈 了解如何安装和配置 Grafana 和 Prometheus。 配置 WordPress 插件 插件是 WordPress 网站的构建模块。无论你是需要添加联系表单、改善 SEO、提高网站速度、创建在线商店还是提供电子邮件订阅等功能插件都能为你的网站带来重要功能。 以下是一些推荐的插件 Contact Form by WPForms允许你为你的网站创建精美的联系表单、反馈表单、订阅表单、付款表单以及其他类型的表单。MonsterInsights是 WordPress 上最好的 Google Analytics 插件。它可以“正确”地将你的网站与 Google Analytics 连接起来这样你就可以清楚地看到人们如何发现和使用你的网站。All in One SEO帮助你从搜索引擎获得更多的访问量。虽然 WordPress 本身是 SEO 友好的但使用 SEO 最佳实践可以大幅增加你的网站流量。SeedProd是 WordPress 上最好的拖放式页面生成器。它允许你轻松定制网站设计并创建自定义页面布局而无需编写任何代码。LiteSpeed Cache是一款多功能网站加速插件具有独有的服务器级缓存和优化功能集合。UpdraftPlus简化了备份和恢复。将文件和数据库备份到云端并一键恢复。Query MonitorWordPress 的开发者工具面板。它可以调试数据库查询、PHP 错误、钩子和操作。 更多插件请访问 WordPress 插件。 提高 WordPress 性能 CDN内容分发网络是加快 WordPress 网站速度的一种简单方法。CDN 是一种服务器设置通过优化媒体文件的传输请求来提高网页的加载速度。当访问者远离服务器位置时大多数网站会面临延迟问题。使用 CDN 可以通过在提供静态内容如图像、CSS、JavaScript 和视频流时卸载 Web 服务器来加快内容交付速度。缓存静态内容的另一个好处是最小化延迟。CDN 是优化网站并改善全球用户体验的可靠解决方案。 配置 NitroPack 插件 NitroPack 是一款用于优化网站速度和性能的插件。 接下来你将为你的 WordPress 实例配置 NitroPack 插件。 注意通过 WordPress Helm 图表值文件wordpress-values.yaml配置的管理员密码在尝试登录 WordPress 管理员控制台时会失败。要更改密码你需要连接到数据库并重置它。首先如果你不熟悉 DigitalOcean 管理的数据库请阅读 如何连接到 MySQL 数据库集群。然后按照 WordPress 支持网站上的 重置 WordPress 用户密码 文章进行操作。 请按照以下步骤为你的 WordPress 实例配置 NitroPack 插件 通过以下链接在你的 Web 浏览器中打开 WordPress 安装的管理员控制台确保相应替换 YOUR_WORDPRESS_DOMAIN_HERE 占位符 https://YOUR_WORDPRESS_DOMAIN_HERE/wp-admin 当被要求时请使用 WordPress 管理员凭据登录。 点击插件菜单项然后打开“添加新”子菜单。搜索 NitroPack 插件然后在结果页面中点击“立即安装”按钮。安装完成后点击“激活”按钮。你应该能看到插件添加到你的插件列表中。点击插件名称下的设置链接。在接下来的页面中点击“连接到 NitroPack”按钮。接下来你将被重定向到登录或创建一个新的 NitroPack 账户。NitroPack.io 仪表板页面应打开显示与计划、优化页面等相关的信息。 接下来请按照以下步骤将你的网站与 NitroPack 连接 导航至 NitroPack使用配置插件时创建的账户登录。点击“添加新网站”菜单项然后填写网站 URL 和网站名称。现在点击“免费订阅”选项然后点击“继续”按钮。如果你的域名托管在 Cloudflare 上你将被提示将你的 Cloudflare 账户与 NitroPack 账户连接。你应该可以看到仪表板上的缓存信息。 注意安装 NitroPack 后你可能会看到以下信息Could not turn on the WP_CACHE constant in wp-config.php. 这是由于 wp-config.php 文件的权限限制。要解决此问题你需要使用 kubectl SSH 进入 WordPress 容器 kubectl exec --stdin --tty your_wordpress_pod -n wordpress -- /bin/bash 导航到容器内的 /bitnami/wordpress 目录并运行以下命令更改权限 chmod 0644 wp-config.php 重启插件主页应解决该错误。 你还可以查看这篇文章了解 NitroPack 是否正在为访问者提供优化页面。 配置 Cloudflare Cloudflare 是一家提供内容分发网络CDN、DNS、DDoS 保护和安全服务的公司。Cloudflare 是加快和增强 WordPress 网站安全性的好解决方案。 注意配置此项需要一个 Cloudflare 账户。如果你没有请访问 Cloudflare 网站 并注册一个免费账户。如果 WordPress 安装是使用其他注册商如 GoDaddy购买的域名配置的你需要将其自定义名称服务器更改为指向 Cloudflare 名称服务器。 请按照以下步骤配置 Cloudflare 以配合你的 WordPress 网站 使用你的账户登录 Cloudflare 仪表板并点击“添加站点”。输入 WordPress 网站的域名然后点击“添加站点”按钮。在计划选择页面中点击“免费计划”下的“开始使用”按钮。在“查看 DNS 记录”页面点击“添加记录”按钮并添加 A 记录。为记录选择一个名称并确保输入的 IPv4 地址是 DigitalOcean 负载均衡器的地址然后点击“继续”按钮。在下一页你将被要求删除域名注册商中的任何自定义名称服务器并添加 Cloudflare 的名称服务器。使用你的管理员账户登录域名注册商并更改自定义名称服务器。点击“完成检查名称服务器”按钮。在下一页Cloudflare 提供了一些配置建议可以跳过稍后处理。点击“跳过建议”链接。 当站点在 Cloudflare 上激活时将发送电子邮件通知你。在 Cloudflare 账户中你可以查看分析页面获取有关 WordPress 网站的 Web 流量信息。 处理名称服务器更新可能需要最多 24 小时完成。 配置 Redis 对象缓存 WordPress 会进行多次 MySQL 查询而 Redis 对象缓存可以优化 WordPress 数据库的使用。Redis 对象可用于存储发送到 MySQL 服务器的特定查询的请求输出缓存。 接下来你将为你的 WordPress 实例配置 Redis 对象缓存插件。 请按照以下步骤配置 Redis 对象缓存使其与你的 WordPress 网站配合使用 在浏览器中通过以下链接打开 WordPress 安装的管理员控制面板确保相应替换 YOUR_WORDPRESS_DOMAIN_HERE 占位符 plaintext https://YOUR_WORDPRESS_DOMAIN_HERE/wp-admin 当被要求时请使用 WordPress 管理员凭据登录。点击插件菜单项然后打开“添加新”子菜单。搜索 Redis 对象缓存插件然后在结果页面中点击“立即安装”按钮。安装完成后点击“激活”按钮。你应该能看到插件概述页面。点击“启用对象缓存”按钮。插件应连接到 Redis 集群并显示“已连接”状态。 升级 WordPress 由于 WordPress 如此受欢迎它经常成为恶意利用的目标因此保持它的最新版本是非常重要的。你可以通过 helm 升级命令升级 WordPress。 首先更新 helm 仓库 helm repo update 接下来将 WordPress 升级到新版本 helm upgrade wordpress bitnami/wordpress \--atomic \--create-namespace \--install \--namespace wordpress \--version WORDPRESS_NEW_VERSION \--timeout 10m0s \--values assets/manifests/wordpress-values.yaml 将 WORDPRESS_NEW_VERSION 替换为新版本号。 结论 在本指南中你学习了如何使用 Helm 和外部 MySQL 数据库以 Kubernetes 方式安装 WordPress。你还学习了如何将 WordPress 升级到新版本以及在出错时如何回滚到之前的版本。 如果你想了解有关 Kubernetes 和 Helm 的更多信息请查看我们社区页面的 DO Kubernetes 部分。 感谢你与 DigitalOcean 社区一起学习。查看我们的 计算、存储、负载均衡、DDoS 和 托管数据库 产品了解更多产品信息。中国区用户需要技术支持或需要咨询更多产品方案或场景比如程序化广告、跨境电商可联系 DigitalOcean 中国区独家战略合作伙伴卓普云。
http://www.lakalapos1.cn/news/36888/

相关文章:

  • wordpress+远程缓存广州新塘排名seo优化公司
  • 河北住房和城乡建设厅网站驱动apt方式 安装wordpress
  • 甘肃省住房城乡建设厅网站首页wordpress seo是什么
  • 购物类网站建设广州网站设计建站
  • 网站移动端是什么问题吗电子商务网站开发主要实现功能
  • 陕西手机网站制作哪方面网站
  • 免费网站建设公司代理宁波网站优化服务
  • 做网站建设怎么赚钱普宁网站建设
  • 百度搜索站长平台单网页网站扒站工具
  • 做兼职有哪些网站搜索引擎优化工作原理的先后顺序
  • 哈尔滨做网站公司有哪些新月传媒做网站 怎么样
  • 印江建设局网站网站做301根目录在哪里
  • 苏州网站设计公司山东济南兴田德润什么活动票务网站模板
  • 营销型机械网站关于网站设计的职业
  • h5网站后台管理模板嘉兴 做网站 推广
  • 深圳专业网站建设要求网站专题制作
  • 长沙企业网站建设多少钱上海城乡建设部网站
  • 境外做网站网站如何做网站logo 设置平滑
  • 网站设计公司排名商城网站开发价
  • 旅游景区网站建设方案文档唐山的谁会建网站
  • 河南省监理建设协会网站网页制作报价单
  • 专业免费网站建设一般建筑工程与土木工程区别
  • 上海网站建设收费免费网线
  • 行业协会网站织梦模板做qq群排名的网站是否违规
  • 建设项目环保竣工信息公开网站杨园建设社区网站
  • 中国网站建设销市场规模响应式网站的设计趋势
  • 企业网站开发教学视频系统开发师
  • 货运网站源码vi设计品牌图片
  • 运城建设局网站wordpress+客户端
  • 东莞市广建建设工程有限公司seo的特点是什么