DotCMS è un sistema di gestione dei contenuti open source di livello aziendale scritto in Java. Contiene quasi tutte le funzionalità necessarie per creare un sito Web per la tua azienda. Fornisce un'API RESTful da integrare con altri servizi come CRM, applicazioni mobili e altro. Utilizza Elasticsearch per l'indicizzazione in tempo reale dei contenuti e Redis per l'implementazione di una cache multilivello.
Prerequisiti
	- Un'istanza del server Vultr Ubuntu 16.04.
- Un utente sudo .
- Un nome di dominio puntato verso il server.
Per questo tutorial, utilizzeremo 192.168.0.1 come indirizzo IP pubblico e cms.example.com come nome di dominio puntato verso l'istanza Vultr. Assicurati di sostituire tutte le occorrenze del nome di dominio e dell'indirizzo IP pubblico di esempio con quello effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare Ubuntu 16.04 . Dopo aver aggiornato il sistema, procedere con l'installazione di Java.
Installa Java
Aggiungi il repository Ubuntu per Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Installa Java.
sudo apt -y install oracle-java8-installer
Sarai in grado di verificare la versione di Java.
java -version
Vedrai il seguente output.
user@vultr:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Impostare il percorso predefinito per Java installando il seguente pacchetto.
sudo apt -y install oracle-java8-set-default
È possibile verificare che JAVA_HOMEsia impostato.
echo $JAVA_HOME
Dovresti vedere quanto segue.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Se non vedi alcun output, dovrai disconnetterti dalla shell corrente e riconnetterti.
Installa PostgreSQL
Per impostazione predefinita, dotCMS è configurato per utilizzare il motore di database H2. Il motore di database H2 è un motore di database basato su file flat. Non è raccomandato l'uso in produzione. In questo tutorial, useremo il server PostgreSQL per archiviare il database dotCMS.
PostgreSQL è un sistema di database relazionale ad oggetti, noto per la sua stabilità e velocità. Il repository Ubuntu predefinito contiene una vecchia versione di PostgreSQL, quindi aggiungi il repository PostgreSQL.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Installa il server di database PostgreSQL.
sudo apt -y install postgresql
Avviare il server PostgreSQL e abilitarlo ad avviarsi automaticamente all'avvio.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Cambia la password per l'utente PostgreSQL predefinito.
sudo passwd postgres
Accedi come utente PostgreSQL.
sudo su - postgres
Crea un nuovo utente PostgreSQL per dotCMS.
createuser dotcms 
PostgreSQL fornisce la psql shell per eseguire query sul server di database. Passa alla shell PostgreSQL.
psql
Impostare una password per l'utente appena creato per il database dotCMS.
ALTER USER dotcms WITH ENCRYPTED password 'DBPassword';
Sostituire la password dell'utente del database DBPassword con una password sicura.
Creare un nuovo database per l'installazione dotCMS.
CREATE DATABASE dotcms OWNER dotcms;
Esci dalla psql shell.
\q
Passa sudo all'utente.
exit
Installa dotCMS
Scarica l'archivio dotCMS.
wget https://dotcms.com/physical_downloads/release_builds/dotcms_4.3.2.tar.gz
Puoi sempre trovare il link all'ultima versione dell'applicazione nella pagina di download di dotCMS .
Creare una nuova directory per archiviare i file dotCMS ed estrarli in essa.
sudo mkdir /opt/dotcms
sudo tar -zxf dotcms*.tar.gz -C /opt/dotcms
Apri il file di configurazione del database.
cd /opt/dotcms
sudo nano dotserver/tomcat-*/webapps/ROOT/META-INF/context.xml
Trova il H2 blocco.
<!-- H2 -->
<Resource name="jdbc/dotCMSPool" auth="Container"
 ...
 validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />
Commenta l'intera H2 sezione spostando il delimitatore di commento --> dall'inizio della sezione alla fine della sezione. Dovrebbe apparire come segue.
<!-- H2
<Resource name="jdbc/dotCMSPool" auth="Container"
 ...
 validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />
-->
Decommenta la sezione PostgreSQL rimuovendo il delimitatore dei commenti --> dalla fine della sezione e posizionandolo nella parte superiore POSTGRESQL. Inoltre, trova username= e password= sostituisci i valori esistenti con il nome utente e la password dell'utente del database PostgreSQL. Se hai utilizzato un nome di database diverso da dotcms, dovrai cambiare il nome del database in url=. Una volta configurato, il blocco PostgreSQL nel file sarà simile al seguente.
<!-- POSTGRESQL -->
<Resource name="jdbc/dotCMSPool" auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      driverClassName="org.postgresql.Driver"
      url="jdbc:postgresql://localhost/dotcms"
      username="dotcms" password="DBPassword" maxTotal="60" maxIdle="10" maxWaitMillis="60000"
      removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="60" logAbandoned="true"
      timeBetweenEvictionRunsMillis="30000" validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />
Fornire l'autorizzazione all'esecuzione per tutti i file eseguibili.
sudo chmod 755 ./bin/*.sh
sudo chmod 755 dotserver/tomcat-*/bin/*.sh
DotCMS è ora installato sul tuo server. Per eseguire immediatamente l'applicazione, eseguire quanto segue.
cd /opt/dotcms
sudo bin/startup.sh
Verrà visualizzato il seguente output quando il server è stato avviato correttamente.
user@vultr:/opt/dotcms$ sudo bin/startup.sh
Using DOTCMS_HOME = /opt/dotcms/dotserver/tomcat-8.0.18/webapps/ROOT
Using DOTSERVER = dotcms
Using CATALINA_PID = /tmp/dotcms.pid
Using JAVA_OPTS =  -Djava.awt.headless=true -Xverify:none -Dfile.encoding=UTF8 -server -XX:+DisableExplicitGC -XX:MaxMetaspaceSize=512m -Xmx1G -XX:+UseG1GC -javaagent:/opt/dotcms/dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/byte-buddy-agent-1.6.12.jar -Ddotserver=dotcms
Using CATALINA_BASE:   /opt/dotcms/dotserver/tomcat-8.0.18
Using CATALINA_HOME:   /opt/dotcms/dotserver/tomcat-8.0.18
Using CATALINA_TMPDIR: /opt/dotcms/dotserver/tomcat-8.0.18/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/dotcms/dotserver/tomcat-8.0.18/bin/bootstrap.jar:/opt/dotcms/dotserver/tomcat-8.0.18/bin/tomcat-juli.jar
Using CATALINA_PID:    /tmp/dotcms.pid
Tomcat started.
Il comando precedente avvierà il server Web Tomcat per servire l'applicazione sulla porta 8080.
Apri il tuo browser preferito e cerca http://192.168.0.1:8080. Vedrai che l'applicazione esegue un sito Web demo. Se non vedi il tuo sito web, attendi che il primo avvio del server dotCMS impieghi da cinque a dieci minuti mentre scrive i dati nel database PostgreSQL e costruisce la cache. Puoi anche controllare i log di avvio.
tail -n 1000 -f /opt/dotcms/dotserver/tomcat-*/webapps/ROOT/dotsecure/logs/dotcms.log
Il server dotCMS può essere avviato direttamente utilizzando lo script di avvio fornito nel pacchetto di installazione. Per comodità, è necessario impostare un file di unità Systemd per il server dotCMS. Ciò assicurerà che il server delle applicazioni venga avviato automaticamente al riavvio del sistema e agli errori.
Arrestare il server dotCMS in esecuzione utilizzando lo script di arresto.
sudo bin/shutdown.sh
Creare un utente senza privilegi per eseguire il server dotCMS, per motivi di sicurezza.
sudo adduser --home /opt/dotcms -gecos "dotCMS User" --disabled-password --disabled-login dotcms
Fornire la proprietà dei file all'utente dotCMS.
sudo chown -R dotcms:dotcms /opt/dotcms
Crea un nuovo servizio Systemd.
sudo nano /etc/systemd/system/dotcms.service
Popolare il file.
[Unit]
Description=dotCMS service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/dotcms/bin/startup.sh
ExecStop=/opt/dotcms/bin/shutdown.sh
User=dotcms
Group=dotcms
Restart=always
[Install]
WantedBy=multi-user.target
Avviare l'applicazione e abilitarne l'avvio automatico all'avvio.
sudo systemctl start dotcms
sudo systemctl enable dotcms
Assicurarsi che il servizio sia in esecuzione.
sudo systemctl status dotcms
Per impostazione predefinita, il server dotCMS è in ascolto sulla porta 8080. Configureremo Nginx come proxy inverso in modo che sia possibile accedere all'applicazione tramite lo standard HTTP e le HTTPS porte. Configureremo anche Nginx per utilizzare l'SSL generato con Let's Encrypt.
Installa Nginx.
sudo apt -y install nginx
Avvia Nginx e abilita l'avvio automatico all'avvio.
sudo systemctl start nginx
sudo systemctl enable nginx
Aggiungi il repository Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installa Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo apt -y install certbot
Nota:  per ottenere certificati da Let's Encrypt CA, il dominio per il quale devono essere generati i certificati deve essere puntato verso il server. In caso contrario, apportare le modifiche necessarie ai record DNS del dominio e attendere la propagazione del DNS prima di effettuare nuovamente la richiesta di certificato. Certbot controlla l'autorità di dominio prima di fornire i certificati.
Genera i certificati SSL.
sudo certbot certonly --webroot -w /var/www/html -d cms.example.com
È probabile che i certificati generati siano archiviati in /etc/letsencrypt/live/cms.example.com/. Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia di impostare il rinnovo automatico dei certificati utilizzando i processi Cron.
Apri il file di lavoro cron.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * * /usr/bin/certbot renew --quiet
Il precedente cron job verrà eseguito ogni giorno alle 5:30. Se il certificato è in scadenza, verrà automaticamente rinnovato.
Creare un nuovo file di blocco del server per il sito dotCMS.
sudo nano /etc/nginx/sites-available/dotcms
Popolare il file.
server {
    listen 80;
    server_name cms.example.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443;
    server_name cms.example.com;
    ssl_certificate           /etc/letsencrypt/live/cms.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/cms.example.com/privkey.pem;
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    access_log            /var/log/nginx/dotcms.access.log;
    location / {
      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
      proxy_redirect      http://localhost:8080 https://cms.example.com;
    }
  }
Attiva la configurazione.
sudo ln -s /etc/nginx/sites-available/dotcms /etc/nginx/sites-enabled/dotcms
Riavviare il server Web Nginx in modo che le modifiche abbiano effetto.
sudo systemctl restart nginx
L'applicazione dotCMS è ora installata sul server per l'uso in produzione. Accedi alla dashboard amministrativa al seguente indirizzo.
https://cms.example.com/dotAdmin
Accedi utilizzando l'account amministratore iniziale [email protected] e la password admin. Modifica la password predefinita immediatamente dopo l'accesso.
Congratulazioni, il sistema di gestione dei contenuti di dotCMS è ora installato sul tuo server. È possibile modificare il sito demo o iniziare a creare il sito da zero.