Instalar o Servidor Web Caddy no Rocky/AlmaLinux 9|8
Caddy é uma plataforma web poderosa, amigável e de código aberto usada para hospedar sites, aplicativos e serviços. Caddy é escrito na linguagem de programação Go, tornando-o um dos servidores web mais rápidos no mercado de código aberto. Ele foca em segurança, desempenho e facilidade de uso, podendo ser utilizado para projetos simples, como sites estáticos, ou para hospedar aplicações web mais complexas.
Por que usar o Servidor Web Caddy
- HTTPS Automático: O Caddy faz a geração e renovação automática de certificados SSL/TLS para seus sites.
- Sua Simplicidade: O Caddy é projetado com base no princípio de torná-lo simples. Ele utiliza um único arquivo de configuração simples e legível por humanos chamado
Caddyfile - Super Desempenho: O Caddy foi projetado para usar poucos recursos de hardware, sendo rápido e eficiente
- Arquitetura modular: Você pode expandir as funcionalidades do servidor web Caddy usando plugins e extensões
- Suporte multiplataforma: O Caddy pode ser executado no Linux, Windows, macOS ou em containers como Docker/Podman
- Grande comunidade: Caddy conta com uma comunidade ativa e solidária, disponível para ajudar você enquanto começa.
Nas próximas seções, veremos como você pode instalar, configurar e usar o servidor web Caddy em sistemas Rocky Linux/AlmaLinux ou CentOS Stream Linux. Para tornar este tutorial prático e dinâmico, iremos hospedar um site WordPress com banco de dados MariaDB. Para este tutorial, estamos usando o domínio blog.cloudlabske.com.
Instale o servidor web Caddy
Para instalar o servidor web Caddy em uma máquina Rocky/AlmaLinux/CentOS Steam Linux, precisamos instalar o copr em nosso sistema:
sudo dnf -y install 'dnf-command(copr)'Habilitar repositório caddy usando copr:
sudo dnf copr enable @caddy/caddy
Pressione a tecla y no seu teclado quando solicitado:
Enabling a Copr repository. Please note that this repository is not part
of the main distribution, and quality may vary.
The Fedora Project does not exercise any power over the contents of
this repository beyond the rules outlined in the Copr FAQ at
<https://docs.pagure.org/copr.copr/user_documentation.html#what-i-can-build-in-copr>,
and packages are not held to any quality or security level.
Please do not file bug reports about these packages in Fedora
Bugzilla. In case of problems, contact the owner of this repository.
Do you really want to enable copr.fedorainfracloud.org/@caddy/caddy? [y/N]: y
Repository successfully enabled.Uma vez que o repositório tenha sido habilitado, instale o servidor web Caddy em seu sistema:
sudo dnf -y install caddyVocê pode obter o pacote de detalhes extras usando rpm ou dnf
sudo dnf info caddy
# OR
rpm -qi caddyO arquivo de configuração padrão do servidor Caddy está localizado em /etc/caddy/Caddyfile. Você pode verificar o conteúdo:
cat /etc/caddy/CaddyfilePara iniciar o serviço, use o comando systemctl:
sudo systemctl start caddyHabilitar o serviço para iniciar na inicialização do sistema.
sudo systemctl enable caddyVerificando status do serviço:
$ systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-08-02 17:43:26 UTC; 39s ago
Docs: https://caddyserver.com/docs/
Main PID: 42001 (caddy)
Tasks: 7 (limit: 48750)
Memory: 20.0M
CGroup: /system.slice/caddy.service
└─42001 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.719293,"msg":"adapted config to JSON","adapter":"caddyfile"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7204406,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019",">
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"warn","ts":1722620606.7205217,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server>
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7206764,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7208471,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7209103,"msg":"serving initial configuration"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7212656,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000488e00"}
Aug 02 17:43:26 rocky8.computingforgeeks.com systemd[1]: Started Caddy.
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7246072,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/var/lib/caddy/.local/share/caddy"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7248337,"logger":"tls","msg":"finished cleaning storage units"}Hospedando WordPress usando o Servidor Web Caddy
Vamos instalar o PHP no seu sistema.
sudo dnf -y install @phpTambém instale outras extensões PHP necessárias.
sudo dnf install php-{cli,fpm,mysqlnd,zip,gd,mbstring,curl,xml,pear,bcmath,json}Defina o usuário caddy como o proprietário do socket FPM.
$ sudo vim /etc/php-fpm.d/www.conf
user = caddy
group = caddy
listen = /run/php-fpm/www.sock
listen.owner = caddy
listen.group = caddy
listen.mode = 0660
listen.acl_users = apache,nginx,caddy
Inicie e habilite o serviço PHP FPM.
sudo systemctl enable --now php-fpmInstale o servidor de banco de dados MariaDB.
sudo dnf -y install @mariadb
sudo systemctl enable --now mariadb
sudo mysql -u rootCrie um banco de dados para o seu site WordPress:
CREATE DATABASE wp_db;
GRANT ALL PRIVILEGES ON wp_db.* to 'wp_user'@'localhost' IDENTIFIED BY 'DBStr%ngPassw0rd';
FLUSH PRIVILEGES;
EXITBaixe o WordPress, extraia e mova a pasta wordpress para /var/www
wget wordpress.org/latest.tar.gz
tar xvf latest.tar.gz
sudo mv wordpress /var/www
sudo cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php Configurar conexão do banco de dados do WordPress
$ sudo vim /var/www/wordpress/wp-config.php
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wp_db' );
/** Database username */
define( 'DB_USER', 'wp_user' );
/** Database password */
define( 'DB_PASSWORD', 'DBStr%ngPassw0rd' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );Defina as permissões para o diretório para o usuário caddy:
sudo chown -R caddy:caddy /var/www/wordpress/Configure o Caddy para WordPress
Abrir arquivo de configuração do Caddy para edição
sudo vim /etc/caddy/CaddyfileModifique as configurações abaixo para adequar ao seu ambiente. Altere o domínio blog.cloudlabske.com, o nome de usuário do administrador
blog.cloudlabske.com {
tls [email
log {
output file /var/log/caddy/wordpress.log
format console
}
root * /var/www/wordpress
encode gzip
file_server
php_fastcgi unix//run/php-fpm/www.sock
@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}
rewrite @disallowed '/index.php'
}Criar diretório de log.
sudo mkdir /var/log/caddy/
sudo chown -R caddy:caddy /var/log/caddy/Confirme se a sintaxe das suas configurações é válida:
$ sudo caddy validate --config /etc/caddy/Caddyfile
2024/08/03 07:25:16.349 INFO using config from file {"file": "/etc/caddy/Caddyfile"}
2024/08/03 07:25:16.351 INFO adapted config to JSON {"adapter": "caddyfile"}
2024/08/03 07:25:16.351 INFO http.auto_https server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "srv0", "https_port": 443}
2024/08/03 07:25:16.351 INFO http.auto_https enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"}
2024/08/03 07:25:16.351 WARN http.auto_https server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server {"server_name": "srv1", "http_port": 80}
2024/08/03 07:25:16.351 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0xc000157680"}
2024/08/03 07:25:16.352 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0xc000157680"}
Reinicie o servidor web Caddy assim que confirmar que a configuração está correta.
sudo systemctl restart caddyVerifique o status dos serviços do Caddy e procure pelas linhas de geração de SSL. Fique atento à geração bem-sucedida do Let’s Encrypt:
$ systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2024-08-03 07:23:34 UTC; 5s ago
Docs: https://caddyserver.com/docs/
Main PID: 45140 (caddy)
Tasks: 7 (limit: 48750)
Memory: 19.6M
CGroup: /system.slice/caddy.service
└─45140 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.0895815,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.2393315,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.3801627,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.7106369,"logger":"tls.issuance.acme.acme_client","msg":"authorization finalized","identifier":"blog.cloudlabske.com","authz_status":"vali>
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.7106667,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencryp>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.3649049,"logger":"tls.issuance.acme.acme_client","msg":"got renewal info","names":["blog.cloudlabske.com"],"window_start":1727765075,"win>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.666609,"logger":"tls.issuance.acme.acme_client","msg":"got renewal info","names":["blog.cloudlabske.com"],"window_start":1727765075,"wind>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6666691,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"http>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6672106,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"blog.cloudlabske.com","issuer":"acme-v02.api.letsen>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6673443,"logger":"tls.obtain","msg":"releasing lock","identifier":"blog.cloudlabske.com"}Acesse o site WordPress em http://seudominio e ele deve redirecionar automaticamente para https://seudominio
Saiba mais na página oficial do guia Introdução.
