首页
文章导航
导航
壁纸
留言板
更多
直播
友链
统计
关于
Search
1
【白嫖攻略】在cloudflare搭建域名邮箱并转发
5 阅读
2
BitsFlowCloud PHX 高延迟解决
5 阅读
3
Microsoft Office下载地址合集——微软官方原版离线安装下载
5 阅读
4
Claw Cloud 免费容器平台部署哪吒面板教程
5 阅读
5
Sub-Hub 基于 Cloudflare Worker+D1数据库的简洁订阅管理器,摒弃第三方订阅转换!
5 阅读
默认
日常
学习
技术
登录
Search
标签搜索
cloudflare
白嫖
docker
脚本
安装
CF
壁纸
图片
Linux
Caddy
节点
代码
哪吒
域名
NAT
HTML
github
LXC
手机壁纸
网页
ws01
累计撰写
121
篇文章
累计收到
45
条评论
首页
栏目
默认
日常
学习
技术
页面
文章导航
导航
壁纸
留言板
直播
友链
统计
关于
搜索到
1
篇与
的结果
2025-08-22
★★★在Debian 11、12系统,用docker搭建Caddy + PHP动、静态网站
在Debian 11、12系统,用docker搭建Caddy + PHP动、静态网站文件夹 home/html/web/web1 一、常规安装,一个网站,不用数据库【推荐用第二或第三个方式 多站点 方式安装,便于以后在vps上搭建更多网站】,方法可行。 目录结构 (建议)/home/html/web/web1/├── docker-compose.yml├── Caddyfile└── public/ # 网站文件 (index.php, index.html等)1、更新系统sudo apt update && sudo apt upgrade -y2、安装 Docker 和 Docker Composesudo apt install -y docker.io docker-compose3、创建网站目录a、灵活安装sudo mkdir -p /home/html/web/web1 cd /home/html/web/web1或 b、简单安装【推荐】创建目录结构# 创建目录结构 sudo mkdir -p /home/html/web/web1/public创建 Caddyfile,解析好域名的,:80可替换域名example.com# 创建 Caddyfile cat << 'EOF' | sudo tee /home/html/web/web1/Caddyfile :80 { root * /srv php_fastcgi php:9000 file_server } EOF创建测试 PHP 文件# 创建测试 PHP 文件 cat << 'EOF' | sudo tee /home/html/web/web1/public/index.php <?php phpinfo(); EOF4、编写 docker-compose.ymlversion: "3.8" services: caddy: image: caddy:latest container_name: caddy_web1 restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./public:/srv - caddy_data:/data - caddy_config:/config depends_on: - php php: image: php:8.2-fpm container_name: php_web1 restart: unless-stopped volumes: - ./public:/srv volumes: caddy_data: caddy_config:5、编写 Caddyfile,如果第三步中已安装好域名的,此步省略example.com { root * /srv php_fastcgi php:9000 file_server }6、放置测试文件,如果第三步中已放置测试文件,此步省略echo "<?php phpinfo(); ?>" > /home/html/web/web1/public/index.php7、启动服务cd /home/html/web/web1 sudo docker-compose up -d查看容器状态:sudo docker ps8、访问测试打开浏览器访问 http://服务器IP/如果绑定了域名(并改了 Caddyfile),访问 https://你的域名/二、多站点 Caddyfile 模板【不用数据库】,以三个web1、web2、web3为例,更多个网站类推,方法可行目录结构建议 /home/html/web/├── web1/│ ├── public/ # 网站1的文件│ ├── Caddyfile.web1 # 网站1配置├── web2/│ ├── public/ # 网站2的文件│ ├── Caddyfile.web2 # 网站2配置├── web3/│ ├── public/ # 网站3的文件│ ├── Caddyfile.web3 # 网站3配置└── docker-compose.yml # 统一的 compose└── Caddyfile # 主配置,引用各站点1、更新系统sudo apt update && sudo apt upgrade -y2、安装 Docker 和 Docker Composesudo apt install -y docker.io docker-compose3、创建三个目录结构并给予权限【 更多网站类似添加 】网站1sudo mkdir -p /home/html/web/web1/public sudo chmod -R 755 /home/html/web/web1/public 网站2sudo mkdir -p /home/html/web/web2/public sudo chmod -R 755 /home/html/web/web2/public网站3sudo mkdir -p /home/html/web/web3/public sudo chmod -R 755 /home/html/web/web3/public4、在文件夹 /home/html/web/ 创建统一的 docker-compose.yml【 更多网站类似添加 】version: "3.8" services: caddy: image: caddy:latest container_name: caddy_main restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 - caddy_data:/data - caddy_config:/config depends_on: - php php: image: php:8.2-fpm container_name: php_main restart: unless-stopped volumes: - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 volumes: caddy_data: caddy_config:5、总控 Caddyfile【 更多网站类似添加 】# Web1 - 用域名 web1.example.com { root * /srv/web1 php_fastcgi php:9000 file_server } # Web2 - 用域名 web2.example.com { root * /srv/web2 php_fastcgi php:9000 file_server } # Web3 - 用 IP + 端口(测试用) :8080 { root * /srv/web3 php_fastcgi php:9000 file_server }6、启动cd /home/html/web sudo docker-compose up -d7、快速测试文件【 更多网站类似添加,个别vps可能添加不上,用上传方式 】echo "<?php echo 'Hello Web1!'; ?>" | sudo tee /home/html/web/web1/public/index.phpecho "<?php echo 'Hello Web2!'; ?>" | sudo tee /home/html/web/web2/public/index.phpecho "<?php echo 'Hello Web3!'; ?>" | sudo tee /home/html/web/web3/public/index.php三、如果 需要数据库 ,在方式二的基础上修改, docker-compose.yml 添加 db 项,web主目录下新建 php 文件夹,php 文件夹添加 Dockerfile 文件, 注意修改数据库相关密码 目录结构/home/html/web/├── web1/│ └── public/ # 放 Typecho├── web2/│ └── public/├── web3/│ └── public/├── docker-compose.yml├── php/│ └── Dockerfile└── Caddyfile1、统一的 docker-compose.yml 【 注意修改数据库相关密码 】version: "3.8" services: caddy: image: caddy:latest container_name: caddy_main restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 - caddy_data:/data - caddy_config:/config depends_on: - php php: build: ./php image: php:8.2-fpm container_name: php_main restart: unless-stopped volumes: - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 depends_on: - db db: image: mariadb:10.7 container_name: mariadb_web1 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpass123 MYSQL_DATABASE: typecho MYSQL_USER: typecho MYSQL_PASSWORD: typechopass volumes: - db_data:/var/lib/mysql volumes: caddy_data: caddy_config: db_data:2、php/DockerfileFROM php:8.2-fpm # 安装 MySQL 扩展 RUN docker-php-ext-install pdo_mysql mysqli # 可选:安装 gd、zip 等(上传图片/压缩包可能用到) RUN apt-get update && apt-get install -y libjpeg-dev libpng-dev libzip-dev \ && docker-php-ext-install gd zip WORKDIR /srv 访问 http://web1.example.com,进入安装向导。数据库地址: db 数据库名: typecho 用户: typecho 密码: typechopass 2、安装 Typecho 命令,也可以下载修改好后上传cd /home/html/web/web1/public wget https://github.com/typecho/typecho/archive/refs/tags/v1.2.1.zip -O typecho-1.2.1.zip unzip typecho-1.2.1.zip mv typecho-1.2.1/* ./ rm -rf typecho-1.2.1 typecho-1.2.1.zip 3、启动cd /home/html/web sudo docker-compose up -d四、如果搭建网站中需要两个数据库【三个数据库或更多数据库类推】,例如,安装两个Typecho1、一个数据库服务,多个数据库docker-compose.yml(推荐方案)version: "3.8" services: caddy: image: caddy:latest container_name: caddy_main restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 - caddy_data:/data - caddy_config:/config depends_on: - php php: image: php:8.2-fpm container_name: php_main restart: unless-stopped volumes: - ./web1/public:/srv/web1 - ./web2/public:/srv/web2 - ./web3/public:/srv/web3 depends_on: - db db: image: mariadb:10.6 container_name: mariadb_main restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpass123 volumes: - db_data:/var/lib/mysql volumes: caddy_data: caddy_config: db_data:2、初始化两个数据库启动容器后进入 MariaDB:docker exec -it mariadb_main mysql -uroot -p输入 rootpass123 后,创建两个数据库和用户:CREATE DATABASE typecho1; CREATE DATABASE typecho2; CREATE USER 'typecho1'@'%' IDENTIFIED BY 'pass1'; CREATE USER 'typecho2'@'%' IDENTIFIED BY 'pass2'; GRANT ALL PRIVILEGES ON typecho1.* TO 'typecho1'@'%'; GRANT ALL PRIVILEGES ON typecho2.* TO 'typecho2'@'%'; FLUSH PRIVILEGES;然后【实际安装时用 Pdo驱动SQLite适配器安装, SQLite原生函数适配器安装】:web1 Typecho 安装时填:数据库名 typecho1,用户 typecho1,密码 pass1web2 Typecho 安装时填:数据库名 typecho2,用户 typecho2,密码 pass2五、最小化的 Typecho Dockerfile + docker-compose.yml 示例,放到 /home/html/web/web1/ 下就能直接跑【可以,本方法安装步骤 专门链接 】目录结构(推荐)/home/html/web/web1/├── docker-compose.yml├── Caddyfile├── php/│ └── Dockerfile└── data/ (安装后数据库文件会自动生成)1、docker-compose.ymlversion: '3.9' services: caddy: image: caddy:2-alpine container_name: caddy_web1 ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./site:/srv - caddy_data:/data - caddy_config:/config depends_on: - php php: build: ./php container_name: php_web1 volumes: - ./site:/srv depends_on: - db db: image: mariadb:10.7 container_name: mariadb_web1 restart: always environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: typecho1 MYSQL_USER: typecho MYSQL_PASSWORD: typechopass volumes: - ./data:/var/lib/mysql volumes: caddy_data: caddy_config:2、Caddyfile文件:80 { root * /srv php_fastcgi php:9000 file_server }或# Web1 - 用域名 web1.example.com { root * /srv/web1 php_fastcgi php:9000 file_server }3、php/DockerfileFROM php:8.1-fpm RUN docker-php-ext-install pdo pdo_mysql mysqli WORKDIR /srv4、下载 Typecho,不是在web1文件夹,是在site文件夹cd /home/html/web/web1 mkdir site cd site wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip unzip typecho.zip rm typecho.zip5、启动cd /home/html/web/web1 docker-compose up -d然后访问服务器 http://你的IP/或域名 就能进入 Typecho 安装页面【安装时uplads文件夹没权限,单独设置一下,config.inc.php文件也可能没创建权限,手动创建一个就行】。数据库信息填写:数据库地址:db数据库名:typecho1用户名:typecho密码:typechopass⚡ 如果你要再装第二个 Typecho(web2),只需要复制一份 /home/html/web/web1/ 为 /home/html/web/web2/,然后在 docker-compose.yml 里修改:容器名(caddy_web2、php_web2、mariadb_web2)数据库名(typecho2)端口映射(比如 8080:80)六、多个网站web1、web2 → 各自安装一个 Typecho(需要数据库)web3、web4 → 普通动态 PHP 网站(不需要数据库)全部共用同一个 Caddy 容器,不同的域名 / 目录对应不同的网站网站目录结构(在 /home/html/web/ 下)web1/ ← Typecho 站点 1web2/ ← Typecho 站点 2web3/ ← 动态 PHP 站点web4/ ← 动态 PHP 站点1、在 /home/html/ 下创建目录:mkdir -p /home/html/{web1,web2,web3,web4,db1_data,db2_data,caddy_data,caddy_config} 2、把 docker-compose.yml 和 Caddyfile 放在 /home/html/3、下载 Typecho 程序包到 web1/ 和 web2/ 目录,解压4、完整的 docker-compose.yml 示例services: caddy: image: caddy:2 container_name: caddy restart: always ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./caddy_data:/data - ./caddy_config:/config - ./web1:/srv/web1 - ./web2:/srv/web2 - ./web3:/srv/web3 - ./web4:/srv/web4 depends_on: - php php: image: php:8.2-fpm container_name: php-fpm restart: always volumes: - ./web1:/srv/web1 - ./web2:/srv/web2 - ./web3:/srv/web3 - ./web4:/srv/web4 working_dir: /srv command: php-fpm # Typecho 数据库 1 db1: image: mariadb:10.6 container_name: db1 restart: always environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: typecho1 MYSQL_USER: user1 MYSQL_PASSWORD: pass1 volumes: - ./db1_data:/var/lib/mysql # Typecho 数据库 2 db2: image: mariadb:10.6 container_name: db2 restart: always environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: typecho2 MYSQL_USER: user2 MYSQL_PASSWORD: pass2 volumes: - ./db2_data:/var/lib/mysql 5、Caddyfile放在 /home/html/Caddyfile,不同网站对应不同文件夹:# web1 - Typecho 1 web1.example.com { root * /srv/web1 php_fastcgi php:9000 file_server } # web2 - Typecho 2 web2.example.com { root * /srv/web2 php_fastcgi php:9000 file_server } # web3 - 普通 PHP 动态站 web3.example.com { root * /srv/web3 php_fastcgi php:9000 file_server } # web4 - 普通 PHP 动态站 web4.example.com { root * /srv/web4 php_fastcgi php:9000 file_server } 6、启动服务:cd /home/html docker-compose up -d7、浏览器访问:http://web1.example.com → 使用数据库 db1,连接参数:数据库主机: db1用户名: user1密码: pass1数据库: typecho1http://web2.example.com → 使用数据库 db2,连接参数:数据库主机: db2用户名: user2密码: pass2数据库: typecho2
2025年08月22日
0 阅读
0 评论
0 点赞