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
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)seafile 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 !
Editer seafile/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]
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
[[1]]
* ou depuis le depot git de seahub :
[[2]]
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