Servidor web
Configuración de Apache y Nginx para HWD POS, la raíz en public/, el cambio de puerto y HTTPS.
Los instaladores configuran el servidor web por usted: usan Apache o Nginx si ya hay uno instalado, e instalan Apache si no hay ninguno. Esta página explica lo que configuran, para instalaciones manuales (por ejemplo, sobre un panel de control) o si necesita ajustar algo.
Requisitos
- Apache 2.4 o Nginx 1.18+.
- PHP-FPM 8.2 o superior, accesible por su socket.
- La raíz web (document root) apuntando a la carpeta
public/. - Todas las peticiones que no sean un archivo dirigidas a
public/index.php(controlador frontal).
Por qué public/ y no la raíz del proyecto
La carpeta del proyecto contiene la configuración con la contraseña de la base, los respaldos y el código. Con la raíz web en public/, nada de eso es alcanzable desde internet, aunque alguien adivine el nombre de un archivo.
Como capa adicional, la configuración bloquea explícitamente los archivos terminados en .env, .sql, .md, .sh y .lock.
Nunca apunte la raíz web a la raíz del proyecto (/var/www/HWDPOS). Use siempre /var/www/HWDPOS/public.
Configuración de referencia
Sustituya la ruta del proyecto y el socket de PHP-FPM por los suyos. Los archivos también están en el proyecto como deploy/nginx-hwpos.conf y deploy/apache-hwpos.conf cuando existe la carpeta deploy/.
server {
listen 80;
server_name _; # o su dominio: pos.miferreteria.com
root /var/www/HWDPOS/public; # la carpeta public/ del proyecto
index index.php;
client_max_body_size 32M;
# Controlador frontal: todo entra por public/index.php.
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # su socket de PHP-FPM
fastcgi_read_timeout 120;
}
# Bloquear credenciales, respaldos y código fuente (nunca deben servirse).
location ~* \.(env|sql|md|sh|lock)$ { deny all; }
location ~ /(storage|database|scripts|app|config)/ { deny all; }
location ~ /\.(?!well-known) { deny all; }
}En un panel de control con Nginx (aaPanel / 宝塔), la única regla de reescritura que necesita es:
location / { try_files $uri $uri/ /index.php?$query_string; }Carpetas escribibles
El sistema escribe en storage/ (configuración, licencia, respaldos, registros) y en public/uploads/. Ambas deben pertenecer al usuario del servidor web: www-data en Ubuntu/Debian, apache en AlmaLinux y normalmente www en aaPanel/宝塔.
sudo chown -R www-data:www-data /var/www/HWDPOSEn AlmaLinux, SELinux también debe permitir la escritura; reejecute install-almalinux.sh en lugar de corregirlo a mano. Consulte AlmaLinux.
Cambiar el puerto
El instalador pregunta el puerto (80 por omisión) y cambia cuatro cosas a la vez: el VirtualHost (o el listen de Nginx), la directiva Listen del servidor (la que suele olvidarse y deja el sitio sin escuchar), el cortafuegos y las direcciones del resumen final.
La forma más sencilla de cambiarlo después de instalar es reejecutar el instalador con WEB_PORT=. Es seguro reejecutarlo y no borra datos.
Para hacerlo a mano:
sudo sed -i 's/<VirtualHost \*:80>/<VirtualHost *:8080>/' /etc/apache2/sites-available/hwpos.conf
sudo sed -i 's/^Listen 80$/Listen 8080/' /etc/apache2/ports.conf
sudo apache2ctl configtest && sudo systemctl restart apache2
sudo ufw allow 8080/tcpLos puertos 22 (SSH), 3306 (MariaDB) y 8108 (buscador) ya los usa el sistema y no deben usarse para el sitio.
Las terminales y tablets deben usar la dirección con el puerto incluido (por ejemplo, http://192.168.1.50:8080/). HWD POS no necesita ningún ajuste: sus enlaces internos son relativos.
HTTPS
No es obligatorio publicar el servidor en internet: todo funciona en la red local. Si quiere entrar desde fuera de la tienda, agregue HTTPS (por ejemplo, con Let's Encrypt). Los instaladores no configuran HTTPS; configúrelo en su servidor web o en su proxy inverso.