Post Views: 85
WordPress 是全球最热门的网站构建器。43% 的网页在 WordPress 上构建。WordPress有两个主要版本:wordpress.com和wordpress.org。它们之间存在一些关键区别:
托管方式:
- wordpress.com: 这是一个托管平台,你可以在wordpress.com上创建和托管你的网站,无需自己购买主机或进行技术设置。这个平台提供了各种预配置的主题和插件供你选择,但功能可能受到一些限制。
- wordpress.org: 这是开源项目的官方网站,你可以从这里下载WordPress软件。使用wordpress.org需要你自己购买主机空间,并安装和配置WordPress。这使你有更多的控制权和灵活性,可以自由选择主题、插件,甚至对源代码进行修改。
控制和自定义:
- wordpress.com: 这个平台更加限制了你对网站的控制和自定义。虽然有一些主题和插件可供选择,但你不能随意安装自己喜欢的第三方主题和插件,也无法编辑网站的源代码。
- wordpress.org: 你可以完全控制你的网站。你可以选择任何第三方主题和插件,还可以编辑网站的源代码,以满足特定需求。
成本:
- wordpress.com: 提供免费和付费计划。免费计划通常会在你的网站域名中包含”xxx.wordpress.com”子域名,并且有一些功能限制。付费计划则提供更多功能和定制选项。
- wordpress.org: 下载和使用WordPress本身是免费的,但你需要支付主机和域名的费用,这取决于你选择的主机提供商和域名注册服务。
技术知识和管理:
- wordpress.com: 适合那些不想过多涉足技术细节的用户。平台会负责维护和更新,你只需要关注内容创作。
- wordpress.org: 需要一些技术知识来设置、管理和维护你的网站。你需要处理主机设置、备份、安全性等方面的问题。
本文主要关注wordpress.org提供的WordPress基于Docker容器的搭建问题。首先你需要自备Linux伺服器并已安装好nginx、docker、Mysql/MarliaDB并准备好域名与tls证书。
使用Docker Hub提供的 WordPress 镜像: Image / Source
# 准备目录,路径自行调整
mkdir -p /opt/wordpress
# 拉取轻量化版本6.3.0-fpm-alpine
docker pull wordpress:6.3.0-fpm-alpine
创建Dockerfile
vi /opt/wordpress/Dockerfile
# 填写以下内容
FROM wordpress:6.3.0-fpm-alpine
# 安装phpredis支持
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
libzip-dev \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& apk del .build-deps
# 自行修改php-fpm端口号
ENV WWW_PORT 10080
RUN echo "change php-fpm port to $WWW_PORT" \
&& sed -i "s|^listen =.*$|listen = ${WWW_PORT}|g" /usr/local/etc/php-fpm.d/zz-docker.conf;
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["php-fpm"]
创建docker-compose.yml
vi /opt/wordpress/docker-compose.yml
# 填写以下内容
version: "3.2"
services:
wordpress:
build: ./
image: my-wordpress
container_name: wordpress
# 运行失败时总是重启
restart: always
# 直通宿主机的网络
network_mode: host
# 限制docker日志文件大小
logging:
driver: json-file
options:
max-size: '1m'
max-file: '3'
volumes:
- /etc/localtime:/etc/localtime:ro
- html:/var/www/html/
extra_hosts:
# 你的数据库自定义域名
- "db-host:172.17.0.1"
- "redis-host:172.17.0.1"
# 配置卷为nginx代理准备
volumes:
html:
# 创建数据库用户
CREATE USER '数据库用户名'@'%' IDENTIFIED BY '数据库密码';
# 创建wordpress数据库
CREATE database wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 为用户赋予wordpress数据库完整权限
GRANT ALL PRIVILEGES ON wordpress.* TO '数据库用户名'@'%';
# 使配置生效
FLUSH PRIVILEGES;
# 查看用户权限
SHOW GRANTS FOR '数据库用户名'@'%';
vi 你的nginx配置目录/wordpress.conf
# 填写以下内容
server {
listen 80;
listen 443 ssl http2;
# 你的域名
server_name xxx.xxx.com;
# 你的日志路径
access_log logs/wordpress.log main;
# 你的证书路径
ssl_certificate /wordpress.crt;
ssl_certificate_key /wordpress.key;
# 隐藏服务器信息
fastcgi_hide_header X-Powered-By;
# docker配置中的卷
root /var/lib/docker/volumes/wordpress_html/_data/
index index.php;
location ~ \.php(?:$|/) {
include fastcgi_params;
fastcgi_param HTTP_AUTHORIZATION $http_authorization;
# docker配置中自行修改php-fpm端口号
fastcgi_pass 127.0.0.1:10080;
# 此处路径前缀使用/var/www/html/而不是$document_root
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
fastcgi_intercept_errors on;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 6M;
access_log off;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
}
}
# 测试nginx配置并重新加载
nginx -t && nginx -s reload
# 进入wordpress配置目录
cd /opt/wordpress
# 启动容器,后台运行
docker compose up -d
# 查看容器运行状态
docker ps -a
# 查看容器日志
docker logs -f wordpress
wordpress基础配置
- 访问你的wordpress域名,此时已经可以访问。
- 在引导页面选择语言。
- 配置数据库连接,数据库地址填写docker配置中自定的db-host
- 创建管理员账户
- 登录wordpress,进入管理界面(https://你的wordpress域名/wp-admin)
- 使用博客主题:外观 > 主题 > 安装主题 > 搜索主题 > 点击安装 > 点击启用 (撰写文章时本站使用的主题为: Twenty Fifteen)
配置Redis
vi /var/lib/docker/volumes/wordpress_html/_data/wp-config.php
# 找到以下注释
/* Add any custom values between this line and the "stop editing" line. */
# 在该注释下插入以下内容
/* redis */
define( 'WP_REDIS_CLIENT', 'phpredis');
// docker配置中定义的redis-host
define( 'WP_REDIS_HOST', 'redis-host' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PASSWORD', '你的redis密码' );
define( 'WP_REDIS_PREFIX', 'wp-' );
# 接着重启wordpress
docker restart wordpress
- 插件 > 安装插件 > 搜索redis > 安装Redis Object Cache > 点击启用
- 设置 > Redis > Enable Object Cache
很好Wordpress基于Docker & Nginx的搭建已经完成了