[Ubuntu 15.10 Server / Debian 8.2 Server] – Installation de Madsonic 6.0 avec Nginx et Tomcat
Madsonic est un serveur open-source de contenu audio et vidéo en streaming dérivé de Subsonic disposant de fonctionnalités supplémentaires.
Madsonic diffuse instantanément vos médias stockés sur votre serveur sur n’importe quel appareil connecté en s’adaptant à votre débit et ceci à plusieurs utilisateurs simultanément. Madsonic est conçu pour gérer de très grandes collections de médias. En utilisant des plugins de transcodeur, Madsonic supporte la conversion à la volée et le streaming de n’importe quel format audio (MP3, OGG, WMA, FLAC, APE).
1 – OpenJDK
Madsonic est implémenté en Java, vous devez disposer de l’ensemble des bibliothèques logicielles de base du langage de programmation Java (JDK) en version 8 :
1 2 3 4 |
sudo apt-get install software-properties-common python-software-properties sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk |
Il est possible que d’autres JDK soient installés sur votre système. Pour s’en assurer, lancez la commande suivante :
1 |
sudo update-alternatives --config java |
Deux possibilités s’offrent à vous :
- 1er cas :
123456789Il existe 2 choix pour l'alternative java (qui fournit /usr/bin/java).Sélection Chemin Priorité État------------------------------------------------------------* 0 /usr/lib/jvm/java-7-openjdk-[...]/jre/bin/java 1071 mode automatique1 /usr/lib/jvm/java-7-openjdk-[...]/jre/bin/java 1071 mode manuel2 /usr/lib/jvm/java-8-openjdk-[...]/jre/bin/java 1069 mode manuelAppuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :2
Sélectionnez la version 8 dans la liste de vos JDK installés. - 2ème cas :
12Il n'existe qu'une « alternative » dans le groupe de liens java : /usr/lib/jvm/java-8-openjdk-[...]/jre/bin/java.Rien à configurer.
Comme il est indiqué sur la sortie standard, vous n’avez, dans ce cas, rien à configurer.
2 – Tomcat
2.1 – Installation
Madsonic s’exécute dans un serveur d’applications. Notre choix se portera sur Apache Tomcat.
Tomcat est un conteneur web libre de servlets qui implémente les spécifications des servlets et des JSP. Tomcat est paramétrable par des fichiers XML et de propriétés, et inclut des outils de configuration et de gestion.
- Téléchargez Tomcat 8 :
1wget http://www.us.apache.org/dist/tomcat/tomcat-8/v8.0.28/bin/apache-tomcat-8.0.28.tar.gz - Afin de respecter la FHS, nous allons installer Tomcat dans /opt. Créez le répertoire d’installation de Tomcat :
1sudo mkdir /opt/tomcat - Décompressez l’archive Tomcat :
1sudo tar -xvf apache-tomcat-8.0.28.tar.gz -C /opt/tomcat --strip-components=1 - Madsonic a besoin de 512MB de mémoire classique (mémoire « heap »). Créez le fichier /opt/tomcat/bin/setenv.sh avec la ligne suivante :
1JAVA_OPTS="-Xmx512M" - Supprimez l’archive téléchargée :
1rm apache-tomcat-8.0.28.tar.gz - Pour des raisons évidentes de sécurité, il est fortement recommandé de ne pas exécuter Tomcat avec un compte administrateur (root), nous allons donc créer un utilisateur dédié à la gestion du Tomcat :
1sudo adduser tomcat - Affectez l’utilisateur et le groupe tomcat au répertoire d’installation de Tomcat :
1sudo chown -R tomcat:tomcat /opt/tomcat
2.2 – Création d’un service
L’utilisation d’un service permettra de couper correctement Tomcat après l’arrêt de votre système, de le relancer automatiquement après un redémarrage et de le laisser s’exécuter en arrière-plan.
- Créez le fichier /etc/systemd/system/tomcat.service :
123456789101112131415161718[Unit]Description=Apache Tomcat Web Application ContainerAfter=network-online.target[Service]Type=forkingUser=tomcatGroup=tomcatUMask=000ExecStart=/opt/tomcat/bin/startup.shExecStop=/opt/tomcat/bin/shutdown.sh# Configures the time to wait before service is stopped forcefully.TimeoutStopSec=120[Install]WantedBy=multi-user.target
- Démarrez les services :
1234sudo systemctl daemon-reloadsudo systemctl start tomcatsudo systemctl status tomcatsudo systemctl enable tomcat
3 – Nginx
Tomcat est souvent employé en combinaison avec un serveur Web Apache mais ce dernier est vieillissant et basé sur des processus multiples (multi-thread) lancés à l’initialisation de celui-ci et dont le nombre est déterminé à l’avance. Nginx, quant à lui, est régi par un processus maître qui génère à la volée un processus par requête qu’il reçoit, il fait partie de la famille des serveurs Web asynchrones.
Notre choix se portera donc sur le serveur HTTP Nginx pour une question de performances et de stabilité.
Tomcat inclut un serveur Web Apache par défaut qui permet d’accéder aux applications déployées sur le port 8080 http://localhost:8080/mywebapp. Pour accéder à ces applications sur le port 80 (via http://localhost/mywebapp ou http://mydomain.com), Nginx est utilisé comme proxy inverse (reverse proxy) qui transmet les requêtes qu’il reçoit vers un autre serveur (dans notre cas vers Tomcat).
Pour cela Nginx utilise le module proxy_pass, inclus et activé par défaut.
- Installez le paquet nginx :
1sudo apt-get install nginx - Pour des raisons de sécurité, il est recommandé de désactiver l’envoi d’informations telles que le numéro de version de votre Nginx. Pour cela, modifiez le fichier /etc/nginx/nginx.conf et décommentez la ligne suivante :
1server_tokens off;
4 – Madsonic
- Connectez-vous sous l’utilisateur tomcat :
12su tomcatcd - Téléchargez le WAR Madsonic :
1wget http://madsonic.org/download/6.0/20151008_madsonic-6.0.7600-war-tomcat.zip - Décompressez l’archive :
1unzip 20151008_madsonic-6.0.7600-war-tomcat.zip - Déplacez le WAR dans le répertoire de Tomcat :
1sudo mv madsonic.war /opt/tomcat/webapps/ - Lors de la première exécution, Madsonic créé des fichiers de configuration et stocke sa base de données dans /var/madsonic. Sachant que l’utilisateur sous lequel est lancé Tomcat possède des privilèges limités, Madsonic ne pourra ni accéder ni écrire dans ce répertoire. Il est donc important de créer le répertoire avant le lancement de Madsonic et de donner les droits à l’utilisateur tomcat. Pour cela, déconnectez-vous de l’utilisateur tomcat et repassez sous votre super-utilisateur :
1exit - Créez le répertoire /var/madsonic :
1sudo mkdir /var/madsonic - Attribuez ce répertoire à l’utilisateur tomcat :
1sudo chown tomcat:tomcat /var/madsonic
5 – Virtual Host
5.1 – Nginx
Nous allons configurer un hôte virtuel pour accéder à l’application Madsonic via http://music.mydomain.com.
Créez le fichier /etc/nginx/sites-available/music :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
server { listen 80; server_name music.mydomain.com; client_max_body_size 200M; location / { proxy_pass http://localhost:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Server $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 http; } } |
La directive client_max_body_size permet, dans notre exemple, de limiter l’upload d’un fichier à 200M, libre à vous de modifier cette valeur.
Activez l’hôte virtuel puis rechargez la configuration de Nginx :
1 2 |
sudo ln -s /etc/nginx/sites-available/music /etc/nginx/sites-enabled/music sudo service nginx reload |
5.2 – Tomcat
Côté Tomcat, il est nécessaire de définir l’hôte virtuel http://music.mydomain.com pour traiter les requêtes envoyées par Nginx. Pour cela, connectez-vous sous l’utilisateur tomcat et suivez la procédure dans cet article dédié à la configuration d’hôtes virtuels au sein de Tomcat -> Tomcat 7.x/8.x – Virtual Host.
6 – Codecs Audio/Vidéo
L’installation de ces outils est facultative mais fortement recommandée si vous souhaitez lire des fichiers audio autres que des MP3 tels que des FLAC, OGG, WMA,… et des fichiers vidéo autres que des fichiers FLV tels que des AVI, MP4, DIVX,…. Ces outils (Audioffmpeg, ffmpeg, LAME et XMP) permettent de transcoder ces fichiers à la volée en fichiers lisibles par votre navigateur (MP3 pour les fichiers audio et FLV pour les fichiers vidéo).
- Connectez-vous sous votre utilisateur tomcat :
12su tomcatcd - Téléchargez le pack de codecs correspondant à votre architecture (x32 pour un environnement 32bits ou x64 pour un environnement 64bits)
1wget http://madsonic.org/download/transcode/20151204_madsonic-transcode-linux-x64.zip - Décompressez l’archive :
1unzip 20151204_madsonic-transcode-linux-x64.zip - Créez un répertoire transcode dans le répertoire de configuration de Madsonic :
1mkdir /var/madsonic/transcode - Déplacez les binaires Linux dans le répertoire de configuration de Madsonic /var/madsonic/transcode :
1mv transcode /var/madsonic/ - Ajoutez les droits d’exécution aux binaires :
1chmod u+x /var/madsonic/transcode/* - Supprimez les fichiers téléchargés et décompressés :
1rm -rf 20151204_madsonic-transcode-linux-x64.zip licenses readme.md
7 – Terminé !
Démarrez votre tomcat :
1 |
service tomcat start |
C’est terminé ! Ouvrez votre navigateur et rendez-vous à l’adresse définie dans vos hôtes virtuels.
N’oubliez pas de modifier le mot de passe par défaut de l’utilisateur admin dans la rubrique Settings.
8 – Mise à jour de Madsonic
A chaque nouvelle version de Madsonic, vous serez notifié par une icône dans la barre de menu.
La procédure de mise à jour est relativement simple :
- Connectez-vous sous votre utilisateur tomcat :
12su tomcatcd - Téléchargez la dernière version du WAR (WAR version – JSP default Tomcat) sur la page de téléchargement du site officiel de Madsonic :
1wget http://madsonic.org/download/xxx-war-tomcat.zip - Décompressez l’archive :
1unzip xxx-war-tomcat.zip - Arrêtez Tomcat :
1systemctl stop tomcat - Supprimez les fichiers suivants :
123rm /opt/tomcat/webapps/madsonic.warrm -rf /opt/tomcat/webapps/Madsonicrm -rf /opt/tomcat/work/* - Déplacez le nouveau WAR dans le répertoire de Tomcat :
1mv madsonic.war /opt/tomcat/webapps/ - Supprimez les fichiers téléchargés et décompressés :
1rm xxx-war-tomcat.zip "Getting Started.html" - Démarrez Tomcat :
1systemctl start tomcat
9 – Madsonic sur Android…
Découvrez l’excellente application réalisée par Madevil qui se connectera à votre serveur Madsonic pour diffuser l’ensemble de vos médias sur votre appareil Android. Un mode hors-connexion est aussi disponible.
Ubuntu 15.10 Server (64bits)Nginx 1.9.3
Tomcat 8.0.28
Madsonic 6.0.7600
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!