用 frankenphp+mysql 快速搭建一个高性能的wordpress网站!转载科技lion

FrankenPHP 是构建在Caddy Web 服务器之上的现代 PHP 应用程序服务器。

docker安装

curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin

创建目录结构

mkdir -p /home/web/{caddy,caddy_data,html,mysql}

touch /home/web/caddy/Caddyfile

下载源码

cd /home/web/html/ && mkdir web1 && cd web1

wget -O latest.zip https://cn.wordpress.org/latest-zh_CN.zip

unzip latest.zip

rm latest.zip
echo "define('FS_METHOD', 'direct'); define('WP_REDIS_HOST', 'redis'); define('WP_REDIS_PORT', '6379');" >> /home/web/html/web1/wordpress/wp-config-sample.php

配置Caddyfile

nano /home/web/caddy/Caddyfile

{
        frankenphp
        order mercure after encode
        order vulcain after reverse_proxy
        order php_server before file_server
        order php before file_server
}

kjlion.com {
        root * public/web1/wordpress
        encode zstd gzip
        php_server
}

启动环境

wget -O /home/web/docker-compose.yml https://github.com/liyehuicn/imgdns/raw/refs/heads/master/docker-compose-frankenphp.yml

nano /home/web/docker-compose.yml

cd /home/web && docker-compose up -d

如docker-compose.yml配置无法拉取,可自建docker-compose.yml

services:
  frankenphp:
    image: dunglas/frankenphp:php8.2-alpine
    container_name: web
    restart: always
    network_mode: host
    volumes:
      - ./caddy/:/etc/caddy/
      - ./html:/app/public
      - ./caddy_data:/data/caddy/

  mariadb:
    image: linuxserver/mariadb:10.11.10
    container_name: mariadb
    restart: always
    network_mode: host
    volumes:
      - ./mysql:/config
    environment:
      MYSQL_ROOT_PASSWORD: 123456789 #记得改密码

  redis:
    image: redis
    container_name: redis
    restart: always
    network_mode: bridge
    volumes:
      - ./redis:/data

安装PHP扩展

docker exec -it web install-php-extensions mysqli gd intl zip opcache

docker exec -it web install-php-extensions exif imagick redis

docker exec web sh -c 'echo "upload_max_filesize=50M \n post_max_size=50M" > /usr/local/etc/php/conf.d/uploads.ini'

docker exec web sh -c 'echo "memory_limit=256M" > /usr/local/etc/php/conf.d/memory.ini'

docker exec web sh -c 'echo "max_execution_time=1200" > /usr/local/etc/php/conf.d/max_execution_time.ini'

docker exec web sh -c 'echo "max_input_time=600" > /usr/local/etc/php/conf.d/max_input_time.ini'

创建数据库

docker exec -it mariadb mysql -u root -p 进入root用户数据库,需要密码,没修改默认 rootpassword

CREATE DATABASE web1; 创建数据库名web1

GRANT ALL PRIVILEGES ON web1.* TO 'webuser'@'%' IDENTIFIED BY 'webpassword'; 授权给创建的普通用户webuser,并将密码设置webpassword
FLUSH PRIVILEGES;刷新权限表,使上述权限更改立即生效。
EXIT;保存退出数据库

=================================================================
重启环境

cd /home/web && docker-compose restart

添加新评论