ownCloud

Il y a de nombreux tutoriels pour installer owncloud un peu partout sur le net. Le mien n’a pas la prétention d’être le plus complet ou pertinent, mais a surtout vocation d’être un mémo et d’aller à l’essentiel.

J’ai installé owncloud sur une VM hébergée sur un serveur de virtualisation et les données sont stockées sur un NAS.

Le serveur tourne avec une Debian 7.7 et la release 7.0.2-1 de owncloud.


Préparation du système

Plusieurs paquets sont prérequis à l’installation de owncloud. J’ai fait le choix d’utiliser sqlite plutôt que MySQL.


aptitude update
aptitude install apache2 php5 php5-common php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl

Il faut ajouter les sources pour récupérer la dernière version de owncloud.


echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list

Puis ajouter la clé


wget -qO - http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key | apt-key add -


Installation owncloud

Maintenant, on installe owncloud.


apt-get update
apt-get install owncloud

Il y a un certain nombre de paramètres à modifier et de droits à déclarer.

On se positionne dans le répertoire « /var/wwww/owncloud » :


chgrp www-data data -R
chgrp www-data config -R
chgrp www-data apps -R

On customise apache


a2enmod rewrite
a2enmod headers
service apache2 restart

Il faut ensuite accéder à ownCloud depuis l’interface web pour finaliser l’installation. Sur un navigateur web, saisir l’URL « http://IP_du_serveur/owncloud ».

On se laisse guider pour sélectionner la base de données SQLITE et créer un utilisateur « admin ».


Sécurisation des données

Afin de sécuriser les données, elles seront hébergés sur mon NAS (RAID 5). Pour cela, j’ai créé un partage NFS sur mon NAS. Sur le serveur ownCloud, j’ai monté ce partage.

Dans le fichier « /etc/fstab », j’ai ajouté la ligne suivante :


$IP_NAS:$PATH_VOL_NFS /mnt/datacloud nfs user,rw    0       0

Il faut remplacer :
- $IP_NAS par l’adresse IP du NAS
- $PATH_VOL_NF par le chemin du montage NFS

Pour faire les opérations, il est nécessaire de couper le service apache.


service apache2 stop
mkdir /mnt/datacloud
mount /mnt/datacloud
mv /var/www/owncloud/data /mnt/datacloud

Dans le fichier « /var/www/owncloud/config/config.php », il faut mettre à jour la directive datadirectory avec le nouveau PATH


'datadirectory' => '/mnt/datacloud/data',

Il est maintenant possible de redémarrer le service apache. On se connecte sur l’interface WEB pour vérifier que l’accès au cloud de l’admin est toujours présent et accessible.


service apache2 start


Présentation

Plutôt qu’utiliser l’hébergement personnel sur Free, j’ai décidé d’héberger mes sites sur mon propre serveur Web. Pour cela, j’ai créé une nouvelle VM sur mon serveur de virtualisation.

Je détaille ici l’ensemble des opérations et manipulations effectuées à partir d’une fresh install de Debian Wheezy.

S’agissant d’un serveur Web ne disposant pas d’une adresse IP publique, la configuration de celui-ci restera assez sommaire, pour la gestion des différents sites. Le serveur sera accessible via un simple PAT (Port Address Translation) sur le port 80.


Prérequis d’installation

A terme, les arborescences des différents sites seront sur un partage du NAS. Il faudra bien veillez à gérer les droits des utilisateurs, notamment en créant un groupe spécifique. Cette section sera mise à jour lorsque le partage sera effectif et fonctionnel.

L’installation se fait sur un debian Wheezy fraîchement installée et à jour.

J’installe ensuite un certain nombre de paquets nécessaires


aptitude update
aptitude upgrade
aptitude install mysql-server apache2 apache2-mpm-prefork php5 php5-mysql memcached php5-memcached libcache-memcached-perl memcached php5-fpm php-pear sendmail-bin sendmail unzip proftpd
 

A noter que :
- l’installation du paquet apache2-mpm-prefork supprime le paquet apache2-mpm-worker installé par défaut par apache.
- L’installation de mysql-server demande un mot de passe pour le compter superutilisateur
- Memcached est un système pour augmenter la vitesse de réponse des sites web créés à partir de bases de données en stockant les informations en RAM.

Je vérifie que le serveur est maintenant bien en écoute sur le port 80.


tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          28886891    4989/apache2
 


Quelques tests

Lors que je lance un test de connexion au serveur en HTTP, j’arrive bien sur la page par défaut du serveur.


It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.
 

La configuration du site par défaut est déclarée dans le fichier /etc/apache2/sites-enabled/000-default.
Il y est notamment défini un fichier index.html qui est présent dans le dossier /var/www/index.html

Je créé le fichier /var/www/test.php avec le contenu suivant :


		 ?php
		phpinfo();
		?
 

J’ouvre une nouvelle page HTML avec l’URL suivante http://Adresse_IP_Serveur/test.php.
J’accède à une nouvelle page m’affichant le détail de la configuration PHP du serveur.

A priori, à ce niveau tout est fonctionnel. je peux donc continuer.


Configuration de Apache

Un peu coup de tunning sur apache :


a2enmod rewrite
a2enmod deflate
 

La commande a2enmod permet d’activer des modules.

- Le module mod_rewrite permet la réécriture des URLs. Cela permet de faire croire à l’internaute qu’il se trouve sur une page X.php alors que la page réelle est par exemple Z.php?param=X. Cela améliore le référencement dans les moteurs de recherche et augmente légèrement la sécurité des sites Web.

- Le module mod_deflate fournit les filtres DEFLATE permettant à la sortie du serveur d’être compressée avant d’être envoyée au navigateur sur le réseau. Ce qui apporte une économie de bande passante pouvant aller parfois jusqu’à 80%, une légère consommation en plus du processeur ainsi que de la mémoire est à prévoir.


root@web3:/# a2enmod deflate
Module deflate already enabled
root@web3:~# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
root@web3:~#
root@web3:~#   service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
 

Un petit restart d’apache pour finaliser.

On va maintenant loguer les logs PHP.


mkdir /var/log/php
chown www-data /var/log/php
 

Ne pas oublier de changer les droits pour rendre le fichier de logs inscriptible par Apache (user www-data).

Puis éditer le fichier de configuration de PHP « etc/php5/apache2/php.ini »
pour ajouter l’instruction suivante :


error_log = /var/log/php/php_errors.log
 

Il faut gérer la rotation de ce fichier de logs, en créant le fichier « /etc/logrotate.d/php »


/var/log/php/php_errors.log {
 weekly
 missingok
 rotate 4
 notifempty
 create
 }
 

Et un petit restart de apache.


/etc/init.d/apache2 restart
 

Normalement chacun des sites devrait avoir sa propre arborescence dans le répertoire /var/www. Par défaut, c’est ce répertoire qui est racine du site par défaut. On va modifier cette configuration.

Création d’un nouveau dossier qui sera le répertoire du site par défaut


root@web3:/var/www# mkdir default-site
 

On déplace les fichiers index.html et /test.php. dans ce nouveau dossier.


root@web3:/var/www# mv index.html default-site/
root@web3:/var/www# mv test.php default-site/
 

Il faut maintenant mettre à jour le fichier de configuration du site par défaut pour changer les directives documentRoot et Directory avec le nouveau chemin.


root@web3:/var/www# vi /etc/apache2/sites-enabled/000-default
 

Un petit restart de apache pour finaliser la configuration


root@web3:~#   service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
 

Des nouveaux tests vers les URL précédemment testées sont toujours OK. Les modifications ont donc bien été prise en compte.


Gestion des vHost

Ou plutôt non-gestion des vHosts… Comme indiqué en préalable, le serveur WEB ne dispose pas d’une interface publique et se trouve derrière une FreeBoite. J’utilise du PAT pour rediriger les flux http vers le serveur. En conséquence, il semble que je peux pas utiliser les vHost pour héberger différents sites.

Du coup, je vais donc créer différents sites dans l’arborescence par défaut. Ainsi sur le Web, chaque site sera accessible par une URL du type « http://Adresse_IP_Serveur/DOSSIER ». Ce n’est pas très sexy…

Sur mon hébergeur DNS (GANDI), je vais mettre en place une redirection web dite transparente.


 test 	transparent 	http://IP_PUBLIQUE/toto
 

Concrètement en tapant dans la barre d’adresse l’URL suivante : http://test.mondomaine.com, c’est comme si je tapais http://IP_PUBLIQUE/toto. Cela me fait arriver sur le dossier toto positionné dans le répertoire « /var/www/default-site/toto » et le fichier index sera lu. Sur la barre adresse du navigateur, il sera affiché http://test.mondomaine.com et non l’IP publique du serveur.

Dans la continuité de ces remarques, il faudra veiller à modifier le fichier index par défaut renvoyé par le serveur pour toutes les connexions arrivant sur le serveur qui seront automatiquement renvoyées sur le vHost par défaut…


Configuration mysql

Il faut maintenant créer la database sur MySQL qui sera utilisée par les différentes instances de WordPress. J’utilise les paramètres suivants :
Username: wordpress
Password: wordpress
Database name: wordpress


# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* to wordpress@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
 


Tunning PHP

C’est un peu exagéré de parler de tuning PHP alors qu’un seul paramétre va être changé. :)

Dans le fichier /etc/php5/apache2/php.ini il faut changer la valeur du paramètre « upload_max_filesize » de 2 à 8.


upload_max_filesize = 8M
 


Configuration FTP

J’utilise proftp comme serveur FTP qui est assez simple à configurer. Pour la gestion des ssites et des contenus, il faudra déclarer un user par site et définir le dossier par défaut de cet utilisateur comme étant la racine du dossier web.

La configuration fonctionnelle des utilisateurs est la suivante :


alice:x:20010:10001:,,,:/var/www/default-site/toto:/bin/sh
bob:x:20011:10001:ftp users,,,:/var/www/default-site/titi:/bin/sh
 

A noter les ID élevés de ces comptes pour être sur de pouvoir identifier rapidement ces comptes. Ils sont associés à un groupe nouvellement créé avec un indice élevé lui aussi. Pour pouvoir utiliser ces compte via un client FTP il faut que le shell soit activé. Pas très sécurisé, mais je n’ai pas encore regardé pourquoi cela est nécessaire.

Évidemment il faut aussi ajouter ces user dans le groupe www-data pour qu’ils bénéficient des même droits que l’user www-data.

Incidemment , il ne faut pas oublier de donner la propriété de l’arborescence Web au groupe www-data.


Installation et configuration de WordPress

Le serveur Web étant maintenant fonctionnel, on peut installer WordPress. Il existe la possibilité de gérer du multisite à partir d’une seule interface. Lors de mes précédents tests, ce n’était pas trop concluant, peut-être à cause des problématiques réseau… Du coup, j’installe un WordPress par site et je les gérerai de façon unitaire ; je n’ai pas non plus 36 000 sites. :)

Pour chaque site wordpress que je veux avoir, je créé donc un dossier dans le répertorie par défaut « /var/www/default-site/ » et je crée un utilisateur spécifique.

Je me positionne dans le dossier cible.


cd /var/www/default-site/WP01
wget http://wordpress.org/latest.zip
unzip latest.zip

Un nouveau dossier wordpress est créé et tous les fichiers s’y trouvent. Je déplace tout le contenu à la racine et supprime ensuite le dossier wordpress.

Pour finaliser l’installation il suffit de se loguer sur l’interface Web et de suivre les instructions.

Avec cette méthode, le WordPress est en anglais. Pour le franciser, il faut récupérer la derneire version de WP francisé sur le site http://fr.wordpress.org/

Dans le fichier de configruation « wp-config.php », il faut modifier le paramètre langue.


		define ('WPLANG', '');

Il faut remplacer le contenu par ceci pour passer en français :


		define ('WPLANG', 'fr_FR');

Il reste à copier le dossier « ~/wordpress/wp-content/languages » récupéré dans l’archive dans le dossier « ~/wp-content » du site.

Pour installer un second wordpress, il faut créer un second répertoire dans votre dossier web qui contiendra ce nouveau blog. Ensuite, on copie dans ce second répertoire les fichiers d’une nouvelle installation de WordPress. On récupérer le fichier « wp-config.php » dans le répertoire qui contient le premier blog et on le copie dans le répertoire du second blog.

Il reste à éditer ce fichier pour modifier le préfixe qui sera utilisé dans la base de données pour distinguer les différentes installations WordPress.


/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix  = 'wp_';

Ici, le préfixe de la première installation « wp_ » est remplacé par le préfixe « xp_ ».


/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix  = xp_';

Sources :

http://linuxconfig.org/wordpress-installation-ubuntu-linux-apache-mysql

http://www.dvda.fr/2013/11/04/installer-serveur-web-sous-debian-7-wheezy-lamp/

http://installer-wordpress.blogspot.fr/2012/04/installer-plusieurs-blogs-wordpress-sur.html

http://www.vulgarisation-informatique.com/installer-serveur-lamp-debian.php

http://olange.developpez.com/articles/debian/installation-serveur-dedie/

http://doc.ubuntu-fr.org/installer_un_serveur_debian


Présentation

Pour pouvoir télécharger rapidement les dernières distributions Linux, j’ai voulu installer aMule sur une petite VM tournant sur Debian Wheezy. Ayant un peu galéré à faire l’installation, j’en ai profité pour me faire ce mémo si je dois refaire une installation.


Installation des packages

N’ayant pas d’écran, c’est amuleweb que j’ai installé. Le package amule-daemon tourne en tant que daemon, la gestion se fait par une interface web.


apt-get update
apt-get upgrade
aptitude install  amule-daemon

Il faut ensuite déclarer et configurer le compte utilisateur qui lancera le service amule-daemon. Je spécifie un home différent pour le user amule.


addgroup amule
useradd -g amule amule --home /home/Amule/
mkdir /home/Amule/
chown -R amule:amule /home/Amule/

Avant toute chose, il faut lancer le amule-daemon.


/etc/init.d/amule-daemon start

A chaque étape, il est possible de lancer la commande suivante qui permet de débugger au fur et à mesure.


/etc/init.d/amule-daemon restart && tail -f /mnt/DL/Amule/.aMule/logfile


Configuration amule-daemon

Il reste ensuite à configurer amule-daemon. Il y a deux fichiers à modifier et un à créer. Il faut déclarer générer le hash du mot de passe qui sera utilisé.


echo -n "PASSWORD" | md5sum | cut -d " " -f 1

Le premier fichier à éditer est « amule.conf » dans le dossier « /mnt/DL/Amule/.aMule/ ». Les paramètres à modifier sont les suivants :


[ExternalConnect]
AcceptExternalConnections=1
ECPassword=HASH_PASSWORD

[WebServer]
Enabled=1
Password=HASH_PASSWORD

Le second fichier est « amule-daemon » dans le répertoire « /etc/default/ ». Il faut déclarer l’utilisateur qui va lancer amule-daemon. Il est aussi possible de spécifier le dossier dans lequel seront téléchargées les données.


AMULED_USER="amule"
AMULED_HOME=""

Il reste à créer le dernier fichier de configuration « remote.conf » dans le répertoire courant « .aMule » avec le contenu suivant.


Locale=

[EC]
Host=localhost
Port=4712
Password=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a

[Webserver]
Port=4711
UPnPWebServerEnabled=0
UPnPTCPPort=50001
#Template=php-default
Template=chicane
UseGzip=0
AllowGuest=0
AdminPassword=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a
GuestPassword=esdfsdfsd1cd9b1f6b9182dc4fb2be3a5a

Il ne reste plus qu’à lancer amule-daemon et se connecter sur l’interface WEB, sur le port 4711.


Présentation

Pour augmenter ma capacité de stockage j’ai investi dans des disques dur de 3TB. Mais lorsque j’ai voulu les installer, j’ai rencontré quelques soucis. Le problème n’était pas au niveau du hardware, mais au niveau de la déclaration et de la configuration des disques.


parted et non fdisk

Fdisk ne permet pas de créer des partitions supérieures à 2TB. Pour ne pas avoir ce problème il faut utiliser GPT. Cette technologie a deux principaux avantages par rapport au partitionnement classique (MsDos) :
- Gestion des des disques de taille >2.2To
- Pas de limite dans le nombre de partitions primaires

Il faut utiliser l’utilitaire parted pour configurer les disques avec GPT.


Partitionnement

Lors de mes premières manipulations, que cela soit avec fdisk ou parted j’avais un message d’erreur indiquant un problème d’alignement de disque.


parted Warning: The resulting partition is not properly aligned for best performance.
 

Du coup, lors du partitionnement, j’ai aussi passé une commande pour ré-aligner les disques. Ainsi la partitionnement commence au secteur suivant.


parted -a optimal /dev/sdh
(parted) mktable gpt
(parted) mkpart primary ext3 1 -1
 

En vérifiant, j’ai bien une partition entière sur tout le disque.


(parted) p
Model: ATA WDC WD30EZRX-00A (scsi)
Disk /dev/sdh: 5860533168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End          Size         File system  Name     Flags
 1      2048s  5860532223s  5860530176s               primary
 

Et je n’ai plus de problème d’alignement non plus.


(parted) align-check optimal 1
1 aligned
 

Comme c’est un disque qui fera essentiellement de stockage de données et de sauvegarde, je n’ai pas besoin de conserver un espace réservé à root, qui est par défaut à 5% de l’espace total du disque.


tune2fs -m0 /dev/sdh1
 


Présentation

Comme j’avais galéré lors de précédentes tentatives pour créer un RAID sur mon serveur, cette fois, j’ai bien pris note pas à pas des opérations effectuées, pour me faire un mémo. Cela me permet aussi de ne pas à avoir à chercher partout des infos si je dois recommencer.

Pour gérer mon raid, que cela soit sur DEBIAN ou sur UBUNTU, j’utilise mdadm.


Procédure

Après les avoir installé physiquement, la première étape consiste à bien identifier que les disques sont présents. Il suffit d’utiliser fdisk qui va pouvoir lister tous les disques et partitions du système.

fdisk -l

S’il s’agit d’identifier les disques, avec un grep, cela devient un peu plus lisible.


fdisk -l | grep dev

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdc » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdh » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Le disque /dev/md_d0 ne contient pas une table de partitions valable
Disque /dev/sda : 250.1 Go, 250059350016 octets
/dev/sda1   *        2048    39999487    19998720   83  Linux
/dev/sda2        40001534   488396799   224197633    5  Étendue
/dev/sda5        40001536    79998975    19998720   83  Linux
/dev/sda6       480397312   488396799     3999744   82  partition d'échange Linux / Solaris
/dev/sda7        80001024   480391167   200195072   83  Linux
Disque /dev/sdb : 320.1 Go, 320072933376 octets
/dev/sdb1              63   625137344   312568641    c  W95 FAT32 (LBA)
Disque /dev/sdc : 3000.6 Go, 3000592982016 octets
/dev/sdc1               1  4294967295  2147483647+  ee  GPT
Disque /dev/sdh : 3000.6 Go, 3000592982016 octets
/dev/sdh1               1  4294967295  2147483647+  ee  GPT

Utilisant des disques de grandes capacités avec un formatage non pris en charge par fdisk, j’ai quelques messages d’avertissements. Mais rien d’anormal. C’est d’ailleurs avec ces deux disques que je vais monter mon raid.
Il sont identifiés comme /dev/sdh et /dev/sdc.

Il suffit de lancer la commande suivante pour initier la création du raid.


mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdh1

Avec la commande suivante, on visualise ensuite l’avancement de la synchronisation du raid :


cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdh1[1] sdc1[0]
      2930133824 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.0% (956672/2930133824) finish=612.3min speed=79722K/sec

unused devices: 

Là, le système m’indique qu’il y en a pour près de 10heures pour la synchro. Bah je repasserai plus tard.

Le lendemain, je vérifie que la synchronisation s’est bien faite et s’est bien terminée.


 mdadm --detail /dev/md_d0 

/dev/md_d0:
        Version : 1.2
  Creation Time : Wed Sep 11 00:13:08 2013
     Raid Level : raid1
     Array Size : 2930133824 (2794.39 GiB 3000.46 GB)
  Used Dev Size : 2930133824 (2794.39 GiB 3000.46 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Wed Sep 11 21:22:34 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : SERVER:0  (local to host SERVER)
           UUID : 8ede2d8c:d693e1dc:a085988a:8f0754cf
         Events : 19

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8      113        1      active sync   /dev/sdh1


cat /proc/mdstat
Personalities : [raid1]
md_d0 : active raid1 sdc1[0] sdh1[1]
      2930133824 blocks super 1.2 [2/2] [UU]

unused devices: 

Tout semble OK. Le raid est bien actif.

Je partitionne le RAID en ext3


mkfs.ext3 /dev/md_d0
mke2fs 1.42.5 (29-Jul-2012)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
183140352 i-noeuds, 732533456 blocs
36626672 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=4294967296
22356 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
	102400000, 214990848, 512000000, 550731776, 644972544

Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Je limite la taille de l’espace alloué à root


tune2fs -m0 /dev/md_d0
tune2fs 1.42.5 (29-Jul-2012)

Je créé un point de montage et monte le RAID sur ce point de mountage.


mkdir  /mnt/BIG
mount /dev/md_d0 /mnt/BIG

Je vérifie que le point de montage est bien là


df -h | grep BIG
/dev/md_d0                                               2,7T  202M  2,6T   1% /mnt/BIG

Tout va bien.

Il me reste plus qu’à finaliser la configuration mdadm pour que le RAID soit bien lancé au démarrage. Je récupère la configuration chargée par mdadm et je la copie dans le fichier de configuration de mdadm pour qu’elle soit bien lancée au démarrage.


mdadm  --examine  --scan
ARRAY /dev/md/0 metadata=1.2 UUID=8ede2d8c:d693e1dc:a085988a:8f0754cf name=SERVER:0
 

J’édite le fichier /etc/mdadm/mdadm.conf et j’ajoute le résultat de la commande précédente, pour forcer le raid à utiliser ces deux disques.


vi /etc/mdadm/mdadm.conf 

ARRAY /dev/md/0 metadata=1.2 UUID=8ede2d8c:d693e1dc:a085988a:8f0754cf name=SERVER:0

Enfin, je déclare le montage dans /etc/fstab pour que le RAID soit bien monté au reboot du serveur. J’ai voulu déclarer le montage en utilisant l’UUID du raid, mais cela n’a pas fonctionné. J’ai donc fait une déclaration plus classique. J’édite le fichier /etc/fstab pour déclarer le montage avec les options qui vont bien.


vi /etc/fstab

# Montage du RAID 3 TB
#UUID=UUID=7c54cd31-a66c-4770-851d-4777904815a3 /DATA2 ext3 defaults 0 1
/dev/md_d0 /DATA2 ext3 defaults 0 1

Pour finir, un reboot, quelques vérifications avec mount, df et mdadm pour contrôler que le RAID est bien actif et opérationnel.


Présentation

De temps à autre, j’ai mon ordinateur qui freeze un peu. Je me doutais qu’il s’agissait d’un problème au niveau du NFS. J’ai fini par comprendre que lorsque je faisais un peu tout et n’importe quoi avec mon serveur ca pouvait parfois coincer avec les partages NFS actifs sur mon PC.


Résolution

Et puis impossible de démonter les partages sur mon PC. Je recevais des messages pas sympas, comme quoi le services NFS étaient busy. Et mon file manager qui ne répondait plus.

Je ne pouvais plus démonter un partage qui n’existait plus. Et lorsque j’ai voulu monter un nouveau partage, mon système m’a déclaré :

mount.nfs: Stale NFS file handle

Ce problème survient si des modifications ont été effectuées sur le serveur hôte et que le client considère toujours des fichiers ou une arborescence comme actifs sur le serveur.

Bob@Linux:/$sudo umount -f /mnt/local

Source : http://www.cyberciti.biz/tips/nfs-stale-file-handle-error-and-solution.html


Présentation

Ça a mis un peu de temps à rentrer, mais ca commence. :)

Il y a deux configurations. Sur le serveur hébergeant les ressources à partager, il faut déclarer quelles ressources sont à partager. Et avec qui. Sur le client, qui veux accéder aux ressources, il faut déclarer quelles ressources et sur quel serveur auxquelles on veut accéder.


Partie Serveur

Sur le serveur il faut éditer le fichier /etc/exports où seront déclarés tous les partages NFS.

ramon@mediaserver:/$ sudo vi /etc/exports 

Dans le fichier on saisi les partages et les adresses des clients, puis quelques paramètres de configuration. :

/mnt/raid1 192.168.0.10(rw,all_squash,anonuid=1000,anongid=1000,sync)

On recharge la configuration avec la commande suivante :

root@mediaserver:~$ sudo exportfs -a


Partie Client

Il faut déjà créer le dossier qui sera le point de montage.

Bob@Linux:/$ sudo mkdir -p /mnt/mediaserver2

Et on va ensuite déclarer le nouveau montage NFS

Bob@Linux:/$sudo vi /etc/fstab

Dans le fichier il faut déclarer le path de la ressource distante puis le point de montage local ou sera montée le partage NFS.

192.168.0.1:/mnt/raid1/ /mnt/mediaserver2 nfs user,noauto,rw    0       0

On recharge le fichier de configuration et on peut ensuite monter le partage.

Bob@Linux:/$sudo sudo mount -a
Bob@Linux:/$sudo sudo mount /mnt/mediaserver2/


Présentation

Je crois bien que l’une des commande que je tape le plus souvent est la consultation des logs.

Bob@Linux:/$tail -f /var/log/syslog

Et pour me faciliter la vie, j’ai voulu me faire un petit raccourci pour lancer cette commande. Et du coup, en profiter pour mettre en place la colorisation des logs.


Résolution

J’ai installé les paquets suivants

Bob@Linux:/$sudo aptitude install ccze syslog-ng

Le paquet syslog-ng n’est pas forcément nécessaire, mais comme j’ai pris l’habitude de l’installer et de l’utiliser, surtout dans la gestion d’un syslog centralisé, je le mets maintenant systématiquement.
Le paquet ccze est le paquet qui colorise les logs (et pas que les logs d’ailleurs).

ll ne reste plus qu’à éditer le fichier de personnalisation du bash

Bob@Linux:/$sudo  vi /home/bob/.bashrc 

Et à ajouter les lignes suivantes :

# Colorisation des logs
logtail() { tail -f $1 | ccze -A; }
alias logt='logtail'
alias logsys='logtail /var/log/syslog'
 

La première ligne permet de déclarer la nouvelle commande « logtail » qui exécutera automatiquement une colorisation des logs sur un tail. En paramètre il suffit d’indiquer le fichier de logs à exploiter. La commande logt est un alias de logtail (c’est toujours 3 lettres de moins à saisir).

Et comme la consultation du syslog est la principale consultation que je fais, j’ai rajouté un nouvel alias où je spécifie exactement le log à exploiter.


Objectif

Après avoir mis en place l’affichage de fortunes, j’ai voulu avoir la possibilité de personnaliser un peu plus le démarrage de mes sessions SSH.

Le plus simple pour cela est d’utiliser les scripts MOTD qui sont très personnalisables.


Personnalisation

Dans le répertoire /etc/update-motd.d/ se trouvent plusieurs scripts qui servent à construire le MOTD qui sera affiché à l’ouverture d’une session SSH.


media:/etc/update-motd.d$ ls -lah
total 48k
drwxr-xr-x    2 root     root         4.0k Jun  2 21:09 .
drwxr-xr-x  162 root     root          12k Jun  2 12:37 ..
-rwxr-xr-x    1 root     root         1.2k Jun  2 19:54 00-header
-rwxr-xr-x    1 root     root         1.1k Jun  2 19:55 10-help-text
-rwxr-xr-x    1 root     root          149 Jan 25 11:32 90-updates-available
-rwxr-xr-x    1 root     root          129 Apr 19 09:23 91-release-upgrade
-rwxr-xr-x    1 root     root          142 Jan 25 11:32 98-fsck-at-reboot
-rwxr-xr-x    1 root     root          144 Jan 25 11:32 98-reboot-required
-rwxr-xr-x    1 root     root         1.1k Oct 21  2010 99-footer

Pour faire afficher les informations de son choix, il suffit de rajouter un script numéroté.

Pour connaitre les sessions SSH ouvertes sur le serveur, j’ai créé le script suivant


cd /etc/update-motd.d
sudo touch 11-custom
sudo chmod 755 11-custom

Voici le contenu du script, qui va m’afficher la date, l’uptime et le load average du serveur et le détail des connexions ouvertes.


#!/bin/sh
date
echo ""
uptime
echo ""
echo "Connexions en cours"
who -H
echo

A chaque connexion SSH, j’ai maintenant ça qui est affiché :


Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic i686)
Thu Jun  2 21:42:14 CEST 2011

 21:42:14 up  9:06,  5 users,  load average: 0.01, 0.05, 0.06

Connexions en cours
NAME     LINE         TIME         COMMENT
ramon    tty7         Jun  2 12:36 (:0)
ramon    pts/0        Jun  2 12:38 (grey-linux.local)
ramon    pts/1        Jun  2 12:42 (grey-linux.local)
ramon    pts/2        Jun  2 12:44 (grey-linux.local)
ramon    pts/3        Jun  2 12:53 (grey-linux.local)

Last login: Thu Jun  2 21:10:55 2011 from grey-linux.local


Activation de la bannière Login SSH

Il est possible d’afficher un message d’information au moment la connexion SSH, lorsque le système demande le mot de passe.

Pour cela, il y a un paramètre a activer dans le fichier de configuration SSH /etc/ssh/sshd_config, puis à saisir le message qui sera affiché dans le fichier idoine.


sudo vi /etc/sshd_config

Dans le ficher sshd_config il faut dé-commenter la ligne suivante :


Banner /etc/issue.net

Il faut ensuite éditer le fichier /etc/issue.net pour y saisir le message qu’on souhaite voir afficher :


*********************************************************************
****  Avertissement ! Accès aux seules personnes autorisées !   ****
****  Vos activités au cours de cette session sont susceptibles  ****
****  d' être enregistrées. Toute activité illicite fera l'objet ****
****  d'un recours en justice !                                  ****
*********************************************************************

Objectif

A la maison, ou au bureau, je me connecte régulièrement sur mes équipements en SSH. Et j’ai eu envie de personnaliser un peu les connexions, en affichant une citation à l’ouverture de la session. Il y a de nombreuses fortunes disponibles sur le net, et j’ai mis la main sur une qui cite les « Chuck Norris facts ».

Rapidement téléchargé, puis installé, j’ai maintenant le plaisir de découvrir de nouveaux facts à chaque connexion. :D

Afin de pouvoir installer cette fortune sur plusieurs machines rapidement, j’ai fait un petit script.


Téléchargement des facts

On télécharge le fichier. Pour ma part, j’ai créé une arborescnece pour dépposer les fortunes.


mkdir /usr/hsare/fortunes
cd /usr/share/fortunes
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

Sur ubuntu, il faut exécuter toutes les commande en super utilisateur (sudo).

On converti le fichier avec l’encodage UTF8 pour la prise en charge des accents et caractères spéciaux et on le renomme.


iconv -f iso-8859-1 -t utf8 fortunes.txt --output chuck

Puis on génère le fichier fortune


strfile -s -r chuck chuck.dat

On peut tester que l’appel à cette fortune fonctionne :


media:~$ fortune /usr/share/fortunes/chuck
Chuck Norris n'a pas de sang sur les mains, ses ennemis nettoient avant de mourir.

Il ne reste plus qu’à éditer le fichier ~/.bashrc et copier la ligne suivante


fortune /usr/share/fortunes/chuck


Script

Pour gagner du temps, j’ai fait un petit script.


#!/bin/bash

# Script d'installation des fortunes
# Creation : 2011/06/02
# Derniere modification : 2011/06/02
# Licence : GPL
#
# Syntaxe Ubuntu : # sudo ./FortunesInstall.sh

# Verification des droits utilisateurs pour l execution du script

if [ $EUID -ne 0 ]; then
   echo "Le script doit etre lance en root : # sudo $0 Arg OPT" 1>&2
   exit 1
fi

# Creation du dossier des fortunes
#mkdir /usr/share/fortunes

cd /usr/share/fortunes

# telechargement des "Chuck Norris Facts"
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

# Conversion et renommage du fichier
iconv -f iso-8859-1 -t utf8 /usr/share/fortunes/fortunes.txt --output /usr/share/fortunes/chuck

# Generation de la fortune
strfile -s -r /usr/share/fortunes/chuck /usr/share/fortunes/chuck.dat

# Configuration du bash pour afficher les fortunes
echo "fortune /usr/share/fortunes/chuck" >> ~/.bashrc


Autres fortunes

Si les facts de Chuck Norris ne vous convienennt pas, voici d’autres fortunes à télécharger et installer.
- http://www.fortunes-fr.org/data/litterature_francaise
- http://www.fortunes-fr.org/data/personnalites
- http://www.fortunes-fr.org/data/proverbes
- http://www.fortunes-fr.org/data/philosophie
- http://www.fortunes-fr.org/data/sciences

Le principe est le même, il faut télécharger le fichier puis le convertir à l’aide de la commande « strfile ».


 wget http://www.fortunes-fr.org/data/philosophie
 strfile philosophie philosophie.dat


Et avoir une vache qui parle

Il est possible d’avoir une vache (et d’autres animaux) qui cite les fortunes installées.


media:~$ fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)
 ______________________________________
/ Jupiter est né de la cuisse de Chuck \
\ Norris                               /
 --------------------------------------
       \ (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~

Il suffit pour cela d’installer le paquet cowsay


aptitude install cowsay

Dans le fichier .bashrc, il faut ajouter la ligne suivante :


fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)