强大好用、支持信创平台的http服务器:Caddy

最常见Web服务器是Apache或者 Nginx,但是对于一些简单用途,配置起来相对太复杂。Caddy(https://caddyserver.com/)是一个用 Go 写的 Web 服务器,配置简洁,功能强大,适合一些简单快速用途,比如作为HTTP FileServer,实现YUM/APT软件仓库等。当然,Caddy能自动开启 HTTPS、支持 HTTP/2 && QUIC等特性,可以满足各种复杂的Web Server功能要求。Caddy还支持MIPS、ARM和X86等架构,最新版本也可以在国产信创设备上使用。

网上的大多数文章都是Caddy1版本的,现在官方已经升级到Caddy 2版本了,配置文件格式和以前不同(https://caddyserver.com/docs/v2-upgrade)。应以官方文档为准《Caddyfile Quickstart》。

本文暂时只讨论Caddy配置作为基本的HTTP File Server用途(Linux软件仓库应用),其它配置请参考Caddy官方文档:https://caddyserver.com/docs。

1. 下载与安装caddy

caddy(https://caddyserver.com/)基于Go语言( Go 1.14 or newer),Go语言的软件往往就是一个单一文件,Caddy也是。

在caddy网站上下载对应的caddy二进制包,最新版本2.3,支持linx、windows、bsd以及x86、ARM、MIPS(分MIPS、MIPS64和MIPS64le)等架构,在龙芯平台下载选择Linux 64le(文件名caddy_linux_mips64le)。

chmod +x caddy_linux_mips64le  #直接下载的,需要加上执行权限;测试时或者chmod 777 caddy_linux_mips64le 
mv caddy_linux_mips64le /user/bin/caddy   #放到系统PATH中

或者如果下载其它版本的,访问https://github.com/caddyserver/caddy/releases,下面例子是下载2.2.1版本的对应二进制文件:

[root@backupDK /]tar xf caddy_2.2.1_linux_amd64.tar.gz
#解压后就是一个caddy单文件,移动到系统PATH路径的文件夹下
[root@backupDK /]mv caddy /usr/bin/

caddy的启动参数:

[root@backupDK /]# caddy
Caddy is an extensible server platform.

usage:
  caddy <command> [<args...>]

commands:
  adapt           Adapts a configuration to Caddy's native JSON
  build-info      Prints information about this build
  environ         Prints the environment
  file-server     Spins up a production-ready file server
  fmt             Formats a Caddyfile
  hash-password   Hashes a password and writes base64
  help            Shows help for a Caddy subcommand
  list-modules    Lists the installed Caddy modules
  reload          Changes the config of the running Caddy instance
  reverse-proxy   A quick and production-ready reverse proxy
  run             Starts the Caddy process and blocks indefinitely
  start           Starts the Caddy process in the background and then returns
  stop            Gracefully stops a started Caddy process
  trust           Installs a CA certificate into local trust stores
  untrust         Untrusts a locally-trusted CA certificate
  validate        Tests whether a configuration file is valid
  version         Prints the version

Use 'caddy help <command>' for more information about a command.

Full documentation is available at:
https://caddyserver.com/docs/command-line

caddy测试-显示版本号,表示安装成功:

[root@backupDK /]caddy version
v2.2.1 h1:Q62GWHMtztnvyRU+KPOpw6fNfeCD3SkwH7SfT1Tgt2c=

2. 运行Caddy

Caddy首页上有其基本的用法:

Quick, local file server
$ caddy file-server
Public file server over HTTPS
$ caddy file-server --domain example.com
HTTPS reverse proxy
$ caddy reverse-proxy --from example.com --to localhost:9000
Run server with Caddyfile in working directory (if present)
$ caddy run

//Caddy 2's default protocol is always HTTPS if a hostname or IP is known. This is different from Caddy 1, where only public-looking domains used HTTPS by default. Now, every site uses HTTPS (unless you disable it by explicitly specifying port :80 or http://).

(一)直接在命令行带参数方式启动Caddy服务器

启动caddy默认会将启动的目录作为主目录,如下面启动目录就是“/home/linuxrepo”。

  • file-server表示是作为文件服务,配置文件中是“file_server”
  • 如果目录下没有index.htm文件,仅仅显示文件列表,加入-browse,配置文件中是“file_server browse”
  • 指定端口号:-listen: 8800,(注意8800前面是个空格!),配置文件中是“ :8800”
  • 可以指定根目录(默认是启动目录):-root  /opt/software,配置文件中是“root *   /opt/software“
cd /home/linuxrepo/
caddy file-server -browse 

#caddy file-server -browse -listen  :8800 -root /opt/software

(二)配置文件Caddyfile方式启动Caddy服务器

Caddy的配置文件名是Caddyfile,启动Caddy时可以如 --config /etc/caddy/Caddyfile 指定配置文件(不指定默认使用当前启动目录中的Caddyfile文件),最简单的测试Caddyfile例子如下(访问http://ip:2015 ,返回“Hello World!”):

[root@backupDK linuxrepo]# cat /etc/caddy/Caddyfile
:2015
respond "Hello world!"

作为HTTP文件服务器的例子:

[root@backupDK /]# cat /home/linuxrepo/Caddyfile
localhost
file_server browse

注:只要端口号不冲突,可以很容易启动多个Caddy Web Server!

3. 作为服务启动

参考官方文档:https://caddyserver.com/docs/install#linux-service

caddy.service格式基本如下,文件链接是:https://github.com/caddyserver/dist/blob/master/init/caddy.service

[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target

[Service]
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

准备Caddy服务的系统账户:

#Move the caddy binary into your $PATH, for example:
$mv caddy /usr/bin/

$groupadd --system caddy

$useradd --system \
    --gid caddy \
    --create-home \
    --home-dir /var/lib/caddy \
    --shell /usr/sbin/nologin \
    --comment "Caddy web server" \
    caddy

安装服务:

编辑 /etc/systemd/system/caddy.service,修改.service文件中的ExecStart and ExecReload为实际路径,然后如下安装:

#第一次安装服务
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy

#Verify that it is running:
systemctl status caddy

4. 基于Web的网盘应用

私有网络的网盘应用现在解决方案都已经比较成熟,如nextcloud(owncloud)等,Caddy是一个很好的承载平台。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值