Kategorien
Amazon AWS

FFmpeg installieren auf Amazon Linux 2

Mit folgenden Befehlen kann man ffmpeg unter Amazon Linux 2 installieren:

sudo su
curl -o /tmp/ffmpeg.tar.xz https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.2.2-amd64-static.tar.xz
tar -xvf /tmp/ffmpeg.tar.xz -C /usr/local/bin
ln -s /usr/local/bin/ffmpeg-4.2.2-amd64-static/ffmpeg /usr/bin/ffmpeg
ln -s /usr/local/bin/ffmpeg-4.2.2-amd64-static/ffprobe /usr/bin/ffprobe
Kategorien
Amazon AWS WordPress

WordPress Bitnami Banner entfernen auf AWS AMI

Um den Bitnami Banner entfernen zu können, soll man per SSH einen Konsolenbefehl ausführen:

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1

dies führte bei mir zu einer Fehlermeldung, dass die Datei bnconfig nicht vorhanden ist:

sudo: /opt/bitnami/apps/wordpress/bnconfig: command not found

Die Ursache ist, dass die Datei standradmäßig erst deaktiviert ist, es gibt eine /opt/bitnami/apps/wordpress/bnconfig.disabled

Diese muss aktiviert werden, indem sie umbenannt wird nach bnconfig:

sudo mv /opt/bitnami/apps/wordpress/bnconfig.disabled /opt/bitnami/apps/wordpress/bnconfig

Danach kann der Banner erfolgreich entfernt werden:

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
Kategorien
CSS HTML5

Arial kostenlos als Webfont einbinden auf einer Webseite

Wenn man gern Arial als Schriftart auf seiner Webseite einbinden will und möchte, dass auch alle Besucher diese Schriftart verwenden sollen, auch die, die es nicht installiert haben, muss man den Font als Webfont einbinden.

Das Problem ist, dass Arial nicht frei verfügbar ist, sondern eine Lizenz dafür erworben werden muss: kostenpflichtiger Download.

Wenn man gern ohne Bezahlung Arial verwenden will, dann kann man einfach die Liberation Sans als Ersatz nehmen, welche fast genauso aussieht und kostenlos ist: Download Liberation Sans.

Diese lässt sich dann als Webfont einbinden:

@font-face {
  font-family: liberation_sans;
  src: url('/assets/fonts/liberation_sans/LiberationSans-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: liberation_sans;
  src: url('/assets/fonts/liberation_sans/LiberationSans-Bold.ttf') format('truetype');
  font-weight: bold;
  font-style: normal;
}

@font-face {
  font-family: liberation_sans;
  src: url('/assets/fonts/liberation_sans/LiberationSans-Italic.ttf') format('truetype');
  font-weight: normal;
  font-style: italic;
}


@font-face {
  font-family: liberation_sans;
  src: url('/assets/fonts/liberation_sans/LiberationSans-BoldItalic.ttf') format('truetype');
  font-weight: bold;
  font-style: italic;
}

body{
    font-family: liberation_sans;
}
Kategorien
Symfony

Symfony Cache mit Datenbank

Die Symfony Cache Komponente besitzt eine große Zahl von möglichen Adaptern zum Cachen von Informationen.

Zum Cachen in der Datenbank kann man den folgenden PdoAdapter für Doctrine verwenden und folgender Maßen konfigurieren:

#config/packages/framework.yaml
framework:
    cache:
        pools:
            app:
                adapter: AppCache
#config/services.yaml
AppCache:
  class: Symfony\Component\Cache\Adapter\PdoAdapter
  arguments:
    - '@doctrine.dbal.default_connection'

Damit erzeugt Symfony eine Datenbank Tabelle innerhalb der default Datenbank Verbindung für die Cache Einträge.

Dies hat besonders Performancegewinne und ist übersichtlicher im Vergleich zu  der Default-Filesystem-Variante. Besonders ist dies für eine Docker Umgebung zu empfehlen, weil das langsame Dateisystem nicht verwnedet werden muss.

Kategorien
Symfony

Symfony 5 Exception „The annotation was never imported.“

Ein Grund der Fehlermeldung kann sein, dass es tatsächlich eine Annotation ist, die ungültig ist, sich aber im vendor Code befindet. Dann sollte man diese ignorieren.

Fehlermeldung:

Doctrine\Common\Annotations\AnnotationException : [Semantical Error] The annotation "@suppress" in method Monolog\Formatter\LineFormatter::normalizeException() was never imported. Did you maybe forget to add a "use" statement for this annotation?

Sollte man die Annotation ignorieren mit dem statischen Aufruf von in der config/bootstrap.php:

AnnotationReader::addGlobalIgnoredName('suppress');

 

Kategorien
Angular

Protractor Konfiguration Headless Chrome und Firefox

Um Selenium Tests in Firefox und Chrome im Headless Modus auszuführen mit Protractor, kann man folgende Konfiguraton verwenden in der protractor.conf:

exports.config = {
....
  multiCapabilities: [
    {
      browserName: 'chrome',
      chromeOptions: {
        'args': ['--headless']
      },
    },
    {
      browserName: 'firefox',
      firefoxOptions: {
        args: ['--headless']
      },
      'moz:firefoxOptions': {
        args: ['--headless']
      }
    },
  ],
...
};
Kategorien
Jenkins

Jenkins mit selbst signiertem SSL Zertifikat absichern

Damit Jenkins unter Linux nur noch über HTTPS erreichbar ist, muss man sich zuerst ein SSL Zertifikat erzeugen am besten im Ordner:

mkdir /var/lib/jenkins/ssl_cert/
cd /var/lib/jenkins/ssl_cert/

openssl req -newkey rsa:2048 -x509 -keyout cakey.pem -out cacert.pem -days 3650

Dann kann man dieses Zertifikat umwandeln für den Java Key Store:

openssl pkcs12 -export -in cacert.pem -inkey cakey.pem -out identity.p12 -name jenkins
keytool -importkeystore -destkeystore identity.jks  -srckeystore identity.p12 -srcstoretype PKCS12

und in den Java Key Store importieren:

keytool -import -file cacert.pem -keystore trust.jks

Am Ende muss nur noch die Config angepasst werden:

sudo vi /etc/sysconfig/jenkins

mit den Werten:

JENKINS_PORT="-1"

JENKINS_HTTPS_PORT="8443"

JENKINS_HTTPS_KEYSTORE="/var/lib/jenkins/ssl_cert/identity.jks"

JENKINS_HTTPS_KEYSTORE_PASSWORD="YOUR_PASSWORD_HERE"

JENKINS_HTTPS_LISTEN_ADDRESS="0.0.0.0"

Und der Service neu gestartet werden:

chown -R jenkins: /var/lib/jenkins/ssl_cert/*
chmod 600 /var/lib/jenkins/ssl_cert/*

sudo systemctl restart jenkins
Kategorien
Jenkins

Jenkins Ant build failed: exec returned 255

Wenn der Ant Build im Jenkins Server mit der sehr nichts sagenden Fehlermeldung fehlschlägt:

build.xml:103: exec returned: 255

dann kann dies daran liegen, dass nicht genug RAM zur Verfügung steht.

 

Kategorien
Amazon AWS PHP

PHP eigene Metriken in AWS Cloudwatch erstellen

Um in CloudWatch eigene Metriken anzulegen, um z.B. Alarm auszulösen und Monitoring zu betreiben mit den Daten der Applikation, kann man mit dem aws-php-sdk den folgenden Code verwenden:

 $client = new CloudWatchClient([
        'region' => 'eu-central-1',
        'version' => '2010-08-01',
        'credentials' => [
            'key'    => 'xxx',
            'secret' => 'xxx
        ],
    ]);
}
$result = $this->client->putMetricData(array(

    'Namespace' => 'MyProject',
    'MetricData' => array(
        array(
            'MetricName' => 'MyMetric,
            'Timestamp' => time(),
            'Value' => 1,
            'Unit' => 'Count',
            'Dimensions' => array(
                array(
                    'Name' => 'Environment',
                    'Value' => 'test',
                ),
            ),
        )
    )
));
Kategorien
Docker

Docker Image build auf einmal keine Internetverbindung mehr

Wenn man keine Packete installieren kann bei einem Build, kann man versuchen, die docker-machine neuzustarten:

docker-machine restart