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/