SqlChat - NL to SQL: differenze tra le versioni

Da Webmobili Wiki.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 4: Riga 4:


Non fa altro che cercare di interpretare e generare un SQL corrispondente.
Non fa altro che cercare di interpretare e generare un SQL corrispondente.


== Installazione in produzione ==
== Installazione in produzione ==
Riga 36: Riga 35:
Installare '''pnpm''', ''Performant Node Package Manager''
Installare '''pnpm''', ''Performant Node Package Manager''
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
npm install pnpm
npm install pnpm@latest -g
</syntaxhighlight>
</syntaxhighlight>


Riga 122: Riga 121:
</syntaxhighlight>
</syntaxhighlight>
verificare che tutto sia andato bene
verificare che tutto sia andato bene
=== Process Manager ===
Utilizzare '''PM2''' per mantenere il server di produzione in esecuzione e gestire i riavvii automatici
<syntaxhighlight lang="bash">
# Installa PM2
npm install -g pm2
# Avvia il server di produzione
pm2 start npm --name "sqlchat" -- run start
# Salva la configurazione per avviare PM2 al riavvio del sistema
pm2 startup
pm2 save
</syntaxhighlight>

Versione attuale delle 18:40, 14 gen 2025

https://github.com/sqlchat/sqlchat

Si propone di fare query con linguaggio naturale, leggendo la struttura del database.

Non fa altro che cercare di interpretare e generare un SQL corrispondente.

Installazione in produzione

[modifica]

Node.js

[modifica]

Configurare l'ambiente per Node.js

# Scarica l'ultima versione di nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.bashrc

# Installa Node.js 22
nvm install 22
nvm use 22

# Verificare con
node --version

# Verifica i rilasci ufficiali
nvm ls-remote

# eventualmente installare la versione voluta con
nvm install [version_number]

Aggiornare npm , Node Package Manager

npm install npm@latest -g

Installare pnpm, Performant Node Package Manager

npm install pnpm@latest -g

Applicazione

[modifica]

Copiare la cartella principale in un folder tra i siti web, es /var/www/sqlchat.dbdemo47.com

Installa le dipendenze e genera il client

cd /var/www/sqlchat.dbdemo47.com
pnpm i
pnpm update
pnpm prisma generate
# Fa una copia di .env.nodb su .env
cp .env.nodb .env

Aprire il file .env e compilare le variabili d'ambiente OPENAI_API_KEY e NEXTAUTH_SECRET

OPENAI_API_KEY=sk-proj-y_CdQA08RfBBfRT_a7-1-CfyQqWWp8AanB5SaEDvFhpgtKAqb3d1vbGK0loFi8bi7dF__Kv7mrT3BlbkFJ13neJuz>
NEXTAUTH_SECRET=codiceacasonecessario
NEXT_PUBLIC_USE_DATABASE=false

Compilare TypeScript. Questo comando potrebbe dare errore, nel caso recarsi nel codice a correggere.

npx tsc

Esegui lo script build per generare la versione ottimizzata per la produzione

npm run build

Esegui lo script start per avviare il server di Next.js in modalità produzione

npm run start

In questo modo il progetto parte in locale sulla porta 3000

Apache config

[modifica]

Creare un virtualhost che faccia da reverse proxy per node.
/etc/apache2/sites-available/sqlchat.dbdemo47.com.conf

#
# sqlchat.dbdemo47.com
#
<VirtualHost *:80>
        ServerName sqlchat.dbdemo47.com
        Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
        # Basic Auth
        <Location />
                AuthName "Dialog prompt"
                AuthType Basic
                AuthUserFile /var/www/auth/.htpasswd
                Require valid-user
        </Location>

        ServerAdmin info@designbest.com
        ServerName sqlchat.dbdemo47.com

        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Abilitare il modulo proxy_http e poi abilitare il virtualhost

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
# Abilito il virtualhost appena creato
sudo a2ensite sqlchat.dbdemo47.com.conf
sudo systemctl reload apache2

Facciamo anche il certificato SSL.
Dopo aver collegato il DNS alla macchina

sudo certbot --apache -d sqlchat.dbdemo47.com

verificare che tutto sia andato bene

Process Manager

[modifica]

Utilizzare PM2 per mantenere il server di produzione in esecuzione e gestire i riavvii automatici

# Installa PM2
npm install -g pm2
# Avvia il server di produzione
pm2 start npm --name "sqlchat" -- run start
# Salva la configurazione per avviare PM2 al riavvio del sistema
pm2 startup
pm2 save