UVdesk es un sistema de mesa de ayuda de código abierto basado en Saas para que las empresas interactúen con sus clientes y ofrezcan soporte las 24 horas. Sus características incluyen administración de tickets, soporte de base de conocimientos, respuestas enlatadas y generación automática de tickets basada en correos electrónicos. Las capacidades de Uvdesk se pueden ampliar utilizando módulos externos. Puede automatizar ciertas acciones en función de disparadores específicos para mejorar su flujo de trabajo.
En este tutorial, aprenderá cómo instalar Uvdesk en un servidor basado en Rocky Linux 8 usando Nginx, MySQL y PHP.
Requisitos
-
Un servidor que ejecuta Rocky Linux 8.
-
Un nombre de dominio para el servicio de asistencia que apunta al servidor. Para nuestro tutorial, usaremos
uvdesk.example.com
dominio. -
Un usuario no root con privilegios sudo.
-
Asegúrate de que todo esté actualizado.
$ sudo dnf update
-
Instalar paquetes de utilidades básicas. Es posible que algunos de ellos ya estén instalados.
$ sudo dnf install wget curl nano unzip yum-utils -y
Paso 1:configurar el cortafuegos
El primer paso es configurar el cortafuegos. Rocky Linux usa Firewalld Firewall. Compruebe el estado del cortafuegos.
$ sudo firewall-cmd --state running
El firewall funciona con diferentes zonas, y la zona pública es la predeterminada que usaremos. Enumere todos los servicios y puertos activos en el firewall.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar el siguiente resultado.
cockpit dhcpv6-client ssh
Permitir puertos HTTP y HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Vuelva a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Debería ver un resultado similar.
cockpit dhcpv6-client http https ssh
Vuelva a cargar el cortafuegos para habilitar los cambios.
$ sudo firewall-cmd --reload
Paso 2:instalar Nginx
Rocky Linux viene con una versión anterior de Nginx. Debe descargar el repositorio oficial de Nginx para instalar la última versión.
Cree y abra el /etc/yum.repos.d/nginx.repo
archivo para crear el repositorio oficial de Nginx.
$ sudo nano /etc/yum.repos.d/nginx.repo
Pegue el siguiente código en él.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Instala Nginx.
$ sudo dnf install nginx
Verifique la instalación.
$ nginx -v nginx version: nginx/1.20.2
Habilite el servicio Nginx.
$ sudo systemctl enable nginx
Paso 3:instalar PHP y extensiones
Para nuestro tutorial, necesitamos instalar la última versión de PHP usando el repositorio de Remi. El primer paso es obtener el repositorio de Epel.
$ sudo dnf install epel-release
A continuación, instale el repositorio de Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Verifique las transmisiones de PHP disponibles.
$ dnf module list php -y Last metadata expiration check: 0:00:12 ago on Fri 03 Dec 2021 09:39:32 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
La versión predeterminada es 7.2. Habilite el repositorio PHP 8.0 de Remi.
$ sudo dnf module reset php $ sudo dnf module enable php:remi-8.0
A continuación, instale PHP y sus extensiones requeridas por UVDesk.
$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-intl php-bcmath php-gd php-tokenizer php-imap php-pear php-mailparse
Verifique la instalación.
$ php --version PHP 8.0.16 (cli) (built: Feb 15 2022 21:34:32) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.16, Copyright (c) Zend Technologies
Paso 4:instalar y configurar el servidor MySQL
Usaremos la base de datos MySQL para almacenar los datos. El repositorio Appstream de Rocky Linux viene con la última versión de MySQL.
Instale MySQL.
$ sudo dnf install mysql-server
Habilite e inicie el servicio MySQL.
$ sudo systemctl enable mysqld --now
Instalación segura de MySQL.
$ sudo mysql_secure_installation
Para el primer paso, se le preguntará si desea configurar el complemento Validar contraseña, que puede usar para probar la seguridad de su contraseña de MySQL. Elija Y
para proceder. Se le pedirá que elija el nivel de validación de la contraseña en el siguiente paso. Elige 2
que es el nivel más fuerte y requerirá que su contraseña tenga al menos ocho caracteres e incluya una combinación de mayúsculas, minúsculas, números y caracteres especiales.
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Se le pedirá que elija una contraseña de root en el siguiente paso. Elija una contraseña segura que cumpla con los requisitos del complemento de validación de contraseña. En el siguiente paso, se le preguntará si desea continuar con la contraseña elegida. Pulsa y
para continuar.
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Presiona Y
y luego ENTER
clave para todas las siguientes indicaciones para eliminar usuarios anónimos y la base de datos de prueba, deshabilitar los inicios de sesión raíz y cargar las reglas recién establecidas.
... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. ... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Ingrese el shell de MySQL. Ingrese su contraseña raíz para continuar.
$ mysql -u root -p
Crear uvdesk
usuario. Asegúrese de que la contraseña cumpla con los requisitos establecidos anteriormente.
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
Crear uvdeskdb
base de datos.
mysql> CREATE DATABASE uvdeskdb;
Otorgue privilegios de usuario en uvdeskdb
base de datos.
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
Salga del caparazón.
mysql> exit
Paso 5:Descargar UVdesk
Descargue la última versión estable de UVdesk.
$ wget https://cdn.uvdesk.com/uvdesk/downloads/opensource/uvdesk-community-current-stable.zip
Descomprima el archivo descargado.
$ unzip uvdesk-*.zip
Mueva el directorio extraído a /var/www/uvdesk
ubicación.
$ sudo mv uvdesk-community-v1.0.18 /var/www/uvdesk
Cambie al directorio de UVdesk.
$ cd /var/www/uvdesk
Abra el archivo de entorno (.env
) para editar.
$ sudo nano .env
Encuentra la línea APP_ENV=dev
y cámbielo a lo siguiente.
APP_ENV=prod
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Cambie la propiedad del directorio raíz al usuario de Nginx.
$ sudo chown -R nginx:nginx /var/www/uvdesk
Paso 6:configurar los permisos de SELinux
Utilice chcon
de SELinux comando para cambiar el contexto de seguridad del archivo para el contenido web que se sirve desde /var/www/uvdesk
directorio.
$ sudo chcon -t httpd_sys_content_t /var/www/uvdesk -R $ sudo chcon -t httpd_sys_rw_content_t /var/www/uvdesk -R
Configure SELinux para permitir conexiones de red para UVDesk.
$ sudo setsebool -P httpd_can_network_connect on
Paso 7:instalar y configurar SSL
Para instalar un certificado SSL usando Let's Encrypt, necesitamos descargar la herramienta Certbot. Necesitamos el repositorio de Epel para instalar Certbot, pero podemos omitir este paso ya que lo instalamos anteriormente en el tutorial.
Instale Certbot.
$ sudo dnf install certbot
Genere un certificado SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d uvdesk.example.com
El comando anterior descargará un certificado en /etc/letsencrypt/live/uvdesk.example.com
directorio en su servidor.
Generar un grupo Diffie-Hellman certificado.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Cree un directorio raíz web de desafío para la renovación automática de Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew
y ábralo para editarlo.
$ sudo nano /etc/cron.daily/certbot-renew
Pegue el siguiente código.
#!/bin/sh certbot renew --cert-name uvdesk.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Cambie los permisos en el archivo de tareas para que sea ejecutable.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Paso 8:Configurar Nginx y PHP
Configurar PHP-FPM
Abra el archivo /etc/php-fpm.d/www.conf
.
$ sudo nano /etc/php-fpm.d/www.conf
Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx . Encuentra el user=www-data
y group=www-data
líneas en el archivo y cámbielas a nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Habilite e inicie el servicio PHP.
$ sudo systemctl enable php-fpm --now
Cambia el grupo del directorio de sesiones de PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/session
Configurar Nginx
Cree y abra el archivo /etc/nginx/conf.d/uvdesk.conf
para editar.
$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Pegue el siguiente código en él.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uvdesk.example.com; access_log /var/log/nginx/uvdesk.access.log; error_log /var/log/nginx/uvdesk.error.log; # SSL ssl_certificate /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/uvdesk.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; root /var/www/uvdesk/public; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name uvdesk.example.com; return 301 https://$host$request_uri; }
Observe que el directorio raíz que se usará en la configuración de Nginx es /var/www/uvdesk/public/
y no /var/www/uvdesk/
.
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.
Abra el archivo /etc/nginx/nginx.conf
para editar.
$ sudo nano /etc/nginx/nginx.conf
Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Verifique la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Inicie el servicio Nginx.
$ sudo systemctl start nginx
Paso 9:instalar UVdesk
Inicie la URL https://uvdesk.example.com
en su navegador, y obtendrá la siguiente pantalla.
Haga clic en Empecemos botón para iniciar el proceso de instalación. El instalador verificará la configuración de PHP y los permisos de archivo en la página siguiente.
Haz clic en Continuar continuar. Se le pedirá que complete los detalles de la base de datos en la página siguiente. Introduzca los datos tal como se configuraron en el paso 4.
Haz clic en Continuar continuar. A continuación, se le pedirá que cree una cuenta de superadministrador. Complete sus datos.
Haz clic en Continuar continuar. A continuación, se le pedirá que configure el sitio web dando un nombre a los prefijos del panel de miembros y clientes. Estos prefijos se utilizan en las URL de los sitios web.
Haz clic en Continuar continuar. Llegará a la página de instalación final.
Haga clic en Instalar ahora para comenzar la instalación. Una vez terminado, obtendrá la siguiente pantalla.
Puede acceder al panel de administración y al sitio web de la interfaz a través de los enlaces proporcionados. Su instalación de UVDesk está lista para usar.
Conclusión
Ha instalado el sistema UVdesk Helpdesk en un servidor basado en Rocky Linux 8 utilizando Nginx, MySQL y PHP. Si tiene alguna pregunta, publíquela en los comentarios a continuación.