Skip to content
Vladimir Támara Patiño edited this page Jun 1, 2017 · 14 revisions

1. Deshabilitar edición en la base 1.2

Desde el directorio del sitio (digamos sitios/miorg) editar conf.php y antes de global $modulos; agregar:

/** Evita edición de casos
 * @global bool $GLOBALS['no_permite_editar']
 */
$GLOBALS['no_permite_editar'] = true;

Se dejará como copia histórica.

2. Sacar copia de la base 1.2

Ingresar al directorio del sitio y ejecutar: ../../bin/pgdump.sh Sacar copia del volcado que genera (verá el nombre cuando ejecute la orden anterior), por ejemplo:

cp /var/www/resbase/miorg-dump-Wed.sql-s /var/www/resbase/miorg-dump-Wed-migra.sql

3. Preparar directorio con SIVeL2 para la organización

Clonar o copiar SIVeL2 en un directorio usable por el servidor web, por ejemplo

cd ~/tmp/
git clone https://github.com/pasosdeJesus/sivel2
cd /var/www/htdocs/sivel2_miorg
cp ~/tmp/sivel2/* .
git pull
rm -rf log/*

4. Configurar ruta en la que se navegará

Por ejemplo si desde el web se verá en miorg/sivel2:

Editar config/initializers/punto_montaje.rb

Sivel2::Application.config.relative_url_root = '/miorg/sivel2'
Sivel2::Application.config.assets.prefix = '/miorg/sivel2'

Editar config/routes.rb y continuación de Rails.application.routes.draw do agregar:

  scope 'miorg/sivel2' do

Y al final antes del primer mount, agregar

  end

Cambiar los mount para que en lugar de "/" digan "miorg/sivel2"

Editar config/application.rb

config.relative_url_root = "/miorg/sivel2"

5. Prepara nuevas bases de datos (desarrollo, pruebas y producción)

Configurar nombres, usuario y clave de base de datos en ```config/database.yml"

Crear base de desarrollo en blanco con:

rake db:setup

Preparar para pruebas:

bin/rails db:environment:set RAILS_ENV=test

Inicializar base de producción y copiar allí los datos volcados de 1.2:

RAILS_ENV=production rails db:create
RAILS_ENV=production rails dbconsole
...
miorg_prod=#  \i /var/www/resbase/miorg-dump-Wed-migra.sql

Aplicar migraciones para convertir base de datos de 1.2 a 2 (no puede devolverse):

RAILS_ENV=production rails db:migrate

Si este procedimiento llega a fallar debe examinar errores y arreglar los datos o eventualmente arreglar las migraciones del motor sivel2_gen.

6. Configurar unicorn y nginx

Elegir un puerto único para el socket de unicorn que manejará la aplicación y establecerlo en config/unicorn.conf.minimal.rb

listen 2025

En /etc/nginx.conf en la sección http agregar (cambiar 2025 por el mismo puerto de config/unicorn.conf.minimal.rb):

upstream unicornsivel2miorg {
            server 127.0.0.1:2025 fail_timeout=0;
}

Dentro de la sección server con ssl que corresponda agregar:

        location /miorg/sivel2 {
                try_files $uri @unicornsivel2miorg;
        }

        location @unicornsivel2miorg {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://unicornsivel2miorg;
                error_page 500 502 503 504 /500.html;
                keepalive_timeout 10;
        }

        location ^~ /miorg/sivel2/assets/ {
                gzip_static on;
                expires max;
                add_header Cache-Control public;
                root /var/www/htdocs/sivel2_miorg/public/;
        }

        location ^~ /miorg/sivel2/images/ {
                gzip_static on;
                expires max;
                add_header Cache-Control public;
                root /var/www/htdocs/sivel2_miorg/public/;
        }

Reiniciar nginx con:

doas sh /etc/rc.d/nginx -d restart

7. Iniciar unicorn y asegurar arranque junto con el del computador

Copiar bin/u.sh.plantilla:

cp bin/u.sh.plantilla bin/u.sh

Crear un archivo de ordenes para el arranque por ejemplo /etc/rc.d/sivel2miorg con algo como (cambiar miusuario por el usuario con el que arrancará unicorn, así como la llave de SECRET_KEY_BASE y como la ruta del sistema):

#!/bin/sh
servicio="USUARIO_AP=miusuario DIRAP=/var/www/htdocs/sivel2_miorg SECRET_KEY_BASE=ef47b44c7aa973b369592de28c1a7f5dd847cab1da17c149a0f099a7e4c79f278bbdf0c1ee6ef0118a48c1432a8765f4d0afc118b6ff061926bcac163b1ec795 /var/www/htdocs/sivel2_miorg/bin/u.sh"

. /etc/rc.d/rc.subr

rc_check() {
        ps axw | grep "[r]uby.*unicorn_rails.*sivel2_miorg" > /dev/null
}

rc_stop() {
        p=`ps axw | grep "[r]uby.*unicorn_rails.*master.*sivel2_miorg" | sed -e "s/^ *\([0-9]*\) .*/\1/g"`
        kill $p
}

rc_cmd $1

Iniciar el servicio con

doas sh /etc/rc.d/sivel2miorg -d start

Probar que el sitio sea visible de acuerdo a la configuración hecha en nginx.

Asegurar arranque junto con el del equipo con:

rcctl enable sivel2miorg