Installer Seafile sur Debian
Seafile est un concurrent auto-hébergé à Dropbox. En plus de disposer d'un client de synchronisation performant, il permet entre autre d'accéder à vos données via WebDAV. Cette solution est très intéressant pour ceux qui souhaitent conserver le contrôle de leurs données.
Ce guide est testé sur:
- Debian 7.0 Wheezy
Ce guide est testé avec ces versions de Seafile:
- 1.7.0
- 2.1.4
Prérequis
Ce guide nécessite :
- a2tools, l'outil d'administration simplifiée d'Apache 2.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- mysql-tools, l'outil d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="seafile.domain.com"
Renseignez le nom d'hôte du serveur MySQL:
MYSQL_HOST="localhost"
Si le serveur MySQL n'est pas local, l'outil mysql-tools essaiera de s'y connecter avec le client MySQL, ou, en cas d'échec de connexion, via une connexion SSH.
Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec HTTPS (créé via la procédure Créer un certificat SSL / TLS sur Debian) (optionnel, recommandé):
SSL_KEY_NAME="${DOMAIN}"
Paramètres de sécurisation
Renseignez l'adresse email du compte d'administration:
ADMIN_EMAIL="user@domain.com"
Paramètres de fonctionnalités
Renseignez le préfixe d'accès aux services HTTP de transferts de fichier (ne pas utiliser /):
HTTP_PREFIX="/special/data"
Activez le serveur WebDAV intégré à Seafile:
ENABLE_WEBDAV='yes'
Renseignez le préfixe d'accès à WebDAV (ne pas utiliser /):
WEBDAV_PREFIX="/special/webdav"
Remarque: Affichez le lien WebDAV avec:
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
echo "davs://${DOMAIN}${WEBDAV_PREFIX}"
echo "https://${DOMAIN}${WEBDAV_PREFIX}"
else
echo "dav://${DOMAIN}${WEBDAV_PREFIX}"
echo "http://${DOMAIN}${WEBDAV_PREFIX}"
fi
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/var/lib/seafile/${DOMAIN}"
Assurez-vous que le dossier parent existe:
command mkdir --parents "${INSTALL_PATH}"
Déterminez le protocole utilisé par l'application:
PROTO='http'
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
PROTO='https'
fi
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install python2.7 python-setuptools python-simplejson dnsutils \
python-imaging sqlite3 apg python-flup libapache2-mod-fastcgi python-mysqldb
Créez l'utilisateur système seafile:
command adduser --system --group --shell "/bin/sh" \ --no-create-home --home "/opt/seafile" "seafile"
Ajustez les permissions du dossier d'installation:
command chown seafile:seafile "${INSTALL_PATH}"
Activez les modules rewrite, fastcgi et proxy_http d'Apache 2:
command a2enmod rewrite fastcgi proxy_http
Rechargez la configuration du serveur HTTP:
service apache2 restart
Mise en place de l'application
Déterminez l'architecture du système:
ARCH="$(command dpkg --print-architecture)" if [ "${ARCH}" = "amd64" ]; then ARCH="x86-64" fi
Téléchargez la dernière version à l'aide du script sf-downloader:/
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
# Outdated (?) as of 2.1.4 Google Code download.
#SOURCE="$(command bash '/tmp/sf-downloader' --googlecode --output-directory="${INSTALL_PATH}" \
# --tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
# New (?) as of 2.1.4 Bitbucket
SOURCE="$(command bash '/tmp/sf-downloader' --output-directory="${INSTALL_PATH}" \
--generic="http://seafile.com/en/download/" \
--tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
Ajustez les permissions:
command chown -R root:root "${SOURCE}"
command chown -R seafile:seafile "${SOURCE}/runtime"
command chown seafile:seafile "${SOURCE}/seahub/media"
command chown -R seafile:seafile "${SOURCE}/seahub/media/avatars"
Générez un mot de passe pour le compte d'administration:
ADMIN_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)"
Placez-vous dans le dossier des sources:
command pushd "${SOURCE}"
Configurez le serveur:
command su 'seafile' -c "./setup-seafile.sh" <<< "
$(echo "${DOMAIN//./-}" | command cut --characters=-14)
${DOMAIN}
${ADMIN_EMAIL}
${ADMIN_PASSWORD}
${ADMIN_PASSWORD}
"
Quittez le dossier des sources:
command popd
Assignez la version installée comme version courante:
command rm "${INSTALL_PATH}/seafile-server-latest"
command ln -s "${SOURCE}" "${INSTALL_PATH}/current"
Configuration du chiffrement
Autorisez Seafile à utiliser la clef privée SSL, si nécessaire:
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command adduser 'seafile' 'ssl-cert'
fi
Activez le HTTPS pour Seafile, si nécessaire:
CERT_FILE="/etc/ssl/certificates/${SSL_KEY_NAME}.crt"
command test -e "/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root" \
&& CERT_FILE="/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root"
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command sed -i \
-e "/port=8082/a\\
https=true\\
pemfile=/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root\\
privkey=/etc/ssl/private/${SSL_KEY_NAME}.key" \
"${INSTALL_PATH}/seafile-data/seafile.conf"
fi
Configuration des notifications
Configurez l'envoi des notifications par le serveur SMTP local:
echo "EMAIL_USE_TLS = False
EMAIL_HOST = 'localhost' # smtp server
EMAIL_PORT = '25'
DEFAULT_FROM_EMAIL = '${ADMIN_EMAIL}'
SERVER_EMAIL = '${ADMIN_EMAIL}'" \
>> "${INSTALL_PATH}/seahub_settings.py"
Création de la base de données Seafile
Créez la base de données:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="seafile" --user-prefix="sf" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Notez les informations de connexion fournies par la commande.
Configurez Seafile pour utiliser la base de données:
command sed -i \
-e 's/type=.*/type=mysql/' \
-e "/type=mysql/a\\
host=$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)\\
user=${MYSQL_USER}\\
password=${MYSQL_PASSWORD}\\
db_name=${MYSQL_DB}" \
"${INSTALL_PATH}/seafile-data/seafile.conf"
Création de la base de données ccnet
Créez la base de données:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="ccnet" --user-prefix="sc" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Notez les informations de connexion fournies par la commande.
Configurez ccnet pour utiliser la base de données:
command echo "[Database]
ENGINE=mysql
HOST=$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)
USER=${MYSQL_USER}
PASSWD=${MYSQL_PASSWORD}
DB=${MYSQL_DB}" \
>> "${INSTALL_PATH}/ccnet/ccnet.conf"
Création de la base de données Seahub
Créez la base de données:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="seahub" --user-prefix="sh" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Notez les informations de connexion fournies par la commande.
Configurez Seahub pour utiliser la base de données:
command echo "DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'USER' : '${MYSQL_USER}',
'PASSWORD' : '${MYSQL_PASSWORD}',
'NAME' : '${MYSQL_DB}',
'HOST' : '$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)',
'OPTIONS': {
\"init_command\": \"SET storage_engine=INNODB\",
}
}
}" >> "${INSTALL_PATH}/seahub_settings.py"
Initialisez le contenu de la base de données:
export CCNET_CONF_DIR="${INSTALL_PATH}/ccnet"
export SEAFILE_CONF_DIR="${INSTALL_PATH}/seafile-data"
INSTALLPATH="${INSTALL_PATH}/current"
export PYTHONPATH="${INSTALLPATH}/seafile/lib/python2.6/site-packages:${INSTALLPATH}/seafile/lib64/python2.6/site-packages:${INSTALLPATH}/seahub/thirdpart:$PYTHONPATH"
command pushd "${SOURCE}/seahub"
command su 'seafile' -c "command python 'manage.py' 'syncdb'"
command popd
Mise en place des scripts init.d
Mettez en place les scripts init.d pour Seafile:
command wget --quiet --no-check-certificate --output-document=- \
'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seafile-init.d' \
| command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
-e "s|%INSTALL_PATH%|${INSTALL_PATH}|g" \
> "/etc/init.d/seafile-${DOMAIN}"
command chmod +x "/etc/init.d/seafile-${DOMAIN}"
Mettez en place les scripts init.d pour Seahub:
command wget --quiet --no-check-certificate --output-document=- \
'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seahub-init.d' \
| command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
-e "s|%INSTALL_PATH%|${INSTALL_PATH}|g" \
> "/etc/init.d/seahub-${DOMAIN}"
command chmod +x "/etc/init.d/seahub-${DOMAIN}"
command wget --quiet --no-check-certificate --output-document=- \
'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seahub-default' \
| command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
> "/etc/default/seahub-${DOMAIN}"
Ajoutez Seafile au démarrage du système:
command update-rc.d "seafile-${DOMAIN}" 'defaults'
command update-rc.d "seahub-${DOMAIN}" 'defaults'
Démarrez le serveur:
service "seafile-${DOMAIN}" 'start'
service "seahub-${DOMAIN}" 'start'
Mise en place du ramasse-miettes
Récupérez hebdomadairement l'espace utilisé par les blocs inutiles (nécessite l'arrêt du serveur):
command echo "#"\!"/bin/bash
# Stop seafile:
service 'seafile-${DOMAIN}' 'stop'
service 'seahub-${DOMAIN}' 'stop'
export LD_LIBRARY_PATH=\"${INSTALL_PATH}/current/seafile/lib:\${LD_LIBRARY_PATH}\"
# run the garbage collection
${INSTALL_PATH}/current/seafile/bin/seafserv-gc -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data'
# check that the garbage collection did not remove used blocks.
${INSTALL_PATH}/current/seafile/bin/seafserv-gc -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data' --verify
# Start seafile
service 'seahub-${DOMAIN}' 'start'
service 'seafile-${DOMAIN}' 'start'" \
> "/etc/cron.monthly/seafile-${DOMAIN//./-}"
command chmod +x "/etc/cron.monthly/seafile-${DOMAIN//./-}"
Mise en place de l'outil de vérification du système de fichier Seafile
Mettez en place un outil pour facilement vérifier l'état du système de fichier Seafile (nécessite l'arrêt du serveur):
command echo "#"\!"/bin/bash
# Stop seafile:
service 'seafile-${DOMAIN}' 'stop'
service 'seahub-${DOMAIN}' 'stop'
export LD_LIBRARY_PATH=\"${INSTALL_PATH}/current/seafile/lib:\${LD_LIBRARY_PATH}\"
# run the filesystem check
${INSTALL_PATH}/current/seafile/bin/seaf-fsck -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data' \"\${@}\"
# Start seafile
service 'seahub-${DOMAIN}' 'start'
service 'seafile-${DOMAIN}' 'start'" \
> "/usr/local/bin/seaf-fsck-${DOMAIN//./-}"
command chmod +x "/usr/local/bin/seaf-fsck-${DOMAIN//./-}"
Cet outil permet de corriger certains problème pouvant apparaître en cas d'arrêt intempestif du serveur (voir Recover corrupt files after server hard shutdown or system crash (en)).
Affichez l'aide en ligne de la commande crée:
echo "usage: seaf-fsck-${DOMAIN//./-} [ -D | --dry-run ] [ -s | --scrict ] [repo_id_1 [repo_id_2 ...]]
Additional options:
-D, --dry-run: check fs objects and blocks, but don't remove them.
-s, --strict: check whether fs object id consistent with content."
Création du compte administrateur
Créez le compte administrateur:
command pushd "${SOURCE}/seahub"
command su 'seafile' -c "command python 'manage.py' 'createsuperuser' <<< 'admin
${ADMIN_EMAIL}
${ADMIN_PASSWORD}
${ADMIN_PASSWORD}
'"
command popd
Activation du serveur WebDAV
Activez le serveur WebDAV, si nécessaire:
if [[ "${ENABLE_WEBDAV}" = 'yes' ]]; then
command sed -i \
-e 's/enabled =.*$/enabled = true/' \
-e 's/fastcgi =.*$/fastcgi = true/' \
-e "s|share_name =.*\$|share_name = ${WEBDAV_PREFIX}|" \
"${INSTALL_PATH}/conf/seafdav.conf"
command chmod go+rx "${INSTALL_PATH}/conf"
command chmod go+r "${INSTALL_PATH}/conf/seafdav.conf"
fi
Mise en place de l'hôte virtuel
Préparez la configuration WebDAV, si nécessaire:
WEBDAV_CONFIG=""
if [[ "${ENABLE_WEBDAV}" = 'yes' ]]; then
WEBDAV_CONFIG="
# Setup seafdav fastcgi server.
<IfModule mod_fastcgi.c>
FastCGIExternalServer ${INSTALL_PATH}/seafdav-${DOMAIN}.fcgi -host 127.0.0.1:8080
</IfModule>
# Seafile WebDAV
<IfModule mod_rewrite.c>
RewriteCond %{HTTP:Authorization} (.+)
RewriteRule ^(${WEBDAV_PREFIX}.*)$ /seafdav-${DOMAIN}.fcgi\$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(${WEBDAV_PREFIX}.*)$ /seafdav-${DOMAIN}.fcgi\$1 [QSA,L]
</IfModule>"
fi
Détectez si le mode SSL est nécessaire:
SSL_ENGINE="Off"
[[ "${PROTO}" = 'https' ]] && SSL_ENGINE="On"
Préparez la configuration du serveur HTTP:
CUSTOM_VHOST="
DocumentRoot ${INSTALL_PATH}
# Setup seafile http server.
<IfModule mod_rewrite.c>
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On
<IfModule mod_ssl.c>
SSLProxyEngine ${SSL_ENGINE}
SSLProxyVerify none
</IfModule>
ProxyPass ${HTTP_PREFIX} ${PROTO}://127.0.0.1:8082
ProxyPassReverse ${HTTP_PREFIX} ${PROTO}://127.0.0.1:8082
RewriteRule ^${HTTP_PREFIX} - [QSA,L]
</IfModule>
</IfModule>
${WEBDAV_CONFIG}
# Setup seahub fastcgi server.
<IfModule mod_fastcgi.c>
FastCGIExternalServer ${INSTALL_PATH}/seahub-${DOMAIN}.fcgi -host 127.0.0.1:8000
</IfModule>
# Setup seahub media files.
Alias /media ${INSTALL_PATH}/current/seahub/media
# Setup seahub access by using fastcgi.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(media.*)$ /\$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} "\!"-f
RewriteRule ^(.*)$ /seahub-${DOMAIN}.fcgi\$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<Location />
Order deny,allow
Allow from all
</Location>"
Créez la configuration du serveur HTTP pour le domaine:
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command a2tools --template="custom" --ssl="${SSL_KEY_NAME}" "${DOMAIN}" "${CUSTOM_VHOST}"
command a2tools --template='redirect' "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --template="custom" "${DOMAIN}" "${CUSTOM_VHOST}"
fi
Assurez-vous de la bonne configuration de la valeur SSLProxyEngine (incompatibilité non corrigée d'a2tools):
command sed -i -e "s|SSLProxyEngine.*|SSLProxyEngine ${SSL_ENGINE}|" "/etc/apache2/sites-available/${PROTO}-${DOMAIN}"
service apache2 reload
Mettez à jour la configuration de l'application:
command sed -i \
-e "s|SERVICE_URL.*|SERVICE_URL = ${PROTO}://${DOMAIN}|g" \
"${INSTALL_PATH}/ccnet/ccnet.conf"
command sed -i '/^HTTP_SERVER_ROOT/d' "${INSTALL_PATH}/seahub_settings.py"
command sed -i '/^FILE_SERVER_ROOT/d' "${INSTALL_PATH}/seahub_settings.py"
echo "HTTP_SERVER_ROOT = '${PROTO}://${DOMAIN}${HTTP_PREFIX}'
FILE_SERVER_ROOT = '${PROTO}://${DOMAIN}${HTTP_PREFIX}'" >> "${INSTALL_PATH}/seahub_settings.py"
L'outil est maintenant disponible sur le domaine spécifié en HTTP ou HTTPS si possible.
La commande qui suit affiche les paramètres de connexion:
echo "URL: ${PROTO}://${DOMAIN}/
Identifiant : ${ADMIN_EMAIL}
Mot de passe : ${ADMIN_PASSWORD}"
Configuration du pare-feu
Si votre système est protégé par un pare-feu, veillez à ouvrir les ports suivants (en plus des ports 80 et 443):
- 10001 (serveur CCNET)
- 12001 (serveur Seafile)
- 8082 (serveur HTTP)
Installation sur les clients
Téléchargez les clients Seafile
Les utilisateurs doivent créer au moins une bibliothèque sur le serveur avant de pouvoir configurer un client Seafile.
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${INSTALL_PATH}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Mise à jour
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="seafile.domain.com"
Déterminez le chemin d'installation:
INSTALL_PATH="/var/lib/seafile/${DOMAIN}"
Déterminez l'architecture du système:
ARCH="$(command dpkg --print-architecture)" if [ "${ARCH}" = "amd64" ]; then ARCH="x86-64" fi
Téléchargez la dernière version à l'aide du script sf-downloader:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
# Outdated (?) as of 2.1.4 Google Code download.
#SOURCE="$(command bash '/tmp/sf-downloader' --googlecode --output-directory="${INSTALL_PATH}" \
# --tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
# New (?) as of 2.1.4 Bitbucket
SOURCE="$(command bash '/tmp/sf-downloader' --output-directory="${INSTALL_PATH}" \
--generic="http://seafile.com/en/download/" \
--tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
Détectez l'emplacement réel de la source:
SOURCE="$(command find "${INSTALL_PATH}" -maxdepth 1 -type d -name 'seafile-server-*' \
| command sort | command tail -n 1)"
Ajustez les permissions:
command chown -R root:root "${SOURCE}"
command chown -R seafile:seafile "${SOURCE}/runtime"
command chown -R seafile:seafile "${SOURCE}/seahub/media/avatars"
Arrêtez le serveur:
service "seafile-${DOMAIN}" 'stop'
service "seahub-${DOMAIN}" 'stop'
Assignez la nouvelle version comme version courante:
command rm "${INSTALL_PATH}/current"
command ln -s "${SOURCE}" "${INSTALL_PATH}/current"
Migration majeure
Ce qui suit ne doit être lancé qu'en cas de mise à jour de version majeure (1.7 vers 1.8 par exemple):
Lancez le script de migration:
command sh -c "$(command find "${INSTALL_PATH}/current/upgrade" -type f -name "upgrade_*.sh" \
| command sort | command tail -n 1)"
Déterminez le chemin contenant les mises à jour de la base SQL:
SQL_PATH="$(command find "${INSTALL_PATH}/current/upgrade/sql" -maxdepth 1 -type d \
| command sort | command tail -n 1)/mysql"
Migration de ccnet
Détectez les paramètres de connexion au serveur MySQL:
MYSQL_HOST="$(command grep "^HOST=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_USER="$(command grep "^USER=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_PASSWORD="$(command grep "^PASSWD=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_DB="$(command grep "^DB=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
Mettez à jour la base de données, si nécessaire:
if [ -e "${SQL_PATH}/ccnet.sql" ]; then
command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
--host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/ccnet.sql"
fi
Migration de seahub
Détectez les paramètres de connexion au serveur MySQL:
MYSQL_HOST="$(command grep "'HOST'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
MYSQL_USER="$(command grep "'USER'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
MYSQL_PASSWORD="$(command grep "'PASSWORD'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
MYSQL_DB="$(command grep "'NAME'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
Mettez à jour la base de données, si nécessaire:
if [ -e "${SQL_PATH}/seahub.sql" ]; then
command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
--host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/seahub.sql"
fi
Migration de seafile
Détectez les paramètres de connexion au serveur MySQL:
MYSQL_HOST="$(command grep "^host=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_USER="$(command grep "^user=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_PASSWORD="$(command grep "^password=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
MYSQL_DB="$(command grep "^db_name=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
Mettez à jour la base de données, si nécessaire:
if [ -e "${SQL_PATH}/seafile.sql" ]; then
command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
--host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/seafile.sql"
fi
Finalisation
Démarrez le serveur:
service "seafile-${DOMAIN}" 'start'
service "seahub-${DOMAIN}" 'start'
Remerciements
- Merci aux développeurs de Seafile.
- Merci aux auteurs de la documentation d'installation du serveur Seafile.