如何在 Ubuntu 22.04 上安装 Caddy Web 服务器教程

简介

Caddy 是一个开源的 Web 服务器,它支持静态和现代 Web 应用程序,使用预定义的配置规则,并为所有链接的域名自动启用 HTTPS。Caddy 使用 GO 语言编写,提供了用户友好的配置指令,使你既可以将其用作 Web 服务器,也可以用作反向代理或负载均衡器,以便在服务器上为 Web 应用程序提供服务。

本文将介绍如何在 Ubuntu 22.04 上安装 Caddy Web 服务器,并在服务器上安全地为 Web 应用程序提供服务。

安装 Caddy

Caddy 在默认的 Ubuntu 22.04 APT 仓库中不可用,但可以通过源代码文件安装,或者在你的服务器上添加最新的仓库信息进行安装。请按照以下步骤下载最新的 Caddy 仓库信息,并在你的服务器上安装该应用程序。

  1. 将最新的 Caddy GPG 密钥添加到你的服务器。
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg--dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  1. 将 Caddy 仓库添加到你的 APT 源。
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudotee /etc/apt/sources.list.d/caddy-stable.list
  1. 更新服务器软件包索引。
sudo apt update
  1. 安装 Caddy。
sudo apt install caddy
  1. 查看已安装的 Caddy 版本,以验证安装是否成功。
caddy -v

输出:

v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
  1. 允许通过防火墙传入 HTTP 端口 80 的连接。
sudo ufw allow 80
  1. 重启防火墙以应用更改。
sudo ufw reload
  1. 访问你的服务器 IP 以测试对 Caddy Web 服务器的访问。
http://SERVER-IP

确认默认的 Caddy 网页在你的浏览器中显示。

管理 Caddy 系统服务

  1. 启用 Caddy 在启动时自动启动。
sudo systemctl enable caddy
  1. 启动 Caddy Web 服务器。
sudo systemctl start caddy
  1. 查看 Caddy 系统服务状态,以验证应用程序正在运行。
sudo systemctl status caddy

输出:

● caddy.service - CaddyLoaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; preset: enabled)Active: active (running) since Mon 2024-06-10 14:46:16 UTC; 8min agoDocs: https://caddyserver.com/docs/Main PID: 30024 (caddy)Tasks: 7 (limit: 1061)Memory: 11.7M (peak: 13.9M)CPU: 138msCGroup: /system.slice/caddy.service└─30024 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

创建 Caddy 虚拟主机

Caddy 默认将配置文件存储在 /etc/caddy 目录中,并支持从服务器上的任何位置加载 Caddyfile 配置。请按照以下步骤创建一个新的 Caddy 虚拟主机,以便从服务器上的 /var/www/example.com 目录提供 Web 应用程序文件。

  1. 创建 /var/www/example.com Web 应用程序文件目录。
sudo mkdir -p /var/www/example.com
  1. 创建一个新的 HTML 应用程序文件 index.html
sudo nano /var/www/example.com/index.html
  1. 将以下代码添加到文件中。
<html>
<head><title>Greetings from Vultr!</title>
</head>
<body><br><br><br><h1 align="center">Hello World!, Greetings from Vultr</h1>
</body>
</html>

保存并关闭该文件。

  1. 切换到 Caddy 配置文件目录。
cd /etc/caddy/
  1. 备份默认的 Caddyfile 配置。
sudo mv Caddyfile Caddyfile.default
  1. 创建一个新的 Caddyfile 配置。
sudo nano Caddyfile
  1. 将以下配置添加到文件中。
example.com {tls admin@example.comroot * /var/www/example.comfile_server {index index.html}log {output file /var/log/caddy/example.logformat console}
}

保存并退出该文件。

上面的 Caddy 配置使用你的域名 example.com 创建一个新的虚拟主机。在配置中:

  • example.com:使用你的 IP 地址或域名创建一个新的虚拟主机配置文件。
  • tls:指定与 Let’s Encrypt SSL 证书生成请求关联的电子邮件地址。
  • root:设置虚拟主机 Web 应用程序文件目录。
  • file_server:启用 Web 应用程序文件服务器。在该指令中,index 指定在访问你的域名时要提供的默认文件。
  • log:启用将访问和错误详细信息记录到特定文件,例如 /var/log/caddy/example.log
  1. 测试 Caddy 配置是否存在错误。
caddy validate

输出:

...........
2024/06/1 15:19:11.478 INFO    tls.cache.maintenance   started background certificate maintenance      {"cache": "0xc0000e5300"}
2024/06/1 15:19:11.478 INFO    tls.cache.maintenance   stopped background certificate maintenance      {"cache": "0xc0000e5300"}
Valid configuration
  1. 重新加载 Caddy Web 服务器以应用你的配置更改。
sudo caddy reload

保护 Caddy Web 服务器

Caddy 使用自动 HTTPS 来保护所有连接,方法是在服务器上具有有效域名的虚拟主机配置文件上使用 SSL 证书。请按照以下步骤保护 Caddy Web 服务器,方法是限制对 Caddyfile 配置的访问,以防止意外或未经授权的用户更改。

  1. 授予 Caddy 用户对 /etc/caddy 目录的完全权限。
sudo chown -R caddy:caddy /etc/caddy
  1. 授予 Caddy 用户对 Caddyfile 的读写权限,同时禁用其他系统用户的访问权限。
sudo chmod 660 /etc/caddy/Caddyfile
  1. 长列出 /etc/caddy 目录以验证权限更改。
ls -l /etc/caddy/

输出:

total 8
-rw-rw---- 1 caddy caddy 168 Jun 2 15:20 Caddyfile
-rw-r--r-- 1 caddy caddy 769 Jun  2 12:07 Caddyfle.default

设置防火墙规则

Caddy 根据你的 Caddyfile 配置,使用 HTTP 端口 80 和 HTTPS 端口 443 在服务器上提供文件。请按照以下步骤允许所有 Caddy 端口通过防火墙,并启用与 Web 服务器的网络连接。

  1. 查看 UFW 状态并验证它是否处于活动状态。
sudo ufw status

如果状态为 inactive,则允许 SSH 端口 22 并启用 UFW。

sudo ufw allow 22 && sudo ufw enable
  1. 允许传入 HTTP 端口 80 的连接。
sudo ufw allow 80
  1. 允许传入 HTTPS 端口 443 的连接。
sudo ufw allow 443
  1. 重新加载防火墙以应用更改
sudo ufw reload
  1. 使用浏览器(如 Chrome)访问你的域名,以验证 Caddy 是否提供你的虚拟主机 Web 应用程序文件。
https://example.com

如果你收到连接错误,请查看 Caddy 配置日志以验证错误详细信息。

结论

你已在 Ubuntu 22.04 服务器上安装了 Caddy Web 服务器,并设置了一个虚拟主机配置文件,以便在服务器上提供 Web 应用程序文件。访问 Caddy 文档 以获取更多信息和配置选项。


我的博客:https://blog.ivwv.site

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/505646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ 和 Kafka 有什么区别?

目录 RocketMQ 是什么? RocketMQ 和 Kafka 的区别 在架构上做减法 简化协调节点 简化分区 Kafka 的底层存储 RocketMQ 的底层存储 简化备份模型 在功能上做加法 消息过滤 支持事务 加入延时队列 加入死信队列 消息回溯 总结 来源:面试官:RocketMQ 和 Kafka 有…

使用docker-compose安装Redis的主从+哨兵模式

必看 本文是一主二从一哨兵模式&#xff1b;其余的单机/集群/多哨兵模式的话&#xff0c;不在本文... 本文的环境主要是&#xff1a;应用app在本地&#xff0c;redis在云服务器上&#xff1b; 图解 图如下&#xff1a;这个图很重要&#xff1b; 之所以要这样画图&#xff0…

电脑提示directx错误导致玩不了游戏怎么办?dx出错的解决方法

想必大家都有过这样的崩溃瞬间&#xff1a;满心欢喜打开心仪的游戏&#xff0c;准备在虚拟世界里大杀四方或者畅游冒险&#xff0c;结果屏幕上突然弹出个 DirectX 错误的提示框&#xff0c;紧接着游戏闪退&#xff0c;一切美好戛然而止。DirectX 作为 Windows 系统下游戏运行的…

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构&#xff0c;下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计&#xff0c;下面让我们来一起学习一下。 Introductio…

消息中间件类型介绍

消息中间件是一种在分布式系统中用于实现消息传递的软件架构模式。它能够在不同的系统或应用之间异步地传输数据&#xff0c;实现系统的解耦、提高系统的可扩展性和可靠性。以下是几种常见的消息中间件类型及其介绍&#xff1a; 1.RabbitMQ 特点&#xff1a; • 基于AMQP&#…

WEB攻防-通用漏洞_文件上传_黑白盒审计流程

目录 前置知识点 Finecms-CMS文件上传 ​编辑 Cuppa-Cms文件上传 Metinfo-CMS 文件上传 前置知识点 思路&#xff1a; 黑盒就是寻找一切存在文件上传的功能应用 1 、个人用户中心是否存在文件上传功能 2 、后台管理系统是否存在文件上传功能 3 、字典目录扫描探针文件上传构…

“深入浅出”系列之FFmpeg:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的&#xff0c;所以笔记也是跟雷老师的博客写的。 一、音视频相关的基础知识 首先播放一个视频文件的流程如下所示&#xff1a; FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据&#xff0c;然后SDL将YUV显示到电脑屏幕上…

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…

fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)

教程 fast-crud select示例配置需求:需求比较复杂 1. 下拉框选项需要通过后端接口获取 2. 实现多选功能 由于这个前端框架使用逻辑比较复杂我也是第一次使用,所以只记录核心问题 环境:vue3,typescript,fast-crud ,elementPlus 效果 代码 // crud.tsx文件(/.ts也行 js应…

在Windows环境下搭建无人机模拟器

最近要开发无人机地面站&#xff0c;但是没有无人机&#xff0c;开发无人机对我来说也是大姑娘坐花轿——头一回。我们要用 MAVLink 和无人机之间通信&#xff0c;看了几天 MAVLink&#xff0c;还是不得劲儿&#xff0c;没有实物实在是不好弄&#xff0c;所以想先装一个无人机模…

HTB:Topology[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 提取并保存靶机TCP开放端口号 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用浏览器访问靶…

【 Verdi实用技巧-Part-3】

Verdi实用技巧-Part-3 3 Verdi实用技巧-Part-33.1 nWave window(看波形窗口)3.2 收集coverage3.3 nWave window3.4 Verdi-->app3.5 Force信号用Verdi去debug 本篇文章继续介绍Verdi实用技巧–Part-3; 3 Verdi实用技巧-Part-3 3.1 nWave window(看波形窗口) nWave window …

Vue sm3国密 IE模式报错处理

1、sm-crypto 转义错误 查看报错信息包名 在vue.config.js的transpileDependencies中把依赖包添加进去&#xff0c;让babel能够转译sm-crypto包 babel.config.js module.exports {presets: [[vue/app, {useBuiltIns: entry}]] }2、exports.destroy (() &#xff1e; { … }&a…

docker 基本使用

-do1.安装docker: Redirecting… 0. docker内使用gpu, 安装nvidia-docker: https://github.com/NVIDIA/nvidia-docker, 安装后使用&#xff1a;nvidia-container-cli -k -d /dev/tty list&#xff0c; 验证正确&#xff0c;无报错&#xff0c;即为正确 1. docker 启动image,如…

手机的ip地址是根据电话卡归属地定吗

在智能手机普及的今天&#xff0c;IP地址作为我们连接互联网的“门牌号”&#xff0c;其来源和确定方式常常引发用户的好奇。特别是关于手机IP地址是否与电话卡的归属地直接相关&#xff0c;这一话题更是众说纷纭。本文将深入探讨这一问题&#xff0c;为您揭开手机IP地址与电话…

计算机网络 (32)用户数据报协议UDP

前言 用户数据报协议&#xff08;UDP&#xff0c;User Datagram Protocol&#xff09;是计算机网络中的一种重要传输层协议&#xff0c;它提供了无连接的、不可靠的、面向报文的通信服务。 一、基本概念 UDP协议位于传输层&#xff0c;介于应用层和网络层之间。它不像TCP那样提…

YOLOv5改进 | CARAFE提高精度的上采样方法

目录 1 CARAFE模块原理 1.1 上采样的表示 1.2 Motivation 2 YOLOv5中加入CARAFE模块 2.1 ultralytics/nn/modules/block.py文件配置 2.2 ultralytics/nn/tasks.py配置 2.3 创建添加优化点模块的yolov5x-CARAFE.yaml 参考文献 1 CARAFE模块原理 上采样操作可以表示为…

高通,联发科(MTK)等手机平台调优汇总

一、常见手机型号介绍&#xff1a; ISP除了用在安防行业&#xff0c;还有手机市场&#xff0c;以及目前新型的A/VR眼睛&#xff0c;机器3D视觉机器人&#xff0c;医疗内窥镜这些行业。 下面是一些最近几年发布的,,,旗舰SOC型号&#xff1a; 1.联发科&#xff1a;天玑92…

windows从0开始配置llamafactory微调chatglm3-6b

后续会更新 从0学习LLaMaFactory参数解释说明 &#xff0c;请期待~ 文章目录 一、准备工作1、创建python虚拟环境(annoconda)2、配置pytorch傻瓜版3、llamafactory配置4、微调数据准备5、开始微调5.1 webui启动微调5.2 指令启动微调 一、准备工作 1、创建python虚拟环境(annoc…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…