Tento příspěvek je o integraci SMS brány PlaySMS Kannel na NGINX+Debian
PlaySMS:
PlaySMS je bezplatný a open source software pro správu SMS, webové rozhraní pro SMS brány a hromadné SMS služby. V tomto článku nakonfigurujeme PlaySMS na Debianu 10 s webovým serverem NGINX a databází MariaDB. Ke spuštění webové aplikace PlaySMS a Kannel SMS Gateway budeme potřebovat PHP. Chcete-li nainstalovat Kannel SMS Gateway, přečtěte si tento článek.
Informace o hostiteli prostředí LAB:
IP hostitelského serveru PlaySMS a Kannel Server:192.168.10.38
IP klientského hostitele:192.168.10.31
Instalace NGINX:
Budeme používat předem sestavený balíček Debian z oficiálního úložiště NGINX
Stáhněte si a přidejte balíčky NGINX a podpisový klíč úložiště do kroužku na klíče programu apt:
root@sms-gw:~# wget https://nginx.org/keys/nginx_signing.key
root@sms-gw:~# apt-key add nginx_signing.key
Chcete-li přidat zdrojový seznam NGINX, vytvořte /etc/apt/sources.list.d/nginx.list soubor s níže uvedeným obsahem
deb https://nginx.org/packages/debian/ buster nginx
deb-src https://nginx.org/packages/debian/ buster nginx
Aktualizujte seznam úložišť a nainstalujte NGINX
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y nginx
Povolte a spusťte službu NGINX a ověřte, zda je server NGINX spuštěn:
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
Z klientského počítače:
NGINX Server běží a zobrazuje svou výchozí stránku.
Instalace PHP:
Nyní nainstalujte PHP, PHP-FPM a další balíčky PHP potřebné pro 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
Povolte a spusťte službu PHP7.3-FPM a zkontrolujte stav
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
Konfigurace NGINX pro PlaySMS:
Vytvořte /etc/nginx/fastcgi.conf soubor s níže uvedeným obsahem pomocí 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;
Změňte data www uživatele a skupinu do nginx v /etc/php/7.3/fpm/pool.d/www.conf pro níže uvedené konfigurační direktivy
uživatel =www-data
skupina =www-data
listen.owner =www-data
listen.group =www-data
změnit na
uživatel =nginx
skupina =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
Nahraďte výchozí konfigurační soubor NGINX pro spuštění PlaySMS pomocí 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
Přidejte níže uvedené řádky do /etc/nginx/conf.d/default.conf pro 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;
}
}
Budete muset nastavit místní časové pásmo pro PHP.
Odkomentujte a nastavte date.timezone config pod [Datum] sekce v/etc/php/7.3/cli/php.ini a /etc/php/7.3/fpm/php.ini získat místní čas pro vaše časové pásmo. Příklad:pro New York, USA by konfigurace byla
date.timezone = America/New_York
Restartujte php7.3-fpm službu po změně informací o časovém pásmu.
root@sms-gw:~# systemctl restart php7.3-fpm.service
Poznámka: Seznam časových pásem naleznete na:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Umístěte testovací stránku do kořenového adresáře NGINX a zkontrolujte konfiguraci PHP pomocí NGINX
root@sms-gw:~# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Prohlédněte si http://192.168.10.38/info.php z klientského počítače
PHP funguje správně s NGINX pomocí soketu PHP-FPM a zobrazování informací o PHP.
Nainstalovat MariaDB:
Pro PlaySMS budeme potřebovat databázovou službu. Zde používáme MariaDB.
Importujte klíč pro MariaDB do kroužku na klíče apt
root@sms-gw:~# apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Připravte seznam zdrojů pro MariaDB:vytvořte /etc/apt/sources.list.d/MariaDB.list soubor včetně níže uvedených řádků
# 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
Aktualizujte seznam úložišť a nainstalujte MariaDB
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y mariadb-server
Pokud požádá o zadání hesla uživatele root pro MariaDB, ukončete jej. Nastavíme to později
Povolit a spustit službu MariaDB
root@sms-gw:~# systemctl enable mariadb.service
root@sms-gw:~# systemctl start mariadb.service
Spusťte mysql_secure_installation příkaz k nastavení hesla uživatele root a dalších bezpečnostních direktiv, jak je uvedeno níže
Nastavit heslo root? [A/N] A
Nastavte root heslo MariaDB
Odebrat anonymní uživatele? [A/N] A
Zakázat vzdálené přihlášení root? [A/N] A
Odebrat testovací databázi a přístup k ní? [A/N] A
A nakonec …
Znovu načíst tabulky oprávnění? [A/n] A
Vytvořte databázi PlaySMS a uživatele v 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
Nyní je MariaDB připravena na PlaySMS.
Instalace PlaySMS:
Instalovat závislosti
root@sms-gw:~# apt-get install -y zip
Přidejte hraní uživatel
root@sms-gw:~# adduser playsms --disabled-password --home=/usr/local/playsms/
Vytvořte adresář Log a nastavte mu příslušná oprávnění
root@sms-gw:~# mkdir /var/log/playsms
root@sms-gw:~# chown nginx:nginx -R /var/log/playsms
Přepněte na playsms uživatel
root@sms-gw:~# su - playsms
Stáhněte si a rozbalte nejnovější oficiální formulář vydání 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/
Poznámka: Nepoužívejte PlaySMS verze nižší než 1.4.5, ty mají bezpečnostní chybu, která byla opravena ve verzi 1.4.5
Vytvořte soubor install.conf soubor s níže uvedeným obsahem
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"
Spusťte install-playsms.sh soubor k instalaci PlaySMS
Zkontrolujte Data instalace a potvrďte každý krok
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"
Ukončete playsms uživatelský shell
Nastavte správný přihrádka a conf umístění souboru v /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';
Také je potřeba nastavit správné conf umístění souboru v /usr/local/playsms/bin/playsmsd
Změňte [blízko čáry č. 222 ]
$PLAYSMSD_CONF =”;
Na
$PLAYSMSD_CONF =‘/usr/local/playsms/etc/playsmsd.conf’;
Jako uživatel/skupina našeho webového serveru je nginx , abychom se vyhnuli problémům s oprávněními, změníme vlastnictví veškerého obsahu v kořenovém adresáři webu PlaySMS na nginx:nginx
root@sms-gw:~# cd /usr/local/playsms/html/
root@sms-gw:/usr/local/playsms/html# chown nginx:nginx -R ./*
Nastavte nový webový kořenový adresář v /etc/nginx/conf.d/default.conf pro PlaySMS
Restartujte službu NGINX
root@sms-gw:~# systemctl restart nginx.service
Procházet http://192.168.10.38/ z klientské pracovní stanice a přihlaste se pomocí výchozího uživatelského jména:admin, hesla:admin
V části Můj účet> Předvolby Nabídka Změnit výchozí heslo a další informace
Integrace PlaySMS s Kannel SMS Gatway:
Přejděte na Nastavení> Správa brány a SMSC na webovém portálu pro správu PlaySMS klikněte na znaménko plus (+) vedle možnosti brány kanálu
Vložte informace o bráně Kannel tak, jak jsme nakonfigurovali v sendsms-user skupina v kannel.conf. Ref:Instalace kanálu
Poznámka: Tyto informace jsou pro obousměrný přístup HTTP API mezi Kannel a PlaySMS. Protože obě služby instalujeme na stejný server, použili jsme localhost pro Bearerbox, Send SMS a PlaySMS URL. Pokud instalujete Kannel a PlaySMS na různé servery, použijte svou hostitelskou IP adresu/FQDN.
Kannel SMSC bude přidán na kartu SMSC v Nastavení> Správa brány a SMSC
Přejděte na Nastavení> Hlavní konfigurace . Nastavte Kannel jako Výchozí SMSC a uložte konfiguraci.
Odesílání SMS z PlaySMS:
Přejděte na Můj účet> Napsat zprávu napište SMS a odešlete
Protokol přístupu ke kanálu:
Telefon příjemce:
Příjem SMS ve službě PlaySMS z Kannelu:
Abychom dostali příchozí SMS, budeme muset přidat adresu URL zpětného volání PlaySMS get-url pod službou SMS skupina v kannel.conf soubor
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"
Příchozí SMS najdete v Přehledy> Sandbox na PlaySMS Portal.
Z Nastavení> Směrovat příchozí SMS můžete nastavit cíl/akci pro příchozí SMS.
Přidat playsmsd ke spuštění pomocí systemd :
Vytvořte systémovou jednotku /etc/systemd/system/playsms.service s níže uvedeným obsahem
[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
Znovu načtěte systemd a povolit/spustit 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
Odkazy:
https://playsms.org/documentation/
https://mariadb.org/download/?t=repo-config
https://docs.nginx.com/nginx/admin-guide/installing-nginx/