Italian community of Lazarus and Free Pascal

Programmazione => Lazarus e il web => Topic aperto da: slapshot - Gennaio 19, 2020, 05:45:44 pm

Titolo: Semplice CGI
Inserito da: slapshot - Gennaio 19, 2020, 05:45:44 pm
Ciao a tutti, per iniziare a capire la programmazione web con Lazarus/FPC sto iniziando dai loro wiki, ovvero da qui: https://wiki.freepascal.org/fcl-web#What_is_fpWeb (https://wiki.freepascal.org/fcl-web#What_is_fpWeb) . Attualmente, sia server che client sono Linux Mint o Ubuntu e per configurare il mio server Apache2 ho seguito questa guida: https://noviello.it/come-avviare-cgi-scripts-in-apache2-su-ubuntu-16-04-17-04/ (https://noviello.it/come-avviare-cgi-scripts-in-apache2-su-ubuntu-16-04-17-04/). Infatti, con lo script pyton riportato nella guida non ho problemi e viene eseguito correttamente.

Tuttavia, se nella directory cgi-bin inserisco il progetto Lazarus creato come CGI Application non viene eseguito. Il log degli errori di apache non lo individua come tale mentre il log normale individua una richiesta GET a cui però viene dato seguito nella pagina del browser con questo errore. Non riesco a capire se possa dipendere da Apache oppure da qualcosa del progetto, anche se non credo perché è identico all'esempio del wiki. Grazie.

Codice: [Seleziona]
cgiproject1: ERROR
The application encountered the following error:
Error: Not found
Stack trace:
$00000000004990C0
$000000000049866F
Titolo: Re:Semplice CGI
Inserito da: xinyiman - Gennaio 20, 2020, 08:03:52 am
Ciao slapshot. E' sempre cosa buona e giusta allegare un esempio che riproponga l'errore in modo da poterti aiutare senza andare a caso.

Oltrtutto dovresti dirci un paio di cosette:

la versione di apache che usi, il sistema operativo e la versione di lazarus/fpc che hai usato.
Titolo: Re:Semplice CGI
Inserito da: slapshot - Gennaio 20, 2020, 12:09:51 pm
Hai ragione, più tardi provo ad allegare il codice. Ho continuato a fare dei test, comunque. Di seguito alcuni dati che possono aiutare.

Server remoto:
16.04.6 Ubuntu Linux LTS.
Apache: Server version: Apache/2.4.18

Server locale su Linux Mint 19:
Apache come da repository (verifico più tardi)
fpc: 3.0.4 - Lazarus 2.1.0 versione 65.xxx (snapshot svn, non ricordo esattamente, potrò essere più preciso in seguito.

Localmente sono riuscito a far andare il CGI semplicemente settando il vecchio meccanismo di routing (anche se non so cosa significhi):
https://wiki.freepascal.org/fpWeb_Tutorial#Routing (https://wiki.freepascal.org/fpWeb_Tutorial#Routing). Ho provato anche copiando via scp l'eseguibile sul server di produzione ma ho comunque lo stesso problema.

Grazie
Titolo: Re:Semplice CGI
Inserito da: slapshot - Gennaio 20, 2020, 01:51:34 pm
Sul pc Mint in locale: apache2 v. 2.4.29
Lazarus 2.1.0: svn co 62568.

Codice lazarus:, unico evento nell'unico WebModule:

Codice: [Seleziona]
procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  AResponse: TResponse; var Handled: Boolean);
begin
  AResponse.ContentType := 'text/html;charset=utf-8';
//  AResponse.Contents.LoadFromFile('codice.html');
  AResponse.Content := '<p>CIAO</p>';

//  AResponse.Contents.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'codice.html');
  Handled := True;

end;                                                             
Titolo: Re:Semplice CGI
Inserito da: xinyiman - Gennaio 20, 2020, 08:06:24 pm
Hai ragione, più tardi provo ad allegare il codice. Ho continuato a fare dei test, comunque. Di seguito alcuni dati che possono aiutare.

Server remoto:
16.04.6 Ubuntu Linux LTS.
Apache: Server version: Apache/2.4.18

Server locale su Linux Mint 19:
Apache come da repository (verifico più tardi)
fpc: 3.0.4 - Lazarus 2.1.0 versione 65.xxx (snapshot svn, non ricordo esattamente, potrò essere più preciso in seguito.

Localmente sono riuscito a far andare il CGI semplicemente settando il vecchio meccanismo di routing (anche se non so cosa significhi):
https://wiki.freepascal.org/fpWeb_Tutorial#Routing (https://wiki.freepascal.org/fpWeb_Tutorial#Routing). Ho provato anche copiando via scp l'eseguibile sul server di produzione ma ho comunque lo stesso problema.

Grazie
Bhe ma allora il problema non è nel tuo programma. Probabilmente l'eseguibile compilato su mint non gira su ubuntu. Quindi ti consiglio di creare una macchina virtuale con ubuntu, compili li il progetto e poi lo trasferisci. Assicurati che se il server è a 64 bit usi una verisone di lazarus a 64 bit.
Titolo: Re:Semplice CGI
Inserito da: slapshot - Gennaio 20, 2020, 09:55:35 pm
Grazie, proverò anche questa soluzione.
Titolo: Re:Semplice CGI
Inserito da: SB - Gennaio 26, 2020, 04:36:01 pm
hai provato a dare all'eseguibile FP l'estensione .cgi?
Titolo: Re:Semplice CGI
Inserito da: slapshot - Gennaio 26, 2020, 05:23:49 pm
hai provato a dare all'eseguibile FP l'estensione .cgi?
Sì, ho provato. Devo ancora capire il problema dov'è.
Titolo: Re:Semplice CGI
Inserito da: xinyiman - Gennaio 26, 2020, 09:56:56 pm
Il mio consiglio lo hai provato?
Titolo: Re:Semplice CGI
Inserito da: slapshot - Gennaio 26, 2020, 10:00:52 pm
Non ancora ! Ho installato localmente una vm con Ubuntu Xenial 16.04 ma poi non ho avuto modo di metterci le mani su per produrre l'eseguibile. Tra l'altro credo dovrò reinstallare perché c'è stato qualche problema sul file system.

Sto studiando anche Mormot, mi sembra molto interessante. Qualcuno lo conosce o lo ha usato ?

Grazie 1k !