Seafile cloud serverin CentOS7 ƏS üzərində qurulması

Seafile bulud serveri

Seafile “python” dilində yazılmış fayl hostinq sistemidir. Fayllar mərkəzləşdirilmiş serverdə saxlanılır və şəxsi kompyuterlərlə və mobil cihazlarla klientlər vasitəsi ilə sinxronzasiya oluna bilir. Fayllara serverin veb interfeysi vasitəsi ilə də giriş əldə etmək olur. Seafile-ın bacarıqları digər məşhur bulud sistemləri olan Dropbox və Google Drive ilə oxşardır. Əsas fərqi isə Seafile açıq qaynaqlıdır və pulsuzdur.

Seafile desktop klienti Windows, OS X və ya Linux əməliyyat sistemlərini daşıyan şəxsi kompyuterlər üçün, Seafile mobil klienti isə İOS, Windows Phone 8 və Android sistemlərini dayışan mobil cihazlar üçün uyğundur. Fayllar klient olmadan da veb interfeys vasitəsi ilə yüklənilə bilər.

 

Bu sənəddəki serverlərimiz haqqında məlumatlar. Aşağıdakı məlumatları öz serverinizi qurduğunuzda müvafiq olaraq dəyişməyi unutmayın

Hostname: cloud.openmail.az

Active Directory (Windows SRV 2012 R2): dc.openmail.az

 

Paketlərin versiyaları

Seafile Linux Server versiya: 5.0.3 64bit

Nginx veb server versiya: 1.6.3

MariaDB(MySQL) versiya: 5.5.44

Pyhton versiya: 2.7.5

 

Seafile serverin CentOS7 Əməliyyat Sistemi üzərində qurulması

İlk öncə bütün paketləri yeniləyirik

[[email protected] ~]# yum update

Nginx paketlərinə giriş əldə etmək üçün EPEL reposlarını quraşdırırıq

[[email protected] ~]# yum install epel-release -y

İndi isə ehtiyacımız olan paketləri quraşdırırıq

[[email protected] ~]# yum install -y python python-imaging MySQL-python python-setuptools pyhton-ldap nginx mariadb mariadb-server tree

MariaDB(MySQL)-ni startup-a əlavə edib işə salırıq

[[email protected] ~]# systemctl enable mariadb

[[email protected] ~]# systemctl start mariadb

 

Sonra mysql_secure_installation əmrini daxil edib MariaDB-i təhlükəsiz edin. ROOT şifrəsini təyin edin və qalan bütün suallara YES cavabını verin.

[[email protected] ~]# mysql_secure_installation

Enter current password for root (enter for none):

Set root password? [Y/n]

New password:

Password updated successfully!

Remove anonymous users? [Y/n]

Disallow root login remotely? [Y/n]

Remove test database and access to it? [Y/n]

Reload privilege tables now? [Y/n]

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

SQL bazasına yaratdığınız root şifrəsi ilə daxil olun

[[email protected] ~]# mysql -u root -p

Enter password:

 

Aşağıdakı bazaları yaradın

MariaDB [(none)]> create database `ccnet-db` character set = ‘utf8’;

MariaDB [(none)]> create database `seafile-db` character set = ‘utf8’;

MariaDB [(none)]> create database `seahub-db` character set = ‘utf8’;

 

“Seafile” baza istifadəçisi yaradıb (password yerinə öz şifrənizi qeyd edin) yeni yaratdığımız bazaların bütün yetkilərini bu istifadəçiyə verin və SQL terminalını tərk edin

MariaDB [(none)]> create user ‘seafile’@’localhost’ identified by ‘password‘;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> quit

 

Seafile serverin Linux üçün .tar.gz faylının son versiyasını bu linkdən endirib extract edək və serverin sənəd və skriptlərinin yerləşəcəyi qovluğu hazırlayaq.

[[email protected] ~]# mkdir /opt/seafile

[[email protected] ~]# cd /opt/seafile

[[email protected] seafile]# wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_5.0.3_x86-64.tar.gz

[[email protected] seafile]# tar -xzf seafile-server_5.0.3_x86-64.tar.gz

[[email protected] seafile]# mkdir installed

[[email protected] seafile]# mv seafile-server_5.0.3_x86-64.tar.gz installed

 

Qovluq strukturu belə olmalıdır

[[email protected] seafile]# tree -L 2

.

── installed

│   └── seafile-server_5.0.3_x86-64.tar.gz

└── seafile-server-5.0.3

   ── check_init_admin.py

   ── reset-admin.sh

   ── runtime

   ── seaf-fsck.sh

   ── seaf-fuse.sh

   ── seaf-gc.sh

   ── seafile

   ── seafile.sh

   ── seahub

   ── seahub.sh

   ── setup-seafile-mysql.py

   ── setup-seafile-mysql.sh

   ── setup-seafile.sh

   └── upgrade

 

6 directories, 11 files

 

Quraşdırma skriptini işə salaq. Dəyişənləri öz serverinizə uyğun dəyişməyi unutmayın

[[email protected] seafile]# cd seafile-server-5.0.3/

[[email protected] seafile-server-5.0.3]# ./setup-seafile-mysql.sh

 

[ server name ] cloud-sefile => Serverinizə hər hansı bir ad təyin edirsiniz

[ This server’s ip or domain ] cloud.openmail.az => Domain adını qeyd edirsiniz

[ default “/opt/seafile/seafile-data” ] => Enter sıxırıq

[ default “8082” ] => Enter sıxırıq

 

# Biz öncədən baza yaratdığımız üçün aşağıdakı seçimdə “2”-ni seçirik

[1] Create new ccnet/seafile/seahub databases

[2] Use existing ccnet/seafile/seahub databases

 

[ 1 or 2 ] 2

 

[ default “localhost” ] => Enter sıxırıq

[ default “3306” ] => Enter sıxırıq

[ mysql user for seafile ] seafile => SQL bazada üçün yaratdığımız istifadəçi adını qeyd edirik

[ password for seafile ] => Həmin istifadəçi üçün təyin şifrəni daxil edirik (password)

[ ccnet database ] ccnet-db => “ccnet-db” bazasının adını daxil edirik

[ seafile database ] seafile-db => “seafile-db” bazasının adını daxil edirik

[ seahub database ] seahub-db => “seahub-db” bazasının adını daxil edirik

 

———————————

Sonda çıxan quraşdırma aşağıdakı kimi olmalıdır

———————————

 

   server name:             cloud-seafile

   server ip/domain:        cloud.openmail.az

 

   seafile data dir:        /opt/seafile/seafile-data

   fileserver port:         8082

 

   database:          use existing

   ccnet database:          ccnet-db

   seafile database:        seafile-db

   seahub database:         seahub-db

   database user:           seafile

 

———————————

Sonra da ENTER düyməsini sıxaraq quraşdırmanı tamamlayın

———————————

 

Sistemdə “seafile” istifadəçisi yaradırıq və mövcud qovluğun yetkisini ona veririk

[[email protected] seafile]# useradd seafile

[[email protected] seafile]# chown -R seafile:seafile /opt/seafile/.

 

Sistemə “seafile” istifadəçisi adından daxil (login) olaq

[[email protected] ssl]# su – seafile

Lazımi script-lərin yerləşdiyi qovluğa keçid alırıq

[[email protected] ~]$ cd /opt/seafile/seafile-server-latest/

Seafile servisini script vasitəsi ilə işə salırıq

[[email protected] seafile-server-latest]$ ./seafile.sh start

[12/22/15 12:06:16] ../common/session.c(132): using config file /opt/seafile/conf/ccnet.conf

[12/22/15 12:06:16] ../common/ccnet-db.c(76): max_connections: 100

Starting seafile server, please wait …

Seafile server started

Done.

Sonra da seahub scriptini işə salırıq. Bu script-i ilkin olaraq işə saldıqda bizdən administrator hesabı üçün email ünvanı daxil etməyimizi istəyəcək. Həmçinin şifrə də təyin etməliyik.

[[email protected] seafile-server-latest]$ ./seahub.sh start

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 ] [email protected]

 

What is the password for the admin account?

[ admin password ]

 

Enter the password again:

[ admin password again ]

 

—————————————-

Successfully created seafile admin

—————————————-

Seahub is started

Done.

 

Bundan sonra siz veb brouzeriniz üzərindən http://cloud.openmail.az:8000 yazıb serverin veb interfeysinə daxil ola bilərsiniz. Açılan sign-in səhifəsində yenicə yaratdığınız [email protected] istifadəçisini və şifrəsini daxil edib sistemə giriş edə bilərsiniz.

Qeyd: Onu da qeyd edim ki, Seafile serverin sisteminə giriş yalnız Mail şəklində olmalıdır. Sadə istifadəçi adı ilə girmək bu versiyada mümkün deyil. Növbəti versiyalarda bu funksiyonallığı da əlavə edəcəklər.

 

İndi hər iki servisi dayandırırıq ki, sonradan systemd-dən normal qayda ilə işə salmaq istəyəndə propblem olmasın.

[[email protected] seafile-server-latest]$ ./seahub.sh stop

[[email protected] seafile-server-latest]$ ./seafile.sh stop

 

Root istifadəçisinə yenidən keçid alırıq.

[[email protected] seafile-server-latest]$ exit

 

Seafile serverin NGINX veb server ilə inteqrasiya edilməsi və HTTPS veb portuna yönləndirilməsi

Gəlin nginx üçün SSL sertifikatımızı generasiya edək

[[email protected] ~]# cd /etc/ssl

[[email protected] ssl]# openssl genrsa -out seafile_privkey.pem 4096

[[email protected] ssl]# openssl req -new -x509 -key seafile_privkey.pem -out seafile_cacert.pem -days 1095

 

Country Name (2 letter code) [XX]:AZ

State or Province Name (full name) []:Narimanov

Locality Name (eg, city) [Default City]:Baku

Organization Name (eg, company) [Default Company Ltd]:OPENMAIL company

Organizational Unit Name (eg, section) []:IT

Common Name (eg, your name or your server’s hostname) []:cloud.openmail.az

Email Address []:[email protected]

 

Nginx-də Seafile serverimizi virtual host olaraq quraşdıraq (server_name parametri qarşısına öz domain adınızı qeyd edin)

[[email protected] ssl]# vim /etc/nginx/conf.d/seafile.conf

server {

   listen       80;

   server_name  cloud.openmail.az;

   rewrite ^ https://$http_host$request_uri? permanent;    # http-ni https-e yonlendirmeye mecbur edir

}

server {

   listen 443;

   ssl on;

   ssl_certificate /etc/ssl/seafile_cacert.pem;

   ssl_certificate_key /etc/ssl/seafile_privkey.pem;

   server_name cloud.openmail.az;

   proxy_set_header X-Forwarded-For $remote_addr;

 

   add_header Strict-Transport-Security “max-age=31536000; includeSubdomains”;

   server_tokens off;

 

   location / {

       fastcgi_pass    127.0.0.1:8000;

       fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;

       fastcgi_param   PATH_INFO           $fastcgi_script_name;

 

       fastcgi_param   SERVER_PROTOCOL     $server_protocol;

       fastcgi_param   QUERY_STRING        $query_string;

       fastcgi_param   REQUEST_METHOD      $request_method;

       fastcgi_param   CONTENT_TYPE        $content_type;

       fastcgi_param   CONTENT_LENGTH      $content_length;

       fastcgi_param   SERVER_ADDR         $server_addr;

       fastcgi_param   SERVER_PORT         $server_port;

       fastcgi_param   SERVER_NAME         $server_name;

       fastcgi_param   HTTPS               on;

       fastcgi_param   HTTP_SCHEME         https;

 

       access_log      /var/log/nginx/seahub.access.log;

       error_log       /var/log/nginx/seahub.error.log;

   }

   location /seafhttp {

       rewrite ^/seafhttp(.*)$ $1 break;

       proxy_pass http://127.0.0.1:8082;

       client_max_body_size 0;

       proxy_connect_timeout  36000s;

       proxy_read_timeout  36000s;

       proxy_send_timeout  36000s;

   }

   location /media {

       root /opt/seafile/seafile-server-latest/seahub;

   }

}

İndi isə Seafile serverin quraşdırma fayllarında bəzi dəyişikliklər etməliyik

SERVICE_URL dəyəri müvafiq olaraq dəyişin. http-ni https edin və sondakı “8000” portunu ləğv edin

[[email protected] ssl]# vim /opt/seafile/conf/ccnet.conf

SERVICE_URL = https://cloud.openmail.az

 

Aşağıdakı sətiri /opt/seafile/conf/seahub_settings.py quraşdırma faylına əlavə edin. Öz domain adınıza uyğun dəyişin.

[[email protected] ssl]# vim /opt/seafile/conf/seahub_settings.py

FILE_SERVER_ROOT = ‘https://cloud.openmail.az/seafhttp’

İndi isə unit faylları yaradıb seafile servislərini systemd-də qeydiyyatdan keçirək. Aşağıdakı servis fayllarını yaradıb müvafiq sətirləri həmin fayllara əlavə edək

[[email protected] ssl]# vim /etc/systemd/system/seafile.service

[Unit]

Description=Seafile

After=network.target mariadb.service

 

[Service]

Type=oneshot

ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start

ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop

RemainAfterExit=yes

User=seafile

Group=seafile

 

[Install]

WantedBy=multi-user.target

 

[[email protected] ssl]# vim /etc/systemd/system/seahub.service

[Unit]

Description=Seafile hub

After=network.target seafile.service

 

[Service]

ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start-fastcgi

ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop

User=seafile

Group=seafile

Type=oneshot

RemainAfterExit=yes

 

[Install]

WantedBy=multi-user.target

 

Systemd-ni yeniləyək

[[email protected] ssl]# systemctl daemon-reload

NGİNX veb serverimizi də startup-a əlavə edib işə salırıq

[[email protected] ssl]# systemctl enable nginx

[[email protected] ssl]# systemctl start nginx

 

Seafile və Seahub servislərini systemd vasitəsi startup-a əlavə edib işə salırıq

[[email protected] ssl]# systemctl enable seafile

[[email protected] ssl]# systemctl enable seahub

[[email protected] ssl]# systemctl start seafile

[[email protected] ssl]# systemctl start seahub

 

İndi isə veb brouzerimiz vasitəsi ilə “http://cloud.openmail.az” ünvanına(URL) daxil oluruq.

Qeyd: Sertifikatımızı veb brouzer tanımadığı üçün qırmızı şəkildə açılacaq və bizi xəbərdar edəcək. Buna fikir verməyib davam edirik

Sonra isə “Sign-in” səhifəsində sonda yaratdığımız [email protected] və onun şifrəsini daxil edib giriş edirik

Yeni istifadəçilər yaratmaq istəsəniz yuxarıda sağda “settings” bölümünə daxil olun.

Sonra açılan səhifədən “Add user” düyməsini sıxıb yeni istifadəçi əlavə edə bilərsiniz.

Hər hansı bir istifadəçiyə MB limiti təyin etmək istəsəniz (İlkin dəyər 2GB təşkil edir) həmin istifadəçinin üzərinə sıxın

 

 

Yeni açılan səhifədə sol tərəfdə “set quota” düyməsini sıxıb MB ilə limiti təyin edə bilərsiniz

 

Seafile serverin LDAP-la inteqrasiya olunması

Bu sənəddə əvvəldə qeyd etdiyim kimi LDAP server olaraq Windows Server 2012 R2-də qaldırılmış Active Directory istifadə olunmuşdur. AD ilə Seafile Server eyni yerli şəbəkədə yerləşirlər.

AD adını seafile serverinizin rezolv edə bildiyindən əmin olun. Əgər etmirsə /etc/hosts faylına əlavə edin

[[email protected] ~]# vim /etc/hosts

10.50.3.56  dc.openmail.az

 

Biz istəyirik ki, Seafile Server-ə Active Directory-də yaratdığımız “SeafileUsers” qrupunun üzvləri yalnız daxil ola bilsinlər.

Bu qrupun DN (distinguished name) adı : CN=SeafileUsers,OU=Cloud,DC=openmail,DC=az

DN ada baxmaq üçün istədiyiniz qrup və ya istifadəçinin üzərinə sağ düyməni sıxıb, “Properties->Attribute editor->distinguished name” baxa bilərsiniz

 

Onun üzvlərini isə “Members” tabı altında görə bilərik və ya əlavə edə bilərik

 

Gəlin indi isə Seafile Serverimizdə quraşdırmamızı edək

/opt/seafile/conf/ccnet.conf faylına aşağıdakı sətirləri öz LDAP serverinizə uyğun əlavə edirik

[[email protected] ~]# vim /opt/seafile/conf/ccnet.conf

[LDAP]

HOST = ldap://dc.openmail.az/

BASE = DC=openmail,DC=az

USER_DN = [email protected]

PASSWORD = A123456789a

LOGIN_ATTR = userPrincipalName

FILTER = memberOf=CN=SeafileUsers,OU=Cloud,DC=openmail,DC=az

 

HOST: “ldap://ldap-host-adi/” və ya “ldap-host-adi:389” şəklində qeyd olunur

BASE: LDAP-ın ən köklü DN adı qeyd olunur. LDAP tələbləri üçün bu şərtdir

USER_DN: LDAP-ın yetkili istifadəçi adı qeyd olunur. Tələblər bu istifadəçi vasitəsi ilə yerinə yetirilir.

PASSWORD: Yuxarıdakı istifadəçinin şifrəsi qeyd olunur

LOGIN_ATTR: İstifadəçi adı üçün “login id”-dir. Əgər sistemdə Exchange varsa “mail” atributu da istifadə olunur

FILTER: Bu parametri isə istifadəçi qruplarına görə filter etdiyimiz zaman istifadə edirik.

 

Seafile servislərini yenidən başladırıq

[[email protected] ~]# systemctl restart seafile seahub

Sonra veb interfeysə admin olaraq daxil olun və “settings” bölməsinə keçid alın. “Users” bölümündə yeni LDAPLDAP(İmported) bölümü yarandığını görəcəksiniz.

LDAP bölümündə ümumiyyətlə həmin qrupun bütün üzvləri görünür.

LDAP (imported) bölümündə isə aktiv (yəni ən azı bir dəfə sistemə daxil olmuş ldap istifadəçisinin siyahısı təşkil edir). İndi həmin siyahı boşdur.

admin kimi sistemi tərk edib (Logout) sistemə “[email protected]” kimi daxil olaq.

 

Sonra yenidən sistemi tərk edib Admin kimi daxil olaq

[email protected] ilə sistemə daxil olduqdan sonra “settings->Users->Ldap(imported)”-a baxsaq, [email protected] istifadəçisini orada görəcəyik.

 

LDAP istifadəçisi üçün normal istifadəçilər kimi MB limiti təyin edə hətta administrator yetkisi belə verə bilərsiniz.

Administrator yetkisi vermək üçün Settings-Users-Admins bölümündə Add admin düyməsini sıxıb hər hansı bir istifadəçini ora əlavə edə bilərsiniz.

Bu qədər ☺

Səs: +30. Bəyənilsin Zəifdir

Müəllif: Nurlan Fərəcov

Şərh yazın