Caddy es un servidor web gratuito, de código abierto, ligero y moderno escrito en el lenguaje Go. Puede utilizar Caddy como servidor de archivos, servidor dinámico y proxy inverso escalable. Puede ampliar la funcionalidad del servidor a través de complementos. Caddy viene con una amplia gama de características, algunas de las cuales se enumeran a continuación:
- Alojamiento virtual
- HTTPS automático a través de Let's Encrypt
- Admite HTTP/2
- Extensible con complementos
- Se ejecuta sin dependencias externas
En esta publicación, le mostraremos cómo instalar el servidor web Caddy con soporte PHP en Rocky Linux 8.
Requisitos
- Un servidor que ejecuta Rocky Linux 8 en Atlantic.Net Cloud Platform
- Una contraseña de root configurada en su servidor
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Rocky Linux 8 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:instalar el servidor web Caddy
dnf install 'dnf-command(copr)' dnf copr enable @caddy/caddy
Una vez que el repositorio esté habilitado, puede instalar el servidor web Caddy con el siguiente comando:
dnf install caddy -y
Una vez que Caddy esté instalado, verifique la versión de Caddy usando el siguiente comando:
caddy version
Salida de muestra:
v2.4.6 h1:HGkGICFGvyrodcqOOclHKfvJC0qTU7vny/7FhYp9hNw=
A continuación, inicie el servicio Caddy y habilítelo para que se inicie al reiniciar el sistema:
systemctl start caddy systemctl enable caddy
Ahora, abra su navegador web y acceda al servidor web de Caddy usando la URL http://your-server-ip . Debería ver la página de prueba de Caddy en la siguiente pantalla:
Paso 3:crea un nuevo sitio en Caddy
Primero, cree una estructura de directorios para el nuevo sitio web usando el siguiente comando:
mkdir -p /var/www/example.com mkdir /var/log/caddy
A continuación, establezca la propiedad adecuada en el nuevo sitio web:
chown caddy:caddy /var/www/example.com chown caddy:caddy /var/log/caddy
A continuación, cree una página index.html para el nuevo sitio web:
nano /var/www/example.com/index.html
Agregue las siguientes líneas:
<!DOCTYPE html> <html> <head> <title>Caddy Web Server</title> </head> <body> <h1>This is my first web page on Caddy!</h1> </body> </html>
Guarde y cierre el archivo cuando haya terminado.
Paso 4:crear un archivo de configuración de host virtual
A continuación, deberá editar el archivo de configuración de Caddy para alojar el nuevo sitio web. Puedes editarlo con el siguiente comando:
nano /etc/caddy/Caddyfile
Elimine todas las líneas y agregue las siguientes líneas:
test.example.com:80 { root * /var/www/example.com file_server encode gzip log { output file /var/log/caddy/example.access.log } @static { file path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.pdf *.webp } header @static Cache-Control max-age=5184000 }
Guarde y cierre el archivo cuando haya terminado. A continuación, valide el archivo de configuración de Caddy:
caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile
Debería ver el siguiente resultado:
2021/11/17 09:59:04.997 INFO using provided configuration {"config_file": "/etc/caddy/Caddyfile", "config_adapter": "caddyfile"} 2021/11/17 09:59:05.000 WARN input is not formatted with 'caddy fmt' {"adapter": "caddyfile", "file": "/etc/caddy/Caddyfile", "line": 27} 2021/11/17 09:59:05.000 INFO http 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} 2021/11/17 09:59:05.001 INFO http enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"} 2021/11/17 09:59:05.001 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0xc00057a8c0"} 2021/11/17 09:59:05.001 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0xc00057a8c0"} Valid configuration
A continuación, reinicie el servicio Caddy para aplicar los cambios:
systemctl restart caddy
También puede verificar el servicio Caddy usando el siguiente comando:
systemctl status caddy
Obtendrá el siguiente resultado:
● caddy.service - Caddy Loaded: loaded (/usr/lib/systemd/system/caddy.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-17 10:00:23 UTC; 4s ago Docs: https://caddyserver.com/docs/ Main PID: 20077 (caddy) Tasks: 6 (limit: 11411) Memory: 24.9M CGroup: /system.slice/caddy.service └─20077 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile Nov 17 10:00:23 rockylinux systemd[1]: Started Caddy. Nov 17 10:00:23 rockylinux caddy[20077]: {"level":"info","ts":1637143223.8054335,"logger":"tls.cache.maintenance","msg":"started background c> Nov 17 10:00:23 rockylinux caddy[20077]: {"level":"info","ts":1637143223.8054764,"logger":"tls","msg":"cleaning storage unit","description":"> Nov 17 10:00:23 rockylinux caddy[20077]: {"level":"info","ts":1637143223.8055048,"logger":"tls","msg":"finished cleaning storage units"} Nov 17 10:00:23 rockylinux caddy[20077]: {"level":"info","ts":1637143223.8060036,"logger":"tls.obtain","msg":"lock acquired","identifier":"ex> Nov 17 10:00:24 rockylinux caddy[20077]: {"level":"error","ts":1637143224.0880945,"logger":"tls.obtain","msg":"could not get certificate from> Nov 17 10:00:24 rockylinux caddy[20077]: {"level":"info","ts":1637143224.4512274,"logger":"tls.issuance.zerossl","msg":"generated EAB credent> Nov 17 10:00:25 rockylinux caddy[20077]: {"level":"info","ts":1637143225.7558215,"logger":"tls.issuance.acme","msg":"waiting on internal rate> Nov 17 10:00:25 rockylinux caddy[20077]: {"level":"info","ts":1637143225.755876,"logger":"tls.issuance.acme","msg":"done waiting on internal > Nov 17 10:00:27 rockylinux caddy[20077]: {"level":"info","ts":1637143227.8956456,"logger":"tls.issuance.acme.acme_client","msg":"trying to so
Ahora, abra su navegador web y acceda al sitio web de Caddy usando la URL http://test.example.com . Debería ver su sitio web en la siguiente pantalla:
Paso 5:habilite la compatibilidad con PHP en el servidor web Caddy
Primero, deberá instalar PHP y otras extensiones requeridas en su servidor. Puede instalarlos todos con el siguiente comando:
dnf install php-fpm php-cli php-gd -y
Una vez que todos los paquetes estén instalados, edite el archivo de configuración de Caddy:
nano /etc/caddy/Caddyfile
Defina la ubicación de php_fastcgi como se muestra a continuación:
test.example.com:80 { root * /var/www/example.com php_fastcgi unix//run/php-fpm/www.sock file_server encode gzip log { output file /var/log/caddy/example.access.log } @static { file path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.pdf *.webp } header @static Cache-Control max-age=5184000 }
Guarde y cierre el archivo, luego edite el archivo PHP-FPM:
nano /etc/php-fpm.d/www.conf
Cambie las siguientes líneas:
user = caddy group = caddy listen.acl_users = apache,nginx,caddy
Guarde y cierre el archivo, luego inicie el servicio PHP-FPM y habilítelo para que se inicie al reiniciar el sistema:
systemctl start php-fpm systemctl enable php-fpm
A continuación, cree una página de muestra info.php:
nano /var/www/example.com/info.php
Agregue la siguiente línea:
<?php phpinfo(); ?>
Guarde y cierre el archivo, luego abra su navegador web y acceda a la página info.php usando la URL http://test.example.com/info.php . Obtendrá la siguiente página:
Conclusión
En la guía anterior, explicamos cómo instalar Caddy con PHP en Rocky Linux 8. Caddy es una muy buena alternativa a Apache y Nginx. Debería probarlo en el entorno de producción:¡comience en su servidor privado virtual desde Atlantic.Net!