Outils personnels

Seafile : installation sur CentOS : Différence entre versions

De wikiGite

(Installation)
(Connexion à Apache)
Ligne 301 : Ligne 301 :
 
RewriteRule ^(.*)$ https://seafile.domain.fr/$1 [L,R=301]
 
RewriteRule ^(.*)$ https://seafile.domain.fr/$1 [L,R=301]
 
</pre>
 
</pre>
 +
 +
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
 
Reste à relancer apache

Version du 21 octobre 2014 à 09:31

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

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