Configurare MySql in Ubuntu

L’installazione di Mysql avviene con il seguente comando:

sudo apt install mysql-server

L’installazione di Mysql workbench avviene con il seguente comando snap:

sudo apt install mysql-workbench-community

Quando mysql workbench viene installato usando snap, questo esegue l’applicativo in una sandbox che non gli consente di salvare la password nell’ambeiente gnome, di conseguenza vengono segnalati errori durante l’accesso con password al database. Per eliminare la sandbox fornire il seguente comando:

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

Per consentire all’utente root di collegarsi con mysql via rete (127.0.0.1) è necessario fornire la seguente autorizzazione:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Per abilitare mysql con php utilizzare il comando è necessario abilitare il relativo modulo nel file php.ini (/etc/php/8.0/apache2/php.ini):

extension=pdo_mysql.so

sudo apt-get install php8.0-mysql

e poi si abilita il modulo php:

sudo phpenmod pdo_mysql

e si fa il restart di apache2:

sudo systemctl restart apache2

Configurare il framework Yii2 in Ubuntu

L’installazione di Yii2 si esegue utilizzando “composer“. Per installare Composer si esegua il seguente comando:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

In windows si può usare il comodo comando https://getcomposer.org/Composer-Setup.exe

Dopo aver installato composer è preferibile fare l’update:

composer self-update

Il comando per scaricare Yii2 si occupa di creare anche un progetto di base:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Se il comando precedente restituisce l’errore che non è installato l’estensione php-dom, si può installare tale estensione con il comando:

sudo apt install php8.0-dom

Allo stesso modo, potrebbe mancare anche l’estensione php-curl, installabile con il seguente comando:

sudo apt install php8.0-curl

Il comando precedente predisporrà un ambiente con il framework Yii all’interno del direttorio basic.

Istruzioni più dettagliate possono essere trovate alla pagina: https://www.yiiframework.com/doc/guide/2.0/en/start-installation

Per verificare se tutto funziona si può usare il comando seguente:

php yii serve

il quale lancia un server WEB minimale che può essere interrogato all’indirizzo http://localhost:8080/

Nella pagina dei contatti raggiungibile dalla home del sito potrebbe presentarsi un problema con una libreria mancante (gd). In tal caso la libreria può essere installata con il seguente comando:

sudo apt install php8.0-gd

e successivamente va abilitata la relativa estensione all’interno del php.ini, scommentando la riga che contiene extension=gd nel file /etc/php/8.0/apache2/php.ini o anche nel file /etc/php/8.0/cli/php.ini.

Se si desidera installare anche il framework jui per i widget in stile jquery ui, si deve lanciare il comando:

composer require --prefer-dist yiisoft/yii2-jui "*"

dall’interno del direttorio basic.

La stessa cosa va fatta per aggiungere le estensioni widgets. Invece di lanciare a mano il comando composer, è sufficiente inserire le seguenti linee all’interno del file basic/composer.json:

    "yiisoft/yii2-bootstrap5": "@dev",
    "yiisoft/yii2-jui": "*",
    "kartik-v/yii2-datecontrol": "@dev",
    "kartik-v/yii2-widgets": "@dev",
    "kartik-v/yii2-widget-datepicker": "dev-master",
    "twbs/bootstrap-icons":"*" 

e lanciare il comando (dal direttorio basic)

composer update

DatePicker utilizza bootstrap 5, che va instanziato con la seguente riga all’interno di basic/config/params.php

'bsVersion' => '5.x'

Va configurato anche il modulo datecontrol, aggiungendo le seguenti righe (dentro web.php) prima di ‘params’ => …

'modules'    => [
    'datecontrol' => [
        'class'          => 'kartik\datecontrol\Module',
        'widgetSettings' => [
            'displaySettings' => [
                kartik\datecontrol\Module::FORMAT_DATE     => 'dd-MM-yyyy',
                kartik\datecontrol\Module::FORMAT_TIME     => 'hh:mm:ss a',
                kartik\datecontrol\Module::FORMAT_DATETIME => 'dd-MM-yyyy hh:mm:ss a',
            ],
            // format settings for saving each date attribute (PHP format example)
            'saveSettings'    => [
                kartik\datecontrol\Module::FORMAT_DATE     => 'php:U', // saves as unix timestamp
                kartik\datecontrol\Module::FORMAT_TIME     => 'php:H:i:s',
                kartik\datecontrol\Module::FORMAT_DATETIME => 'php:Y-m-d H:i:s',
            ],
        ]
    ], 
],    

le quali indicano al sistema quale deve essere la formattazione per i campi Date e DateTime sia in maschera che durante il salvataggio.

Per sicurezza, ho aggiunto, sempre all’interno di web.php, nell’area components le seguenti righe:

    'formatter' => [
       'dateFormat' => 'dd-MM-Y',
       'datetimeFormat' => 'dd-MM-Y H:i:s',
       'timeFormat' => 'H:i:s',

       'locale' => 'it-IT', //your language locale
       'defaultTimeZone' => 'Europe/Rome', // time zone
    ],  

yii2::DatePicker utilizza bootstrap5 e di conseguenza font-awesome5.

Pertanto, per farlo funzionare è necessario inserire nel layout di base delle views (views/layouts/main.php), nella sezione head il seguente link:

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"/>

A questo punto si possono utilizzare i datepicker di jquery ui all’interno delle pagine, con il seguente comando:

<?= $form->field($model, 'DtCreazione')->widget(DateControl::classname(), [
    'displayFormat' => 'php:d-M-Y H:i:s',
    'type'=>DateControl::FORMAT_DATETIME
    ]); ?>

Configurare openvpn o wireguard su raspberry pi

Per installare WireGuard (consigliato) oppure openvpn si può impartire il seguente comando:

curl -L https://install.pivpn.io | bash

Seguendo le istruzioni a video si arriverà ad una installazione completa di WireGuard.

Successivamente è necessario creare uno o più profili per l’accesso alla vpn da remoto.

Per farlo è sufficiente lanciare il comando:

sudo pivpn add

Questo comando richiederà una serie di parametri, tra cui l’indirizzo IP a cui si collegherà la vpn.

Al termine del comando, nel direttorio configs (/home/pi/configs) sarà presente un file che può essere scambiato con l’utente che si dovrà collegare con la vpn.

Copiare files in Docker

Per visualizzare i container presenti nel sistema si usi il comando

sudo docker ps

Il nome da utilizzare nei comandi docker è quello visibile alla colonna Names

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76b2d76fddc7 mcr.microsoft.com/azure-sql-edge "/opt/mssql/bin/perm…" About an hour ago Up About an h our 1401/tcp, 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp azuresqledge

Nel nostro caso il docker si chiama azuresqledge.

Per copiare un file dal file system al container si può usare il seguente comando:

sudo docker cp /var/dockertmp/preno_LogBackup_2022-08-10_19-06-40.bak azuresqledge:/tmp

Mysql workbench

Se si installa Mysql workbench dalle applicazioni di Ubuntu, questo non sarà in grado di accedere al database. Questo perché le applicazioni installate dal gestore dei pacchetti ubuntu sono in sandbox.

Per farlo funzionare è necessario eseguire il seguente comando:

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

snap – Cannot connect MySQL Workbench to MySQL server – Ask Ubuntu

Come creare un server RTMP

Se siete interessati a creare un server RTMP per ricevere i video trasmessi dalla vostra telecamera o dal vostro smartphone si può utilizzare il server nginx.

Nginx è disponibile anche per windows 10 e si può scaricare a questo indirizzo: Index of /download/ (ecsds.eu).

Dall’elenco si può scegliere quello dal nome nginx 1.7.11.3 Gryphon.zip.

Le istruzioni per l’installazione sono molto semplici e si limitano a scompattare il file zip in un direttorio a scelta, come indicato al seguente sito: DJP – NGINX RTMP Streaming,

Da questa stessa pagina è possibile scaricare Il file nginx.conf da utilizzare come base di partenza. Tale file va copiato nel direttorio conf del server.

Nel file zip sono disponibili anche i due file start.bat e stop.bat che consentono di avviare e fermare il servizio e questi vanno copiati nel direttorio radice dell’installazione.

In sostanza, con nginx è possibile creare un server RTMP che rimanga in ascolto dei flussi da parte di una videocamera e questi flussi possono essere rediretti su altri canali RTMP (come per esempio diversi canali twitch oppure youtube) contemporaneamente.

Io ne farò un uso diverso: lo configurerò in modo da creare un canale hls che potrà essere interrogato da streamlabs, in modo da incanalare il flusso dallo smartphone verso streamlabs.

Infatti, qualunque smartphone android può essere trasformato in videocamera che invia flussi verso server RTMP. Per farlo è sufficiente installare l’app streamlabs dal playstore.

All’interno di streamlabs è necessario creare un collegamento rtmp indicando un URL come quello seguente: rtmp://localhost/show/stream. La porta utilizzata di default è la 1395, quindi si potrà operare anche da internet configurando il port forwarding su quella porta.

Così facendo, il server nginx convertirà il flusso in hls che sarà disponibile all’URL: http://localhost:8080/hls/stream.m3u8. Tale URL andrà impostato dentro streamlabs, attivando un canale “media source” e indicando tale URL come fonte. Ovviamente, essendo tipicamente il server nginx e streamlabs sullo stesso server, si potrà utilizzare l’indirizzo localhost.

Queste istruzioni sono fornite in maniera molto chiara anche al seguente indirizzo: Setting up HLS live streaming server using NGINX – Peer5 P2P Docs.

Il seguente pezzo di nginx.conf configura il servizio rtmp e indica di attivare il canale hls. A tale canale va indicato un path dove il server andrà a salvare i file temporanei che gli serviranno per la cache. Il direttorio hls_path dovrà esistere.

rtmp {
	server {
		listen 1935;
		chunk_size 4096;

		application live {
			live on;

			record off;
			# record all;
			# record_path /recordings;

			# To push to multiple locations, uncomment lines below and substitute in your RTMP URI and stream key
			# push rtmp://server/path/streamkey;
			# push rtmp://server/path/streamkey;

			# HLS options below
			hls on;
			hls_path c:/winapp/nginx/html/hls/;
			hls_fragment 3;
			hls_playlist_length 60;
			hls_continuous on;
		}
	}
}

Il seguente codice configura il server http attraverso il quale sarà disponibile il flusso hls:

http {
    sendfile off;
    tcp_nopush on;
    #aio on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root c:/winapp/nginx/html/;
        }
    }
}

Reazioni avverse al vaccino covid

Riporto il link di AffariItaliani.it in cui si cita la totale non trasparenza dei vertici di AIFA a fornire spiegazioni sui dati delle reazioni avverse dei vaccini covid-19.

Dati in cui sono riportati, oltre alle segnalazioni di eventi avversi, anche decessi avvenuti dopo la vaccinazione (cosa che non dimostra una correlazione ma quasi…).

Aifa, 2 morti al giorno post vaccini. Ma i vertici non rispondono: è crisi – Affaritaliani.it