GNU/Linux >> Tutoriales Linux >  >> Debian

Integración de PlaySMS Kannel SMS Gateway en NGINX+Debian

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

Nota: Para ver la lista de zonas horarias, visite:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

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/

Nota: No use la versión de PlaySMS anterior a la 1.4.5, ya que tienen una vulnerabilidad de seguridad que se solucionó en la versión 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

Nota: Esta información es para el acceso API HTTP bidireccional entre Kannel y PlaySMS. Como estamos instalando ambos servicios en el mismo servidor, usamos localhost para Bearerbox, Enviar SMS y PlaySMS URL. Utilice la dirección IP/FQDN de su host si instala Kannel y PlaySMS en diferentes servidores.

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/


Debian
  1. Cómo volver a compilar el servidor web nginx en Debian Linux

  2. nginx - 413 Entidad de solicitud demasiado grande

  3. 502 Error de puerta de enlace incorrecta NGINX [Solución]

  4. nginx:[emerg] directiva desconocida en /etc/nginx/sites-enabled/example.com:3

  5. getpwnam(www) falló en /etc/nginx/nginx.conf

Cómo instalar Nginx en Debian 11

Puerta de enlace SMS de Kannel en Debian 10/11

Notificación por SMS de Nagios usando Kannel

Cómo arreglar el tiempo de espera de la puerta de enlace 504 en Nginx

Cómo reparar el error 502 Bad Gateway en Nginx

Cómo instalar Nginx en Debian 10