首页/新闻资讯/正文详情

使用k8s部署wordpress的完整流程

发布时间:2026/9/25 22:41:40 来源:云帆数科 栏目:资讯中心
使用k8s部署wordpress的完整流程
一 、部署流程制作服务镜像1.1 准备合适的基础镜像1.2 准备代码相关文件1.3 通过dockerfile构建镜像制作kubernets 服务器并完成调度2.1 确定服务的运行模式 内部还是对外提供服务2.2 确定服务所使用的控制器2.3 服务是否需要后端存储pvc2.4 服务是否需要serviceIngress等二 、 下载代码1 . 下载wordpress代码123[roottestserver01 ~]# wget --no-check-certificate https://cn.wordpress.org/wordpress-6.0-zh_CN.tar.gz[roottestserver01 ~]# tar xf wordpress-6.0-zh_CN.tar.gz[roottestserver01 ~]# cd wordpress准备wp-config.php文件修改数据库链接信息使用变量后期进行替换、以及Authentication的key12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697[roottestserver01 wordpress]#cp wp-config-sample.php wp-config.php[roottestserver01 wordpress]#vim wp-config.php?php/*** The base configuration for WordPress** The wp-config.php creation script uses this file during the installation.* You dont have to use the web site, you cancopythis file towp-config.php* and fill in the values.** This file contains the following configurations:** * Database settings* * Secret keys* * Database table prefix* * ABSPATH** link https://wordpress.org/support/article/editing-wp-config-php/** package WordPress*/// ** Database settings - You can get this info from your web host ** ///** The name of the database for WordPress */define(DB_NAME,{DB_NAME});/** Database username */define(DB_USER,{DB_USER});/** Database password */define(DB_PASSWORD,{DB_PASSWORD});/** Database hostname */define(DB_HOST,{DB_HOST});/** Database charset to use in creating database tables. */define(DB_CHARSET,utf8);/** The database collatetype. Dont change this if in doubt. */define(DB_COLLATE,);/**#* Authentication unique keys and salts.** Change these to different unique phrases! You can generate these using* the {link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-keyservice}.** You can change these at any point in time to invalidate all existing cookies.* This will force all users to have to log in again.** since 2.6.0*/define(AUTH_KEY,y:{)hlVEfEpR4V}()^]Ydb|Y8yY-;|hemOR|VA/5MUP;h7EyR*FVYO9a?Rq);define(SECURE_AUTH_KEY,^acJ;I/{:M|FM~UuxNN)yU~e8/hMee _cDo/s*twtrdYxIp~p$|d0[dazi?} A);define(LOGGED_IN_KEY,V_13Sds?)-x6457G0EH/z7^Vpj/*V,.ekFq}N],[-IwVLwvU{P{]je7);define(NONCE_KEY,3Ie XQ]ufX%Ae1r:Sv{,Qd.kSckouY8WN:9~fn^DKd5-(/4)WWp1pwC0a Uv);define(AUTH_SALT,#3QONR)9CXQuoY|*:q9~TfN?H|k]WU:j^)3F A1B.%dq3z;:mfW.zS$Mh);define(SECURE_AUTH_SALT,VSrV([c]]/?_,/2|8r6}t|Pz0|2Hovb{%.O*-)tk36_9X WE{ Cl 7vHJ1%);define(LOGGED_IN_SALT,OmqUGc7W,Zw:FKvIIhex:B#7JxO|FQ!ABvjwg,!W3gw}u^I,8G];3ePj[G);define(NONCE_SALT,Y7eEkx7qggp7obhs0oge/j)(wn5GiRD9bJ[4*A*?#2NsBM:dpmo*3Ix:oi);/**#-*//*** WordPress database table prefix.** You can have multiple installations in one database if you give each* a unique prefix. Only numbers, letters, and underscores please!*/$table_prefix wp_;/*** For developers: WordPress debugging mode.** Change this to true to enable the display of notices during development.* It is strongly recommended that plugin and theme developers use WP_DEBUG* in their development environments.** For information on other constants that can be used for debugging,* visit the documentation.** link https://wordpress.org/support/article/debugging-in-wordpress/*/define(WP_DEBUG, false );/* Add any custom values between this line and thestop editingline. *//* Thats all, stop editing! Happy publishing. *//** Absolute path to the WordPress directory. */if ( ! defined(ABSPATH) ) {define(ABSPATH, __DIR__ ./);}/** Sets up WordPress vars and included files. */require_once ABSPATH .wp-settings.php;三、 Dockerfile制作镜像过程中yum安装nginx、php比较慢可以提前下载好rpm包1234[roottestserver01 ~]#rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm[roottestserver01 ~]#yum install --downloadonly --downloaddir./download nginx php71w-fpm php71w-xsl php71w php71w-ldap php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysqL php71w-mbstring php71w-bcmath php71w-mcrypt#如果还却依赖包执行下条命令[roottestserver01 ~]# yum install --downloadonly --downloaddir./download gcc gcc-c make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients postgresql-devel libxslt-devel libmcrypt libmcrypt-devel2 . 编写Dockerfile1234567891011121314151617181920212223[roottestserver01 wordpress]#vim DockerfileFROM docker.m.daocloud.io/centos:7ENV Web_Dir/usr/share/nginx/htmlRUN mkdir /downloadCOPY./download/*.rpm /download/RUN rpm-ivh--nodeps--force/download/*.rpmRUNrm-rf${Web_Dir} /download/COPY. ${Web_Dir}RUN useradd-Mwww \sed-i/^user/c user www;/etc/nginx/nginx.conf \sed-i/^user/c user www/etc/php-fpm.d/www.conf \sed-i/^group/c group www/etc/php-fpm.d/www.conf \chown-Rwww.www ${Web_Dir} /var/lib/nginx/EXPOSE 80COPY./entrypoint.sh /entrypoint.shRUN chmod x /entrypoint.shENTRYPOINT [bash,-c,/entrypoint.sh]3 准备启动脚本12345678910111213[roottestserver01 wordpress ]# vim entrypoint.sh#1.替换变量Wordpress_File/usr/share/nginx/html/wp-config.phpsed-is/{DB_NAME}/${DB_NAME:-wordpress}/g ${Wordpress_File}sed-is/{DB_USER}/${DB_USER:-wordpress}/g ${Wordpress_File}sed-is/{DB_PASSWORD}/${DB_PASSWORD:-wordpress}/g ${Wordpress_File}sed-is/{DB_HOST}/${DB_HOST:-localhost}/g ${Wordpress_File}#2. 启动nginx phpphp-fpm \nginx-gdaemon off;构建镜像 并推送至私有仓库12[roottestserver01 wordpress ]# docker build -t harbor.xxxx.com/base/wordpress:v6.0 -f Dockerfile[roottestserver01 wordpress ]# docker push harbor.xxxx.com/base/wordpress:v6.0四 、 运行数据库服务集群内mysql1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374[rootmaster01 wordpress]# cat 01-mysql.yaml###headlessapiVersion: v1kind: Servicemetadata:name: mysql-svcspec:clusterIP: Noneselector:app: mysqlports:- port: 3306targetPort: 3306---### statefulsetapiVersion: apps/v1kind: StatefulSetmetadata:name: mysqlspec:serviceName: mysql-svcreplicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:nodeName: node01.xxxx.comcontainers:- name: dbimage: harbor.xxxx.com/base/mysql:5.7imagePullPolicy: AlwayssecurityContext:privileged: trueresources:requests:cpu: 1memory: 2Gilimits:cpu: 2memory: 4Gienv:- name: MYSQL_ROOT_PASSWORDvalue: 12345678- name: MYSQL_DATABASEvalue: wordpressports:- containerPort: 3306volumeMounts:- name: datamountPath: /var/lib/mysql- name: mysqlconfmountPath: /etc/my.cnfsubPath: my.cnfvolumes:- name: mysqlconfconfigMap:name: mysql-configvolumeClaimTemplates:- metadata:name: dataspec:storageClassName:nfs-provisioner-storageaccessModes:-ReadWriteManyresources:requests:storage:20Gi1234567891011121314151617[rootmaster01 wordpress]# cat mysql_conf.yamlapiVersion: v1kind: ConfigMapmetadata:name: mysql-configdata:my.cnf: |-[mysqld]max_connections 100key_buffer_size 32Mmax_allowed_packet 16Mthread_stack 192Ksort_buffer_size 256Kread_buffer_size 256Kread_rnd_buffer_size 256Kmyisam_sort_buffer_size 64Minnodb_buffer_pool_size 128M集群外部mysql准备外部mysql123456789101112131415161718192021[rootharbor002 wordpress]# docker run -p3306:3306 -e MYSQL_ROOT_PASSWORDoldxu3957 harbor.xxxx.com/base/mysql:5.7[rootmaster01 wordpress]# vim 06-external-mysql.yamlapiVersion: v1kind: Servicemetadata:name: mysql-externalspec:ports:- port: 3306targetPort: 3306clusterIP: None#表示这是一个 headless service直接通过 Endpoint 连接---apiVersion: v1kind: Endpointsmetadata:name: mysql-external#此名字需要于service中定义的name字段一致subsets:- addresses:- ip: 192.168.20.232#定义外部mysql机器的ip地址ports:- port: 3306五、准备nginx配置文件编写nginx php配置文件12345678910111213141516171819[rootmaster01 wordpress]# cat wp.confserver {listen 80;server_name _;root /usr/share/nginx/html;location / {index index.php;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}把配置文件转为configmap1[rootmaster01 wordpress]# kubectl create configmap nginxconfs --from-file./wp.conf六 、准备链接数据库Secret把wordpress 连接数据库信息存储到secret1234567891011[rootmaster01 wordpress]# cat 04-wp-secret.yamlapiVersion: v1kind: Secretmetadata:name: wordpress-secretstringData:DB_NAME: wordpressDB_USER: rootDB_PASSWORD: oldxu3957# DB_HOST: mysql-0.mysql-svc.default.svc.cluster.localDB_HOST: mysql-external.default.svc.cluster.local七 、准备pvc共享图片创建pvc资源共享wordpress的upload目录12345678910111213[rootmaster01 wordpress]# cat 03-wp-pvc.yaml# pvc申请用来共享nfs图片附件apiVersion: v1kind: PersistentVolumeClaimmetadata:name: wordpress-dataspec:storageClassName:nfs-provisioner-storageaccessModes:- ReadWriteManyresources:requests:storage: 10Gi八 、部署wordpress1234567891011121314151617181920212223242526272829303132333435363738394041424344454647[rootmaster01 wordpress]# vim 02-wordpress.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: wordpress-deployspec:replicas: 1selector:matchLabels:app: wordpresstemplate:metadata:labels:app: wordpressspec:containers:- name: wordpressimage: harbor.ihavecar.com/base/wordpress:v6.0#imagePullPolicy: Alwaysports:- containerPort: 80envFrom:- secretRef:name: wordpress-secretvolumeMounts:- name: configmountPath: /etc/nginx/conf.d/- name: imagesmountPath: /usr/share/nginx/html/wp-content/uploads/volumes:- name: configconfigMap:name: nginxconfs- name: imagespersistentVolumeClaim:claimName: wordpress-data---apiVersion: v1kind: Servicemetadata:name: wordpress-svcspec:selector:app: wordpressports:- port: 80targetPort: 80九 、发布wordpress12345678910111213141516171819[rootmaster01 wordpress]# cat 05-wordpress-ingress.yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: wordpress-ingressspec:ingressClassName:nginxrules:- host:wordpress.xxxx.comhttp:paths:- path: /pathType: Prefixbackend:service:name: wordpress-svcport:number: 80访问测试总结

相关推荐

高效阅读鸿蒙版仓库:从源码拉取到跨仓解析的实践指南
高效阅读鸿蒙版仓库:从源码拉取到跨仓解析的实践指南

简介:面向鸿蒙开发者的阅读应用鸿蒙版仓库资源,基于阅读3.0核心逻辑构建,主要提供两种API调用方式:Web方式与Content Provider方式。资源内含可按需调用的url唤起导入机制,支持通过legado://import/{path}?src{url}格… · 2026/9/25 22:41:33

ChatGPT Shortcut Firefox 扩展配置指南:固定扩展与授权运行,让提示词侧边栏在 ChatGPT、Gemini 上正常显示
ChatGPT Shortcut Firefox 扩展配置指南:固定扩展与授权运行,让提示词侧边栏在 ChatGPT、Gemini 上正常显示

AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&… · 2026/9/25 22:41:33

Advanced Installer 22.5 实战:打造可靠的 Windows MSI 安装包
Advanced Installer 22.5 实战:打造可靠的 Windows MSI 安装包

简介:Advanced Installer 22.5 打包 Windows 安装包的完整资源集,主要面向需要制作或维护安装程序的软件开发者、IT 运维与打包工程师,可帮助快速搭建专业、稳定的 Windows 安装部署方案。包内共收录 2000 个文件,压缩后大小约 22… · 2026/9/25 22:41:27

搭建Agent系统实战:从0到1把大模型变成能干活的手
搭建Agent系统实战:从0到1把大模型变成能干活的手

简介:一份面向软件开发者的Agent系统可运行源码包,适合具备Python基础、希望从零搭建或升级Agent应用的读者。资源完整呈现从离线笔记到联机版Agent的升级实践,涵盖Researcher、Editor、Note Taker三个角色的分工协作,以及搜索工具… · 2026/9/25 23:17:17

Sealos Devbox 基础教程:用 Cursor 从零开发一个完整 Python 项目并接入 TaoToken
Sealos Devbox 基础教程:用 Cursor 从零开发一个完整 Python 项目并接入 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 23:16:52

Claude Code 文件系统地图:File reference 背后的工程边界与 TaoToken 配置骨架
Claude Code 文件系统地图:File reference 背后的工程边界与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 23:16:45

Java+SSM+Flask双后端架构:高校运动会管理系统设计与实现
Java+SSM+Flask双后端架构:高校运动会管理系统设计与实现

做高校信息化系统这些年,运动会管理系统算是最容易被低估、又最值得练手的项目之一。表面上看,无非就是报名、排赛程、录成绩,但真正上手之后你会发现,这一整套逻辑牵扯到多角色权限、赛程冲突检测、按院系汇总积分、数据可视化展… · 2026/9/25 23:16:25

Win10默认安装路径修改指南:告别C盘爆满的两种实用方法
Win10默认安装路径修改指南:告别C盘爆满的两种实用方法

C盘又红了。这大概是我这十多年帮人处理电脑问题听到频率最高的一句话,没有之一。很多人一看到C盘爆满,第一反应就是下个"清理大师"哗啦啦删一遍,运气好能腾出几个G,运气不好误删一堆缓存,然后过两个星期&am… · 2026/9/25 23:16:19

9个步骤带你了解PHP如何安全地迁移数据库或字段
9个步骤带你了解PHP如何安全地迁移数据库或字段

问题描述这篇文章要讲的是一个非常具体且棘手的问题:唯一 ID 迁移。现在有一个实体 User,由 User::$id 标识,看起来像这样:123456final class User{public function __construct(public int $id,) {}}访问它的数据的方式是通过一个… · 2026/9/25 23:16:06

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码