Seafile-als-Unterordner
Inhaltsverzeichnis
Seafile
Seafile ist ein Dropbox Ersatz, der ebenfalls die Ordner Synchronisierung mit unterschiedlichen Clients ermöglicht.
Es gibt dazu einen Haufen Anleitungen über Google zu finden, sodass ich nur das Allernötigste an Konfigurationen poste.
Als Unterordner mit Apache Frontend
Am einfachsten ist die Konfiguration von Apache/Nginx, wenn Seafile direkt über eine Domain (z.B. seafile.example.com ) erreichbar sein soll, da in der Regel die Standard Konfiguration ausreicht. Möchte man dagegen Seafile über z.B. www.meine-domain.example.com/seafile erreichen, um nicht Noch ein Zertifikat zu erstellen/ zu kaufen, sind ein paar kleine Änderungen nötig. Da ich sonst immer nachschlagen muss, was genau, schreibe ich es mir hier auf :-)
Wie im Titel schon angedeutet, nutze ich Apache mit Fast-CGI (fcgi) als Frontend unter Debian Wheezy, aber da die Änderungen hauptsächlich in Seafile stattfinden, dürften sie analog zu Nginx passen.
Seafile Anpassungen
Meine Seafile Installation liegt im Ordner: /opt/seafile/install/
/opt/seafile# tree -d -L 2 . ├── install │ ├── ccnet │ ├── conf │ ├── logs │ ├── pids │ ├── seafile-data │ ├── seafile-server-4.0.5 │ ├── seafile-server-latest -> seafile-server-4.0.5 │ └── seahub-data └── lost+found 10 directories |
- ccnet/ccnet.conf
[General] USER_NAME = foo ID = <long string> NAME = 4lin SERVICE_URL = https://www.4lin.net/seafile [Database] ENGINE=mysql HOST=127.0.0.1 USER=seafile PASSWD=secret DB=ccnet-db CONNECTION_CHARSET=utf8 [Network] PORT = 10001 [Client] PORT = 13418 |
Wichtig ist in diesem Fall, die SERVICE_URL, die angibt, über welchem Unterordner Seafile aufgerufen wird.
- ./seahub_settings.py
[...] FILE_SERVER_ROOT = 'https://www.4lin.net/seafhttp' SERVE_STATIC = False MEDIA_URL = '/seafmedia/' SITE_ROOT = '/seafile/' HTTP_SERVER_ROOT = 'https://www.4lin.net/seafhttp' COMPRESS_URL = MEDIA_URL STATIC_URL = MEDIA_URL+'assets/' [...] |
SITE_ROOT ist die Basis URL, wie schon in der ccnet.conf angegeben, allerdings nur der Unterordner. Die anderen URLs sind für die Kommunikation mit den Clients. Man kann sie später tatsächlich aufrufen, um zu sehen, dass alles klappt.
Hat man das soweit, kann es zum Apachen gehen.
Apache Anpassungen
Der Apache dürfte soweit ja schon funktionieren, und auch das Rewrite und Fast-CGI Modul sind aktiv. Dann gilt:
- /etc/apache2/conf.d/seafile
FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000 FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080 |
Hier ist wichtig zu wissen, dass die angegebenen "Dateien" überhaupt nicht existieren und auch nicht angelegt werden. Sie sind nur Platzhalter, aber der Pfad muss in einem DocumentRoot liegen, auf das der Apache Zugriff hat. Bei Debian ist es per Default /var/www, bei SuSE und RedHat etc. natürlich woanders. Es kann aber auch sein, dass man selbst, oder der Provider einen anderen DocRoot vorgegeben hat. Im einfachsten Fall ist es das Gleiche, in dem sich auch die "normale" Webseite befindet.
Statt die Datei /etc/apache2/conf.d/seafile anzulegen, kann man die FCGI Paramter auch innerhalb einer VirtualHost Konfiguration ablegen.
Ich habe in meinem Fall die Seafile spezifischen Parameter innerhalb einer VirtualHost Umgebung, daher sieht es dann so aus:
<VirtualHost 212.224.84.185:443> [...] RewriteEngine On [...] # Seafile Alias /seafmedia /opt/seafile/install/seafile-server-latest/seahub/media # Parameter in ccnet.conf und seahub_settings.py <Location /seafhttp> Order allow,deny Allow from all </Location> <Location /seafdav> Order allow,deny Allow from all </Location> # # seafile fileserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] # # seafile webdav -> nur wenn man auch Webdav in Seafile aktiv hat. # # RewriteCond %{HTTP:Authorization} (.+) # RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1] # RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L] # # seahub # RewriteRule ^/(seafmedia.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(seafile.*)$ /seahub.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </VirtualHost> |
Startscript
Nach einem apache2ctl -t etc. pp. und einem service apache2 reload .. oder was auch immer, muss man natürlich Seafile auch passend starten. Dazu habe ich mir per Google einfach ein Startscript geklaut:
- /etc/init.d/seafile-server
#!/bin/bash ### BEGIN INIT INFO # Provides: seafile-server # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Seafile server # Description: Start Seafile server ### END INIT INFO # Author: Alexander Jackson <alexander.jackson@jackson-it.de> # # Change the value of "user" to your linux user name user=seafile # Change the value of "seafile_dir" to your path of seafile installation seafile_dir=/opt/seafile/install 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 # Change the value of fastcgi to true if fastcgi is to be used fastcgi=true # Set the port of fastcgi, default is 8000. Change it if you need different. fastcgi_port=8000 case "$1" in start) sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log} if [ $fastcgi = true ]; then sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} else sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log} fi ;; restart) sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log} if [ $fastcgi = true ]; then sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log} else sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log} fi ;; stop) sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log} sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log} ;; *) echo "Usage: /etc/init.d/seafile-server {start|stop|restart}" exit 1 ;; esac |
In dem Script muss nur "seafile_dir" angepasst werden, sowie fastcgi auf true setzen. Fertig. Dann lässt sich Seafile bequem stoppen/starten und auch passen in den Startvorgang einbinden
# update-rc.d seafile-server defaults |
--Denny (Diskussion) 12:32, 13. Feb. 2015 (CET)