molivierhttps://www.molivier.com/2015-02-18T16:00:00+01:00Installation de Java sur ubuntu2015-02-18T16:00:00+01:002015-02-18T16:00:00+01:00Matthieu OLIVIERtag:www.molivier.com,2015-02-18:/installation-java-ubuntu.html<p>Etrangement, l'installation de Java sur une plateforme Linux n'est toujours pas une chose aisée : configuration des variables d'environnement, installation des dépendances... Pour simplifier ces opérations il existe heureusement l'excellent <a href="http://doc.ubuntu-fr.org/ppa">PPA</a> de la <a href="http://www.webupd8.org/">WebUpd8 Team</a>. C'est d'ailleurs l'une des méthodes préconisée dans la <a href="https://help.ubuntu.com/community/Java">documentation officielle ubuntu</a>.</p>
<h2>Oracle Java 7 et 8 …</h2><p>Etrangement, l'installation de Java sur une plateforme Linux n'est toujours pas une chose aisée : configuration des variables d'environnement, installation des dépendances... Pour simplifier ces opérations il existe heureusement l'excellent <a href="http://doc.ubuntu-fr.org/ppa">PPA</a> de la <a href="http://www.webupd8.org/">WebUpd8 Team</a>. C'est d'ailleurs l'une des méthodes préconisée dans la <a href="https://help.ubuntu.com/community/Java">documentation officielle ubuntu</a>.</p>
<h2>Oracle Java 7 et 8</h2>
<p>Ci-dessous la liste des commandes à lancer en tant qu'utilisateur <code>root</code>.</p>
<div class="highlight"><pre><span></span><span class="c1"># Paquet nécessaire à l'installation du PPA</span>
apt-get install software-properties-common
<span class="c1"># Installation du PPA</span>
add-apt-repository ppa:webupd8team/java
</pre></div>
<p>Commandes pour Oracle Java 7 :</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation Oracle Java 7</span>
apt-get update
apt-get install oracle-java7-installer
<span class="c1"># Acceptation de la licence Oracle</span>
<span class="nb">echo</span> oracle-java7-installer shared/accepted-oracle-license-v1-1 <span class="k">select</span> <span class="nb">true</span> <span class="p">|</span> sudo /usr/bin/debconf-set-selections
<span class="c1"># Installation des variables d'environnement</span>
apt-get install oracle-java7-set-default
</pre></div>
<p>Commandes pour Oracle Java 8 :</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation Oracle Java 8</span>
apt-get update
apt-get install oracle-java8-installer
<span class="c1"># Acceptation de la licence Oracle</span>
<span class="nb">echo</span> oracle-java8-installer shared/accepted-oracle-license-v1-1 <span class="k">select</span> <span class="nb">true</span> <span class="p">|</span> sudo /usr/bin/debconf-set-selections
<span class="c1"># Installation des variables d'environnement</span>
apt-get install oracle-java8-set-default
</pre></div>
<h2>Commandes utiles</h2>
<p>Quelques commandes pour vérifier que tout fonctionne correctement :</p>
<div class="highlight"><pre><span></span><span class="c1"># Connaitre la version de Java</span>
java -version
<span class="c1"># Switch de java 8 vers java 7 (oracle-java7-installer doit être installé)</span>
update-java-alternatives -s java-7-oracle
<span class="c1"># Switch de java 7 vers java 8</span>
update-java-alternatives -s java-8-oracle
<span class="c1"># Supprimer Java</span>
apt-get remove oracle-java7-installer
</pre></div>
<h4>Sources</h4>
<ul>
<li><a href="http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html">WebUpd8 Team Java PPA guide</a></li>
</ul>Installation et configuration de ISC DHCP Server sur Debian Wheezy2014-01-04T11:15:00+01:002014-01-04T11:15:00+01:00Matthieu OLIVIERtag:www.molivier.com,2014-01-04:/isc-dhcp-server-debian.html<p>Installation et configuration d'un serveur DHCP sur une distribution Debian Wheezy</p><p>Nouvel aide-mémoire concernant l'installation et la configuration du serveur <a href="https://www.isc.org/downloads/dhcp/">ISC DHCP</a> sur une distribution <a href="http://www.debian.org/">Debian</a> Wheezy (64 bits) disposant de deux interfaces réseaux : eth0 (WAN), eth1 (LAN).</p>
<h2>Installation du serveur dhcp : isc-dhcp-server</h2>
<p>Installation du serveur DHCP à partir des dépôts Debian.</p>
<div class="highlight"><pre><span></span>apt-get update
apt-get install isc-dhcp-server
</pre></div>
<p>Edition du fichier de configuration</p>
<div class="highlight"><pre><span></span><span class="c1"># Edition du fichier de configuration</span>
nano /etc/dhcp/dhcpd.conf
<span class="c1"># Le fichier contient (aide dans les commentaires)</span>
ddns-update-style none<span class="p">;</span>
option domain-name <span class="s2">"local.lan"</span><span class="p">;</span>
<span class="c1"># DNS de Google</span>
option domain-name-servers <span class="m">8</span>.8.8.8, <span class="m">8</span>.8.4.4<span class="p">;</span>
<span class="c1"># Si la machine sert de DNS</span>
option domain-name-servers <span class="m">192</span>.168.10.1<span class="p">;</span>
default-lease-time <span class="m">600</span><span class="p">;</span>
max-lease-time <span class="m">7200</span><span class="p">;</span>
authoritative<span class="p">;</span>
log-facility local7<span class="p">;</span>
subnet <span class="m">192</span>.168.10.0 netmask <span class="m">255</span>.255.255.0 <span class="o">{</span>
range <span class="m">192</span>.168.10.100 <span class="m">192</span>.168.10.120<span class="p">;</span>
option subnet-mask <span class="m">255</span>.255.255.0<span class="p">;</span>
option broadcast-address <span class="m">192</span>.168.10.255<span class="p">;</span>
option routers <span class="m">192</span>.168.10.1<span class="p">;</span>
<span class="o">}</span>
</pre></div>
<p>Ensuite, il faut spécifier sur quelle interface réseau le serveur DHCP doit être lancé dans un autre fichier de configuration.</p>
<div class="highlight"><pre><span></span><span class="c1"># Edition du fichier de configuration</span>
nano /etc/default/isc-dhcp-server
<span class="c1"># Contenu à modifier</span>
<span class="nv">INTERFACES</span><span class="o">=</span><span class="s2">"eth1"</span>
</pre></div>
<p>Avant de lancer le serveur DHCP, il faut désormais configurer les interfaces réseaux de la machine.</p>
<h2>Configuration des interfaces</h2>
<p>L'interface connectée à Internet (eth0) est configurée pour obtenir directement sa configuration aurpès du DHCP du FAI. La seconde interface (eth1) qui va servir de passerelle doit en revanche disposer d'une ip fixe. </p>
<div class="highlight"><pre><span></span><span class="c1"># Edition du fichier de configuration des interfaces</span>
nano /etc/network/interfaces
<span class="c1"># Contenu du fichier</span>
<span class="c1"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="c1"># WAN interface</span>
allow-hotplug eth0
iface eth0 inet dhcp
<span class="c1"># LAN interface</span>
allow-hotplug eth1
iface eth1 inet static
address <span class="m">192</span>.168.10.1
network <span class="m">192</span>.168.10.0
netmask <span class="m">255</span>.255.255.0
broadcast <span class="m">192</span>.168.10.255
</pre></div>
<p>Pour finaliser l'installation et tester son fonctionnement, rédemarrage de la machine.</p>
<h4>Quelques commandes utiles</h4>
<div class="highlight"><pre><span></span><span class="c1"># Gestion du serveur DHCP</span>
service isc-dhcp-server start
service isc-dhcp-server stop
service isc-dhcp-server restart
service isc-dhcp-server status
<span class="c1"># Identififier un souci dans les logs</span>
tail -f /var/log/syslog
grep dhcpd /var/log/syslog
</pre></div>Installation et configuration de Munin sur Debian Wheezy avec support de Nginx2013-12-31T16:37:00+01:002014-08-25T15:18:00+02:00Matthieu OLIVIERtag:www.molivier.com,2013-12-31:/munin-debian-avec-support-nginx.html<p>Installation et configuration de Munin avec support de Nginx sur un serveur Debian Wheezy</p><p>Nouvel aide-mémoire concernant l'installation et la configuration de l'outil de monitoring <a href="http://munin-monitoring.org/">Munin</a> sur une distribution <a href="http://www.debian.org/">Debian</a> Wheezy (64 bits).</p>
<h2>Installation de Munin</h2>
<p>Installation de Munin à partir des dépôts Debian.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation de Munin</span>
apt-get update
apt-get install munin munin-node
</pre></div>
<p>Edition du fichier de configuration</p>
<div class="highlight"><pre><span></span><span class="c1"># Edition du fichier de configuration</span>
nano /etc/munin/munin.conf
<span class="c1"># Décommenter les lignes suivantes</span>
dbdir /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir /var/run/munin
<span class="c1"># Editer le nom de la machine dans cette section</span>
<span class="o">[</span>example.org<span class="o">]</span>
address example.org
.../...
<span class="c1"># Redémarrage du grapheur</span>
/etc/init.d/munin-node restart
</pre></div>
<p>Limiter l'écoute du grapheur à localhost</p>
<div class="highlight"><pre><span></span><span class="c1"># Edition du fichier de configuration</span>
nano /etc/munin/munin-node.conf
<span class="c1"># Contenu à modifier</span>
<span class="c1">#host *</span>
host <span class="m">127</span>.0.0.1
</pre></div>
<h2>Création du vhost Nginx</h2>
<p>Il faut configurer un vhost pour pouvoir accéder à l'interface web de Munin et permette à ce dernier de lire les statistiques de Nginx.</p>
<div class="highlight"><pre><span></span><span class="c1"># Déplacement dans le dossier vhost de Nginx</span>
<span class="nb">cd</span> /etc/nginx/conf.d
<span class="c1"># Création d'un nouveau vhost</span>
nano munin.conf
<span class="c1"># Contenu du vhost (à adapter)</span>
server <span class="o">{</span>
server_name localhost servername.com<span class="p">;</span>
root /var/cache/munin/www<span class="p">;</span>
access_log off<span class="p">;</span>
location / <span class="o">{</span>
<span class="o">}</span>
location /nginx_status <span class="o">{</span>
stub_status on<span class="p">;</span>
allow <span class="m">127</span>.0.0.1<span class="p">;</span>
deny all<span class="p">;</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p>Note : Nginx doit avoir été compilé avec prise en charge du module "stub_status". La mention du module doit apparaitre dans cette commande : nginx -V.</p>
<h2>Ajout du support de Nginx</h2>
<p>Activation des plugins nécessaires au monitoring de Nginx.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation paquets nécessaires au grapheur</span>
apt-get install liblwp-useragent-determined-perl
<span class="c1"># Installation des plugins Nginx de Munin</span>
<span class="nb">cd</span> /etc/munin/plugins/
ln -sf /usr/share/munin/plugins/nginx_* .
<span class="c1"># Activation des plugins</span>
nano /etc/munin/plugin-conf.d/munin-node
<span class="c1"># Ajout nouvelle section</span>
<span class="o">[</span>nginx*<span class="o">]</span>
env.url http://localhost/nginx_status
<span class="c1"># Redémarrage du grapheur</span>
/etc/init.d/munin-node restart
</pre></div>
<h4>Aller plus loin</h4>
<ul>
<li><a href="http://ayozone.org/2013/06/03/how-to-add-nginx-status-and-request-plugins-to-munin/">How to add Nginx status and request plugins to munin</a></li>
<li><a href="http://vova-zms.blogspot.fr/2011/09/cant-locate-object-method-new-via.html">Gestion erreur LWP::UserAgent</a></li>
</ul>Installation et configuration de base de Nginx2013-12-31T14:19:00+01:002014-08-25T15:19:00+02:00Matthieu OLIVIERtag:www.molivier.com,2013-12-31:/nginx-installation-configuration-depot-officiel.html<p>Installation et configuration de base de Nginx à partir du dépôt officiel</p><p>Ci-dessous un petit aide-mémoire concernant l'installation de <a href="http://nginx.org/">Nginx</a> sur une distribution <a href="http://www.ubuntu.com/server">Ubuntu Server</a> (64 bits).</p>
<h2>Installation de Nginx</h2>
<p>Sur une machine vièrge, installation du serveur Nginx à partir du dépôt officiel.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation de la clef du dépôt Nginx</span>
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key <span class="o">&&</span> rm nginx_signing.key
<span class="c1"># Ajout du dépôt à la liste des sources</span>
<span class="c1"># Ajout des lignes suivants en fin de fichier</span>
<span class="nb">echo</span> deb http://nginx.org/packages/ubuntu/ <span class="k">$(</span>lsb_release --codename <span class="p">|</span> cut -f2<span class="k">)</span> nginx >> /etc/apt/sources.list
<span class="nb">echo</span> deb-src http://nginx.org/packages/ubuntu/ <span class="k">$(</span>lsb_release --codename <span class="p">|</span> cut -f2<span class="k">)</span> nginx >> /etc/apt/sources.list
<span class="c1"># Installation</span>
apt-get update
apt-get install nginx
</pre></div>
<h2>Optimisation de la configuration de base de Nginx</h2>
<p>Le fichier de configuration nécessite quelques retouches afin d'optimiser les performances de Nginx.</p>
<div class="highlight"><pre><span></span><span class="c1"># Emplacement du fichier de configuration à éditer</span>
nano /etc/nginx/nginx.conf
</pre></div>
<p>Ci-dessous les paramètres principaux à modifier :</p>
<div class="highlight"><pre><span></span><span class="c1"># Nombre de processus alloués au serveur</span>
<span class="c1"># Un processus par core</span>
<span class="c1"># Mettre sur "auto" ou cat /proc/cpuinfo | grep processor | wc -l</span>
worker_processes auto<span class="p">;</span>
<span class="c1"># Dans la section events (optimisation pour linux)</span>
events <span class="o">{</span>
worker_connections <span class="m">1024</span><span class="p">;</span>
use epoll<span class="p">;</span>
multi_accept on<span class="p">;</span>
<span class="o">}</span>
<span class="c1"># Dans la section http</span>
<span class="c1"># Envoi du header en une seule fois</span>
sendfile on<span class="p">;</span>
tcp_nopush on<span class="p">;</span>
tcp_nodelay on<span class="p">;</span>
<span class="c1"># Activation de la compression gzip </span>
gzip on<span class="p">;</span>
gzip_vary on<span class="p">;</span>
gzip_min_length <span class="m">10240</span><span class="p">;</span>
gzip_proxied expired no-cache no-store private auth<span class="p">;</span>
gzip_types text/plain text/css text/xml application/javascript<span class="p">;</span>
open_file_cache <span class="nv">max</span><span class="o">=</span><span class="m">5000</span> <span class="nv">inactive</span><span class="o">=</span>20s<span class="p">;</span>
open_file_cache_valid 30s<span class="p">;</span>
open_file_cache_min_uses <span class="m">2</span><span class="p">;</span>
open_file_cache_errors on<span class="p">;</span>
<span class="c1"># Ne pas afficher la version du serveur (sécurité)</span>
server_tokens off<span class="p">;</span>
</pre></div>
<p>Il est temps de tester le nouveau fichier de configuration et de redémarrer le service.</p>
<div class="highlight"><pre><span></span><span class="c1"># Test du fichier de configuration</span>
/etc/init.d/nginx configtest
<span class="c1"># Redémarrage du service</span>
service nginx restart
</pre></div>
<h4>Aller plus loin</h4>
<ul>
<li><a href="http://www.codestance.com/tutorials-archive/nginx-tuning-for-best-performance-255">Nginx Tuning For Best Performance</a></li>
<li><a href="http://blog.zachorr.com/nginx-setup/">Nginx Setup</a></li>
<li><a href="http://wiki.nginx.org/">Documentation Nginx</a></li>
</ul>Node.js et Mongodb sur Debian Wheezy2013-12-30T16:21:00+01:002013-12-30T16:21:00+01:00Matthieu OLIVIERtag:www.molivier.com,2013-12-30:/node-mongodb-debian-wheezy.html<p>Installation de Node.js et Mongodb sur Debian Wheezy</p><p>Ci-dessous un petit aide-mémoire concernant l'installation de <a href="http://nodejs.org/">Node.js</a> et de <a href="http://www.mongodb.org/">Mongodb</a> sur une distribution <a href="http://www.debian.org/">Debian</a> Wheezy (64 bits).</p>
<h2>Installation de Node.js</h2>
<p>Sur une machine vièrge, installation de Node.js à partir des sources en tant que root.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation des utilitaires nécessaires à la compilation</span>
apt-get update
apt-get install build-essential python-dev
<span class="c1"># Téléchargement des dernières sources</span>
wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz
<span class="c1"># Extraction des sources</span>
tar -zxvf node-v0.10.24.tar.gz
<span class="c1"># Changement de répertoire</span>
<span class="nb">cd</span> node-v0.10.24/
<span class="c1"># Compilation</span>
./configure <span class="o">&&</span> make <span class="o">&&</span> make install
</pre></div>
<p>Attention, la compilation peut prendre plusieurs minutes. Si tout se déroule sans erreur, deux nouveaux binaires sont désormaos disponibles en ligne de commande</p>
<div class="highlight"><pre><span></span>which npm node
/usr/local/bin/npm
/usr/local/bin/node
</pre></div>
<h2>Installation de Mongodb</h2>
<p>L'installation de la base de données Mongodb requiert l'ajout d'un nouveau dépôt signé.</p>
<div class="highlight"><pre><span></span><span class="c1"># Import de la clef PGP MongoDb</span>
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
<span class="c1"># Ajout du nouveau dépôt au source.list</span>
<span class="nb">echo</span> <span class="s1">'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen'</span> <span class="p">|</span> tee /etc/apt/sources.list.d/mongodb.list
<span class="c1"># Mise à jour de la base de données</span>
apt-get update
<span class="c1"># Installation du paquet</span>
apt-get install mongodb-10gen
</pre></div>
<p>Pour finir, ci-dessous quelques liens et commandes utiles concernant MongoDb :</p>
<div class="highlight"><pre><span></span><span class="c1"># Emplacement des bases de données</span>
/var/lib/mongo
<span class="c1"># Emplacement des logs</span>
/var/log/mongo
<span class="c1"># Start | Stop | Restart MongoDB</span>
/etc/init.d/mongodb start
/etc/init.d/mongodb stop
/etc/init.d/mongodb restart
</pre></div>
<h4>Sources</h4>
<ul>
<li><a href="https://github.com/joyent/node">Github Node.js</a></li>
<li><a href="http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/">Documentation Mongodb Debian</a></li>
</ul>Installation de Docker.io2013-12-18T19:25:00+01:002013-12-18T19:25:00+01:00Matthieu OLIVIERtag:www.molivier.com,2013-12-18:/installation-docker-io.html<p>Procédure d'installation de Docker.io sur ubuntu</p><p>Ci-dessous un petit aide-mémoire concernant l'installation de <a href="http://www.docker.io">Docker.io</a> sur une distribution Ubuntu Server 12.04 LTS (64 bits).</p>
<h2>Procédure d'installation</h2>
<p>Sur une machine vièrge, installation du kernel de base 3.8 qui gère nativement les <a href="http://fr.wikipedia.org/wiki/LXC">container LXC</a> et le système de fichier <a href="http://fr.wikipedia.org/wiki/Aufs">AUFS</a>.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation du kernel</span>
sudo apt-get update
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
<span class="c1"># Reboot</span>
sudo reboot
</pre></div>
<p>Installation du dépôt et de Docker.io.</p>
<div class="highlight"><pre><span></span><span class="c1"># Installation du dépôt</span>
sudo sh -c <span class="s2">"wget -qO- https://get.docker.io/gpg | apt-key add -"</span>
sudo sh -c <span class="s2">"echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"</span>
<span class="c1"># Installation de Docker</span>
sudo apt-get update
sudo apt-get install lxc-docker
</pre></div>
<p>Pour finaliser la procédure, testons le bon fonctionnement de Docker en lançant la console d'une image Ubuntu de base.</p>
<div class="highlight"><pre><span></span>sudo docker run -i -t ubuntu /bin/bash
</pre></div>
<p>Pour quitter le container, il suffit d'entrer la commande "exit".</p>
<h4>Sources</h4>
<ul>
<li><a href="http://docs.docker.io/en/latest/installation/ubuntulinux/">Documentation Docker.io</a></li>
</ul>