Loading... **用 frankenphp+mysql 快速搭建一个高性能的网站-2!** 本文参考 [科技lion大佬](https://kejilion.blogspot.com/2024/01/frankenphp-caddy-web-php-docker-curl.html) 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,html,,mysql} touch /home/web/caddy/Caddyfile ``` 三、下载源码 1、web1网站 一次安装 ``` cd /home/web/html/ && mkdir web1 && cd web1 echo "define('FS_METHOD', 'direct'); define('WSZXWEB_REDIS_HOST', 'redis'); define('WSZXWEB_REDIS_PORT', '6379');" >> /home/web/html/web1/web1-config-sample.php ``` 分两次安装 ``` cd /home/web/html/ && mkdir web1 && cd web1 ``` ``` echo "define('FS_METHOD', 'direct'); define('WSZXWEB_REDIS_HOST', 'redis'); define('WSZXWEB_REDIS_PORT', '6379');" >> /home/web/html/web1/web1-config-sample.php ``` 上传php文件【下面的 WSZXIMG 修改用大写,另一个网站从上一步增加web2并进入,下一步也要修改,6379不修改】 2、web2网站 ``` cd /home/web/html/ && mkdir web2 && cd web2 echo "define('FS_METHOD', 'direct'); define('WSZXWEBB_REDIS_HOST', 'redis'); define('WSZXWEBB_REDIS_PORT', '6379');" >> /home/web/html/web2/web2-config-sample.php ``` 3、web3网站 ``` cd /home/web/html/ && mkdir web3 && cd web3 echo "define('FS_METHOD', 'direct'); define('WSZXWEBBB_REDIS_HOST', 'redis'); define('WSZXWEBBB_REDIS_PORT', '6379');" >> /home/web/html/web3/web3-config-sample.php ``` 4、web4网站 ``` cd /home/web/html/ && mkdir web4 && cd web4 echo "define('FS_METHOD', 'direct'); define('WSZXWEBBBB_REDIS_HOST', 'redis'); define('WSZXWEBBBB_REDIS_PORT', '6379');" >> /home/web/html/web4/web4-config-sample.php ``` 5、web5网站 ``` cd /home/web/html/ && mkdir web5 && cd web5 echo "define('FS_METHOD', 'direct'); define('WSZXWEBBBBB_REDIS_HOST', 'redis'); define('WSZXWEBBBBB_REDIS_PORT', '6379');" >> /home/web/html/web5/web5-config-sample.php ``` 6、web6网站【内存大的可以继续安装web7、web8等】 ``` cd /home/web/html/ && mkdir web6 && cd web6 echo "define('FS_METHOD', 'direct'); define('WSZXWEBBBBBB_REDIS_HOST', 'redis'); define('WSZXWEBBBBBB_REDIS_PORT', '6379');" >> /home/web/html/web6/web6-config-sample.php ``` {dotted startColor="#ff6c6c" endColor="#1989fa"/} 四、配置Caddyfile,以kjlion.com为例,cf上小云朵随便。 ``` nano /home/web/caddy/Caddyfile ``` GPT建议配置。建议:简化 Caddyfile,仅使用必要配置,示例如下: ``` { frankenphp encode zstd gzip } kjlion.com { root * /app/public/web1 php_server } ``` 原来配置: ``` { frankenphp order mercure after encode order vulcain after reverse_proxy order php_server before file_server order php before file_server } 1.kjlion.com { root * public/web1 #备注什么网站 encode zstd gzip php_server } 2.kjlion.com { root * public/web2 #备注什么网站 encode zstd gzip php_server } ``` 五、启动环境 1、下载必需的yml文件 ``` wget -O /home/web/docker-compose.yml https://raw.githubusercontent.com/wszx123/gongjuxiang/refs/heads/main/.github/workflows/docker-compose-frankenphp.yml ``` 2、编辑yml文件【可编辑好后上传】 ``` nano /home/web/docker-compose.yml ``` 3、启动docker-compose ``` cd /home/web && docker-compose up -d ``` 六、安装PHP扩展,最好分两次 1、安装时间有些长,不急。 ``` docker exec -it web install-php-extensions mysqli gd intl zip opcache docker exec -it web install-php-extensions exif imagick redis ``` 2、下面的最大上传100M可修改为50M或200M等,内存256M也可修改为128M或512M等 ``` docker exec web sh -c 'echo "upload_max_filesize=100M \n post_max_size=100M" > /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' ``` 七、创建数据库, **不用数据库的可不安装** 【备注1:enter password:是上一步启动环境中设置的MYSQL_ROOT_PASSWORD: webroot,备注2:上一步的 MYSQL_USER: kejilion 名称与这一步中的TO 'kejilion'@'%'; 的名称要一致】 ``` docker exec -it mysql mysql -u root -p CREATE DATABASE web1; GRANT ALL PRIVILEGES ON web1.* TO 'kejilion'@'%'; ``` 八、重启环境,重新安装另一网站要重启 ``` cd /home/web && docker-compose restart ``` 最后修改:2025 年 06 月 19 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏