(Italiano) WeDeploy: Come installare Liferay 7 Community Edition GA4
Se sei arrivato fino a qui, immagino che tu sappia i fondamenti di WeDeploy e quello che potresti farci. Molto bene. Pensiamo subito a come poter raggiungere il nostro obiettivo: Installare Liferay 7 come servizio su WeDeploy.
1. WeDeploy: la scelta del metodo di deploy
L'operazione di deploy su WeDeploy è davvero semplice e immediata. WeDeploy supporta diversi metodi di deploy, quello utilizzato da noi è basato su Docker. Per quest'occasione ho preparato un'immagine docker che utilizzeremo per installare la nostra istanza di Liferay 7 CE GA4 su WeDeploy.
WeDeploy offre OOTB l'opportunità d'installare un'istanza di Liferay DXP in versione trial della durata di 15 giorni.
2. Cosa serve
Prima di proseguire oltre, se non disponete di un account su WeDeploy, ne consiglio la creazione Get Started, It’s Free. La creazione del vostro account è ancora più immediata nel caso voi abbiate un account GitHub o Google.
La nostra interazione con WeDeploy avverrà esclusivamente utilizzando il tool Command Line (CLI) che possiamo utilizzare per eseguire i seguenti task:
- Deploying
- Checking logs
- Setting environment variables
- Managing custom domains
La CLI (Command Line Interface) di WeDeploy è disponibile sia per i sistemi Unix-like come macOS o Linux sia per i sistemi Windows. Tutti i dettagli sulla procedura di installazione sono indicati nella sezione Download the CLI della documentazione di WeDeploy.
L'ultima versione della CLI rilasciata è la 1.1.4. Potete verificare la vostra versione della CLI tramite il comando we version
.
3. Preparazione al deploy di Liferay
Sul nostro account WeDeploy andremo a installare Liferay 7 Community Edition GA4 basandoci su un'immagine docker creata ad hoc per WeDeploy. Le caratteristiche principali dell'immagine sono:
- basata sul bundle Liferay 7 CE GA4 - Tomcat - HSQL
- directory installazione /usr/local/liferay-ce-portal-7.0-ga4
- root data directory /opt/liferay
- supporto per l'hot-deploy
- configurazioni osgi via cfg (o config) file
- personalizzazione della configurazione tramite meccanismo di override dei properties file
- esposizione della Gogo Shell su 0.0.0.0:11311
L'immagine di docker che utilizzeremo si chiama liferay-portal versione 7-ce-ga4-tomcat-hsql-v1.7. Il repository GitHub docker-liferay-portal contiene i sorgenti dell'immagine docker. Il repository è un fork dell'ottimo lavoro svolto da Manuel de la Peña che ho successivamente personalizzato per l'utilizzo su WeDeploy.
Adesso che abbiamo definito l'immagine da utilizzare, non dobbiamo far altro che preparare il file wedeploy.json che conterrà la definizione del nuovo servizio liferay (attributo id del file wedeploy.json) di cui vogliamo fare il deploy, in questo caso il servizio è proprio l'istanza Liferay 7 CE GA4.
{ "id": "liferay", "env": { "LIFERAY_WEB_SERVER_PROTOCOL": "https", "LIFERAY_URL_SECURITY_MODE": "domain", "LIFERAY_PUBLISH_GOGO_SHELL": "true", "LIFERAY_CLEAN_DATA_DIR": "false" }, "image": "amusarra/liferay-portal:7-ce-ga4-tomcat-hsql-v1.7", "volume": "/opt/liferay", "memory": 4096, "cpu": 2 }
Analizziamo brevemente le parti salienti del file wedeploy.json. Il blocco env imposta una serie di variabili d'ambiente, di cui, le prime tre agiscono direttamente sulla configurazione di Liferay (vedi portal-ext.properties mostrato a seguire), l'ultima decide se fare l'operazione di clean della root data directory di Liferay (/opt/liferay).
L'attributo image è valorizzato con il nome dell'immagine docker. Il nome completo dell'immagine è amusarra/liferay-portal:7-ce-ga4-tomcat-hsql-v1.7 disponibile sul mio account Docker Hub.
L'attributo volume definisce il path assoluto della root data directory di Liferay che deve essere preservata.
## ## Web Server ## # # Set the preferred protocol. # web.server.protocol=https ## ## Redirect ## # # Set this property to "ip" or "domain" for the redirect security method. If # set to "domain", the portal will only redirect users to domains listed in # the property "redirect.url.domain.allowed". If set to "ip", the portal # will only redirect to domains whose IP address resolve to an IP address # listed in the property "redirect.url.ip.allowed". # redirect.url.security.mode=domain ## ## Module Framework ## # # Pass arbitrary extra properties to the framework using the prefix: # "module.framework.properties." to avoid avoid colliding with other # frameworks that may be running within the same JVM. # module.framework.properties.osgi.console=0.0.0.0:11311
WeDeploy punta alla sicurezza, tutti i servizi sono esposti in maniera trasparente per lo sviluppatore in SSL/TLS su HTTP, ragione per cui dobbiamo fare in modo che Liferay sia configurato per funzionare correttamente in HTTPS (azione eseguita dalle prime due environment).
L'environment LIFERAY_PUBLISH_GOGO_SHELL fa in modo che Liferay esponga pubblicamente il servizio telnet per accedere alla Gogo Shell per esempio da un altro servizio.
La root data directory /opt/liferay è così strutturata:
- data: directory che contiene la document library, il data base HSQL, etc.
- deploy: directory di auto deploy per bundle e theme
- osgi: directory che contiene tutta la parte OSGi di Liferay (bundle, state, marketplace, etc.)
- configs: directory che contiene gli eventuali file di properties
4. Esecuzione del deploy di Liferay
A questo punto siamo pronti per eseguire il deploy del servizio Liferay sulla piattaforma WeDeploy. Per rendere le cose più semplici e nello stesso tempo farvi contenti, sul repository GitHub wedeploy-project ho pubblicato il progetto con tutto il necessario per il deploy del servizio Liferay.
Il repository wedeploy-project contiene anche altri progetti per WeDeploy ma quello di nostro interesse si trova all'interno della directory liferay-7-ga-4. Gli step da seguire al fine del deploy sono:
- Clonazione del repository wedeploy-project
- Login su WeDeploy tramite CLI (step che può essere saltato se già loggati)
- Deploy del servizio su WeDeploy tramite la CLI
A seguire sono mostrati i comandi che consentono il deploy del servizio Liferay su WeDeploy.
$ git clone https://github.com/amusarra/wedeploy-project.git $ cd wedeploy-project/liferay-7-ga-4 $ we login $ we deploy -p dontesta
In Figura 1 è mostrato l'output che c'informa circa il successo dell'operazione di deploy per il servizio liferay sulla piattaforma WeDeploy. Tramite una serie di comandi è possibile monitorare lo stato di avanzamento dell'operazione di deploy e lo stato del servizio.
Il video mostra l'operazione di deploy del servizio liferay su WeDeploy.
A seguire sono mostrati una serie di comandi d'esempio che consentono di:
- Vedere i log del servizio liferay
- Vedere lo stato del servizio liferay
- Vedere le environment del servizio liferay
$ we log -p amusarra -s liferay -w $ we list -p amusarra -s liferay $ we env -p amusarra -s liferay
In Figura 2 possiamo vedere il risultato del comando che mostra informazioni di dettaglio circa il servizio specificato, in questo caso quello di liferay. Dall'output notiamo in particolare che il servizio è in stato Online e l'FQDN per raggiungere il servizio (tramite protocollo HTTPS) è liferay-amusarra.wedeploy.io.
Per i più curiosi, sul gist liferay.log è possibile visionare l'intero output del comando we log che mostra i log del servizio liferay. La parte iniziale è quella più significativa.
Una delle caratteristiche dell'immagine amusarra/liferay-portal:7-ce-ga4-tomcat-hsql-v1.7 è il supporto per l'hot-deploy. All'atto pratico, cosa vuole dire? Abbiamo la possibilità d'indicare quali bundle (jar, lpkg) e theme installare su Liferay.
All'interno del folder wedeploy-project/liferay-7-ga-4 esiste una directory che sia chiama deploy e al cui interno devono essere posizionati bundle (jar, lpkg) e theme che desiderate installare su Liferay. L'attuale contenuto della directory è:
- il bundle org.apache.felix.webconsole-4.3.4-all.jar che installa l'Apache Felix Web Console;
- il bundle Web Gogo Shell.lpkg che installa la Web Gogo Shell rilasciata qualche giorno addietro sul Marketplace di Liferay e sviluppata da Mario Anzà.
A questo punto il servizio liferay è su e raggiungibile all'indirizzo indicato dalla CLI (vedi comando we list -p amusarra -s liferay
) che in questo caso è https://liferay-amusarra.wedeploy.io. Le credenziali di accesso sono le solite, la coppia test@liferay.com/test. Al primo accesso vi chiederà l'accettazione delle condizioni d'uso e l'inserimento della domanda segreta.
Con questo servizio liferay, abbiamo chiesto l'hot-deploy del bundle Apache Felix Web Console e del bundle Web Gogo Shell, raggiungibili rispettivamente alla URL https://liferay-amusarra.wedeploy.io/o/system/console e da Pannello di Controllo → Configurazione → Web Gogo Shell Portlet.
Le Figure 4 e 5 mostrano i due bundle in azione che sono stati installati con l'operazione di deploy del servizio liferay. La portlet Web Gogo Shell è davvero comoda per innumerevoli motivi, grande Mario Anzà per averla ideata e realizzata.