Que tal?
Comparto mi experiencia migrando Comdoc 3.0.6 (funcionando sobre jboss-4.2.3.GA) de un servidor antiguo con Debian 6 y openjdk-6-jdk a un nuevo servidor con Debian 9 y openjdk-8-jdk. Las versiones de Comdoc y JBoss se mantienen iguales.
Notas:
- reemplazar [mi-us-admin] por tu usuario LDAP o tu usuario PAM de cada servidor.
- reemplazar ‘[host-db-anterior]’ por la URL al servidor de base de datos anterior
- reemplazar ‘[host-app-anterior]’ por la URL al servidor de aplicación anterior
- En nuestro caso JBoss se encuentra en el directorio /opt/jboss-4.2.3.GA y Comdoc en el directorio /var/comdoc
En el servidor de aplicación anterior (Debian 6, openjdk-6-jdk)
Se comprimen los directorios y archivos a migrar. El resultado es el archivo /tmp/comdoc_app_dump.tar.gz listo para ser descargado vía scp desde el servidor nuevo:
cd /opt
sudo tar -czf opt_jboss.tar.gz jboss-4.2.3.GA
sudo mv opt_jboss.tar.gz /tmp/
cd /var
sudo tar -czf var_comdoc.tar.gz comdoc
sudo mv var_comdoc.tar.gz /tmp/
cd /tmp
sudo cp -a /etc/init.d/jboss_init.sh /etc/init.d/xvfb-daemon /etc/init.d/xvfb-daemon2 .
sudo tar -czf comdoc_app_dump.tar.gz jboss_init.sh opt_jboss.tar.gz var_comdoc.tar.gz xvfb-daemon xvfb-daemon2
sudo rm jboss_init.sh opt_jboss.tar.gz var_comdoc.tar.gz xvfb-daemon xvfb-daemon2
En el servidor de base de datos anterior (PostgreSQL 9.1.14)
pg_dump -h localhost -U comdoc -W produccion > /tmp/comdoc_produccion.pgsql
En el nuevo servidor de base de datos (PostgreSQL 9.6.7)
Se descarga y se importa el dump de la base de datos
scp [mi-us-admin]@[host-db-anterior]:/tmp/comdoc_produccion.pgsql .
psql -h localhost -U comdoc produccion < /tmp/comdoc_produccion.pgsql
Se agrega la IP del nuevo servidor de aplicación al archivo pg_hba.conf:
sudo vim /etc/postgresql/9.6/main/pg_hba.conf
'-» (add application host ips)
Para solucionar un problema que evita que los usuario puedan ingresar al sistema es necesario ejecutar:
sudo su postgres
psql -d produccion
y dentro de psql (puede ser necesario que edites el nombre de la base de datos):
ALTER DATABASE produccion SET bytea_output TO 'escape';
En caso de encontrarse con el error “ERROR: el operador no existe: integer = character varying en carácter 53” en el log de PostgreSQL, también se deberá ejecutar:
CREATE OR REPLACE FUNCTION pg_catalog.varchartoint(character varying)
RETURNS integer
STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT
int4($1::text);';
CREATE CAST (character varying AS integer) WITH FUNCTION
pg_catalog.varchartoint(character varying) AS IMPLICIT;
Finalmente se reinicia el servidor de base de datos:
exit
sudo systemctl restart postgresql.service
En el nuevo servidor de aplicación (Debian 9, openjdk-8-jdk)
sudo apt-get install openjdk-8-jdk xvfb vim
cd /tmp
scp [mi-us-admin]@[host-app-anterior]:/tmp/comdoc_app_dump.tar.gz .
sudo tar xzf comdoc_app_dump.tar.gz
sudo rm comdoc_app_dump.tar.gz
sudo mv opt_jboss.tar.gz /opt/
sudo mv var_comdoc.tar.gz /var/
sudo mv jboss_init.sh xvfb-daemon xvfb-daemon2 /etc/init.d/
sudo chmod a+x /etc/init.d/jboss_init.sh
cd /opt
sudo tar xzf opt_jboss.tar.gz
sudo rm -f opt_jboss.tar.gz
cd /var
sudo tar xzf var_comdoc.tar.gz
sudo rm -f var_comdoc.tar.gz
Se edita la configuración de conexión al servidor de base de datos, en caso de ser necesario:
sudo vim /opt/jboss-4.2.3.GA/server/comdoc/deploy/comdoc-ds.xml
Para solucionar un problema de JBoss en Debian 9 al utilizar el servicio Xvfb, es necesario:
sudo vim /etc/init.d/jboss_init.sh
remplazar:
export DISPLAY=localhost:0.0
por:
export DISPLAY=:0.0
Se crean los unit files para systemd:
JBoss:
sudo vim /lib/systemd/system/jboss.service
[Unit]
Description=JBoss
[Service]
Type=forking
User=root
Group=root
ExecStart=/etc/init.d/jboss_init.sh start
ExecStop=/etc/init.d/jboss_init.sh stop
TimeoutSec=300
[Install]
WantedBy=multi-user.target
sudo ln -s /lib/systemd/system/jboss.service /etc/systemd/system/multi-user.target.wants/jboss.service
Xvfb:
sudo vim /lib/systemd/system/xvfb.service
[Unit]
Description=X Virtual Frame Buffer Service
After=network.target
[Service]
ExecStart=/usr/bin/Xvfb :0 -screen 0 800x600x8
[Install]
WantedBy=multi-user.target
sudo ln -s /lib/systemd/system/xvfb.service /etc/systemd/system/multi-user.target.wants/xvfb.service
Xvfb2:
sudo vim /lib/systemd/system/xvfb2.service
Description=X Virtual Frame Buffer Service 2
After=network.target
[Service]
ExecStart=/usr/bin/Xvfb :1 -screen 0 800x600x8
[Install]
WantedBy=multi-user.target
sudo ln -s /lib/systemd/system/xvfb2.service /etc/systemd/system/multi-user.target.wants/xvfb2.service
Se recarga y se reinician los servicios:
sudo systemctl daemon-reload
sudo systemctl start xvfb.service
sudo systemctl start xvfb2.service
sudo systemctl start jboss.service
o bien directamente:
sudo reboot
EXTRA: Para ejecutar JBoss con un usuario distinto a root
sudo adduser comdoc
El puerto debe ser mayor a 1000 para que el usuario comdoc pueda utilizarlo, en nuestro caso tenemos un proxy escuchando el puerto 80 el cual redirecciona el tráfico al puerto 8080 en Comdoc. Por lo tanto se edita el puerto de 80 a 8080 en:
sudo vim /opt/jboss-4.2.3.GA/server/comdoc/deploy/jboss-web.deployer/server.xml
Quedando dicho fragmento así:
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
En el caso de que el sistema se encuentre detrás de un proxy con un certificado TLS/SSL para el acceso vía https, será necesario agregar una línea extra, quedando así el fragmento:
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
scheme="https" secure="true" proxyName="comdoc.[URL_UNIVERSIDAD]" proxyPort="443"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
Nota: reemplazar [URL_UNIVERSIDAD] por la URL que corresponda. Será la URL del proxy, es decir, la URL externa que los usuarios utilizarán para ingresar a ComDoc.
Luedo se edita el unit file configurando el usuario y grupo:
sudo vim /lib/systemd/system/jboss.service
reemplazar:
User=root
Group=root
por:
User=comdoc
Group=comdoc
luego:
sudo systemctl daemon-reload
Se modifican el propietario para los directorios clave:
sudo chown -R comdoc:comdoc /opt/jboss-4.2.3.GA/
sudo chown -R comdoc:comdoc /var/comdoc/
Reiniciamos el servicio:
sudo systemctl stop jboss.service
sudo systemctl start jboss.service
Solo restaría configurar las tareas cron.
Saludos.