Séneca FX se ejecuta en Linux. Actualmente, sólo Debian 8 (jessie) está soportado.
Los requerimientos hardware dependen en gran medida de la carga de trabajo que se espera del sistema (número de ingestas diarias, tamaño de los archivos de media, número medio/picos de conexión al servidor web, etc.).
Como mínimo, son necesarios 4 Cores, 8 GB RAM & 120 GB libres en el disco del sistema y un disco adicional para el almacenamiento de medios, backups, etc. para un número de usuarios pequeño (<100) y una o dos ingestas diarias.
Si el sistema va a tener una mayor demanda de trabajo, se aconsejan un servidor con 8/12 cores y 8/16 GB RAM.
Séneca FX espera MySQL como gestor de BB.DD.
MySQL se instala por defecto durante la instalación de Séneca FX.
No se soportan otros gestores BB.DD.
Existen dos distribuciones de Séneca FX Server, unstable y stable.
La distribución unstable contiene las últimas correcciones y nuevas funcionalidades que requieren un proceso de probación y feedback del usuario. Por su parte la distribución stable está más testeada y depurada pero tarda más en incorporar las correciones y nuevas funcionalidades. El ritmo de actualizaciones de la versión unstable es como mínimo de una vez a la semana mientras que la versión stable se actualiza como mínimo una vez al mes.
A medio plazo ambas distribuciones són equivalentes en cuanto a funcionalidad ya que la distribución stable se nutre de los cambios realizados a la distribución unstable una vez que han sido suficiente probados y con un feedback positivo.
Si se desea tener las últimas correcciones y nuevas funcionalidades lo antes posible escoger la versión unstable. Por otra parte, si no te importa esperar a que los cambios estén completamente testeados y aprobados, utiliza la versión stable.
Abra una consola el el servidor (se necesita un usuario con capacidad sudo) y teclee:
$ wget -O ./senecafx-server-netinst.sh \
http://develop.spica.es/senecafx/scripts/senecafx-server-netinst.sh
$ chmod +x ./senecafx-server-netinst.sh
$ sudo ./senecafx-server-netinst.sh [--mysql]
donde
Una vez instalado Séneca FX Server, iniciar sesión en la consola del servidor con el usuario seneca (la password por defecto es seneca):
$ su seneca
+------------------------------------------------------------------+
+ Séneca FX runtime environment has been loaded +
+ Version 1.1.0 Build 8.9.6.4 33286 2018-09-06T11:12:23+02:00 +
+------------------------------------------------------------------+
y aparecerá un banner indicando que se ha configurado el entorno de ejecución de Seneca FX, así como la versión.
Tenga en cuenta que todos y cada uno de los servicios de Séneca FX se deben ejecutar con el usuario seneca. No se debe intentar clonar la configuración de este usuario a otros usuarios.
Para obtener el directorio concreto donde se ha instalado Séneca FX (puede variar según la distribución que hayamos instalado),
$ printenv | grep seneca
SENECA=/opt/spica/senecafx-SERVER
y que en cualquier caso es accesible mediante el enlace simbólico /opt/spica/seneca,
$ ls -l /opt/spica/seneca
/opt/spica/seneca -> /opt/spica/senecafx-SERVER
Una vez obtenida la ubicación de la instalación de Séneca FX procedemos a verificar la ubicación de de los directorios de datos, logs y archivos temporales,
$ ls -l /opt/spica/seneca (la barra al final es necesaria)
drwxrwxr-x seneca .
drwxr-xr-x root ..
drwxrwxr-x seneca anneo
drwxrwxr-x seneca bundle
drwxrwxr-x seneca cli
drwxrwxr-x seneca conf
drwxrwxr-x seneca lucio
drwxrwxr-x seneca nginx
-rw-r--r-- seneca rakefile
drwxrwxr-x seneca rakelib
drwxrwxr-x seneca redis
drwxrwxr-x seneca rgloader
drwxrwxr-x seneca ruby
drwxrwxr-x seneca scripts
drwxrwxr-x seneca seneca
drwxrwxr-x seneca solr
lrwxrwxrwx seneca data->/srv/seneca
lrwxrwxrwx seneca logs->/var/seneca/logs
lrwxrwxrwx seneca temp->/var/seneca/temp
drwxrwxrwx seneca pids->/var/seneca/pids
donde se observa que mediante enlaces simbólicos Séneca FX espera la carpeta de datos en /srv/seneca, los logs en /var/seneca/logs y los archivos temporales en /var/seneca/temp.
Es importante asegurarse de que todas las carpetas y archivos tienen como propietario el usuario seneca.
En primer lugar comprobamos que la herramienta CLI de de Séneca FX está instalada y apunta a la carpeta de la instalación actual de Seneca FX,
$ seneca info
Version : 1.1.0 (Build 8.10.2.1)
Install Dir : /opt/spica/senecafx-SERVER (/dev/sda1, 5,1G)
Logic Path Disk Path Filesystem Disk Free
------------- ----------------------------------- -------------------- ----------
conf /opt/spica/senecafx-SERVER/conf /dev/sda1 5,1G
pids /var/seneca/pids /dev/sda1 5,1G
logs /var/seneca/logs /dev/sda1 5,1G
temp /var/seneca/temp /dev/sda1 5,1G
data /srv/seneca /dev/sda1 5,1G
Tenant Path Disk Path Filesystem Disk Free
------------- ----------------------------------- -------------------- ----------
definst $data/tenants/definst /dev/sda1 5,1G
que nos informa de los números de versión y compilación (build) y la fecha en que fue generada, así como de los directorios principales que está utilizando Seneca FX, el sistema de archivos (unidad de disco) que los soporta y el espacio libre.
Para obtener ayuda en línea de todos los comandos disponibles en el CLI,
$ seneca help
Seneca FX Version 1.1.0 Build 8.10.2.1 34087 2018-10-02T10:20:09+02:00
Usage:
seneca COMMAND [ACTION] [ARGS] - Run COMMAND with optional ACTION & ARGS
seneca COMMAND help - Prints COMMAND help
Commands (Info):
seneca version - Prints version
seneca info - Prints environment info
seneca help - Prints this help
Commands (License management):
seneca license [--print] - Prints license info
seneca license --system-id - Prints license system ID
seneca license --mac-addr - Prints system MAC Address
seneca license --form - Prints license request form
seneca license --check FILENAME - Check if FILENAME is a valid licencse
Commands (Services management):
seneca status [SERVICE] - Prints services status
seneca start [SERVICE] - Start services (all services if none given)
seneca stop [SERVICE] - Stop services (all services if none given)
seneca restart [SERVICE] - Restart services (all services if none given)
Commands (Logs management):
seneca tlog [SERVICE] - View (tail) SERVICE logfile
seneca tlog [FILENAME] - View (tail) $LOGS/FILENAME
Type 'seneca COMMAND help' for help about ACTIONS & ARGS on COMMAND
y para obtener detalles (subcomandos y opciones) de un comando particular, ej. la orden 'start',
$ seneca server help start
Seneca Command Line Interface, by SPICA S.L. (c) 2017
Usage:
seneca server start [SERVICE] # Start service SERVICE (start all services if none is given)
Options:
[--silent], [--no-silent] # Do not print messages to STDOUT
[--tail], [--no-tail]
Para comprobar el estado de ejecuión de estos servicios procedemos con la orden status del CLI,
$ seneca server status
Service Name Id Status
---------------------------------------- ---------- --------------------------
Séneca Web Server (aka 'Séneca') nginx Running (PIDs=>20775+2)
Séneca Resque Pool (aka 'Anneo') resque Running (PIDs=>3587+9)
Séneca Crawler Agent (aka 'Lucio') crawler Running (PIDs=>3254)
Séneca Full Text Index Server (Solr) solr Running (PIDs=>4009)
Séneca Queue Server (Redis) redis Running (PIDs=>3542)
Séneca Scheduler cron Running
Para detener un servicio podemos utilizar la orden stop seguida del Id o el alias del servicio,
$ seneca server stop web
o bien
$ seneca server stop nginx
y para arrancalo la orden start,
$ seneca server stop nginx
Si lo que queremos es iniciar o parar todos los servicios, simplemente omitimos el nombre del servicio, así,
$ seneca server stop
Service Name Id Status
---------------------------------------- ---------- ----------------------
Seneca Web Server (aka 'Seneca') nginx Stopping...
detiene todos los servicios de Séneca FX, mientras que para arrancar todos los servicios de Séneca FX procedemos con,
$ seneca server start
Service Name Id Status
---------------------------------------- ---------- ----------------------
Seneca Web Server (aka 'Seneca') nginx Starting...
Séneca FX instala un script para el auto arranque de todos los servicios instalados como parte de la distribución (se ubica en /etc/init.d/senecafx).
Gracias a este comando, Séneca FX se iniciará automaticamente durante el inicio del sistema y tambien manualmente gracias a la herramienta correspondiente de Linux, ej. sudo service seneca start o sudo service seneca status. Sin embargo, es necesario ser administrador o tener capacidad sudo para realizar estas operaciones.
La herramienta CLI de Séneca, permite permite relizar estas mismas operaciónes sin privilegios de usuario especiales, Se recomienda utilizar está opción para las operaciones manuales y dejar que el script de inicio se encargue del arranque automático.
Séneca FX mantiene todos los logs en la carpeta /opt/spica/seneca/logs que por defecto es un enlace simbólico a /var/seneca/logs.
Podemos utilizar el la utilizad tail para visualizarlos o bien el CLI de Séneca que nos evita conocer el nombre y ubicación del archivo log de cada servicio, así
$ seneca server tail web
mostrará el log del servidor web, mientras que
$ seneca server tail resque
mostrará el log del servidor de colas.
Ejemplo:
$ seneca server tail nginx
(AppVers. => 1.1.0, BUILD 8.9.6.4 (published 2018-09-06T11:12:23+02:00)
(AppLics. => Seneca FX (TBYB), SN 2018-03/4aaff3, unknown (61947e2341b94d80bacaecfb9896dbdc))
App 5317 stdout:
(loading rails...)
(loading bundle (application.rb) ...)
(loading application...)
App 5317 stdout:
WARNING: Using default tenant 'definst'.
App 5317 stdout:
Can not update (migrate) database (definst)
App 5317 stdout:
(run_as => seneca (1001), seneca (1001))
(network#1=> 10.0.2.15/255.255.255.0 (eth0))
(network#2=> 192.168.0.156/255.255.255.0 (eth1))
(log => /opt/spica/senecafx-SERVER/logs/server.log (tail=no))
(i18n => es,es_la,eu,cat,gl,en,val)
(cache => /var/seneca/temp/cache (ENABLED))
(mailer => alfred@seneca.tv (smtp://217.116.0.228)
(bugreport=> bugreport@seneca.tv)
(ldap => ONLINE (ldap://ldap.seneca.tv:389))
(scheduler=> ENABLED)
(queues => 127.0.0.1:6379 (resque) (ONLINE))
(ftindex => 127.0.0.1:8983 (solr) (ONLINE))
(speechtxt=> DISABLED)
(transcrpt=> ENABLED)
(storage => definst:/default free size is 5.5 GiB)
(proxy => MP4_H264_240p_Mono -> 'H264_240p_Mono' Video libx264, Audio aac)
(proxy => MP4_H264_288p_Mono -> 'H264_288p_Mono' Video libx264, Audio aac)
(proxy => MP4_H264_360p_Mono -> 'H264_360p_Mono' Video libx264, Audio aac)
(proxy => MP4_H264_480p_Mono -> 'H264_480p_Mono' Video libx264, Audio aac)
(proxy => MP4_H264_720p_Mono -> 'H264_720p_Mono' Video libx264, Audio aac)
(proxy => MP3_Mono_64Kbs -> 'MP3_Mono_64Kbs' Audio mp3)
Para salir de la visualización de log tecleamos Ctrl-C.
Seneca FX se instala con una licencia de prueba que permite funcionar al servidor con funciones limitadas, pero que nos permitirá hacer configurar el software, crear la base de datos, etc. hasta que proveamos de la licencia de usuario.
Para consultar la licencia utilizamos el CLI,
$ seneca license
+===================================================================+
|SPICA SOFTWARE LICENSE UUID: D0500E35-7ABC-49F8-A139-D4A717C830|
|===================================================================|
|PRODUCT |
|Name Séneca FX|
|Version TBYB|
|-------------------------------------------------------------------|
|LICENSE |
|Serial Number 2018-25/dc226b|
|Generated 2018-09-06|
|Expires (never)|
|Organization unknown|
|System ID 61947e2341b94d80bacaecfb9896dbdc|
|MAC 08:00:27:8d:c0:4d|
+===================================================================+
y en este caso, comprobamos que estamos usando la licencia de prueba la cual se identifica como TBYB.
La licencia de Seneca FX es única para cada equipo y para solicitarla debemos proporcionar el "System ID" que se muestra en la pantalla.
Una vez hemos arrancado los servicios de Seneca FX, y en particular, el Servidor Web (NGINX), procedemos a probar la conexión HTTP en el puerto por defecto (8980).
Dado que aún no hemos realizado la personalización del sitio web, creado la base de datos obtendremos un advertencia del servidor de aún no está configurado,
Séneca FX necesita saber cierta información básica para poder funcionar, como es el nombre de la base de datos y una descripción-título del sitio web. Además, hay que crear e inicializar la base de datos.
El primer paso es añadir una nueva instancia de Seneca FX. Para ello editamos el archivo /opt/spica/seneca/conf/tenants.yml (formato YAML) y añadimos las siguientes lineas al final,
prueba:
<<: *defaults
prefix : prueba
database : senecafx_prueba
domain : "senecafx.prueba.com"
aliases : "*"
title : "Seneca FX Prueba"
Guardamos los cambios y procedemos a crear la base de datos.
$ seneca database create prueba
(AppVers. => 1.1.0, BUILD 8.9.10.7 (published 2018-09-10T13:19:26+02:00)
(AppLics. => Seneca FX (Developer), SN 2018-49/512097, DEVELOPER (4300f403ca7dff84fefa8872533d468b))
(AppMode. => RAKE, Run_As user=seneca, eid=1000, gid=1000)
MySQL pass for root: *********
(tenant => prueba)
(db:create => senecafx_prueba (prueba))
Checking MySQL username 'seneca'@'localhost' ...
MySQL user 'seneca'@'localhost' already exists!
Checking MySQL database 'senecafx_prueba'@'localhost' ...
Creating MySQL database 'senecafx_prueba'...
(CREATE DATABASE IF NOT EXISTS senecafx_prueba CHARACTER SET utf8 COLLATE utf8_unicode_ci;)
(ALTER DATABASE senecafx_prueba CHARACTER SET utf8 COLLATE utf8_unicode_ci;)
Granting all privileges to 'seneca'@'localhost' ...
(GRANT ALL ON senecafx_prueba.* TO 'seneca'@'localhost';FLUSH PRIVILEGES;)
Loading schema to 'senecafx_prueba'@'localhost' ...
(db:migrate (senecafx_prueba))
Seeding 'senecafx_prueba'@'localhost' ...
(db:seed (senecafx_prueba))
Done!
Ya tenemos lo necesario para que el servidor web esté operativo así que
reiniciamos el Servidor Web para que Séneca FX tenga en cuenta los cambios
de configuración
seneca restart web
y volvemos a conectarnos con el navegador, que nos debe mostrar la página del 'home' de la Web de Seneca FX,
Por motivos de seguridad, la primera operación en la Web deberá ser cambiar la contraseña del usuario administrador de la Web, para lo cual utilizamos el boton ENTRAR e iniciamos sesión con el usuario admin y clave admin, para acceder a la zona restringida,
y en el menú seleccionamos el usuario actual (admin) y "Mi Cuenta" donde introduciremos la nueva contraseña, siendo los demás datos opcionales.
[EOF]