Pagina 1 di 1
problema con programma in pipeline che non gira via browser
Inviato: giovedì 27 gennaio 2011, 18:01
da muarif
Salve a tutti,
ho installato apache sul mio pc, ho messo su un sito di analisi scientifiche che utilizza una pipeline di programmi tutti gestiti da uno script perl, fin qui tutto a posto
ora ho l'esigenza di utilizzare un altro programma nella mia pipeline che per funzionare ha bisogno di esportare una variabile e un path in bash, (da premettere che i programmi della pipeline vengono avviati in perl tramite il comando system).
In poche parole per far funzionare quest'ultimo programma ho dovuto modificare il file .bashrc aggiungendo alla fine
Codice: Seleziona tutto
RCSBROOT=/home/luciano/maxit-v8.120-prod-bin-linux
export RCSBROOT
PATH=$PATH:$RCSBROOT/bin
export PATH
Il problema è che quando lo script perl chiama questo programma nella sua pipeline, quest'ultimo non gira.
Avrei l'esigenza che tutta la pipeline funzioni senza che nessun utente sia loggato visto che la pipeline viene avviata da un user esterno via browser
Bisogna settare qualche parametro in apache?
Qualcuno può spiegare/aiutarmi?
Grazie 1000
Re: problema con programma in pipeline che non gira via browser
Inviato: giovedì 27 gennaio 2011, 19:12
da Ptah
In pratica vuoi eseguire un programma, via perl, che si trova nella tua home?
Credo che in questo caso Perl giri con privilegi pari a quelli del web server, quindi valuta tu cosa è più comodo: cambiare permessi al web server o spostare il programma dove Apache (e quindi perl) possano lavorare
Re: problema con programma in pipeline che non gira via browser
Inviato: giovedì 27 gennaio 2011, 22:48
da muarif
il programma deve essere eseguito via perl e si trova in una sua directory, questa directory deve essere inserita come variabile d'ambiente bash RCSBROOT e nel PATH sempre in bash, questo perchè vengono usate delle librerie proprietarie del programma avviato tramite perl
Re: problema con programma in pipeline che non gira via browser
Inviato: giovedì 27 gennaio 2011, 23:40
da Ptah
Allora metti le variabili in Perl...
Non conosco affatto Perl ma immagino che abbia, come Php, qualcosa che gli indica dove può "cercare" i file e le eventuali librerie...oppure come detto devono essere esportate per l'utente con cui gira il webserver/perl
Re: problema con programma in pipeline che non gira via browser
Inviato: venerdì 28 gennaio 2011, 11:12
da muarif
oppure come detto devono essere esportate per l'utente con cui gira il webserver/per
se intendi che devo mettere la directory del programma che deve girare via perl, nella cartella /var/www, l'ho fatto e non è cambiato nulla ???
nel mio script perl non faccio altro che dare un comando di sistema che mi fa partire i programmi, naturalmente cercandoli nei path giusti, infatti nella stessa pipeline ci sono altri programmi che girano tranquillamente
credo che il problema sia che quest'ultimo programma che non gira (diamogli un nome: matix), per funzionare correttamente ha bisogno che sia impostata una variabile d'ambiente bash che riconosca la sua directory come root (guarda codice postato all'inizio).
La questione è che via server non c'è nessuno loggato in bash e quindi matix non gira. So che la chiamata via perl è giusta perchè viene prodotto un log da matix.
credo che la soluzione possa trovarsi nel dover impostare quella che è la variabile root in bash, anche in apache, solo che non so come si fa e voglio evitare di fare casini scombussolando tutto il server :-\
c'è qualcuno che può aiutarmi?
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 22:06
da muarif
Credo che il codice che ho postato, quello per settare la variabile e il path, vada nel file per l'user che si collega via web al server, qualcuno può indicarmi qual'è il file da modificare?
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 22:42
da muarif
qualcuno mi può dire se va inserito nel file envvars o in httpd.conf?
con che sintassi?
please help!!!!! :'(
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 22:51
da muarif
ho inserito
Codice: Seleziona tutto
RCSBROOT=/var/www/test/maxit/maxit-v8.120-prod-bin-linux
export RCSBROOT
PATH=$PATH:$RCSBROOT/bin
export PATH
in httpd.conf, ho riavviato apache e mi ha dato
Codice: Seleziona tutto
Syntax error on line 1 of /etc/apache2/httpd.conf:
Invalid command 'RCSBROOT=/var/www/test/maxit/maxit-v8.120-prod-bin-linux', perhaps misspelled or defined by a module not included in the server configuration
qualcuno mi può aiutare con la sintassi?
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 23:03
da Ptah
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 23:26
da muarif
Scusami ma non riesco a trovare il file mod_env.c cui fa riferimento
Re: problema con programma in pipeline che non gira via browser
Inviato: lunedì 31 gennaio 2011, 23:40
da Ptah
No, non c'entra il file che dici. Devi solo specificare le variabili che vuoi esportare nel modo che dice la guida...
Re: problema con programma in pipeline che non gira via browser
Inviato: martedì 1 febbraio 2011, 12:35
da muarif
da shell se digito apache2 -l ho come risultato
Codice: Seleziona tutto
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c
deduco che il modulo mod_env non sia avviato
se digito
sudo apache2 -C LoadModule mod_env modules/mod_env.so
non succede niente, viene in output come se avessi digitato apache2 -h, in pratica l'help
stessa cose se digito
sudo apache2 -C SetEnv RCSBROOT /var/www/test/maxit/maxit-v8.120-prod-bin-linux/
non riesco a capire cosa non va.....
Re: problema con programma in pipeline che non gira via browser
Inviato: martedì 1 febbraio 2011, 12:40
da Ptah
Per caricare il modulo devi agire linkando il relativo file di "load" (ed eventualmente quello di "conf") dalla mods-available alla mods-enabled (dovrebbe essere env.load e basta).
Per poi settare le variabili devi settarle o nel virtual host o nel httpd.conf o comunque in un file che apache possa leggere (es, sempre nella mods-available, crei una env.conf che poi linki nella mods-enabled e la modifichi come opportuno)
Ciao
