Installare il server web Caddy su Rocky/AlmaLinux 9|8
Caddy è una piattaforma web potente, facile da usare e open source, utilizzata per servire siti web, applicazioni e servizi. Caddy è scritto nel linguaggio di programmazione Go, rendendolo uno dei server web più veloci nel mercato open source. Si concentra sulla sicurezza, sulle prestazioni e sulla facilità d'uso e può essere utilizzato per progetti semplici come siti statici o per ospitare applicazioni web più complesse.
Perché usare il server web Caddy
- HTTPS automatico: Caddy gestisce la generazione automatica e il rinnovo dei certificati SSL/TLS per i tuoi siti web.
- La sua semplicità: Caddy è progettato secondo il principio del rendere tutto semplice. Utilizza un unico file di configurazione semplice e leggibile dall'uomo chiamato
Caddyfile - Prestazioni Super: Caddy è progettato per utilizzare pochissime risorse hardware pur essendo veloce ed efficiente
- Architettura modulare: puoi estendere le funzionalità del server web Caddy utilizzando plugin ed estensioni
- Supporto multipiattaforma: Caddy può funzionare su Linux, Windows, macOS o in container come Docker/Podman
- Grande comunità: Caddy gode di una comunità attiva e solidale, pronta ad aiutarti mentre inizi.
Nelle sezioni successive vedremo come installare, configurare e utilizzare il server web Caddy nei sistemi Rocky Linux/AlmaLinux o CentOS Stream Linux. Per rendere questo tutorial pratico e dinamico, ospiteremo un sito WordPress con database MariaDB. Per questo tutorial stiamo utilizzando il dominio blog.cloudlabske.com.
Installa il server web Caddy
Per installare il server web Caddy su una macchina Rocky/AlmaLinux/CentOS Steam Linux, dobbiamo installare copr nel nostro sistema:
sudo dnf -y install 'dnf-command(copr)'Abilita il repository caddy usando copr:
sudo dnf copr enable @caddy/caddy
Premi il tasto y sulla tastiera quando richiesto:
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.Una volta abilitato il repository, installa il server web Caddy nel tuo sistema:
sudo dnf -y install caddyPuoi ottenere pacchetti di dettagli aggiuntivi usando rpm o dnf
sudo dnf info caddy
# OR
rpm -qi caddyIl file di configurazione predefinito del server Caddy si trova in /etc/caddy/Caddyfile. Puoi controllarne il contenuto:
cat /etc/caddy/CaddyfilePer avviare il servizio, usa il comando systemctl:
sudo systemctl start caddyAbilita il servizio per l'avvio all'avvio del sistema.
sudo systemctl enable caddyControllo dello stato del servizio:
$ 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"}Ospitare WordPress utilizzando il server web Caddy
Installiamo PHP nel tuo sistema.
sudo dnf -y install @phpInstalla anche le altre estensioni PHP necessarie.
sudo dnf install php-{cli,fpm,mysqlnd,zip,gd,mbstring,curl,xml,pear,bcmath,json}Imposta l'utente caddy come proprietario del 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
Avvia e abilita il servizio PHP FPM.
sudo systemctl enable --now php-fpmInstalla il server di database MariaDB.
sudo dnf -y install @mariadb
sudo systemctl enable --now mariadb
sudo mysql -u rootCrea un database per il tuo sito WordPress:
CREATE DATABASE wp_db;
GRANT ALL PRIVILEGES ON wp_db.* to 'wp_user'@'localhost' IDENTIFIED BY 'DBStr%ngPassw0rd';
FLUSH PRIVILEGES;
EXITScarica WordPress, estrai e sposta la cartella wordpress in /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 Configura la connessione al database di 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' );Imposta i permessi per la directory all'utente caddy:
sudo chown -R caddy:caddy /var/www/wordpress/Configura Caddy per WordPress
Apri il file di configurazione di Caddy per modificarlo
sudo vim /etc/caddy/CaddyfileModifica le configurazioni qui sotto per adattarle al tuo ambiente. Cambia il dominio blog.cloudlabske.com e il nome utente dell'amministratore
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'
}Crea la directory dei log.
sudo mkdir /var/log/caddy/
sudo chown -R caddy:caddy /var/log/caddy/Conferma che la sintassi delle tue configurazioni sia valida:
$ 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"}
Riavvia il server web Caddy una volta confermato che la configurazione è corretta.
sudo systemctl restart caddyVerifica lo stato dei servizi di Caddy e controlla le righe relative alla generazione degli SSL. Presta attenzione alla generazione riuscita di 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"}Accedi al sito WordPress su http://yourdomain e dovrebbe reindirizzarti automaticamente a https://yourdomain
Scopri di più sulla pagina ufficiale della guida Iniziare.
