SqlChat - NL to SQL

Da Webmobili Wiki.
Versione del 14 gen 2025 alle 18:40 di SimoneVincenzi (discussione | contributi) (Installazione in produzione)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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

Node.js

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

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

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

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