Esta publicación trata sobre la integración de PlaySMS Kannel SMS Gateway en NGINX+Debian
PlaySMS:
PlaySMS es un software de gestión de SMS gratuito y de código abierto, una interfaz web para pasarelas de SMS y servicios de SMS masivos. En este artículo configuraremos PlaySMS en Debian 10 con el servidor web NGINX y la base de datos MariaDB. Necesitaremos PHP para ejecutar la aplicación web PlaySMS y Kannel SMS Gateway. Para instalar Kannel SMS Gateway, consulte este artículo.
Información del host del entorno LAB:
IP del host del servidor PlaySMS y Kannel:192.168.10.38
IP del host del cliente:192.168.10.31
Instalando NGINX:
Usaremos el paquete Debian precompilado del repositorio oficial de NGINX
Descargue y agregue los paquetes NGINX y la clave de firma del repositorio al conjunto de claves del programa apt:
root@sms-gw:~# wget https://nginx.org/keys/nginx_signing.key
root@sms-gw:~# apt-key add nginx_signing.key
Para agregar la lista de fuentes de NGINX, cree /etc/apt/sources.list.d/nginx.list archivo con los siguientes contenidos
deb https://nginx.org/packages/debian/ buster nginx
deb-src https://nginx.org/packages/debian/ buster nginx
Actualice la lista de repositorios e instale NGINX
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y nginx
Habilite e inicie el servicio NGINX y verifique que el servidor NGINX esté activo y funcionando:
root@sms-gw:~# systemctl enable nginx.service
root@sms-gw:~# systemctl start nginx.service
root@sms-gw:~# netstat –lntp
root@sms-gw:~# curl -l 127.0.0.1
Desde la máquina del cliente:
El servidor NGINX se está ejecutando y muestra su página predeterminada.
Instalando PHP:
Ahora instale PHP, PHP-FPM y otros paquetes de PHP necesarios para PlaySMS
root@sms-gw:~# apt-get install –y php php-fpm php-mysql php7.3-mysql php7.3-cli php7.3-common php7.3-xml php7.3-xmlrpc php7.3-mbstring php7.3-gd php7.3-curl
Habilite e inicie el servicio PHP7.3-FPM y verifique el estado
root@sms-gw:~# systemctl enable php7.3-fpm.service
root@sms-gw:~# systemctl start php7.3-fpm.service
root@sms-gw:~# systemctl status php7.3-fpm.service
Configuración de NGINX para PlaySMS:
Crear /etc/nginx/fastcgi.conf archivo con el contenido a continuación usando vim
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Cambiar www-datos usuario y grupo a nginx en /etc/php/7.3/fpm/pool.d/www.conf para las siguientes directivas de configuración
usuario =www-datos
grupo =www-datos
listen.propietario =www-datos
listen.group =www-datos
cambiar a
usuario =nginx
grupo =nginx
escucha.propietario =nginx
escucha.grupo =nginx
root@sms-gw:~# sed -i 's/www-data/nginx/g' /etc/php/7.3/fpm/pool.d/www.conf
Reemplace el archivo de configuración predeterminado de NGINX para que PlaySMS se ejecute con FPM/FastCGI
root@sms-gw:~# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bk
root@sms-gw:~# vim /etc/nginx/conf.d/default.conf
Agregue las siguientes líneas a /etc/nginx/conf.d/default.conf para PlaySMS
server {
listen 80;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name _;
access_log /var/log/nginx/playsms_access.log;
error_log /var/log/nginx/playsms_error.log;
charset utf-8;
location / {
try_files $uri $uri/ =404;
}
location ~ .php {
include fastcgi.conf;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Deberá configurar su zona horaria local para PHP.
Descomente y establezca date.timezone directiva de configuración bajo [Date] sección en /etc/php/7.3/cli/php.ini y /etc/php/7.3/fpm/php.ini para obtener la hora local de su zona horaria. Ejemplo:para Nueva York, la configuración de EE. UU. sería
date.timezone = America/New_York
Reinicie el php7.3-fpm servicio después de cambiar la información de la zona horaria.
root@sms-gw:~# systemctl restart php7.3-fpm.service
Coloque una página de prueba en el directorio raíz de NGINX para comprobar la configuración de PHP con NGINX
root@sms-gw:~# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Explorar http://192.168.10.38/info.php desde la máquina cliente
PHP funciona correctamente con NGINX usando el conector PHP-FPM y mostrando información de PHP.
Instalar MariaDB:
Necesitaremos servicio de base de datos para PlaySMS. Aquí estamos usando MariaDB.
Importar clave para MariaDB en apt key ring
root@sms-gw:~# apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Prepare la lista de fuentes para MariaDB:cree /etc/apt/sources.list.d/MariaDB.list archivo que incluye las siguientes líneas
# MariaDB 10.3 repository list - created 2021-12-28 18:41 UTC
# https://mariadb.org/download/
deb [arch=amd64,arm64,ppc64el] https://download.nus.edu.sg/mirror/mariadb/repo/10.3/debian buster main
deb-src https://download.nus.edu.sg/mirror/mariadb/repo/10.3/debian buster main
Actualice la lista de repositorios e instale MariaDB
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y mariadb-server
Si solicita proporcionar una contraseña de root para MariaDB, escápela. Lo configuraremos más tarde
Habilitar e iniciar el servicio MariaDB
root@sms-gw:~# systemctl enable mariadb.service
root@sms-gw:~# systemctl start mariadb.service
Ejecute mysql_secure_installation comando para establecer la contraseña de root y otras directivas de seguridad como se muestra a continuación
¿Establecer contraseña raíz? [S/n] S
Establecer la contraseña raíz de MariaDB
¿Eliminar usuarios anónimos? [S/n] S
¿Deshabilitar el inicio de sesión raíz de forma remota? [S/n] S
¿Eliminar la base de datos de prueba y acceder a ella? [S/n] S
Y finalmente …
¿Recargar tablas de privilegios ahora? [S/n] S
Crear base de datos PlaySMS y usuario en MariaDB
root@sms-gw:~# mysql -u root –p
MariaDB [(none)]> CREATE DATABASE playsms;
MariaDB [(none)]> CREATE USER 'playsmsuser'@'localhost' IDENTIFIED BY 'playsmsSecuredPassword';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON playsms.* TO 'playsmsuser'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
Ahora MariaDB está listo para PlaySMS.
Instalando PlaySMS:
Instalar dependencias
root@sms-gw:~# apt-get install -y zip
Agregar playsms usuario
root@sms-gw:~# adduser playsms --disabled-password --home=/usr/local/playsms/
Cree un directorio de registro y establezca el permiso apropiado
root@sms-gw:~# mkdir /var/log/playsms
root@sms-gw:~# chown nginx:nginx -R /var/log/playsms
Cambiar a playsms usuario
root@sms-gw:~# su - playsms
Descargue y descomprima el último formulario de lanzamiento oficial de PlaySMS https://github.com/playsms/playsms/archive/refs/tags/1.4.5.tar.gz
playsms@sms-gw:~$ cd /tmp/
playsms@sms-gw:/tmp$ wget https://github.com/playsms/playsms/archive/refs/tags/1.4.5.tar.gz
playsms@sms-gw:/tmp$ mv 1.4.5.tar.gz playsms-1.4.5.tar.gz
playsms@sms-gw:/tmp$ tar -zxf playsms-1.4.5.tar.gz
playsms@sms-gw:/tmp$ cd playsms-1.4.5/
Crear install.conf archivo con el siguiente contenido
DBUSER="playsmsuser"
DBPASS="playsmsSecuredPassword"
DBNAME="playsms"
DBHOST="localhost"
DBPORT="3306"
WEBSERVERUSER="nginx"
WEBSERVERGROUP="nginx"
PATHSRC="$(pwd)"
PATHWEB="/usr/local/playsms/html"
PATHLIB="/usr/local/playsms/lib"
PATHBIN="/usr/local/playsms/bin"
PATHLOG="/var/log/playsms"
PATHCONF="/usr/local/playsms/etc"
Ejecute install-playsms.sh archivo para instalar PlaySMS
Verifique los datos de instalación y confirme cada paso
playsms@sms-gw:/tmp/playsms-1.4.5$ ./install-playsms.sh
playSMS Install Script for Ubuntu (Debian based)
==================================================================
WARNING:
- This install script WILL NOT upgrade currently installed playSMS
- This install script WILL REMOVE your current playSMS database
- This install script is compatible ONLY with playSMS version 1.4
- Please BACKUP before proceeding
==================================================================
You are NOT running this installation script as root
That means you need to make sure that this Linux user has
permission to create necessary directories
==================================================================
Proceed ?
When you're ready press [y/Y] or press [Control+C] to cancel Y
==================================================================
INSTALL DATA:
MySQL username = playsmsuser
MySQL password = playsmsSecuredPassword
MySQL database = playsms
MySQL host = localhost
MySQL port = 3306
Web server user = nginx
Web server group = nginx
playSMS source path = /tmp/playsms-1.4.5
playSMS web path = /usr/local/playsms/html
playSMS lib path = /usr/local/playsms/lib
playSMS bin path = /usr/local/playsms/bin
playSMS log path = /var/log/playsms
playSMS conf path = /usr/local/playsms/etc
==================================================================
Please read and confirm INSTALL DATA above
When you're ready press [y/Y] or press [Control+C] to cancel Y
==================================================================
Are you sure ?
Please read and check again the INSTALL DATA above
When you're ready press [y/Y] or press [Control+C] to cancel Y
==================================================================
Installation is in progress
DO NOT press [Control+C] until this script ends
==================================================================
Getting composer from https://getcomposer.com
Please wait while the install script downloading composer
Composer is ready in this folder
Pleas wait while composer getting and updating required packages
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
Composer has been installed and packages has been updated
Start................end
PLAYSMSD_CONF = /usr/local/playsms/etc/playsmsd.conf
PLAYSMS_PATH = /usr/local/playsms/html
PLAYSMS_LIB = /usr/local/playsms/lib
PLAYSMS_BIN = /usr/local/playsms/bin
PLAYSMS_LOG = /var/log/playsms
DAEMON_SLEEP = 1
ERROR_REPORTING = E_ALL ^ (E_NOTICE | E_WARNING)
IS_RUNNING =
PIDS schedule =
PIDS ratesmsd =
PIDS dlrssmsd =
PIDS recvsmsd =
PIDS sendsmsd =
playsmsd has been started
schedule at pid 21444
ratesmsd at pid 21447
dlrssmsd at pid 21450
recvsmsd at pid 21453
sendsmsd at pid 21455
playsmsd is running
schedule at pid 21444
ratesmsd at pid 21447
dlrssmsd at pid 21450
recvsmsd at pid 21453
sendsmsd at pid 21455
playSMS has been installed on your system
Your playSMS daemon script operational guide:
- To start it : playsmsd /usr/local/playsms/etc/playsmsd.conf start
- To stop it : playsmsd /usr/local/playsms/etc/playsmsd.conf stop
- To check it : playsmsd /usr/local/playsms/etc/playsmsd.conf check
ATTENTION
=========
When message "unable to start playsmsd" occurred above, please check:
1. Possibly theres an issue with composer updates, try to run: "./composer update"
2. Manually run playsmsd, "playsmsd /usr/local/playsms/etc/playsmsd.conf start", and then "playsmsd /usr/local/playsms/etc/playsmsd.conf status"
Salir de playsms shell de usuario
Establecer el bin adecuado y conf ubicación del archivo en /usr/local/playsms/html/plugin/feature/playsmslog/config.php
$plugin_config['playsmslog']['playsmsd']['bin'] = '/usr/local/playsms/bin/playsmsd';
$plugin_config['playsmslog']['playsmsd']['conf'] = 'https://1118798822.rsc.cdn77.org/usr/local/playsms/etc/playsmsd.conf';
También es necesario configurar conf adecuado ubicación del archivo en /usr/local/playsms/bin/playsmsd
Cambiar [cerca de la línea #222 ]
$PLAYSMSD_CONF =”;
Para
$PLAYSMSD_CONF =‘/usr/local/playsms/etc/playsmsd.conf’;
Como nuestro usuario/grupo del servidor web es nginx , para evitar problemas de permisos, cambiaremos la propiedad de todos los contenidos en el directorio raíz web de PlaySMS a nginx:nginx
root@sms-gw:~# cd /usr/local/playsms/html/
root@sms-gw:/usr/local/playsms/html# chown nginx:nginx -R ./*
Establezca un nuevo directorio raíz web en /etc/nginx/conf.d/default.conf para PlaySMS
Reinicie el servicio NGINX
root@sms-gw:~# systemctl restart nginx.service
Explorar http://192.168.10.38/ desde la estación de trabajo del cliente e inicie sesión con el nombre de usuario predeterminado:admin, Contraseña:admin
En Mi cuenta> Preferencias Menú Cambiar contraseña predeterminada y otra información
Integración de PlaySMS con Kannel SMS Gatway:
Ve a Configuración> Gestionar puerta de enlace y SMSC en el portal web de administración de PlaySMS, haga clic en el signo más (+) junto a la opción kannel Gateway
Ponga la información de Kannel Gateway como hemos configurado en sendsms-user grupo en kannel.conf. Ref:Instalación de Canal
El Kannel SMSC se agregará en la pestaña SMSC en Configuración> Gestionar puerta de enlace y SMSC
Ve a Configuración> Configuración principal . Establecer Canal como SMSC predeterminado y guarde la configuración.
Enviando SMS desde PlaySMS:
Ve a Mi Cuenta> Redactar mensaje, escribir un SMS y enviar
Registro de acceso al canal:
Teléfono del destinatario:
Recibir SMS en PlaySMS desde Kannel:
Para recibir SMS entrantes, tendremos que agregar la URL de devolución de llamada de PlaySMS get-url en servicio-sms grupo en kannel.conf archivo
group = sms-service
get-url = "http://localhost/index.php?app=call&cat=gateway&plugin=kannel&access=geturl&t=%t&q=%q&a=%a&Q=%Q&smsc=kannel"
Encontrará los SMS entrantes en Informes> Sandbox en el Portal PlaySMS.
Desde Configuración> Enrutar SMS entrantes puede establecer destino/acción para un SMS entrante.
Añadir playsmsd para iniciar usando systemd :
Crear unidad systemd /etc/systemd/system/playsms.service con los siguientes contenidos
[Unit]
Description=PlaySMS
Documentation=https://playsms.org/documentation/
After=network-online.target
Wants=network-online.target
[Service]
User=playsms
Type=forking
ExecStart=/usr/local/playsms/bin/playsmsd start
ExecReload=/usr/local/playsms/bin/playsmsd restart
ExecStop=/usr/local/playsms/bin/playsmsd stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
Recargar systemd y habilitar/iniciar playsms.service
root@sms-gw:~# systemctl daemon-reload
root@sms-gw:~# systemctl enable playsms.service
root@sms-gw:~# systemctl start playsms.service
root@sms-gw:~# systemctl status playsms.service
Referencias:
https://playsms.org/documentation/
https://mariadb.org/download/?t=repo-config
https://docs.nginx.com/nginx/admin-guide/installing-nginx/