Suchen

Wordpress und Amazon AI in der Praxis, Teil 1 Blog mit Text-to-Speech ausstatten

| Redakteur: Stephan Augsten

In diesem zweiteiligen Workshop zeigt der Autor Thomas Drilling, wie sich ein Wordpress-Blog mit Hilfe von „Amazon AI“ unter anderem mit einer Text-to-Speech-Engine ausstatten lässt. Der erste Teil befasst sich dabei im Wesentlichen mit der „Wordpress“-Bereitstellung auf „EC2“.

Wordpress-Setup mit Verbindung zur Datenbank.
Wordpress-Setup mit Verbindung zur Datenbank.
(Bild: Drilling / Wordpress)

Dieses Tutorial zeigt, wie man das Amazon Polly für Wordpress-Plug-in in ein Wordpress-Blog auf Basis einer EC2-Instanz installiert und konfiguriert. Das Plug-in erlaubt das Erstellen einer Audio-Version aller Blog-Einträge. Es übersetzt diese in andere Sprachen und erstellt auf Wunsch auch Podcasts.

Zur Erinnerung: „Amazon Polly“ ist ein Dienst, der Text in lebensechte Sprache verwandelt. Anwender können auf Basis dutzender Stimmen in einer Vielzahl von Sprachen die gewünschte Stimme auswählen und ansprechende Sprachanwendungen erstellen, die in vielen verschiedenen Ländern funktionieren.

Das Amazon AI-Plug-in für Wordpress ist eine inzwischen im öffentlichen Plug-in-Verzeichnis vorhandene Beispielanwendung, die zeigt, wie Wordpress-Ersteller geschriebenen Inhalten mit Amazon Polly auf einfache Weise Text-to-Speech-Funktionen hinzufügen können. Nutzer können zum Beispiel einen Audio-Feed für textbasierten Inhalt erstellen und in einen eingebetteten Player einfügen, um die Barrierefreiheit ihrer Wordpress-Site zu erhöhen.

Mit dem Beispielcode lassen sich zudem Podcasts direkt von der jeweiligen Site aus veröffentlichen und für Hörer verfügbar machen. Außerdem erlaubt das Plug-in die Übersetzung eines Posts von einer Sprache in eine andere mit Amazon Translate. Dieser neuronale maschinelle Übersetzungsdienst liefert eine schnelle, qualitativ hochwertige und kostengünstige Sprachübersetzung.

Über Amazon Translate lassen sich Inhalte wie Websites und Anwendungen für internationale Benutzer lokalisieren und große Textmengen effizient übersetzen. Da eine Web-Suche heute immer häufiger auch über Sprache erfolgt, ist es wichtig, dass mehr Inhalte einer Website in Audioformaten vorliegen.

Bereitstellen von Wordpress auf AWS

Anwender können das Amazon Polly für Wordpress-Plug-in zu einer Wordpress-Installation hinzufügen, die auf einer EC2-Instanz, auf „AWS Lightsail“ oder einem anderen Host außerhalb von AWS eingerichtet ist. Allerdings sind Installation, Betrieb, Verwaltung und die Integrationsmöglichkeiten von Wordpress unter AWS bei Weitem einfacher und vielfältiger, als On-Premises oder in einer anderen Cloud.

Doch auch innerhalb von AWS gibt es zahlreiche Möglichkeiten, eine Wordpress-Installation zu erstellen, wobei EC2 in Handarbeit und Lightsail nur zwei Beispiele sind. Auch in den Mustervorlagen für AWS Cloud Formation finden sich zwei Beispiel-Templates für Wordpress auf einer Single-Instanz und Last-ausgeglichen mit „Multi-AZ-RDS“-Datenbank.

Ferner lässt sich Wordpress relativ einfach auf „Amazon Elastic Beanstalk“ bereitstellen. Für diesen Workshop wird eine EC2-Instanz mit Amazon Linux verwendet und Wordpress größtenteils direkt im Rahmen des Bootstrapping mit Hilfe eines einfachen User-Data-Scripts bereit gestellt, das zum Beispiel so aussehen könnte:

#!/bin/bash
# Gilt für Fuer Amazon Linux 1 mit MySQL
yum update –y
yum install -y httpd24 php70 mysql56-server php70-mysqlnd
cd /var/www/html
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -r wordpress/* /var/www/html/
rm -rf wordpress
rm -rf latest.tar.gz
chmod -R 755 wp-content
chown -R apache:apache wp-content
service httpd start
sudo service mysqld start
chkconfig httpd on

Vor dem Bereitstellen der Instanz muss allerdings eine IAM-Rolle mit passenden Berechtigungen für Polly vorbereitet werden, welche beim Bereitstellen der Instanz für diese verwendet werden soll.

Erstellen der AWS-Berechtigungen für Wordpress

Läuft die EC2-Instanz mit Wordpress und einer öffentlichen IP-Adresse – für den produktiven Einsatz ist es natürlich immer besser, in AWS eine ElasticIP zu verwenden – muss man in IAM eine neue IAM-Richtlinie mit folgenden Inhalt erstellen:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Permissions1",
         "Effect": "Allow",
         "Action": [
            "polly:SynthesizeSpeech",
            "s3:HeadBucket",
            "polly:DescribeVoices"
         ],
      "Resource": "*"
      },
      {
         "Sid": "Permissions2",
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket",
            "s3:GetBucketAcl",
            "s3:GetBucketPolicy",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:CreateBucket",
            "s3:PutObjectAcl"
         ],
         "Resource": "arn:aws:s3:::<audio_for_wordpress*>"
      }
   ]
}

Diese ist unter den Namen „PollyForWordpressPolicy“ abzuspeichern. Die folgende Bildergalerie zeigt, wie wir mit der IAM-Rolle weiter verfahren.

Bildergalerie

Wordpress auf EC2

Im Rahmen des Setup-Prozesses von Wordpress erfolgt die Erstkonfiguration.
Im Rahmen des Setup-Prozesses von Wordpress erfolgt die Erstkonfiguration.
(Bild: Drilling / Wordpress)

Wurde die neue EC2-Instanz mit Wordpress und öffentlicher IP-Adresse erfolgreich bereitgestellt und gestartet, muss Wordpress initial konfiguriert werden. Dieser Schritt unterscheidet sich nicht wesentlich von der AWS-Konfiguration on-premises, allerdings sind in Amazon Linux auf EC2 einige Schritte möglicherweise etwas anders, als auf Debian-, Ubuntu-, Suse- oder RHEL-Basis.

In unserem Beispiel wird hier die erforderliche „MySQL“-Datenbank, wie am User-Data-Script zu erkennen ist, direkt auf der Instanz selbst betrieben. Als Betriebssystem kommt Amazon Linux (nicht Amazon Linux 2) zum Einsatz. Das ist wichtig; denn Amazon Linux verwendet beispielsweise „systemd“ statt „upstart“.

Im Netz kursieren aber auch zahlreiche Tutorials für eine LAMP-Installation auf Basis von Amazon Linux 2 und „MariaDB“. Die Default-Credentials für MySQL lauteten übrigens root/<ohne Passwort>. Allerdings existiert die Datenbank für Wordpress noch nicht.

Exkurs PhpMyAdmin

Installation von PhpMyAdmin.
Installation von PhpMyAdmin.
(Bild: Drilling / AWS)

Wer sich das Anpassen der Credentials und der Datenbank über ein Webinterface vereinfachen möchte, kann zunächst „PhpMyAdmin“ installieren, wozu man sich per SSH mit der Console der Instanz verbinden muss. Die Installation von PHP erfolgt dann mit:

sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 –y

Nach einem Neustart von Apache mittels …

sudo service httpd restart

… navigiert man mit …

cd /var/www/html

… ins www-Root und installiert phymyadmin am schnellsten mit:

sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Dann legt man einen PhpMyAdmin-Ordner an und extrahiert das Paket in diesen.

sudo mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1

Anschließend ist PhpMyAdmin unter der URL http://<IP-EC2-Instanz/phpmyadmin verfügbar. Wer PhpMyAdmin nicht benötigt, kann die erforderliche Datenbank für Wordpress aber auch wie folgt mit der MySQL-Console anlegen:

Wordpress-Setup mit Verbindung zur Datenbank.
Wordpress-Setup mit Verbindung zur Datenbank.
(Bild: Drilling / Wordpress)

mysql -u root -p
mysql> CREATE DATABASE blog;

Infolgedessen sollte im Wordpress-Setup auch die Verbindung zur Datenbank funktionieren, wie im vorangestellten Bild zu sehen. Die abgebildete wp-config.php kopiert man am besten in die Zwischenablage und fügt sie von dort direkt „in“ die EC2-Instanz im entsprechenden Verzeichnis ein. Das ist einfacher, als die mitgelieferte wp-config.php.sample anzupassen.

Konfiguration von Wordpress und Anmeldedialog.
Konfiguration von Wordpress und Anmeldedialog.
(Bild: Drilling / Wordpress)

Mit einem Klick auf „Run the installation“ wird nun die Wordpress-Installation eingeleitet. Nach dem Anpassen der wp-config.php wird Wordpress wie üblich direkt im Webinterface konfiguriert, danach meldet man sich mit dem konfigurierten User an.

(ID:46262210)