In diesem Beitrag geht es um die PlaySMS-Kannel-SMS-Gateway-Integration auf NGINX+Debian
PlaySMS:
PlaySMS ist eine kostenlose Open-Source-SMS-Verwaltungssoftware, eine Webschnittstelle für SMS-Gateways und Massen-SMS-Dienste. In diesem Artikel konfigurieren wir PlaySMS auf Debian 10 mit NGINX-Webserver und MariaDB-Datenbank. Wir benötigen PHP, um die PlaySMS-Webanwendung und das Kannel SMS Gateway auszuführen. Um Kannel SMS Gateway zu installieren, lesen Sie bitte diesen Artikel.
Informationen zum Host der LAB-Umgebung:
PlaySMS- und Kannel-Server-Host-IP:192.168.10.38
Client-Host-IP:192.168.10.31
Installation von NGINX:
Wir werden das vorgefertigte Debian-Paket aus dem offiziellen NGINX-Repository verwenden
Laden Sie die NGINX-Pakete und den Repository-Signaturschlüssel herunter und fügen Sie sie dem Schlüsselring des apt-Programms hinzu:
root@sms-gw:~# wget https://nginx.org/keys/nginx_signing.key
root@sms-gw:~# apt-key add nginx_signing.key
Um eine NGINX-Quellliste hinzuzufügen, erstellen Sie /etc/apt/sources.list.d/nginx.list Datei mit untenstehendem Inhalt
deb https://nginx.org/packages/debian/ buster nginx
deb-src https://nginx.org/packages/debian/ buster nginx
Repository-Liste aktualisieren und NGINX installieren
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y nginx
Aktivieren und starten Sie den NGINX-Dienst und vergewissern Sie sich, dass der NGINX-Server betriebsbereit ist:
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
Vom Client-Rechner:
NGINX Server wird ausgeführt und zeigt seine Standardseite an.
Installation von PHP:
Installieren Sie jetzt PHP, PHP-FPM und andere für PlaySMS erforderliche PHP-Pakete
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
Aktivieren und starten Sie den PHP7.3-FPM-Dienst und prüfen Sie den Status
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
NGINX-Konfiguration für PlaySMS:
Erstellen Sie /etc/nginx/fastcgi.conf Datei mit untenstehendem Inhalt mit 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;
www-data ändern Benutzer und Gruppe zu nginx in /etc/php/7.3/fpm/pool.d/www.conf für die folgenden Konfigurationsanweisungen
Benutzer =www-Daten
Gruppe =www-Daten
listen.owner =www-Daten
listen.group =www-Daten
zu
ändern
Benutzer =nginx
Gruppe =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
Ersetzen Sie die NGINX-Standardkonfigurationsdatei, damit PlaySMS mit FPM/FastCGI ausgeführt wird
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
Fügen Sie die folgenden Zeilen zu /etc/nginx/conf.d/default.conf hinzu für 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;
}
}
Sie müssen Ihre lokale Zeitzone für PHP einstellen.
Entkommentieren Sie und legen Sie date.timezone fest config-Direktive unter [Datum] Abschnitt in /etc/php/7.3/cli/php.ini und /etc/php/7.3/fpm/php.ini um die Ortszeit für Ihre Zeitzone zu erhalten. Beispiel:für New York, USA wäre die Konfiguration
date.timezone = America/New_York
Starten Sie php7.3-fpm neu Dienst nach dem Ändern der Zeitzoneninformationen.
root@sms-gw:~# systemctl restart php7.3-fpm.service
Hinweis: Eine Zeitzonenliste finden Sie unter:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Platzieren Sie eine Testseite im NGINX-Stammverzeichnis, um die PHP-Konfiguration mit NGINX zu überprüfen
root@sms-gw:~# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Durchsuchen Sie http://192.168.10.38/info.php vom Client-Rechner
PHP funktioniert ordnungsgemäß mit NGINX unter Verwendung des PHP-FPM-Sockets und zeigt PHP-Informationen an.
Installieren Sie MariaDB:
Wir benötigen einen Datenbankdienst für PlaySMS. Hier verwenden wir MariaDB.
Schlüssel für MariaDB in apt keyring importieren
root@sms-gw:~# apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Quellliste für MariaDB vorbereiten:Erstellen Sie /etc/apt/sources.list.d/MariaDB.list Datei einschließlich der folgenden Zeilen
# 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
Repository-Liste aktualisieren und MariaDB installieren
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install –y mariadb-server
Wenn Sie aufgefordert werden, das Root-Passwort für MariaDB anzugeben, maskieren Sie es. Wir werden es später einstellen
MariaDB-Dienst aktivieren und starten
root@sms-gw:~# systemctl enable mariadb.service
root@sms-gw:~# systemctl start mariadb.service
Führen Sie mysql_secure_installation aus Befehl zum Festlegen des Root-Passworts und anderer Sicherheitsanweisungen wie unten
Root-Passwort setzen? [J/n] J
Legen Sie das MariaDB-Root-Passwort fest
Anonyme Benutzer entfernen? [J/n] J
Root-Anmeldung aus der Ferne verbieten? [J/n] J
Testdatenbank und Zugriff darauf entfernen? [J/n] J
Und schlussendlich …
Berechtigungstabellen jetzt neu laden? [J/n] Ja
Erstellen Sie eine PlaySMS-Datenbank und einen Benutzer 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
Jetzt ist MariaDB bereit für PlaySMS.
Installation von PlaySMS:
Abhängigkeiten installieren
root@sms-gw:~# apt-get install -y zip
Füge Playsms hinzu Benutzer
root@sms-gw:~# adduser playsms --disabled-password --home=/usr/local/playsms/
Protokollverzeichnis erstellen und entsprechende Berechtigung dafür festlegen
root@sms-gw:~# mkdir /var/log/playsms
root@sms-gw:~# chown nginx:nginx -R /var/log/playsms
Wechseln Sie zu Playsms Benutzer
root@sms-gw:~# su - playsms
Laden Sie das neueste offizielle PlaySMS-Veröffentlichungsformular herunter und entpacken Sie es 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/
Hinweis: Verwenden Sie keine PlaySMS-Versionen unter 1.4.5, diese haben eine Sicherheitslücke, die in Version 1.4.5 behoben wurde
Erstellen Sie install.conf Datei mit folgendem Inhalt
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"
Führen Sie install-playsms.sh aus Datei zum Installieren von PlaySMS
Überprüfen Sie die Installationsdaten und bestätigen Sie jeden Schritt
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"
Verlassen Sie playsms Benutzer-Shell
Stellen Sie den richtigen Bin ein und conf Dateispeicherort 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';
Außerdem muss die richtige conf eingestellt werden Dateispeicherort in /usr/local/playsms/bin/playsmsd
Ändern Sie [in der Nähe von Zeile 222 ]
$PLAYSMSD_CONF =”;
Zu
$PLAYSMSD_CONF =‘/usr/local/playsms/etc/playsmsd.conf’;
Als unser Webserver-Benutzer/Gruppe ist nginx , um Berechtigungsprobleme zu vermeiden, ändern wir den Besitz für alle Inhalte im PlaySMS-Webstammverzeichnis auf nginx:nginx
root@sms-gw:~# cd /usr/local/playsms/html/
root@sms-gw:/usr/local/playsms/html# chown nginx:nginx -R ./*
Legen Sie ein neues Web-Root-Verzeichnis in /etc/nginx/conf.d/default.conf fest für PlaySMS
Starten Sie den NGINX-Dienst neu
root@sms-gw:~# systemctl restart nginx.service
Durchsuchen Sie http://192.168.10.38/ von der Client-Arbeitsstation aus und melden Sie sich mit dem Standard-Benutzernamen:admin, Passwort:admin
anUnter Mein Konto> Einstellungen Menü Standardkennwort und andere Informationen ändern
Integration von PlaySMS mit Kannel SMS Gateway:
Gehen Sie zu Einstellung> Gateway und SMSC verwalten Klicken Sie im PlaySMS-Admin-Webportal auf das Pluszeichen (+) neben der Option Kannel Gateway
Geben Sie die Kannel-Gateway-Informationen so ein, wie wir sie in sendsms-user konfiguriert haben Gruppe in kannel.conf. Siehe:Kannel-Installation
Hinweis: Diese Informationen gelten für den bidirektionalen HTTP-API-Zugriff zwischen Kannel und PlaySMS. Da wir beide Dienste auf demselben Server installieren, haben wir localhost verwendet für Bearerbox, SMS senden und PlaySMS-URL. Bitte verwenden Sie Ihre Host-IP-Adresse/FQDN, wenn Sie Kannel und PlaySMS auf unterschiedlichen Servern installieren.
Der Kannel SMSC wird unter der Registerkarte SMSC in Einstellungen hinzugefügt> Gateway und SMSC verwalten
Gehen Sie zu Einstellung> Hauptkonfiguration . Legen Sie Kannel fest als Standard-SMSC und speichern Sie die Konfiguration.
SMS von PlaySMS senden:
Gehen Sie zu Mein Konto> Nachricht verfassen, SMS schreiben und versenden
Kannel-Zugriffsprotokoll:
Telefon des Empfängers:
SMS in PlaySMS von Kannel empfangen:
Um eingehende SMS zu erhalten, müssen wir die PlaySMS-Rückruf-URL get-url hinzufügen unter sms-service Gruppe in kannel.conf Datei
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"
Sie finden eingehende SMS in Berichte> Sandbox im PlaySMS-Portal.
Unter Einstellungen> Eingehende SMS weiterleiten Sie können Ziel/Aktion für eine eingehende SMS festlegen.
Fügen Sie playsmsd hinzu zum Starten mit systemd :
Erstellen Sie die systemd-Unit /etc/systemd/system/playsms.service mit untenstehendem Inhalt
[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
Laden Sie systemd neu und aktivieren/starten Sie 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
Referenzen:
https://playsms.org/documentation/
https://mariadb.org/download/?t=repo-config
https://docs.nginx.com/nginx/admin-guide/installing-nginx/