GNU/Linux >> Linux Esercitazione >  >> Debian

Integrazione del gateway SMS PlaySMS Kannel su NGINX+Debian

Questo post riguarda l'integrazione di PlaySMS Kannel SMS Gateway su NGINX+Debian

PlaySMS:

PlaySMS è un software di gestione degli SMS gratuito e open source, un'interfaccia web per gateway SMS e servizi SMS di massa. In questo articolo configureremo PlaySMS su Debian 10 con il web server NGINX e il database MariaDB. Avremo bisogno di PHP per eseguire l'applicazione Web PlaySMS e il gateway SMS Kannel. Per installare Kannel SMS Gateway, controlla questo articolo.

Informazioni sull'host dell'ambiente LAB:

PlaySMS e IP host del server di canale:192.168.10.38
IP host client:192.168.10.31

Installazione di NGINX:

Useremo il pacchetto Debian precompilato dal repository NGINX ufficiale

Scarica e aggiungi i pacchetti NGINX e la chiave di firma del repository al portachiavi del programma apt:

root@sms-gw:~# wget https://nginx.org/keys/nginx_signing.key
root@sms-gw:~# apt-key add nginx_signing.key

Per aggiungere l'elenco di sorgenti NGINX, crea /etc/apt/sources.list.d/nginx.list file con i contenuti di seguito

deb https://nginx.org/packages/debian/ buster nginx
deb-src https://nginx.org/packages/debian/ buster nginx

Aggiorna l'elenco dei repository e installa NGINX

root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y nginx

Abilita e avvia il servizio NGINX e verifica che il server NGINX sia attivo e funzionante:

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

Dalla macchina del cliente:

Il server NGINX è in esecuzione e mostra la sua pagina predefinita.

Installazione di PHP:

Ora installa PHP, PHP-FPM e altri pacchetti PHP richiesti per 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

Abilita e avvia il servizio PHP7.3-FPM e verifica lo stato

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

Configurazione NGINX per PlaySMS:

Crea /etc/nginx/fastcgi.conf file con i contenuti sottostanti 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;

Modifica www-data utente e gruppo su nginx in /etc/php/7.3/fpm/pool.d/www.conf per le seguenti direttive di configurazione

utente =www-dati
gruppo =www-dati
listen.owner =www-data
listen.group =www-data

cambia in

utente =nginx
gruppo =nginx
listen.owner =nginx
listen.group =nginx

root@sms-gw:~# sed -i 's/www-data/nginx/g'  /etc/php/7.3/fpm/pool.d/www.conf

Sostituisci il file di configurazione predefinito di NGINX per l'esecuzione di PlaySMS 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

Aggiungi le righe sottostanti a /etc/nginx/conf.d/default.conf per 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;
   }
}

Dovrai impostare il tuo fuso orario locale per PHP.

Decommenta e imposta date.timezone config in [Data] sezione in /etc/php/7.3/cli/php.ini e /etc/php/7.3/fpm/php.ini per ottenere l'ora locale per il tuo fuso orario. Esempio:per New York, la configurazione USA sarebbe

date.timezone = America/New_York

Riavvia php7.3-fpm servizio dopo aver modificato le informazioni sul fuso orario.

root@sms-gw:~# systemctl restart php7.3-fpm.service

Nota: Per l'elenco dei fusi orari, visitare:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Inserisci una pagina di test nella directory principale di NGINX per verificare la configurazione PHP con NGINX

root@sms-gw:~# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

Sfoglia http://192.168.10.38/info.php dalla macchina client

PHP funziona correttamente con NGINX utilizzando il socket PHP-FPM e mostrando le informazioni PHP.

Installa MariaDB:

Avremo bisogno del servizio di database per PlaySMS. Qui stiamo usando MariaDB.

Importa chiave per MariaDB nel keyring apt

root@sms-gw:~# apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

Prepara l'elenco dei sorgenti per MariaDB:crea /etc/apt/sources.list.d/MariaDB.list file comprese le righe sotto

# 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

Aggiorna l'elenco dei repository e installa MariaDB

root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y mariadb-server

Se richiede di fornire la password di root per MariaDB, esegui l'escape. Lo imposteremo in seguito

Abilita e avvia il servizio MariaDB

root@sms-gw:~# systemctl enable mariadb.service
root@sms-gw:~# systemctl start mariadb.service

Esegui mysql_secure_installation comando per impostare la password di root e altre direttive di sicurezza come di seguito

Impostare la password di root? [S/n] S
Imposta la password di root di MariaDB
Rimuovere gli utenti anonimi? [S/n] S
Non consentire l'accesso root da remoto? [S/n] S
Rimuovere il database di test e accedervi? [S/n] S
E infine …
Ricaricare ora le tabelle dei privilegi? [S/n] S

Crea database e utenti PlaySMS in 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

Ora MariaDB è pronto per PlaySMS.

Installazione di PlaySMS:

Installa le dipendenze

root@sms-gw:~# apt-get install -y zip

Aggiungi playsms utente

root@sms-gw:~# adduser playsms --disabled-password --home=/usr/local/playsms/

Crea una directory di registro e imposta l'autorizzazione appropriata per essa

root@sms-gw:~# mkdir /var/log/playsms
root@sms-gw:~# chown nginx:nginx -R /var/log/playsms

Passa a playsms utente

root@sms-gw:~# su - playsms

Scarica e annulla l'ultimo modulo di rilascio ufficiale di 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: Non utilizzare PlaySMS versione inferiore a 1.4.5, quelli hanno una vulnerabilità di sicurezza che è stata risolta nella versione 1.4.5

Crea install.conf file con contenuto sottostante

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"

Esegui install-playsms.sh per installare PlaySMS

Controlla i dati di installazione e conferma ogni passaggio

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"

Esci da playsms shell utente

Imposta il bin corretto e conferma posizione del file in /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';

È inoltre necessario impostare conf corretto posizione del file in /usr/local/playsms/bin/playsmsd

Cambia [vicino alla riga#222 ]

$PLAYSMSD_CONF =”;
A
$PLAYSMSD_CONF ='/usr/local/playsms/etc/playsmsd.conf';

Poiché l'utente/gruppo del nostro server web è nginx , per evitare problemi di autorizzazione, cambieremo la proprietà di tutti i contenuti nella directory principale web di PlaySMS in nginx:nginx

root@sms-gw:~# cd /usr/local/playsms/html/
root@sms-gw:/usr/local/playsms/html# chown nginx:nginx -R ./*

Imposta la nuova directory radice web in /etc/nginx/conf.d/default.conf per PlaySMS

Riavvia il servizio NGINX

root@sms-gw:~# systemctl restart nginx.service

Sfoglia http://192.168.10.38/ dalla workstation client e accedere con Username predefinito:admin, Password:admin

In Il mio account> Preferenze Menu Modifica password predefinita e altre informazioni

Integrazione di PlaySMS con Kannel SMS Gatway:

Vai a Impostazioni> Gestisci gateway e SMSC nel portale web di amministrazione di PlaySMS, fai clic sul segno più (+) accanto all'opzione gateway canale

Inserisci le informazioni di Kannel Gateway come abbiamo configurato in sendsms-user gruppo in kannel.conf. Rif:Installazione del canale

Nota: Queste informazioni sono per l'accesso API HTTP bidirezionale tra Kannel e PlaySMS. Poiché stiamo installando entrambi i servizi sullo stesso server, abbiamo utilizzato localhost per Bearerbox, Invia SMS e URL PlaySMS. Utilizza il tuo indirizzo IP/FQDN host se installi Kannel e PlaySMS su server diversi.

Il Kannel SMSC verrà aggiunto nella scheda SMSC in Impostazioni> Gestisci gateway e SMSC

Vai a Impostazioni> Configurazione principale . Imposta Canale come SMSC predefinito e salva la configurazione.

Invio di SMS da PlaySMS:

Vai a Il mio account> Componi messaggio scrivi un SMS e invia

Registro di accesso al canale:

Telefono destinatario:

Ricezione di SMS in PlaySMS da Kannel:

Per ricevere gli SMS in arrivo dovremo aggiungere l'URL di richiamata di PlaySMS get-url sotto servizio-sms gruppo in kannel.conf file

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"

Troverai gli SMS in arrivo in Rapporti> Sandbox nel portale PlaySMS.

Da Impostazioni> Indirizza SMS in arrivo puoi impostare la destinazione/azione per un SMS in arrivo.

Aggiungi playsmsd per avviare utilizzando systemd :

Crea unità systemd /etc/systemd/system/playsms.service con i contenuti di seguito

[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

Ricarica systemd e abilita/avvia 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

Riferimenti:

https://playsms.org/documentation/
https://mariadb.org/download/?t=repo-config
https://docs.nginx.com/nginx/admin-guide/installing-nginx/


Debian
  1. Come ricompilare il server web nginx su Debian Linux

  2. nginx - 413 Entità richiesta troppo grande

  3. Come risolvere il timeout del gateway 504 nel server Nginx

  4. Come installare Microweber su Debian 9

  5. getpwnam(www) non è riuscito in /etc/nginx/nginx.conf

Come installare Nginx su Debian 11

Gateway SMS Kannel su Debian 10/11

Notifica SMS da Nagios tramite Kannel

Come risolvere il timeout del gateway 504 su Nginx

Come correggere l'errore 502 Bad Gateway su Nginx

Come installare Nginx su Debian 10