installazione portofino su windows

38 views
Skip to first unread message

Emanuele Lai

unread,
Mar 1, 2023, 7:23:02 AM3/1/23
to manydesigns-portofino-italian
Buongiorno a tutti, ho provato ad installare portofino su windows dal file startup.bat, si apre e richiude subito il prompt e su  http://localhost:8080/ mi dice "Impossibile raggiungere il sito".

Alessio Stalla

unread,
Mar 1, 2023, 7:37:58 AM3/1/23
to manydesigns-po...@googlegroups.com
Ciao, che versione di Portofino? Ad ogni modo, nella cartella logs all'interno di Tomcat ogni errore viene registrato, se puoi allegarli qui ci diamo un'occhiata.

On Wed, 1 Mar 2023 at 13:23, Emanuele Lai <laiem...@gmail.com> wrote:
Buongiorno a tutti, ho provato ad installare portofino su windows dal file startup.bat, si apre e richiude subito il prompt e su  http://localhost:8080/ mi dice "Impossibile raggiungere il sito".

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "manydesigns-portofino-italian" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a manydesigns-portofin...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/manydesigns-portofino-italian/914a28aa-9216-44b9-a3ae-b867a53321e4n%40googlegroups.com.

Emanuele Lai

unread,
Mar 1, 2023, 11:53:01 AM3/1/23
to manydesigns-portofino-italian
Ciao, grazie per la risposta. Ho l'ultima versione, scaricata stamattina, portofino-5.3.4. La cartella logs di tomcat, invece, è vuota.

Alessio Stalla

unread,
Mar 2, 2023, 3:23:20 AM3/2/23
to manydesigns-po...@googlegroups.com
Se è vuota significa che non si è nemmeno avviato Tomcat. Che versione di Java hai installata? Se lanci startup.bat da terminale invece che col doppio click, la finestra non si chiude e puoi vedere l'output.

Emanuele Lai

unread,
Mar 2, 2023, 6:19:26 AM3/2/23
to manydesigns-portofino-italian
Mi dice "the catalina_home environment..." (allego screen); credo sia un problema di variabili d'ambiente, ma non so come risolverlo.
screen.jpg

Emanuele Lai

unread,
Mar 2, 2023, 6:51:16 AM3/2/23
to manydesigns-portofino-italian
ho anche provato in un'altra macchina, stessa roba.

Emanuele Lai

unread,
Mar 6, 2023, 4:14:45 AM3/6/23
to manydesigns-portofino-italian
buondì, ci sono novità?

Emanuele Lai

unread,
Mar 6, 2023, 4:27:51 AM3/6/23
to manydesigns-portofino-italian
o perlomeno, qualcuno saprebbe dirmi come settare in windows la CATALINA_HOME environment variable? Grazie in anticipo a chiunque possa aiutarmi.

xiache...@gmail.com

unread,
Mar 6, 2023, 4:53:50 AM3/6/23
to manydesigns-portofino-italian

Alessio Stalla

unread,
Mar 6, 2023, 5:02:15 AM3/6/23
to manydesigns-po...@googlegroups.com
In teoria gli script di startup di Tomcat dovrebbero settarle automaticamente. Non ho una macchina Windows sottomano per fare la prova al momento. Comunque, CATALINA_HOME dovrebbe puntare alla cartella dove è installato Tomcat, cioè apache-tomcat-x.y.z

Emanuele Lai

unread,
Mar 7, 2023, 3:18:24 PM3/7/23
to manydesigns-portofino-italian
Niente, purtroppo i tentativi di settare le variabili d'ambiente sono tutti falliti. Può anche essere colpa mia, però in altre circostanze mi è capitato, su windows, di dover usare una versione precedente del programma, anche molto precedente, perché con le variabili d'ambiente non ne cavavo piede. Mi chiedo se su windows funzioni. Mi servirebbe verificare se sto puntando correttamente alla cartella di Tomcat, perché io ho sia tomcat installato con xampp che tomcat nella cartella di portofino. A quale dei due deve puntare la variabile d'ambiente?

Alessio Stalla

unread,
Mar 8, 2023, 2:57:51 AM3/8/23
to manydesigns-po...@googlegroups.com
Sicuramente deve puntare al Tomcat di Portofino. Può essere che l'installazione di xampp introduca delle variabili d'ambiente che interferiscono con una seconda installazione di Tomcat. Molto probabilmente se anche riuscissi a farlo partire i due Tomcat userebbero le stesse porte e quindi non potrebbero girare in contemporanea senza cambiare le porte nella configurazione di uno dei due.
Se usi Tomcat sotto xampp puoi installare Portofino lì (ti spiego come fare), a patto che sia Tomcat 9. Se non lo usi, e hai xampp solo per PHP, ti consiglierei di disinstallare il Tomcat di xampp. Oppure puoi vedere se trovi su forum ecc. qualcuno che conosce xampp e può spiegarti come installare un Tomcat parallelo a xampp.

Alessio Stalla

unread,
Mar 24, 2023, 5:25:06 AM3/24/23
to manydesigns-po...@googlegroups.com, Emanuele Lai
Ciao, sei riuscito a risolvere?

Io ho provato su Windows, prima senza XAMPP e poi avendo installato XAMPP. Portofino è partito correttamente in entrambi i casi. Può essere che tu abbia settato a mano delle variabili d'ambiente come CATALINA_HOME o JAVA_HOME a valori non corretti, o che abbia un'installazione di Java non standard che Tomcat non riesce a trovare, per esempio. Ti direi di verificare perché io non ho dovuto settare manualmente alcuna variabile.

Federico Maroncelli

unread,
Jul 20, 2023, 7:04:55 AM7/20/23
to manydesigns-portofino-italian
Ciao Alessio,
anch'io stesso problema:

The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program.

Faccio una premessa, ho un pc aziendale e non ho permessi di amministratore.
Grazie

Saluti

Federico

Alessio Stalla

unread,
Jul 20, 2023, 11:12:25 AM7/20/23
to manydesigns-po...@googlegroups.com
Ciao, come puoi vedere da qui https://github.com/apache/tomcat/blob/main/bin/startup.bat Tomcat calcola automaticamente CATALINA_HOME a partire dalla directory in cui è presente startup.bat
Potresti avere già impostato a mano CATALINA_HOME a un valore non valido oppure per qualche motivo lo script non la calcola correttamente (potresti aggiungere un'istruzione che la stampi per vedere che valore ha impostato).
Purtroppo qui Portofino non c'entra niente, è l'installazione di Tomcat il problema. Se non riesci a risolvere possiamo organizzare una breve sessione con Google Meet e Chrome Remote Desktop.

Ciao,
Alessio

Federico Maroncelli

unread,
Jul 20, 2023, 12:27:09 PM7/20/23
to manydesigns-portofino-italian
Ciao Alessio,
ho risolto il problema in questo modo:
  1. Nel search di Windows ho cercato "Modifica Variabili di ambiente per l'account"
  2. Ho inserito una Prima variabile CATALINA_HOME  con percorso di tomcat .... C:\portofino\apache-tomcat-9.0.69
  3. Ho inserito una seconda variabile JAVA_HOME con il percorso di java ...PortableApps\CommonFiles\JDK
  4. ho riavviato tramite CMD il il file bat startup.bat
  5. tramite localhost:8080 ho avviato Portofino 5

Federico Maroncelli

unread,
Jul 20, 2023, 12:36:20 PM7/20/23
to manydesigns-portofino-italian
Solo una cosa....nella versione di Portofino 5.3.4 dopo aver lanciato il Wizard per la connessione al database,
e creato le tabelle, una volta fatto logout non sono più riuscito ad entrare con le nuove credenziali di admin.
Ho seguito la procedura https://github.com/ManyDesigns/Portofino/wiki/Getting-started-with-Portofino-5 e ripristinato il 
Security.groovy di backup ma ripetendo l'operazione non riesco ugualmente ad acceedere.
Ho ripetuto l'operazione con lo stesso db su Portofino 4.2.9 e lì funziona correttamente.

Cosa sto sbagliando?

Federico

Federico Maroncelli

unread,
Jul 20, 2023, 12:39:45 PM7/20/23
to manydesigns-portofino-italian
Ti mando il file  Security.groovy generato dopo il wizard.

package com.manydesigns.portofino.shiro

import com.manydesigns.elements.messages.RequestMessages
import com.manydesigns.portofino.persistence.Persistence
import com.manydesigns.portofino.security.SecurityLogic
import com.manydesigns.portofino.shiro.ModelBasedRealm
import org.apache.commons.lang.StringUtils
import org.apache.shiro.authc.*
import org.apache.shiro.crypto.hash.DefaultHashService
import org.apache.shiro.crypto.hash.HashService
import org.apache.shiro.crypto.hash.format.HashFormat
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired

import javax.annotation.PostConstruct

class Security extends ModelBasedRealm {

    public static final Logger logger = LoggerFactory.getLogger(Security.class);

    protected String adminGroupName = "administrators";

    ////Password Hashing
    protected int hashIterations = 1;
    protected String hashAlgorithm = "plaintext";
    protected HashFormat hashFormat = null;

    @Autowired
    Persistence persistence;

    public Security() {
        if(!"plaintext".equals(hashAlgorithm)) {
            HashService hashService = new DefaultHashService()
            hashService.setHashIterations(hashIterations);
            hashService.setHashAlgorithmName(hashAlgorithm);
            hashService.setGeneratePublicSalt(false); //to enable salting, set this to true and/or call setPrivateSalt
            //Also, if using a public salt, you should uncomment the following, otherwise different Security.groovy
            //instances will fail to match credentials stored in the database
            //hashFormat = new Shiro1CryptFormat()
            setup(hashService, hashFormat);
        }
    }

    @Override
    @PostConstruct
    void configure() {
        try {
            super.configure()
        } catch(IllegalStateException e) {
            logger.warn(e.message, e)
        }
    }

    @Override
    protected Collection<String> loadAuthorizationInfo(Serializable principal) {
        if(!usersGroupsTable || !groupsTable) {
            //Groups were not configured with the wizard. Please place here your own authorization logic.

            /////////////////////////////////////////////////////////////////
            //NB admin is hardcoded for the wizard to work - remove it in production!
            /////////////////////////////////////////////////////////////////
            if("admin" == principal ||
               (principal instanceof Map && "admin" == principal[userNameProperty])) {
                logger.warn("Generated Security.groovy is using the hardcoded 'admin' user; " +
                            "remember to disable it in production!")
                return [SecurityLogic.getAdministratorsGroup(portofinoConfiguration)]
            } else {
                return []
            }
            /////////////////////////////////////////////////////////////////
        } else {
            def groups = super.loadAuthorizationInfo(principal)
            if(!StringUtils.isEmpty(adminGroupName) && groups.contains(adminGroupName)) {
                groups.add(SecurityLogic.getAdministratorsGroup(portofinoConfiguration))
            }
            return groups
        }
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {
        return loadAuthenticationInfo(token)
    }

    AuthenticationInfo loadAuthenticationInfo(UsernamePasswordToken usernamePasswordToken) {
        if(!usersTable) {
            //Users were not configured with the wizard. Please place here your own authentication logic.
            String userName = usernamePasswordToken.username;
            String password = new String(usernamePasswordToken.password)

            /////////////////////////////////////////////////////////////////
            //NB admin is hardcoded for the wizard to work - remove it in production!
            /////////////////////////////////////////////////////////////////
            if("admin" == userName && "admin" == password) {
                logger.warn("Generated Security.groovy is using the hardcoded 'admin' user; " +
                            "remember to disable it in production!")
                RequestMessages.addWarningMessage("Generated Security.groovy is using the hardcoded 'admin' user; " +
                                                  "remember to disable it in production!")
                SimpleAuthenticationInfo info =
                        new SimpleAuthenticationInfo(userName, encryptPassword(password), getName());
                return info
            } else {
                throw new UnknownAccountException()
            }
            /////////////////////////////////////////////////////////////////
        } else {
            return super.loadAuthenticationInfo(usernamePasswordToken)
        }
    }

    @Override
    void changePassword(Serializable user, String oldPassword, String newPassword) {
        if(!usersTable) {
            throw new UnsupportedOperationException("Users table is not configured");
        }
        super.changePassword(user, oldPassword, newPassword)
    }

    @Override
    Map<Serializable, String> getUsers() {
        if(!usersTable) {
            //Users were not configured with the wizard.
            return Collections.emptyMap();
        }
        super.getUsers()
    }

    Serializable getUserById(String encodedId) {
        if(!usersTable) {
            //Users were not configured with the wizard.
            return encodedId;
        }
        super.getUserById(encodedId)
    }

}



Alessio Stalla

unread,
Jul 21, 2023, 4:44:30 AM7/21/23
to manydesigns-po...@googlegroups.com
Ciao, dovresti vedere nei log quando fai login che messaggio hai. Sicuro che l'algoritmo di hash sia "plain text"? Questo significa che password sono in chiaro sul DB.

Federico Maroncelli

unread,
Jul 21, 2023, 5:54:33 AM7/21/23
to manydesigns-portofino-italian
Ciao Alessio,
sto provando a rifare la procedura con portofino 5 ma non riesco a capire il problema, visto che con la stessa identica procedura non ho problemi ad accedere con portofino 4.
Eventualmente possiamo sentirci su google meet?
grazie 
Federico

Alessio Stalla

unread,
Jul 21, 2023, 8:32:14 AM7/21/23
to manydesigns-po...@googlegroups.com
Ormai Portofino 4 e Portofino 5 hanno pochissimo codice in comune, quindi non è strano che si comportino diversamente (e che magari uno dei due abbia un bug e l'altro no).
Su meet se tu ci sei domani possiamo sentirci, altrimenti venerdì prossimo, oggi non riesco.

Reply all
Reply to author
Forward
0 new messages