Pour faire suite à l'article sur l'installation d'un serveur LAMP sur un Raspberry Pi. On va ici installer une application Web qui permet entre autre le partage de fichiers, d'agenda et de contacts : Owncloud.
Isolation de l'environnement Web
Pour commencer je crée un environnement d'hébergements Web de la façon suivante :
- un répertoire de travail contenant les répertoires suivants :
- www : pour la partie Web
- etc : pour la configuration apache et php
- var : pour les logs, les fichiers temporaires
- scripts : si besoins de mettre en place des scripts spécifiques
- un utilisateur et un groupe dédié
- une base de données et un utilisateur dédié
Répertoire de travail
# mkdir -p /var/www/cloud.guidtz.local/{etc,var/{log,tmp/upload},scripts}
Utilisateur
# useradd -s /bin/false -d /var/www/cloud.guidtz.local/www/ cloud
# adduser www-data cloud
Base de données
mysql> create database cloud character set utf8 ;
mysql> grant all privileges on cloud.* to 'cloud_uzer'@'localhost' identified by 'cloudmaison' with grant option ;
Installation d'Owncloud
Installation du code
# cd /var/www/cloud.guidtz.local/
# wget https://download.owncloud.org/community/owncloud-8.0.3.tar.bz2
# tar xvjf owncloud-8.0.3.tar.bz2
# ln -s owncloud www
# owncloud-8.0.3.tar.bz2
Paramétrages
Dans le répertoire etc j'ai deux fichiers : apache.conf
<VirtualHost *:80>
ServerName cloud.guidtz.local
ServerAdmin sysadmin@cheramy.name
Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm-cloud
FastCgiExternalServer /fcgi-bin-php5-fpm-cloud -socket /var/run/php5-fpm-cloud.sock -idle-timeout 180 -pass-header Authorization
LogLevel warn
ErrorLog "|nice -n 10 /usr/bin/cronolog /var/www/cloud.guidtz.local/var/logs/apache2/%Y/%W/%d-error.log"
CustomLog "|nice -n 10 /usr/bin/cronolog /var/www/cloud.guidtz.local/var/logs/apache2/%Y/%W/%d-access.log" combined
DocumentRoot /var/www/cloud.guidtz.local/www
<Directory /var/www/cloud.guidtz.local/www/>
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
et php5.conf
[cloud]
user = cloud
group = cloud
listen = /var/run/php5-fpm-cloud.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 5
pm.max_requests = 50
;request_terminate_timeout = 45s
On modifie les droits sur le répertoire de travail :
# cd /var/www
# chmod 2770 cloud.guidtz.local/
# find ./cloud.guidtz.local/ -type d -exec chmod 2770 {} \;
# find ./cloud.guidtz.local/ -type f -exec chmod 660 {} \;
# chown -R cloud.cloud cloud.guidtz.local/
On crée les liens pour php et apache :
# cd /etc/php5/fpm/pool.d/
# ln -s /var/www/cloud.guidtz.local/etc/php5.conf ./cloud.conf
# /etc/init.d/php5-fpm reload
# cd /etc/apache2/sites-available/
# ln -s /var/www/cloud.guidtz.local/etc/apache.conf ./cloud.guidtz.local
# a2ensite cloud.guidtz.local
# /etc/init.d/apache2 reload
Il faut modifier les dns de la zone ou les fichiers hosts pour accéder au site.
Une fois sur l'interface Web, il faut finaliser l'installation d'owncloud il reste à créer :
- un identifiant et password administrateur
- affecter l'utilisateur et password de la base de données
L'installation d'Owncloud est alors finie.
Optimisation
Il faut pas oublier que notre petit Raspberry n'a qu'un processeur ARM et 512Mb de Ram il faut donc régler quelques paramétrages.
Raspberry
Côté performances Raspberry je suis passé sur le modèle Medium (900Mhz) dans l'Overclock.
Owncloud cron
Il faut passer les cron en crontab et non pas en Ajax et paramétrer la crontab comme ceci :
# crontab -u cloud -e
*/15 * * * * php -f /var/www/cloud.guidtz.local/www/cron.php
Owncloud limiter les applications
Il faut limiter à l'essentiel les applications activées. Par exemple je désactive :
- activity
- first run wizard
- pdf viewer
- text editor
- updater
- video viewer
Monter un disque externe
On ne va pas stocker les données sur la carte SD, on va utiliser un disque dur ou une clé USB pour stocker les fichiers.
La première chose à faire est d'indentifier le périphérique de stockage :
# fdisk -l
Disk /dev/sda: 7864 MB, 7864320000 bytes
30 heads, 33 sectors/track, 15515 cylinders, total 15360000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x58431388
Device Boot Start End Blocks Id System
/dev/sda1 2048 15359999 7678976 c W95 FAT32 (LBA)
On va monter ce périphérique dans un répertoire de l'arborescence du système :
# mkdir /media/data
Modifier la fstab pour que le montage se refasse à chaque démarrage :
/dev/sda1 /media/data vfat defaults,uid=1001,gid=1004,umask=007 0 0
l'uid et le gid correspondent à ceux de l'utilisateur et du group cloud créé précédement.
Monter la partition :
# mount -a
Il reste à adapter le paramètre dans le fichier de config d'owncloud www/config/config.php :
'datadirectory' => '/media/data',
Owncloud est maintenant opérationnel et les fichiers seront stockés sur le support USB.