Seafile Server - Installation auf Ubuntu 12.04.x LTS mit Plesk

Aus Znilwiki
Wechseln zu: Navigation, Suche

Benötigte Pakete installieren

Folgende Programmpakte sollten Installiert sein:

apt-get install mysql-server python-setuptools python-simplejson python-imaging python-mysqldb default-jre

mysql sollte bei einem Plesk-Server schon installiert sein, die anderen beiden Pakete fehlen eventuell.



Seafile Benutzer und Verzeichnisse anlegen

Wir erstellen einen Benutzer seafile dessen Home-Verzeichnis gleichzeitig unser Seafile-Installationsordner ist:

adduser --disabled-login --gecos "Seafile" seafile --home /var/lib/seafile/

Wir wechseln auf diesen eben neu erstellten Benutzer:

su - seafile

und sind dann automatisch im Heimatverzeichnis des Benutzers - also in

/var/lib/seafile/

Wir erstellen nun einen neuen Ordner haiwen und wechseln in diesen:

mkdir haiwen
cd haiwen

Warum? Nun, dann h alten wir uns an das vorgschlagene Schema der Seafile-Entwickler - und alle Beispiele und Anleitungen aus dem Internet sollte ohne Änderungen fnktionieren. Der Ordner heisst "haiwen" weil Seafile wohl so im Chinesischen genannt wird.



Seafile herunterladen und installieren

Die Dateien die wir herunterladen müssen wir nur entpacken und sind sofort lauffähig.
Also laden wir die Dateien für den Server herunter und enpacken einfach direkt in das Zielverzeichnis.

32 oder 64Bit:
Ich musste bei meinem angemieteten Server auch erst schauen mit was der vorinstalliert ist.
gebt in der Bash einfach ein

uname -m

ein. Wenn in der Ausgabe NICHT ein

x86_64

steht habt Ihr eine 32Bit Maschine! bei der steht dann z.B.

i686

Ladet die passende Version für euch dann herunter, Falls die Links hier nicht mehr funktionieren:
Die Downloadseite bekommt Ihr unter http://seafile.com/en/download/
Herunterladen und entpacken wollen wir die Server for generic Linux

32Bit

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.4_i386.tar.gz
tar xzfv seafile-server_3.0.4_i386.tar.gz


64Bit

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.4_x86-64.tar.gz
tar xzfv seafile-server_3.0.4_x86-64.tar.gz


In beiden Fällen haben wir hinterher einen Ordner "seafile-server-3.0.4"
Die heruntergeladene Datei verschieben wir in den Ordner "installed":

mkdir installed
mv seafile-server_* installed

so das wir hinterher die folgende Ordnerstruktur haben:

/var/lib/seafile/haiwen
                 ├── installed
                 │   └── seafile-server_3.0.4_i386.tar.gz
                 └── seafile-server-3.0.4
                     ├── check_init_admin.py
                     ├── runtime       
                     ├── seafile     
                     ├── seahub     
                     ├── setup-seafile-mysql.py  
                     ├── setup-seafile.sh
                     ├── reset-admin.sh       
                     ├── seaf-fuse.sh  
                     ├── seafile.sh  
                     ├── seahub.sh  
                     ├── setup-seafile-mysql.sh  
                     └── upgrade

Die Entwickler haben geplant, das die eigentlichen Konfigurationsdateien etc. gleich im "haiwen" Verzeichnis liegen. Dann kann man eine neuere Version daneben installieren und dann Upgraden.


MySQL Datenbanken in Plesk anlegen

Ohne Plesk würden die Datenbanekn und den Benutzer in dieser wie folgt anlegen:

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8'; 
create database `seahub-db` character set = 'utf8';
 
create user 'seafile'@'localhost' identified by 'seafile';

Da wir aber einen Server mit Plesk haben gehen auf die Plesk Oberfläche und unter

Websites & Domains - Datenbanken

fügen wir die 3 benötigten Datenbanken hinzu

ccnet-db
seafile-db
seahub-db


Seafile-Ubuntu-Plesk-001.png

Der neue Datenbankbenutzer ist:

Benutzer: seafile
Passwort: seafile

Beim dem Erstellen der beiden nachfolgenden Datenbanken lasst den Benutzer weg:

Seafile-Ubuntu-Plesk-002.png

und

Seafile-Ubuntu-Plesk-003.png

Der Benutzer "seafile" hat im Moment nur Rechte auf die Datenbank "ccnet-db", jedoch nicht auf die Datenbanken "seafile-db" und "seahub-db".
Es muss aber für alle drei Datenbanken der geliche Benutzer sein - das geht nicht über die Plesk-Oberfläche aber in der Bash:

Öffnet eine weitere Shell-Sitzung als root und gebt folgenden Befehl ein:

mysql -uadmin -p`cat /etc/psa/.psa.shadow`

Danach müsste Ihr einen MySQL-Prompt haben:

mysql>

Nun lasst die folgenden 3 Befehle ausführen:

GRANT ALL PRIVILEGES ON 'ccnet-db'.* to 'seafile';
GRANT ALL PRIVILEGES ON 'seafile-db'.* to 'seafile';
GRANT ALL PRIVILEGES ON 'seahub-db'.* to 'seafile';

Und für das Seafile-Setup-programm muss auch der Benutzer root Zugriff haben:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('denkteuchetwasaus');

Danach könnt Ihr mit

quit;

den MySQL-Interpreter wieder verlassen.

Nun hat der Benutzer seafile die Rechte auf allen 3 Datenbanken.



Setup ausführen

Wir arbeiten weiter in der Anmeldung als Benutzer seafile (su - seafle) und führen das Setup von Seafile mit MySQL aus:

cd /var/lib/seafile/haiwen/seafile-server-*
./setup-seafile-mysql.sh

Die Dialoge beantwortet Ihr wie folgt:

seafile@h2108591:/var/lib/seafile/haiwen/seafile-server-3.0.4$ ./setup-seafile-mysql.sh
Checking python on this machine ...
  Checking python module: setuptools ... Done.
  Checking python module: python-simplejson ... Done.
  Checking python module: python-imaging ... Done.
  Checking python module: python-mysqldb ... Done.

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

        https://github.com/haiwen/seafile/wiki

Press ENTER to continue
-----------------------------------------------------------------

Wir drücken brav auf ↵ Enter:

Servername

What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] MySeafile

Der Name den Ihr angebt dient nur zur Anzeige im Webbrower / Client, kann also auch ein Fantasiebegriff sein.


IP oder DNS-Name

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] seafile.znil.net

Der DNS-Name eures Servers oder die IP-Adresse.


Verwendeter Port ccnet

Im Zweifel bestätigt die nächsten Frage mit ↵ Enter und nutzt damit den Standardport für Seafile:

Which port do you want to use for the ccnet server?
[ default "10001" ] 10001



Speicherort der Seafile-Daten

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/var/lib/seafile/haiwen/seafile-data" ]

Den Pfad wiederum einfach mit ↵ Enter bestätigen:


Verwendeter Port Seafile

Which port do you want to use for the seafile server?
[ default "12001" ] 12001



Verwendeter Port Seafile http-Server

Which port do you want to use for the seafile httpserver?
[ default "8082" ] 8082

Dahinter finden wir hinterher die Seafile-Webseite


Datenbank ccnet erstellen

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases 

[ 1 or 2 ] 1

Da dies eine Neuinstallation ist wählen wir die 1, später bei Updates würde man die 2 nehmen.


MySQL-Server Einstellungen

Die nächsten Fragen sind für die Verbindung zu den MySQL Datenbanken:

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ] denkteuchetwasaus

verifying password of user root ...  done 

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "root" ] seafile

Enter the password for mysql user "seafile":
[ password for seafile ]

verifying password of user seafile ...  done

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Enter the database name for seafile-server:
[ default "seafile-db" ] 

Enter the database name for seahub:
[ default "seahub-db" ]

---------------------------------
This is your configuration
---------------------------------
 
    server name:            ZNIL
    server ip/domain:       seafile.znil.net
    ccnet port:             10001

    seafile data dir:       /var/lib/seafile/haiwen/seafile-data
    seafile port:           12001
    httpserver port:        8082

    database:               create new
    ccnet database:         ccnet-db
    seafile database:       seafile-db
    seahub database:        seahub-db
    database user:          seafile



---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Mit einem Druck auf ↵ Enter geht es los:

Generating ccnet configuration ... 

done
Successly create configuration dir /var/lib/seafile/haiwen/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating seahub database tables ...

----------------------------------------
Loading ccnet config from /var/lib/seafile/haiwen/ccnet
Loading seafile config from /var/lib/seafile/haiwen/seafile-data
Creating tables ...
Creating table django_content_type
Creating table django_session
Creating table registration_registrationprofile
Creating table captcha_captchastore
Creating table api2_token
Creating table api2_tokenv2
Creating table avatar_avatar
Creating table avatar_groupavatar
Creating table base_uuidobjidmap
Creating table base_filediscuss
Creating table base_filecontributors
Creating table base_userstarredfiles
Creating table base_dirfileslastmodifiedinfo
Creating table base_filelastmodifiedinfo
Creating table base_userenabledmodule
Creating table base_groupenabledmodule
Creating table base_userlastlogin
Creating table base_commandslastcheck
Creating table base_innerpubmsg
Creating table base_innerpubmsgreply
Creating table base_devicetoken
Creating table contacts_contact
Creating table wiki_personalwiki
Creating table wiki_groupwiki
Creating table group_groupmessage
Creating table group_messagereply
Creating table group_messageattachment
Creating table group_publicgroup
Creating table message_usermessage
Creating table message_usermsglastcheck
Creating table message_usermsgattachment
Creating table notifications_notification
Creating table notifications_usernotification
Creating table options_useroptions
Creating table profile_profile
Creating table profile_detailedprofile
Creating table share_anonymousshare
Creating table share_fileshare
Creating table share_uploadlinkshare
Creating table share_privatefiledirshare
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

creating seafile-server-latest symbolic link ...  done




-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------

port of ccnet server:         10001
port of seafile server:       12001
port of seafile httpserver:   8082
port of seahub:               8000

When problems occur, Refer to

        https://github.com/haiwen/seafile/wiki

for information.



Fertige Verzeichnisstruktur:

Nun sollten die Verzeichniss wie folgt aussehen:

/var/lib/seafile/haiwen
|-- ccnet
|   |-- ccnet.conf
|   |-- mykey.peer
|   `-- seafile.ini
|-- conf
|   `-- seafdav.conf
|-- installed
|   `-- seafile-server_3.0.4_i386.tar.gz
|-- seafile-data
|   |-- library-template
|   `-- seafile.conf
|-- seafile-server-3.0.4
|   |-- check_init_admin.py
|   |-- reset-admin.sh
|   |-- runtime
|   |-- seaf-fuse.sh
|   |-- seafile
|   |-- seafile.sh
|   |-- seahub
|   |-- seahub.sh
|   |-- setup-seafile-mysql.py
|   |-- setup-seafile-mysql.sh
|   |-- setup-seafile.sh
|   `-- upgrade
|-- seafile-server-latest -> seafile-server-3.0.4
|-- seahub-data
|   `-- avatars
|-- seahub_settings.py
`-- seahub_settings.pyc



Der erste Start ...

Wir starten nun das erste Mal die Seafile-Dienste (immer noch als Benutzer seafile):

/var/lib/seafile/haiwen/seafile-server-latest/seafile.sh start
/var/lib/seafile/haiwen/seafile-server-latest/seahub.sh start

Beim aller ersten Start von seahub.sh fragt er euch nach einem Administrations-Account:

Starting seahub at port 8000 ... 

----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------

What is the email for the admin account?
[ admin email ] test@test.test

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]



----------------------------------------
Successfully created seafile admin
----------------------------------------



Loading ccnet config from /var/lib/seafile/haiwen/ccnet
Loading seafile config from /var/lib/seafile/haiwen/seafile-data

Seahub is started

Done.

Nun könnt Ihr euch an der Seafile-Webseite mit dem eben erstellten Account anmelden!



Anmeldung an Webseite

Habt Ihr alles auf Standard gelassen ist die Webseite unter

http://123.123.123.123:8000
http://eurerDNS-Name:8000

zu erreichen:

Seafile-Ubuntu-Plesk-004.png




Seafile beim Systemstart automatisch starten

Als Quelle habe ich mich hieran orientiert: https://github.com/haiwen/seafile/wiki/Start-seafile-server-at-system-bootup
Wir arbeiten wieder als root (NICHT als Benutzer seafile':

nano /etc/init.d/seafile-server

und fügen folgendes ein:

#!/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: Start Seafile-Daemon at boot time
# Description:       Enable service provided by Seafile.
### END INIT INFO
 
# 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=/var/lib/seafile/haiwen
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=false
# 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_l$
                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 {start|stop|restart}"
                exit 1
        ;;
esac

Nun machen wir die Datei noch ausführbar:

chmod 755 /etc/init.d/seafile-server

Zusätzlich brauchen wir noch eine weitere Datei:

nano /etc/init/seafile-server.conf

mit folgendem Inhalt:

start on (started mysql and runlevel [2345])
stop on (runlevel [016])
 
pre-start script
/etc/init.d/seafile-server start
end script
 
post-stop script
/etc/init.d/seafile-server stop
end script

Nun noch ein

update-rc.d seafile-server defaults

und der Seafile-Server startet beim Hochfahren - und wird beim Herunterfahren ebenfalls beendet.
Der Dienst lässt sich in Zukunft auch per

service seafile-server start
service seafile-server stop
service seafile-server restart

steuern.



Kommentare

Kommentare


mail@khanhnguyen.de

657 Tage zuvor
Punkte 0+-

Hallo. Vielen Dank für die Anleitung. Funktioniert wie beschrieben. Allerdings möchte ich das Ganze nicht über http sondern gern über https machen. Nach diese Anleitung sollte es ja gehen und dann muss man bei Plesk erstmal suchen. Vielleicht könnt ihr die Anleitung mit https auch machen. Ich denke mal, dass es für vielen schon wichtig ist, wenn man schon seinen eigenen Server für Cloud benutzt. Vielen Dank für die Anleitung! Gruß

Nguyen

guillaume.pommier@gmail.com

511 Tage zuvor
Punkte 0+-

Man your tutorial looks excellent, could you please translate, I believe many users like me would be interested !

Thanks

martin.blaha at gmail.com

119 Tage zuvor
Punkte 0+-

Ich hatte beim Vergeben von Privilegien ziemlich lange gebraucht, bis es funktionierte. Ich nutze mysql 5.5.53:

GRANT ALL PRIVILEGES ON 'ccnet-db'.* to 'seafile'; -> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ccnet-db.*' to 'seafile@localhost at line 1

grant all privileges on `ccnet-db.*` to seafile@localhost; -> Query OK, 0 rows affected (0.00 sec) -> Der Unterschied sind die Backticks, in den jetzt der Datenbank-Name steht.

Bin dran fast verzweifelt. Hoffe es hilft.

Martin

matthias.ostrowski@gwc-cottbus.de

11 Tage zuvor
Punkte 0+-

Hallo, erstmal Danke für die Anleitung. Mir fehlt hier leider ein bisschen - außer das Anlegen der DB mit Plesk ist hier doch nix Plesk-Spezifisches beschrieben

eigentlich will man doch nicht auf Port 8000 arbeiten, sondern Apache oder nginx als Proxy davor und SSL nutzen. Wie geht das am Besten?

BLinz

11 Tage zuvor
Punkte 0+-
Kommentar hinzufügen:
Gebe hier einen Kommentar ein. Du kannst einen beliebigen Namen oder eine Email-Adresse als Namen angeben.

Wenn du dich einloggst wird automatisch dein Benutzername genommen.
Du kannst KEINE Links hier posten - das wurde wegen anhaltender Werbung deaktiviert. Sobald ein '''http://''' im Text vorkommt wird der Kommentar verworfen Alle anderen Steuerzeichen oder Funktionen wie < br > werden ausgefiltert - zum Posten von Quelltexten ist diese Funktion hier nicht geeignet.

Falls du dringendere Fragen hast kannst du auch das Support-System von znil.net nutzen unter support.znil.net