on  it road.com

在 CentOS 7 上为 Caddy 创建 Systemd 服务

如我们所见,Caddy Web 服务器在 CentOS 7 上的安装和配置不是一个自动化过程,我们正在创建每个文件/目录并调整其权限。

同样,我们需要创建一个系统服务,以在守护进程模式下自动运行 Caddy Web 服务器。

幸运的是,官方 Caddy 存储库提供了一个 Caddy 系统单元文件,我们可以使用它在 CentOS 7 上创建 systemd 服务。

我们没有使用实际的文件,而是派生了一个我们自己的更简单的版本。

[root@centos7.onitroad.com ~]# vi /usr/lib/systemd/system/caddy.service

并其中添加以下代码行。

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Restart=on-abnormal
StartLimitIntervalSec=14400
StartLimitBurst=10
User=caddy
Group=caddy
Environment=CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
PrivateDevices=false
ProtectHome=true
ProtectSystem=full
ReadWritePaths=/etc/ssl/caddy
ReadWriteDirectories=/etc/ssl/caddy
[Install]
WantedBy=multi-user.target

在 CentOS 7 上安装 Caddy Web Server

登录到服务器
使用以下命令安装 Caddy Web 服务器的最新稳定版本。

[root@centos7.onitroad.com ~]# curl https://getcaddy.com | bash -s personal

我们在这里安装 Caddy Web 服务器个人版。

如果我们想下载 Caddy 网络服务器的商业版本,我们必须提供帐户 ID 和 API 密钥,如 Caddy 下载页面所述。

找到 Caddy Web 服务器的安装目录。

[root@centos7.onitroad.com ~]# whereis caddy
caddy: /usr/local/bin/caddy

与 Apache 和 Nginx 不同;Caddy Web 服务器不创建配置文件、systemd 服务和拥有 Caddy 服务和文件的专用用户。

因此,我们必须手动为 Caddy Web 服务器创建一个用户。

[root@centos7.onitroad.com ~]# adduser -r -s /sbin/nologin -d /var/www caddy

其中:

  • 使用 -r 参数的系统用户
  • 使用 /sbin/nologin shell 和
  • 默认主目录设置为 /var/www 。

在 Caddy Web 服务器上配置自动 TLS:

自动 TLS 是 Caddy Web 服务器的独特功能,它将 Caddy 与其他 Web 服务器区分开来。

如果配置了自动 TLS,则 Caddy Web 服务器会自动从 Let's Encrypt(一个免费、自动化和开放的证书颁发机构)请求和更新 TLS 证书。

编辑 Caddyfile 以配置自动 TLS。

[root@centos7.onitroad.com ~]# vi /etc/caddy/Caddyfile

并添加另一个服务器块。

caddy-01.onitroad.com {
    root /var/www
    gzip
    tls jackli@onitroad.com
}

其中

  • caddy-01.onitroad.com 必须是注册域并且可以通过 Internet 访问。
  • tls 指令将通知 Caddy 服务从 Let's Encrypt 获取 TLS 证书并在默认 https 端口 443 上启动该服务。

在 CentOS 7 防火墙中允许 https 服务。

[root@centos7.onitroad.com ~]# firewall-cmd --permanent --add-service=https
success
[root@centos7.onitroad.com ~]# firewall-cmd --reload
success

重新启动 Caddy 服务以加载更改。

[root@centos7.onitroad.com ~]# systemctl restart caddy.service

在浏览器中浏览 URL https://caddy-01.onitroad.com。

如果配置正确,那么它将显示相同的“Hello World”网页,但这次是通过 https 协议。

为 Caddy Web Server 创建目录结构:

Caddy 的安装过程不会创建必要的目录,因此,我们必须手动创建这些目录并设置适当的权限。

为 Caddy web server 创建一个配置目录。

[root@centos7.onitroad.com ~]# mkdir /etc/caddy
[root@centos7.onitroad.com ~]# chown -R root:caddy /etc/caddy
[root@centos7.onitroad.com ~]# touch /etc/caddy/Caddyfile

Caddy Web 服务器自动从 Let's Encrypt 获取 SSL 证书,它需要以下目录来存储该 SSL 证书。

[root@centos7.onitroad.com ~]# mkdir /etc/ssl/caddy
[root@centos7.onitroad.com ~]# chown -R caddy:root /etc/ssl/caddy
[root@centos7.onitroad.com ~]# chmod o-rwx /etc/ssl/caddy/

创建目录以在 Caddy Web 服务器上托管网站。

[root@centos7.onitroad.com ~]# mkdir /var/www
[root@centos7.onitroad.com ~]# chown caddy:caddy /var/www

在 Caddyfile 中创建一个服务器块

配置 Caddyfile 并创建一个简单的服务器块。

[root@centos7.onitroad.com ~]# vi /etc/caddy/Caddyfile

添加以下指令以添加 HTTP 服务器块。

http:// {
    root /var/www
    gzip
}

为我们的网站创建一个索引页面。

[root@centos7.onitroad.com ~]# vi /var/www/index.html

在此文件中添加以下代码。

<html>
<head><title>Hello World</title>
<body><h1>Hello World</h1></body>
</html>

启用并启动 caddy.service 。

[root@centos7.onitroad.com ~]# systemctl enable --now caddy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/caddy.service to /usr/lib/systemd/system/caddy.service.

在 CentOS 7 防火墙中允许 http 服务。

[root@centos7.onitroad.com ~]# firewall-cmd --permanent --add-service=http
success
[root@centos7.onitroad.com ~]# firewall-cmd --reload
success

在客户端浏览器中打开 URL http://caddy-01.onitroad.com。

如果配置正确,则网页会显示“Hello World”。

在 CentOS 7 上安装 Caddy Web Server

在本文中,我们将在 CentOS 7 上安装 Caddy Web 服务器并在 Caddy 上配置 HTTP 和 HTTPS 网站。

Caddy Web 服务器是一个开源的、支持 HTTP/2 的 Web 服务器,用 Go 语言编写。

Caddy 最显着的功能之一是自动为托管网站启用 TLS。
Caddy 自动从 Let's Encrypt 获取和更新 TLS 证书。

Caddy 也可以配置为反向代理服务器。

日期:2020-09-17 00:16:36 来源:oir作者:oir