Instalar Subsonic en Ubuntu 8.04 Server

Voy a tratar de explicar cómo instalar Subsonic en un servidor web con Apache2, algo con lo que me he estado pegando un buen rato.

Subsonic es un media server a través de web, que te permitirá acceder a toda tu música desde cualquier sitio en que te encuentres. Puedes usarlo para compartir música con tus amigos, escuchar tus canciones desde el trabajo, etc. Permite accesos simultáneos desde varios lugares.

En principio creo que funciona con audio y vídeo. Incluso se pueden instalar plugins para convertir audio desde formatos poco comunes “on-the-fly”.

Por supuesto necesitas un servidor visible desde internet, si quieres acceder a él desde fuera de tu red local.

La aplicación está gestionada por un servlet java llamado Tomcat. Dicho servlet puede funcionar de forma autónoma (sin Apache) o se pueden gestionar las peticiones a través de nuestro servidor web apache.

En el primer caso la configuración es más sencilla (ver el tutorial en Only Ubuntu Linux), aunque también tiene algunas desventajas. En mi caso la principal es que el acceso a Tomcat se hace a través del puerto 8180, lo que me dificulta (más bien imposibilita) el acceso desde la red corporativa de mi empresa.

Al hacer que las peticiones pasen a través del servidor Apache, podemos utilizar el puerto estándar 80, 443, o el que nosotros queramos.

Así pues me voy a centrar en la instalación y configuración de Subsonic a través de Apache. Parto del supuesto de que ya tenemos una máquina con apache funcionando correctamente. Si no fuera así, os recomiendo el tutorial de F O R A T, en el que lo explica de una manera muy sencilla y eficaz. En mi caso lo tengo con Ubuntu 8.04 Server, y la versión de Apache es la 2.2.8.

Después de leer muchos (bueno, no tantos…) howtos por ahí, la mayoría demasiado obsoletos, la única forma que he encontrado de hacerlo funcionar es utilizando el tutorial de Tim Conrad.

1. Requisitos

Para que todo funcione necesitamos algunos paquetes que se encuentran en los repositorios normales.

sudo aptitude install sun-java6-bin sun-java6-jdk sun-java6-jre lame lame-extras libapache2-mod-jk

De este modo instalaremos java, lame para la parte de transcoding, y mod_jk, un modulo necesario para la comunicación entre Tomcat y Apache.

2. Creación de un usuario tomcat y de un directorio para subsonic

Creamos un grupo tomcat

sudo groupdadd tomcat

Creamos el usuario tomcat dentro del grupo

sudo useradd -m -g tomcat tomcat

En el tutorial de Tim Conrad se recomienda no asignar una password para este usuario, ya que nunca tendremos que logearnos con él, y simplemente haremos su cuando necesitemos utilizarlo. En mi caso este método no funciona, ya que cuando intento hacer un su tomcat, me pide su password, y simplemente dar el enter no funciona. Así que me vi obligado a asignarle una contraseña (digamos 12345) y entonces todo funcionó correctamente. Es muy posible que esté haciendo algo mal, ya que no soy ningún experto en linux, así que si alguien tiene una explicación, se agradecerá.

Creamos la password para el usuario tomcat

sudo passwd tomcat

e introducimos la password (12345 en este ejemplo) cuando nos la pida.

A continuación creamos el directorio /var/subsonic y se lo asignamos al usuario tomcat

sudo mkdir /var/subsonic
sudo chown tomcat:tomcat /var/subsonic

Ahora añadimos la variable JAVA_HOME a nuestro .bashrc

sudo nano ~/.bashrc

y copiamos esta línea al final del fichero

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06/; export JAVA_HOME

Asegúrate de que el directorio existe. Si has instalado una versión de java diferente a la mía, tendrás que cambiar la línea anterior para que apunte a la carpeta correcta.

Cierra tu terminal y abre uno nuevo (al menos yo tuve que hacer esto para que me exportara la nueva variable JAVA_HOME). Seguro que hay otras formas más inteligentes de hacer esto.

3. Instalación de Tomcat

Ahora cambiamos al usuario tomcat

su tomcat

y ponemos la password cuando nos la pida (12345)

Descargamos la última versión de Apache-Tomcat (en el momento de escribir esto, era la 6.0.18). Compruébalo aquí.

cd ; wget http://apache.norhex.com/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz

Descomprimimos

tar -xvzf apache-tomcat-6.0.18.tar.gz

Ahora necesitamos crear un usuario para manejar Tomcat. Lo hacemos editando el fichero ~/apache-tomcat-6.0.18/conf/tomcat-users.xml

nano ~/apache-tomcat-6.0.18/conf/tomcat-users.xml

y reemplazando todo el contenido por lo siguiente

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”manager”/>
<role rolename=”tomcat”/>
<role rolename=”admin”/>
<role rolename=”role1″/>
<user username=”admin” password=”PON_AQUI_LA_PASSWORD_QUE_QUIERAS” fullName=”” roles=”admin,manager,role1,tomcat”/>
</tomcat-users>

La instalación por defecto hace que Tomcat escuche en el puerto 8080. Si esto te viene bien, estupendo. En caso de que necesites cambiarlo, tienes que editar el fichero ~/apache-tomcat-6.0.18/conf/server.xml

nano ~/apache-tomcat-6.0.18/conf/server.xml

En las líneas 67 y 73 encontrarás el 8080. Cámbialo por el puerto que quieras asignar a Tomcat (En mi caso lo he cambiado por el 8180).

Ahora vamos a iniciar Tomcat y a asegurarnos que podemos acceder a él. Para ello, todavía como el usuario tomcat, tecleamos

cd ~

./apache-tomcat-6.0.18/bin/startup.sh

y deberíamos ver lo siguiente

Using CATALINA_BASE: /home/tomcat/apache-tomcat-6.0.18
Using CATALINA_HOME: /home/tomcat/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-6.0.18/temp
Using JRE_HOME: /usr/lib/jvm/java-6-sun-1.6.0.06/

Ahora vamos a nuestro navegador y tecleamos la dirección http://nombredetuservidor:8180

Deberíamos ver la pantalla de bienvenida de Tomcat

Pantalla inicial de Tomcat

Hacemos click en Tomcat Manager, e introducimos el nombre de usuario admin, y la password que configuramos antes en el fichero tomcat-users.xml

4. Instalación de Subsonic

A continuación vamos a instalar Subsonic. Para ello nos descargamos la última versión de su página oficial. Sólo necesitamos el fichero WAR., así que descomprimimos el .zip y guardamos el .war en algún sitio.

Tanto la descarga del fichero WAR como la instalación que vamos a hacer a continuación la puedes hacer desde cualquier ordenador con navegador, no es necesario que sea desde el mismo servidor. Además, como en mi caso, es posible que no dispongas de entorno grafico ni navegador en el servidor.

Si bajamos un poco en la pagina de administración de Tomcat, veremos una sección llamada Deploy, y dentro de esta, un apartado que pone WAR file to deploy. Pulsamos en Browse, buscamos nuestro fichero .war y damos a Deploy.

Nos fijamos en la parte superior de la página, y deberíamos ver un OK. Si ha habido algún error al hacer el deploy, nos aparecerá aquí también. En mi caso me dio algún error de permisos, con lo que tuve que revisar que el directorio /var/subsonic existía y que pertenecía al usuario tomcat. Una vez arreglado esto lo pudo cargar sin problemas.

Si el deploy del fichero war ha ido correctamente, en la sección Applications, deberíamos ver que aparece /subsonic y en la columna running aparece true.

Ahora deberíamos ser capaces de acceder a Subsonic a través de Tomcat. Para ello abrimos de nuevo el navegador y vamos a la dirección http://nombredetuservidor:8180/subsonic

Veremos la pantalla principal de subsonic y entramos con el usuario por defecto que es admin, y password admin.

Ahora lo primero, vamos a Settings, Users, y cambiamos la contraseña de admin por la que queramos. A continuación puedes realizar la configuración básica de Subsonic, indicarle dónde está tu colección de música, etc.

Una vez terminado esto, aún tenemos que hacer que Tomcat funcione a través de nuestro servidor Apache.

5. Haciendo que Tomcat y Apache trabajen juntos

Primero habilitamos el modulo jk (si aun sigues como usuario tomcat, vuelve a tu usuario normal)

sudo a2enmod jk

A continuación creamos el fichero /etc/apache2/workers.properties

sudo nano /etc/apache2/workers.properties

con el siguiente contenido

# Define 1 real worker using ajp13
worker.list=subsonic
# Set properties for subsonic (ajp13)
worker.subsonic.type=ajp13
worker.subsonic.host=localhost
worker.subsonic.port=8009

A pesar de la tentación, el último 8009, no debes cambiarlo a 8180 (yo lo hice). Es el puerto en el que escucha el modulo apj13 y ese es el puerto por defecto.

Ahora creamos el fichero /etc/apache2/conf.d/mod_jk.conf

sudo nano /etc/apache2/conf.d/mod_jk.conf

y ponemos el siguiente texto dentro

JkWorkersFile /etc/apache2/workers.properties

# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/apache2/mod_jk.shm

# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the timestamp log format
JkLogStampFormat “[%a %b %d %H:%M:%S %Y] “

Lo normal sería que te funcionase sin hacer ningún cambio, pero comprueba las rutas para ver que son correctas y corrígelas si es necesario.

Por ultimo reiniciamos Apache

sudo /etc/init.d/apache2 restart

y comprobamos que no da ningún mensaje de error al iniciarse.

Si todo ha ido bien, ahora deberías ser capaz de acceder a subsonic utilizando http://nombredetuservidor/subsonic

En mi caso particular todo funciona bien, incluso el streaming, aunque dentro de la red de mi empresa está bloqueado (no tengo ni idea de por qué funciona). De todos modos, aunque no funcionara, soy capaz de navegar por mi colección de musica, y descargar los temas que quiero escuchar.

FUENTES

Instalar Tomcat a través de Apache — Tim Conrad

Instalar Tomcat en modo “stand-alone” — Only Ubuntu Linux

Dónde oi hablar por primera vez de Subsonic y me picó el gusanillo — Ubuntu Linux


2 thoughts on “Instalar Subsonic en Ubuntu 8.04 Server

  1. jose says:

    si se instala en un server, podre ingresar via red (intranet) desde el wifi sin usar el internet??

  2. ehrepli says:

    Jose, si, podras acceder desde la intranet sin ningun problema. Para poder acceder desde fuera de la red local, necesitaras ademas abrir el puerto correspondiente en tu router/firewall, y redirigirlo a tu server, si no lo has hecho ya.

Leave a Reply

Your email address will not be published. Required fields are marked *