Seafile : installation sur CentOS
De wikiGite
Sommaire
Installation
Python 2.6 doit être installé. Sur une CentOS 5, on l'installera par :
yum install --enablerepo=epel python26
(voir Dépôts complémentaires pour le dépôt EPEL)
Installer les pré-requis :
yum install python-setuptools python-simplejson python-imaging MySQL-python httpd mod_ssl
ou, sur CentOS5 :
yum install --enablerepo=epel python26-distribute python26-setuptools python26-simplejson python26-imaging python26-mysqldb
Vérifier la dernière version sur https://bitbucket.org/haiwen/seafile/downloads
cd install/
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_{version seafile}_x86-64.tar.gz # ou ....i386.tar.gz sur système 32 bits
Créer un répertoire seafile dans /home:
cd /home
mkdir seafile
cd seafile
tar -xvzf /root/install/seafile-server_{version seafile}_*.tar.gz
L'archive crée un sous-répertoire avec la version en cours. Lors d'une mise à jour, la précédente version ne sera donc pas écrasée.
Lancer l'installation (qui créera les bases de données) :
cd seafile-server-{version seafile}
./setup-seafile-mysql.sh
* Nommer le server (nom affiché sur les clients, sans espaces) * donner l'IP du serveur * laisser le port ccnet, le chemin des données et les ports seafile par défaut * donner un mail pour l'administrateur (mail existant si possible, qui servira à se connecter à l'interface) et un mot de passe * Choisir "1" pour créer les bases * donner les paramètres MySQL * demander la création d'un utilisateur seafile * laisser les noms de bases par défaut
On peut alors tester Seafile directement :
./seafile.sh start
./seahub.sh start
Et se connecter à l'interface par http://IP_DU_SERVEUR:8000
Lancement automatique
https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup
D'abord, arrêter Seafile ! Il a été lancé avec le compte root pour le test, on le relancera avec un compte spécifique.
./seafile.sh stop
./seahub.sh stop
Créer un utilisateur seafile, dont le homedir sera le répertoire seafile :
adduser -c "Seafile user" -d /home/seafile seafile
chown -R seafile:apache /home/seafile
chmod 750 /home/seafile
Créer le fichier /etc/sysconfig/seafile :
# Utilisateur lançant seafile user=seafile # Répertoire d'installation seafile_dir=/home/seafile script_path=${seafile_dir}/seafile-server-latest seafile_init_log=${seafile_dir}/logs/seafile.init.log seahub_init_log=${seafile_dir}/logs/seahub.init.log # Mettre la valeur sur true si on utilise fastcgi fastcgi=true # définir le port pour fastcgi, par défaut le port 8000. fastcgi_port=8000
Créer un script d'init pour le serveur seafile /etc/init.d/seafile :
#!/bin/bash
#
# seafile
#
# chkconfig: - 68 32
# description: seafile
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
if [ -f /etc/sysconfig/seafile ];then
. /etc/sysconfig/seafile
else
echo "Config file /etc/sysconfig/seafile not found! Bye."
exit 200
fi
RETVAL=0
start() {
# Start daemons.
echo -n $"Starting seafile: "
ulimit -n 30000
su - ${user} -c"${script_path}/seafile.sh start >> ${seafile_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seafile
return $RETVAL
}
stop() {
echo -n $"Shutting down seafile: "
su - ${user} -c"${script_path}/seafile.sh stop >> ${seafile_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seafile
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=3
esac
Créer un script d'init pour l'interface web seahub /etc/init.d/seahub :
#!/bin/bash
#
# seahub
#
# chkconfig: - 69 31
# description: seahub
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
if [ -f /etc/sysconfig/seafile ];then
. /etc/sysconfig/seafile
else
echo "Config file /etc/sysconfig/seafile not found! Bye."
exit 200
fi
RETVAL=0
start() {
# Start daemons.
echo -n $"Starting seahub: "
ulimit -n 30000
if [ $fastcgi = true ];
then
su - ${user} -c"${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 2>&1"
else
su - ${user} -c"${script_path}/seahub.sh start >> ${seahub_init_log} 2>&1"
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/seahub
return $RETVAL
}
stop() {
echo -n $"Shutting down seafile: "
su - ${user} -c"${script_path}/seahub.sh stop >> ${seahub_init_log} 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/seahub
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=3
esac
exit $RETVAL
Activer les serveurs :
chmod 550 /etc/init.d/seafile
chmod 550 /etc/init.d/seahub
chkconfig --add seafile
chkconfig --add seahub
chkconfig seahub on
chkconfig seafile on
On peut les lancer :
service seafile start
service seahub start
Connexion à Apache
Pour la liaison entre Apache et Seafile, on utilisera Fastcgi. Sur CentOS, à installer des dépôts RPMForge (voir Dépôts complémentaires) :
yum install --enablerepo=rpmforge mod_fastcgi
Editer /etc/httpd/conf.d/fastcgi.conf, modifier :
FastCgiWrapper Off
et ajouter à la fin :
<IfModule mod_fastcgi.c> FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000 </IfModule>
NOTE : le fichier /var/www/seahub.fcgi n'a pas besoin d'exister, ce n'est qu'un "wrapper" (voir ci-dessous)
Créer un fichier /etc/httpd/conf.d/seafile.conf :
<VirtualHost *:443> ServerName seafile.domain.fr DocumentRoot /var/www Alias /media /home/seafile/seafile-server-latest/seahub/media/ RewriteEngine On # seafile httpserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # add ssl protocol SSLEngine On SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLCertificateFile /etc/ssl/seafile.crt SSLCertificateKeyFile /etc/ssl/seafile.key </virtualhost>
NOTE : le DocumentRoot doit correspondre au chemin du "wrapper" seahub.fcgi paramétré plus haut !
Dans /home/seafile, éditer ccnet/ccnet.conf, modifier :
SERVICE_URL = https://seafile.domain.com
Editer seahub_settings.py, ajouter :
HTTP_SERVER_ROOT = 'https://seafile.domain.com/seafhttp'
Générer des certificats :
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Copier et renommer les fichiers générés :
mv cacert.pem /etc/ssl/seafile.crt
mv privkey.pem /etc/ssl/seafile.key
Si nécessaire, faire une redirection du site HTTP vers HTTPS. A la racine du site HTTP (port 80, qui doit être différente de la racine du site HTTPS), créer un fichier .htaccess :
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://seafile.domain.fr/$1 [L,R=301]
Dans /etc/htpd/conf/httpd.conf : s'assurer que la directive "AllowOverride" du site par défaut (sous <Directory /var/www/html>) est à "All".
Supprimer /etc/httpd/conf.d/welcome.conf pour ne pas tomber sur la page de test en cas d'erreur.
Reste à relancer apache
service httpd restart
NOTE : Vérifier qu'Apache écoute sur le port 443 ! Décommenter "Listen 443" dans /etc/httpd/conf.d/ssl.conf.
WebDAV
Pour activer WebDAV (gestion des fichiers via le web) sur Seafile :
- Editer seafile/conf/seafdav.conf
[WEBDAV] enabled = true port = 8080 fastcgi = true share_name = /seafdav
- Ajouter dans /etc/httpd/conf.d/seafile.conf les lignes suivantes :
# # seafile webdav # RewriteCond %{HTTP:Authorization} (.+) RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1] RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L]
- Ajouter dans /etc/httpd/conf.d/fastcgi.conf la ligne :
FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080
Reste à relancer apache et Seafile
service httpd restart
service seafile-server restart
La connexion du client DAV se fera sur le dossier "/seafdav".
Memcached
On peut utiliser seafile avec memcached pour accélérer la navigation :
Installation sur centos 6:
yum install memcached python-memcached
Installation sur centos 5 ; ajouter epel puis :
yum install --enablerepo=epel memcached
easy_install-2.6 python-memcached
Ajouter dans seafile/seahub_setting.py :
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
Mise à jour
Arrêter seafile et seahub :
service seafile stop
service seahub stop
Télécharger et installer la mise à jour :
cd /home/seafile/installed
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_2.1.5_x86-64.tar.gz
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_2.1.5_i386.tar.gz
tar xvzf seafile-server_2.1.5_i386.tar.gz
mv seafile-server-2.1.5 ..
Deux scripts sont disponible en fonction du type de mise à jour :
- Pour une mise à jour de version principale (1.8 => 2.0 ou 2.0 => 2.1) :
cd ../seafile-server-2.1.5/upgrade
./upgrade_1.8_2.0.sh
- Pour une simple mise a jour de sous-version (2.1.4 => 2.1.5) :
cd ../seafile-server-2.1.5/upgrade
/minor-upgrade.sh
On donne les droits à l'utilisateur seafile :
chown -R seafile:apache /home/seafile
Relancer seafile et seahub
service seafile start
service seahub start
Personnalisation
Logo
Mettre l'image ici, avec ce nom exact (sauvegarder éventuellement le seafile_logo.png existant) :
/home/seafile/seafile-server-latest/seahub/media/img/seafile_logo.png
Redémarrer seahub
Traduction
cd /home/seafile/seafile-server-2.1.5/seahub/locale/fr/LC_MESSAGES
Suppression de l'ancienne traduction :
rm django.po
Télécharger la traduction :
- depuis le site officiel de traduction :
https://www.transifex.com/organization/haiwen/dashboard/seahub
- ou depuis le depot git de seahub :
https://github.com/haiwen/seahub/tree/master/locale/fr/LC_MESSAGES
Compiler le fichier de traduction :
msgfmt -o django.mo -v django.po
Redémarrer seahub
TIPS
- Les logs sont visibles dans <racine_du_virtualhost>/seafile/seafile-server-<version>/runtime/
- changer le mail administrateur : <racine_du_virtualhost>/seafile/seafile-server-<version>/reset_admin.sh
- administer seafile en ligne de commande : https://github.com/HenriWahl/seafadm
- backup en utilisant l'api (fichier api.py intéressant) : https://github.com/oal/barch