在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器
引言
大家好,今天我们要聊的主题是如何在 Ubuntu 上通过 Docker 部署 Caddy 和 PHP-FPM 服务器。Caddy 是一个现代化的 web 服务器,支持 HTTPS,配置简单;而 PHP-FPM 是 PHP 的 FastCGI 进程管理器,能够高效处理 PHP 请求。二者结合,简直是开发者的福音。
Docker、Caddy 和 PHP-FPM 简介
Docker 是一个开源的容器化平台,允许开发者轻松打包、分发和运行应用。通过 Docker,应用及其依赖关系被封装在一个独立的容器中,确保在任何环境下都能顺利运行。
Caddy 是一个强大的 web 服务器,自动为网站提供 HTTPS 支持,配置文件简单易懂,适合快速部署。PHP-FPM 则是优化 PHP 性能的重要工具,通过管理多个 PHP 进程,提高响应速度和并发处理能力。将这两者结合,能够快速搭建出高效、可靠的 web 应用环境。
实验环境配置
这次实验我使用的是阿贝云的免费服务器,配置为 1 核 CPU、1GB 内存和 5M 带宽。这个配置对于小型项目的测试是足够的。
部署步骤
下面是详细的部署步骤和命令:
1. 安装 Docker 和 Docker Compose
确保你的系统是最新的:
sudo apt update && sudo apt upgrade -y
安装 Docker:
sudo apt install -y docker.io
安装 Docker Compose:
sudo apt install -y docker-compose
2. 创建项目目录
mkdir -p ~/caddy-php
cd ~/caddy-php
3. 创建 docker-compose.yml 文件
在项目目录下创建 docker-compose.yml 文件,内容如下:
version: '3.7'
services:caddy:image: caddy:latestports:- "80:80"- "443:443"volumes:- ./Caddyfile:/etc/caddy/Caddyfile- ./site:/srvnetworks:- webnetphp:image: php:8.0-fpmvolumes:- ./site:/var/www/htmlnetworks:- webnetnetworks:webnet:
4. 创建 Caddyfile
在项目目录下创建 Caddyfile,配置 Caddy 服务器:
your-domain.com {root * /srvphp_fastcgi php:9000file_serverlog {output stdoutformat json}
}
将 your-domain.com 替换为你的域名。
5. 创建网站目录
创建一个网站目录并添加 index.php 文件:
mkdir site
echo "<?php phpinfo(); ?>" > site/index.php
6. 启动 Docker 容器
在项目目录下运行以下命令启动服务:
sudo docker-compose up -d
7. 测试访问
打开浏览器,访问 http://your-domain.com,你应该能看到 PHP 信息页面。
结尾
就这样,一个简单的 Caddy 和 PHP-FPM 服务器就部署好了。通过 Docker,整个过程变得无比顺畅。记得根据你的需求调整配置,享受开发的乐趣!如果有任何问题,欢迎留言讨论。
相关文章:
在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器
引言 大家好,今天我们要聊的主题是如何在 Ubuntu 上通过 Docker 部署 Caddy 和 PHP-FPM 服务器。Caddy 是一个现代化的 web 服务器,支持 HTTPS,配置简单;而 PHP-FPM 是 PHP 的 FastCGI 进程管理器,能够高效处理 PHP 请…...
工程化与框架系列(10)--微前端架构
微前端架构 🏗️ 微前端是一种将前端应用分解成更小、更易管理的独立部分的架构模式。本文将详细介绍微前端的核心概念、实现方案和最佳实践。 微前端概述 🌟 💡 小知识:微前端的核心理念是将前端应用分解成一系列独立部署、松耦…...
Nacos + Dubbo3 实现微服务的Rpc调用
文章目录 概念整理基本概念概念助记前提RPC与HTTP类比RPC接口类的一些理解 实例代码主体结构父项目公共接口项目提供者项目项目结构POM文件实现配置文件实现公共接口实现程序入口配置启动项目检查是否可以注入到Nacos 消费者项目项目结构POM文件实现配置文件实现注册RPC服务类实…...
算法-数据结构(图)-弗洛伊德算法复现(Floyd)
弗洛伊德算法(Floyd-Warshall算法)是一种用于求解所有节点对最短路径的动态规划算法,适用于有向图或无向图,且能处理带有负权边的图(但不能有负权环)。该算法的时间复杂度为 O(V3)O(V3),其中 VV…...
51c自动驾驶~合集22
我自己的原文哦~ https://blog.51cto.com/whaosoft/11870502 #自动驾驶数据闭环最前沿论文 近几年,自动驾驶技术的发展日新月异。从ECCV 2020的NeRF问世再到SIGGRAPH 2023的3DGS,三维重建走上了快速发展的道路!再到自动驾驶端到端技术的…...
使用Docker方式一键部署MySQL和Redis数据库详解
一、前言 数据库是现代应用开发中不可或缺的一部分,MySQL和Redis作为两种广泛使用的数据库系统,分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式,提供一个简洁明了的一键部署方案,确保数据库服务的稳…...
Vue3 + Vite + TS,使用 Pinia
安装pinia pnpm add piniaPinia 官网 传送门 main.js引入 import { createApp } from vue import App from ./App.vue import { createPinia } pinia const app createApp(App); app.use(createPinia()) app.mount("#app")创建一个pinia,scr/stores/index impor…...
算法之刷题汇总
剑指 Offer 剑指 Offer 题解 | CS-Notes 面试笔记 Leetcode Leetcode 题解 | CS-Notes 面试笔记 GitCode - 全球开发者的开源社区,开源代码托管平台...
支持向量机(Support Vector Machine,SVM)详细解释(带示例)
目录 基本概念 线性可分情况 线性不可分情况 工作原理 示例 Python 案例 代码解释 基本概念 支持向量机是一种有监督的机器学习算法,可用于分类和回归任务。在分类问题中,SVM 的目标是找到一个最优的超平面,将不同类别的样本分隔开来…...
基于javaweb的SpringBoot在线动漫信息平台系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
Http、tcp、https、socket、tomcat、长短连接等总结回顾
(1)关于http、tcp的长短连接问题 tcp是没有所谓长连接的概念的。tcp经过三次握手就已经建立了一个连接,这个所谓建立了一个连接就是两边操作系统层面都已经建立了socket,都准备好了相应的缓冲区等。socket是啥呢?sock…...
010 rocketmq批量消息
文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能,但有⼀定的限制: topic 相同 waitStoreMsgOK 相同 (⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...
【Qt】MVC设计模式
目录 一、搭建MVC框架 二、创建数据库连接单例类SingleDB 三、数据库业务操作类model设计 四、control层,关于model管理类设计 五、view层即为窗口UI类 一、搭建MVC框架 里面的bin、lib、database文件夹以及sqlite3.h与工程后缀为.pro文件的配置与上次发的文章…...
doris:Hudi Catalog
使用限制 Hudi 表支持的查询类型如下: 表类型支持的查询类型Copy On WriteSnapshot Query, Time Travel, Icremental ReadMerge On ReadSnapshot Queries, Read Optimized Queries, Time Travel, Icremental Read 目前支持 Hive Metastore 和兼容 Hive Metasto…...
ARM 处理器平台 eMMC Flash 存储磨损测试示例
By Toradex秦海 1). 简介 目前工业嵌入式 ARM 平台最常用的存储器件就是 eMMC Nand Flash 存储,而由于工业设备一般生命周期都比较长,eMMC 存储器件的磨损寿命对于整个设备来说至关重要,因此本文就基于 NXP i.MX8M Mini ARM 处理器平台演示…...
本地部署DeepSeek-R1(Dify发件邮箱、找回密码、空间名称修改)
Dify配置发件邮箱 DIfy默认邮箱配置为空,在邀请团队成员注册时是不会发送邀请链接的,只能通过手动复制生成的注册链接发送给对应的人去注册设置密码。 这样很麻烦,并且在找回密码时也接收不了邮件,无法重置密码。 找到本地部署…...
EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案
随着互联网技术的飞速发展,实时音视频通信已成为各行各业数字化转型的核心需求之一。无论是远程办公、在线教育、智慧医疗,还是智能安防、直播互动,用户对低延迟、高可靠、跨平台的音视频通信需求日益增长。 一、WebRTC与WebP2P:实…...
数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复…...
HTMLS基本结构及标签
HTML5是目前制作网页的核心技术,有叫超文本标记语言。 基本结构 声明部分位于文档的最前面,用于向浏览器说明当前文档使用HTML标准规范。 根部标签位于声明部分后,用于告知浏览器这是一个HTML文档。< html>表示文档开始,&l…...
IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题
文章目录 引言一、安装Proxy AI1.1 在线安装Proxy AI1.2 离线安装Proxy AI 二、Proxy AI中配置DeepSeek2.1 配置本地部署的DeepSeek(Ollama方式)2.2 通过第三方服务商提供的API进行配置 三、效果测试 引言 许多开发者尝试通过安装Proxy AI等插件将AI能力…...
phpstudy安装教程dvwa靶场搭建教程
GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本,点击立即下载 下载完成,进行解压,注意不要有中文路径 点击.exe文件进行安装…...
【linux】详谈 环境变量
目录 一、基本概念 二、常见的环境变量 取消环境变量 三、获取环境变量 通过代码获取环境变量 环境变量的特性 1. getenv函数:获取指定的环境变量 2. environ获取环境变量 四、本地变量 五、定义环境变量的方法 临时定义(仅对当前会话有效) 永…...
【Linux高级IO】多路转接(poll epoll)
目录 1. poll 2. epoll 2.1 epoll_ctl 2.2 epoll_wait 2.3 epoll原理 2.4 epoll的工作模式 2.5 epoll的惊群效应 使用建议 总结 1. poll poll也是实现 I/O 多路复用的系统调用,可以解决select等待fd上限的问题,将输入输出参数分离,不需要…...
JAVA面试常见题_基础部分_mybatis面试题
1、什么是 MyBatis? 答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。 2、讲下 MyBatis 的缓存答 :MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打…...
PostgreSQL中的外键与主键
在 PostgreSQL 中,外键(Foreign Key) 是一种用于建立表间关联的数据库约束机制,其核心作用与主键(Primary Key)有显著区别。以下是详细解析: 一、外键的定义与作用 定义 外键是表中的一个或多个…...
【GenBI优化】提升text2sql准确率:建议使用推理大模型,增加重试
引言 Text-to-SQL(文本转 SQL)是自然语言处理(NLP)领域的一项重要任务,旨在将自然语言问题自动转换为可在数据库上执行的 SQL 查询语句。这项技术在智能助手、数据分析工具、商业智能(BI)平台等领域具有广泛的应用前景,能够极大地降低数据查询和分析的门槛,让非技术用…...
供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)
供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面 会员 UI 设计图(一)...
【Linux系统编程】基础IO--磁盘文件
目录 前言 磁盘的机械构成 盘片介绍 盘片与磁头 数据的存储(硬件) 磁盘的物理存储 逻辑结构:磁道/柱面、扇面、扇区 磁盘I/O的基本单位与扇区的存储密度 CHS定位法:数据的查找 磁盘的逻辑存储 扇区的抽象结构(数据…...
Python利用pyobdc和tkinter框架连接数据库2-保存配置文件
为了实现保存用户输入的数据库连接信息,并在下次打开程序时自动加载这些信息,可以使用配置文件(如 .txt 或 .json 文件)来存储这些信息。以下是一个完整的实现方案,结合了动态输入和自动加载配置文件的功能。 实现步骤…...
C# .NET Core HttpClient 和 HttpWebRequest 使用
HttpWebRequest 这是.NET创建者最初开发用于使用HTTP请求的标准类。HttpWebRequest是老版本.net下常用的,较为底层且复杂,访问速度及并发也不甚理想,但是使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 timeouts,…...
