Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Lietuvos mokslo ir studijų institucijų kompiuterių tinklas LITNET
Vilniaus universitetas
Failų dėtuvės paslauga Paslaugos administravimo instrukcija
Paslauga sukurta vykdant Europos socialinio fondo finansuojamą projektą „Mokslo ir studijų
institucijoms LITNET teikiamų IT paslaugų plėtra“ Nr. 09.3.3-ESFA-V-711-01-0003
Vilnius
2018 m.
2
TURINYS
Turinys ....................................................................................................................................... 2
Paslaugos aprašymas................................................................................................................... 3
Paslaugos diegimo dokumentacija ............................................................................................ 4
Naudojama programinė įranga ............................................................................................... 4
Sistemos paruošimas .............................................................................................. ............... 5
Nextcloud diegimas ...............................................................................................................10
Nextcloud sujungimas su OpenStack ....................................................................................12
SSO diegimas .................................................................................................................. .....14
Collabora diegimas ................................................................................................................14
Sistemos palaikymas ..................................................................................................... ...........20
Rezervinės kopijos ................................................................................................................20
Failų dėtuvės atnaujinimas ....................................................................................................26
Failų dėtuvės stebėjimas .......................................................................................................28
3
PASLAUGOS APRAŠYMAS
Failų dėtuvė - failų saugojimo sistema, sudaranti galimybę autentifikuotiems naudotojams talpinti
savo dokumentus debesyje bei dalintis jais su kitais naudotojais. Ši sistema yra skirta ilgalaikiam failų
saugojimui, su galimybe naudotojui juos pasiekti iš bet kokios vietos iš įrenginio su interneto
prisijungimu.
Paslaugos pagrindinės funkcijos:
Failų valdymas – įkėlimas, paieška, dalinimasis su kitais failų dėtuvės naudotojais;
Word, Excel bei PowerPoint failų redagavimas naršyklėje (palaikomi OpenDocument bei OOXML
formatai);
PDF, TXT failų peržiūra;
Naudotojo užrašų valdymas (notes);
Nuotraukų galerija;
Naudotojo veiksmų bei failų redagavimo istorijos peržiūra;
Failų dėtuvės naudotojų failams saugoti galima naudoti tiek lokalią, tiek nutolusią saugyklas. Dėl
projekto specifikos reikės, kad projektui pasirinktas produktas palaikytų 3.1.1 veikloje įdiegtą ir paruoštą
naudojimui objektinių duomenų talpyklą, užtikrinsiančią aukštą pasiekiamumą (high availability),
horizontalų bei vertikalų plėtimą iki didelių talpų bei didelę veikimo spartą. Naudotojų bei jų failų
metaduomenys tokioje konfigūracijoje bus saugomi duomenų bazėje, su galimybe pereiti prie aukšto
pasiekiamumo modelio, jei būtų toks poreikis. Tinkamai suprojektuota ir sudiegta tokia failų dėtuvė galės
pilnai pakeisti Google Drive arba panašius rinkoje esančius komercinius sprendimus.
4
PASLAUGOS DIEGIMO DOKUMENTACIJA
NAUDOJAMA PROGRAMINĖ ĮRANGA
Failų dėtuvė yra diegiama virtualių mašinų pagrindu, veikiančių virtualizacijos serveriuose
(hipervizoriuose). Virtualios mašinos operacinė sistema ir naudojama programinė įranga buvo parinkti pagal
populiariausius rinkoje esančius sprendimus.
• Operacinė sistema: Ubuntu 16.04 LTS;
• Apache 2 HTTP serveris;
• PHP 7.0;
• MySQL duomenų bazė;
• Nextcloud 13 failų dėtuvė, kurios paskutinė versija yra gaunama adresu:
https://download.nextcloud.com/server/releases/latest-13.zip
• Collabora Online Development Edition (CODE), https://www.collaboraoffice.com/code/
Sistemos stebėjimo, logų iškėlimo bei rezervines kopijas daranti programinė įranga yra diegiama
ir konfigūruojama administratoriaus nuožiūra, pagal poreikį:
• Rsyslog - syslog logų siuntimas į logų surinkimo serverį;
• Zabbix klientas - Zabbix sistemos klientas serverio stebėjimui;
• Bareos klientas - Bareos rezervinių kopijų sistemos klientas rezervinėms kopijoms daryti.
Funkcijos
Sudiegus minėtą programinę įrangą failų dėtuvė palaikys šias funkcijas:
• Failų valdymas - įkėlimas, paieška, dalinimasis jais su kitais failų dėtuvės naudotojais;
• Debesyje saugomų failų sinchronizacija su naudotojo kompiuteriu arba mobiliu telefonu,
per specialų klientą;
• Nuotraukų galerija - peržiūra, dalinimasis su kitais naudotojais;
• Kalendorius bei jo sinchronizavimas su naudotojo įrenginiais per CalDAV;
• Word, Excel bei PowerPoint failų redagavimas naršyklėje (palaikomi OpenDocument bei
OOXML formatai);
• PDF, TXT failų peržiūra;
5
• Naudotojo užrašinė (notes);
• Naudotojo veiksmų bei failų redagavimo istorijos peržiūra;
Skiriant resursus virtualiam serveriui reikėtų atsižvelgti į šias programinės įrangos
gamintojų rekomendacijas. Čia reikėtų pastebėti, kad šie skaičiai yra orientaciniai, labai
priklausantys nuo naudotojų intensyvumo, jų naudojimosi sistema specifikos. Sisteminei aplinkai
sudiegti užteks 10-15 GB diskinės vietos, kiti resursai priklauso nuo naudotojų skaičiaus.
Didesniems serveriams rekomenduojama skirti daugiau, iki 30-50 GB diskinės vietos, dėl to, kad
naudotojų failų, nors ir saugomų objektinėje saugykloje, metaduomenys vis tiek yra saugomi
MySQL serveryje, lokaliai. Lokaliai yra saugomi ir sisteminiai įrašai (logs).
Likusieji parametrai parenkami pagal šiuos kriterijus:
• 10 naudotojų vienai CPU gijai (CPU thread);
• Vienam naudotojui - 100 MB RAM;
• Vienam naudotojui - 100 Kb/s tinklo srauto;
SISTEMOS PARUOŠIMAS
Diegimo instrukcija naudos šiuos kintamuosius. Jie diegimo instrukcijoje bus paryškinti raudona spalva:
• MySQL slaptažodžiai - root, nextcloud: <mysql_root>, <mysql_nextcloud>
• Serverio domeno vardas bei IP: <server_name>, <server_IP>
• Collabora domeno vardas bei administratoriaus aplinkos slaptažodis:
<collabora_name>, <collabora_admin_pwd>
• Serverio sertifikatai: <server_cert_public_key>, <server_cert_private_key>,
<server_cert_chain>
• Sertifikatai Collabora virtualhost’ui: <collabora_cert_public_key>,
<collabora_cert_private_key>, <collabora_cert_chain>
Šie parametrai yra naudojami administratoriaus nuožiūra, pagal poreikį:
• Zabbix serverio IP adresas bei MySQL naudotojo, per kurį Zabbix stebės MySQL,
slaptažodis: <Zabbix_IP>, <mysql_zabbix>
• Syslog logų surinkimo serverio adresas ir portas: <Syslog_IP>, <Syslog_port>
• Bareos serverio IP adresas: <Bareos_IP>, slaptažodis: <Bareos_key> bei naudotojas,
skirtas daryti MySQL rezervines kopijas: <mysql_backup>
6
Įrankių diegimas
apt-get update apt-get
dist-upgrade
apt-get install htop atop ntpdate mc links2 bwm-ng apt-listchanges liblzo2-2 zlib1g-dev unzip
fail2ban
Rsyslog konfigūracija logų siuntimui į išorinį serverį (neprivaloma)
Sukuriamas failas /etc/rsyslog.d/60-custom.conf
*.* @<Syslog_IP>:<Syslog_port>
Perkraunamas rsyslog servisas:
systemctl restart rsyslog
Visi Syslog logai nuo šiol keliaus į nurodytą logų surinkimo serverį.
MySQL serverio diegimas Diegiami
paketai:
apt-get install mysql-server
Diegimo metu bus pasiūlyta įvesti MySQL root slaptažodį.
Sudiegus MySQL prisijungiama:
mysql -u root -p <mysql_root>
Kuriamas Nextcloud naudotojas:
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '<mysql_nextcloud>';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY
'<mysql_nextcloud>';
FLUSH PRIVILEGES;
Apache diegimas
Instaliuojami paketai:
apt-get install apache2 php7.0-common php7.0-gd php7.0-json php7.0-curl php7.0-zip
php7.0xml php7.0-mbstring php7.0-mysql libapache2-mod-php7.0 php7.0-bz2 php7.0-intl
php7.0-gmp php7.0-imagick
7
Norint, kad Apache klientams nerodytų versijos bei operacinės sistemos detalių, keičiamos
eilutės faile: /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
Redaguojamas konfigūracinis failas:
vi /etc/apache2/sites-enabled/000-default.conf
Pakeičiama:
ServerName <server_name>
Virtualhost’o pabaigoje įkeliama ši konfigūracija
RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
Tai nukreips visus HTTP kreipinius į HTTPS.
Konfigūruojamas HTTPS:
a2ensite default-ssl vi /etc/apache2/sites-
enabled/default-ssl.conf
Pakeičiamas vardas bei direktorija:
DocumentRoot "/var/www/nextcloud" ServerName
<server_name>
Headerių pataisymas:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
Sukonfigūruojami sertifikatai:
SSLCertificateFile /root/cert/<server_cert_public_key>
SSLCertificateKeyFile /root/cert/<server_cert_private_key> SSLCertificateChainFile
/root/cert/<server_cert_chain>
8
Kiti pataisymai:
<Directory /var/www/nextcloud/>
Options +FollowSymlinks AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
Konfigūracija Collabora virtualiam host’ui yra kopijuojama nuo pagrindinio virtualhost’o, su
pataisymais:
cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/collabora.conf
Keičiamas ServerName:
ServerName <collabora_name>
Sukeliama konfigūracija collabora SSL virtual’hostui:
vi /etc/apache2/collabora-ssl.conf
<VirtualHost *:443>
ServerName <collabora_name>:443
SSLEngine on
SSLCertificateFile /root/cert/<collabora_cert_public_key>
SSLCertificateKeyFile /root/cert/<collabora_cert_private_key>
SSLCertificateChainFile /root/cert/<collabora_cert_chain>
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-
CHACHA20POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-
GCMSHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-
SHA384:DHE-
RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-
SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSAAES256-
SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHEECDSA-
AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSAAES128-
SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-
9
CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-
GCMSHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-
SHA:AES256-
SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://127.0.0.1:9980/lool
ProxyPassReverse /lool https://127.0.0.1:9980/lool
</VirtualHost>
</IfModule>
10
Įjungiami reikalingi Apache moduliai:
a2enmod rewrite
a2enmod headers
a2enmod env a2enmod
dir a2enmod mime
a2enmod setenvif
a2enmod ssl a2enmod
proxy a2enmod
proxy_wstunnel a2enmod
proxy_http
Paleidžiamas Apache systemctl
start apache2
NEXTCLOUD DIEGIMAS
Atsiunčiama vėliausia ištestuota versija (Nextcloud 13) wget
https://download.nextcloud.com/server/releases/latest-13.zip
unzip latest.zip cp -r nextcloud /var/www mkdir
/var/www/nextcloud-data/ chown -R www-data:www-data
/var/www/nextcloud chown -R www-data:www-data
/var/www/nextcloud-data
Tolesnis diegimas vykdomas per web interfeisą: nurodoma direktorija naudotojų failams
(/var/www/nextcloud-data), nurodomas sukurtas MySQL naudotojas (nextclouduser), slaptažodis
(<nextcloud_mysql>), administratoriaus naudotojo vardas bei slaptažodis.
Konfigūruojama kvota
Naudotojų kvota pagal nutylėjimą yra nurodoma per administratoriaus aplinką šiais žingsniais:
1. 2.
11
Įjungiamas kešavimas
PHP APC cache ir Redis, paspartinantys PHP veikimą, yra diegiami taip:
apt-get install php-apcu redis-server php-redis
Perkraunamas Apache systemctl restart
apache2
Konfigūraciniame faile /var/www/nextcloud/config/config.php, prieš instanceid prirašomos šios
eilutės:
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
Nextcloud taip pat rekomenduoja naudoti PHP OPcache. Tai daroma keičiant PHP konfigūraciją
faile: /etc/php/7.0/apache2/php.ini
[opcache] sekcijoje prirašoma:
opcache.enable=1 opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Perkraunamas Apache systemctl
restart apache2
SMTP konfigūracija
Esant poreikiui atliekama administratoriaus aplinkoje sekcijoje "Additional settings":
12
NEXTCLOUD SUJUNGIMAS SU OPENSTACK
Bendro katalogo kūrimas:
Jei yra poreikis turėti bendrą, visų naudotojų matomą ObjectStorage katalogą, pradžioje, OpenStack
aplinkoje sukuriamas naudotojas, tarkime "NextCloud". Sukuriamas projektas pvz. "LITNET". Naudotojas
"NextCloud" yra priskiriamas projektui "LITNET" ir yra nurodoma jo rolė: "swift_admin" (ši rolė reikalinga
tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje).
Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju, sukuriama objektų talpykla
(Object storage) pvz. "NextCloud_shared".
NextCloud aplikacijoje pasirenkama "Settings -> External storages", pasirinkama nauja talpykla
"OpenStack Object Storage", su žemiau nurodytais parametrais:
• Folder name: aplankas, kurį matys visi vartotojai (pvz OpenStackObjectStorage).
• Autentification: OpenStack
• ServiceName: swift
• Region: RegionOne
• Bucket: NexCloud_shared
• Username: NextCloud
• Password: NextCloud vartotojo slaptažodis
• Tenant name: LITNET
• Identity endpoint URL: jūsų „Keystone“ serviso adresas
Ši konfigūracija sukurs "OpenStackObjectStorage" aplanką kiekvieno vartotojo asmeninėje aplinkoje.
Duomenys šiame aplanke bus prieinami visiems vartotojams.
Visos aplinkos iškėlimas į objektų talpyklą
Šios konfigūracijos dėka visi vartotojų duomenys bus iškelti į objektų talpyklą. Objektų talpykloje
esančių failų metaduomenys bus saugomi lokalioje MySQL duomenų bazėje.
Objektų talpykla konfiguruojama į NextCloud konfigūracinį failą įrašant (variantas su Swift):
'objectstore' =>
array (
'class' => 'OC\\Files\\ObjectStore\\Swift', 'arguments'
=>
13
array (
'username' => 'NextCloud',
'password' => ' NextCloud vartotojo slaptažodis', bucket' => ' VartotojuDuomenys', autocreate' => false, region' => 'RegionOne',
url' => 'jūsų „Keystone“ serviso adresas ',
tenantName' => 'LITNET', serviceName' => 'swift', urlType' => 'internalURL',
),
),
Variantas su S3:
'objectstore' = array (
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' =>
array (
'bucket' => 'VartotojuDuomenys',
'autocreate' => true,
'key' => 'slaptaslapta',
'secret' => 'slaptaslaptaslapta',
'hostname' => 'paslaugos adresas',
'port' => 443,
'use_ssl' => true,
'region' => 'optional',
'use_path_style' => true,
),
),
Sukėlus šią konfigūraciją, visi Nextcloud naudotojų bei sisteminiai failai bus kuriami failų saugykloje, kurią S3
konfigūracijoje bus galima peržiūrėti su programa S3 Browser
(http://s3browser.com/). Failai joje būna saugomi urn:oid:XXXX struktūros pavadinimais, kur XXXX reprezentuoja
Nextcloud MySQL oc_filecache lentelės lauką "fileid". Iš jo galima gauti tikrąjį failo pavadinimą. Pvz. failas
urn:oid:1034
14
SSO DIEGIMAS
Autentifikacijai įdiegiamas "SSO & SAML authentication" įskiepis.
SimpleSAML metaduomenų pavyzdys: $metadata['https://nextcloudURL/index.php/apps/user_saml/saml/metadata'] = array(
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
'AssertionConsumerService' => 'https://nextcloudUR/index.php/apps/user_saml/saml/acs',
'attributeencodings' => array('objectSid' => 'base64'),
'authproc' => array(
0 => array(
'class' => 'core:AttributeLimit',
'mail', 'eduPersonPrincipalName','displayName',
),
),
);
SSO & SAML autentifikacijos įskiepyje nurodomi metaduomenys ir SSO paslaugos adresai. Unikaliam
ID pasirenkamas eduPersonPrincipalName atributas. Varnelė "Allow the use of multiple user back-ends
(e.g. LDAP)" uždedama pagal poreikį, jei norima palikti galimybę jungtis lokaliems arba LDAP
naudotojams, administravimo darbams atlikti.
15
URL pataisymai be index.php/
Norint iš URL pašalinti kelią /index.php/, konfigūraciniame faile
/var/www/nextcloud/config/config.php, prirašoma eilutė:
'htaccess.RewriteBase' => '/',
Atnaujinama konfigūracija per komandinę eilutę occ.
cd /var/www/nextcloud/
sudo -u www-data php occ maintenance:update:htaccess
Nextcloud foninės užduotys
Nors failų dėtuvė moka fonines užduotis vykdyti be papildomų nustatymų, rekomenduojama jų
vykdymą deleguoti operacinei sistemai. Tai vykdoma šiais žingsniais:
1. Prisijungus naudotoju su administratoriaus teisėmis, "Basic settings" nustatymuose,
skiltyje "Background jobs" pasirenkant "Cron";
2. Operacinėje sistemoje pakoreguojamas naudotojo, kuriuo veikia Nextcloud (www-data),
crontab failas: crontab -u www-data -e
Įterpiama:
*/15 * * * * php -f /var/www/nextcloud/cron.php
Po šių žingsnių cron servisas vykdys Nextcloud fonines užduotis, kas 15 minučių.
Dizaino keitimas
Nors didelė dalis dizaino (prisijungimo lango paveiksliukas, logotipas, šūkis bei antraštės spalva)
yra keičiami per nustatymus (Settings->Theming), likusią dalį reikės keisti PHP failuose.
• Lokalaus mygtuko prisijungimo tekstas yra keičiamas faile
/var/www/nextcloud/apps/user_saml/lib/Controller/SAMLController.php, koreguojant
eilutę 'display-name' => $this->l->t('Direct log in');
• SSO prisijungimo mygtuko tektas - per SSO konfigūravimo puslapį;
• Pagrindinis šablonas, kartu su mygtukų išdėstymu, yra keičiamas faile:
/var/www/nextcloud/apps/user_saml/templates/selectUserBackEnd.php
16
• Mygtukų spalvos - šiame CSS faile:
/var/www/nextcloud/apps/user_saml/css/selectUserBackEnd.css
Reikia turėti omenyje, kad atnaujinus įskiepį "SSO & SAML authentication", visi jame atlikti
pakeitimai bus perrašyti.
WebDAV bei CalDAV
Kadangi WebDAV bei CalDAV protokolai nepalaiko autentifikacijos per SSO, sinchronizuoti
savo failus arba kalendorius nepavyks be papildomų veiksmų. Nextcloud tam siūlo susikurti
lokalų slaptažodį, generuojamą šiais žingsniais:
1. Užeinama į nustatymus
2. Saugumo nustatymai
3. Sugeneruojamas naujas slaptažodis
17
Suvedus pavadinimą bus sugeneruotas prisijungimo vardas bei slaptažodis, kurį bus galima
naudoti WebDAV bei CalDAV klientuose.
Programų diegimas SSO aplinkoje
Reikėtų pastebėti, kad Nextcloud, dėl savo administratoriaus aplinkos veikimo logikos, diegiant
naujas programas (apps) arba atliekant dalį kitų administracinių veiksmų reikalauja įvesti
naudotojo slaptažodį. Kadangi, besijungiant per SSO, Nextcloud neturi galimybės įvesto
slaptažodžio patikrinti, diegti naujų programų prisijungus per SSO nepavyks. Apeiti šį apribojimą
galima dviem būdais: paliekant lokalų/LDAP naudotoją ir SSO konfigūracijoje pažymėjus varnelę
"Allow the use of multiple user back-ends (e.g. LDAP)", arba, naujų programų diegimą vykdyti
per komandinę eilutę, programą gaunant iš Nextcloud Github: https://github.com/nextcloud/
Diegimas vyksta taip (kaip pavyzdys pasirinkta programa Notes):
wget -q https://github.com/nextcloud/notes/archive/master.zip -P /var/www/nextcloud/apps
unzip /var/www/nextcloud/apps/master.zip mv notes-master notes
mv notes /var/www/nextcloud/apps chown -R www-data:www-
data /var/www/nextcloud/apps/notes sudo -u www-data php
/var/www/nextcloud/occ app:enable notes
Vėliau programa konfigūruojama ir atnaujinama per naršyklę, kaip įprasta.
18
COLLABORA DIEGIMAS
Collabora Online naudoja Docker virtualizaciją, dėl ko, jos paskutinė versija yra visada
pasiekiama per Docker repozitoriją.
apt-get install docker.io systemctl
start docker systemctl enable
docker Diegiamas Collabora
konteineris:
sudo docker pull collabora/code sudo docker run -t -d -p 127.0.0.1:9980:9980 -e
'domain=nextcloud\\.auth\\.test\\.vu\\.lt' -e "username=admin" -e
"password=<collabora_admin_pwd>" --restart always --cap-add MKNOD collabora/code
Nurodomas "domain" yra domeno vardas, kuriam leidžiama naudotis Collabora. Jį reikėtų
pakoreguoti priklausomai nuo to, koks yra Nextcloud serverio vardas, naudojant prieš taškus
specifinį escape simbolį - dvigubą brūkšnį: \\
Patikrinama, ar veikia (portas 9980 turi būti klausomas:
sudo netstat -lnpt
Paskutinis momentas - <collabora_name> vardo nukreipimas į Nextcloud, kad netyčia atėję
naudotojai būtų nukreipiami ten, kur priklauso.
vi /var/www/html/index.html
Failo turinys:
<meta http-equiv="refresh" content="0; URL='https://<domain_name>'" />
chown www-data:www-data /var/www/html/index.html
Lietuvių kalbos tikrinimas (spellcheck) Norint, kad redaguojant tekstą Collabora tikrintų
klaidas lietuvių kalba, ją reikia įdiegti. Diegimas vyksta prisijungiant prie konteinerio ir
įdiegiant jame kelis papildomus paketus, po to išsaugant pakeitimus lokalioje repozitorijoje.
Iš pradžių, pasižiūrima, kokie konteineriai yra paleisti:
docker ps
19
Prisijungiama prie konteinerio per jo ID: docker
exec -it <docker ID> /bin/bash
Atnaujinamas paketų sąrašas ir instaliuojami papildomi paketai (pavyzdyje papildomai diegiama
ir rusų kalba):
apt update apt install vim collaboraoffice5.3-dict-lt collaboraoffice5.3-dict-ru hunspell-lt
hunspell-ru
Išeinama iš konteinerio: exit
Įdiegus paketus pakeitimai įrašomi į lokalią repozitoriją: docker
commit <docker ID> collabora-local
Išjungiamas senas konteineris: docker
stop <docker ID>
Iš naujos repozitorijos collabora-local paleidžiamas konteineris su naujais parametrais:
sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.auth\\.test\\.vu\\.lt' -e
"username=admin" -e "password=<collabora_admin_pwd>" -e "dictionaries=en_US ru_RU lt_LT"
--restart always --cap-add MKNOD collabora-local
Nextcloud susiejimas su Collabora
Nextcloud pusėje įdiegiamas Collabora Online įskiepis:
Konfigūruojant įskiepį Collabora serverio adresas yra nurodomas su https (turi veikti tuo pačiu
protokolu kaip ir pats Nextcloud). Varnelė nustato, kokį dokumentų formatą naudoti pagal
nutylėjimą - OOXML arba OpenDocument.
20
Papildomai rekomenduojame susidiegti įskiepius: Calendar, PDF viewer, Quota warning,
Bruteforce settings. Likusieji įskiepiai diegiami savo nuožiūra.
Kalbos nustatymai
Kalba keičiama konfigūraciniame faile: /var/www/nextcloud/config/config.php prirašant:
'force_language' => 'lt_LT',
Norint, kad lietuvių kalba būtų rodoma pagal nutylėjimą tik tada, kai naudotojo naršyklės kalba
nėra nustatyta, prirašoma taip:
'default_language' => 'lt_LT',
SISTEMOS PALAIKYMAS \
Rezervinės kopijos
Bareos kliento diegimas
Sistemos rezervinėms kopijoms siūlome naudoti nemokamą įrankį Bareos, tačiau, galutinis sprendimas yra
paliekamas administratoriui. Bareos rezervinis kopijavimas yra diegiamas tokia seka:
Pridedama repozitorija rezervinėms kopijoms:
vi /etc/apt/sources.list.d/bareos.list
Į failą įrašoma: deb
http://download.bareos.org/bareos/release/latest/xUbuntu_16.04/ /
Įdiegiamas repozitorijos raktas:
Papildomi įskiepiai
21
wget -qO - http://download.bareos.org/bareos/release/latest/xUbuntu_16.04/Release.key | sudo
apt-key add -
Atnaujinamas paketų sąrašas ir įdiegiamas klientas:
apt-get update apt-get install
bareos-filedaemon
Sukeliama konfigūracija:
vi /etc/bareos/bareos-fd.conf
Failo turinys:
Director {
Name = bareos-dir-dir
Password="<Bareos_key>"
}
FileDaemon { # this is me
Name = bareos-dir-fd
Maximum Concurrent Jobs = 20
}
Messages {
Name = Standard
director = bareos-dir-dir = all, !skipped, !restored
}
Susiejamas Bareos serverio vardas su IP:
vi /etc/hosts
Prirašoma:
<Bareos_IP> bareos-dir
Paleidžiamas Bareos: systemctl
start bareos-fd
MySQL rezervinės kopijos
Jeigu yra poreikis daryti MySQL rezervines kopijas, tam sukuriamas specialus naudotojas:
mysql -u root -p
22
GRANT LOCK TABLES, PROCESS, SELECT ON *.* TO 'backup'@'localhost' IDENTIFIED BY
'<mysql_backup>';
FLUSH PRIVILEGES;
Sukeliamas įrankis mysql_backup (jį taipogi bus galima surasti prieduose):
mkdir -p /root/mysql_backup Redaguojamas
skriptas:
vi /root/mysql_backup/start.sh
#!/bin/bash
initialize_variables()
{
DBHOST="localhost"
DBUSER="backup"
DBPASS="<mysql_backup>"
DUMP="/usr/bin/mysqldump"
TEMP="/tmp"
MYSQL="/usr/bin/mysql"
PREFIX="ionice -c2 -n7 nice -n19"
BACKUP_DATE=`/bin/date +%m.%d_%H_%M`
}
perform_backup()
{
LIST=`$MYSQL --user=$DBUSER --password=$DBPASS --host=$DBHOST -Bse "SHOW
DATABASES" | grep -v Database | grep -v information_schema | grep -v
performance_schema | grep -v mysql | grep -v sys`
mkdir -p $TEMP/MYSQL/$BACKUP_DATE
for i in $LIST; do
$PREFIX $DUMP --user=$DBUSER --password=$DBPASS --host=$DBHOST --
singletransaction $i | gzip > $TEMP/MYSQL/$BACKUP_DATE/${i}.sql.gz done
}
initialize_variables perform_backup
Redaguojamas skriptas:
vi /root/mysql_backup/delete.sh
#!/bin/bash rm -rf
/tmp/MYSQL
23
Keičiamos teisės: chmod +x
/root/mysql_backup/*.sh
Bareos serverio pusėje užregistruojamas serveris ir sukonfigūruojamos taisyklės.
vi /etc/bareos/clients/<server_name>.conf Failo
turinys:
Client {
Name = <server_name>
Address = <server_IP>
Password = "<Bareos_key>"
File Retention = 90 days
Job Retention = 5 months
AutoPrune = yes # Prune expired Jobs/Files
}
FileSet {
Name = "<server_name>_mysql"
Include {
Options {
signature = MD5
}
File = "/tmp/MYSQL"
}
}
24
Job {
Name = "<server_name>_mysql"
Client = "<server_name>"
JobDefs = "mysql_backup"
FileSet = "<server_name>_mysql"
}
Job {
Name = "<server_name>_root"
Client = "<server_name>"
JobDefs = "root_backup"
FileSet = "<server_name>_root"
}
FileSet {
Name = "<server_name>_root"
Include {
Options {
signature = MD5
}
File = /
}
Exclude {
File = /w3
File = /proc
File = /tmp
File = /sys
File = /proc
File = /.journal
File = /.fsck
}
}
Sukeliami darbų aprašymai (job definitions): vi
/etc/bareos/clients/job_defs.conf
JobDefs {
Name = "mysql_backup"
RunScript {
RunsWhen = Before
FailJobOnError = No
Command = "/root/mysql_backup/start.sh"
}
RunScript {
RunsWhen = After
FailJobOnError = No
25
Command = "/root/mysql_backup/delete.sh"
}
Type = Backup
Level = Incremental
Client = bareos-dir-fd
Schedule = "FullEveryDay"
Storage = BareosStorage_mysql
Messages = Standard
Pool = BareosStoragePool_mysql
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
}
JobDefs {
Name = "root_backup"
Type = Backup
Level = Incremental
Client = bareos-dir-fd
Schedule = "FullRootAWeek"
Messages = Standard
Full Backup Pool = BareosStoragePool_full
Differential Backup Pool = BareosStoragePool_diff
Incremental Backup Pool = BareosStoragePool_inc
Pool = BareosStoragePool_inc
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
}
Parametrai Storage, Pool, Full Backup Pool, Differential Backup Pool, Incremental Backup Pool
parenkami pagal Bareos saugyklų konfigūraciją.
26
FAILŲ DĖTUVĖS ATNAUJINIMAS
Nextcloud atnaujinimas
Nextcloud atnaujinimas vykdomas per administratoriaus sąsają. Prieš atnaujinant rekomenduojama
ištestuoti naują Nextcloud versiją testinėje aplinkoje, ar nėra problemų. Atnaujinimai diegiami tokia
žingsnių seka:
1 . Patikrinama, ar yra atnaujinimas :
2 . Vykdomas atnaujinimas :
3 . Atnaujinama duomenų bazė :
27
Collabora atnaujinimas
Collabora atnaujinama išjungiant ir ištrinant seną konteinerį bei gaunant naują Collabora
atvaizdą iš repozitorijos:
Gaunamas konteinerių sąrašas (išjungti konteineriai yra rodomi su docker ps -a)
Operacijos su konteineriais yra vykdomos per CONTAINER_ID. Juo operuojant senas
konteineris yra išjungiamas bei ištrinamas:
Atnaujinamas Collabora atvaizdas iš repozitorijos: docker
pull collabora/code
Paleidžiamas naujas konteineris:
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.auth\\.test\\.vu\\.lt' --restart
always --cap-add MKNOD collabora/code Patikriname, ar viskas veikia:
Taipogi:
Kiti atnaujinimai
MySQL, Apache bei kiti OS komponentai yra atnaujinami per Ubuntu repozitoriją. Saugumo
atnaujinimai bus gaunami iki 2021 metų balandžio.
Atnaujinimai vykdomi per apt-get programą:
apt-get update apt-get
dist-upgrade
Po perkrovimo pašalinami seni branduoliai bei kiti nebereikalingi paketai:
apt-get autoremove
28
FAILŲ DĖTUVĖS STEBĖJIMAS
Failų dėtuvės stebėjimas atliekamas per administratoriaus valdymo aplinką, randamą administratoriaus
valdymo aplinkoje -> Monitoring. Ten, be kitų aktualių parametrų, galima matyti statistiką, kiek naudotojų
yra prisijungę šiuo metu:
Failų dėtuvės serverio apkrovimo stebėjimą galima realizuoti su Zabbix, tačiau, ši dalis nėra privaloma ir
paliekama administratoriaus nuožiūrai. Esamą architektūrą galima integruoti ir su Nagios, ir su kitomis
stebėjimo sistemomis. Diegiama Zabbix repozitorija:
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-
1+xenial_all.deb
dpkg -i zabbix-release_3.4-1+xenial_all.deb
apt-get update apt-get install zabbix-agent
zabbix-sender
Konfigūraciniame faile įrašomas Zabbix serverio IP: vi
/etc/zabbix/zabbix_agentd.conf
Pakeičiama eilutė:
Server=<Zabbix_IP> Perkraunamas
servisas:
systemctl restart zabbix-agent
MySQL Zabbix naudotojas
Norint stebėti MySQL per Zabbix, MySQL papildomai sukuriamas naudotojas Zabbix:
29
mysql -u root -p
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '<mysql_zabbix>';
GRANT usage on *.* to 'zabbix'@'localhost' IDENTIFIED BY '<mysql_zabbix>'; FLUSH
PRIVILEGES;
Sukuriamas failas su prisijungimo duomenimis Zabbix agentui:
mkdir -p /var/lib/zabbix vi
/var/lib/zabbix/.my.cnf
Faile įrašoma:
[client]
user = zabbix
password = <mysql_zabbix>
[mysqladmin] user=zabbix
password = <mysql_zabbix>
Pakeičiamos teisės:
chmod 644 /var/lib/zabbix/.my.cnf chown -
R zabbix:zabbix /var/lib/zabbix mkdir -p
/etc/zabbix/zabbix_agentd.conf.d/
Sukeliamas failas /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf (jį taipogi galima
surasti tarp priedų):
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" |
HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.connections,echo "show status like 'Threads_connected';" |
HOME=/var/lib/zabbix mysql -N | cut -f2
UserParameter=mysql.max_connections,echo "show variables like 'max_connections';" |
HOME=/var/lib/zabbix mysql -N | cut -f2
UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo
"data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from
information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[
"$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | HOME=/var/lib/zabbix mysql -N
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
Perkraunamas Zabbix agentas: systemctl
restart zabbix-agent
30
Zabbix aplinkoje serveriui nurodomas papildomas šablonas - "Template App MySQL"
Apache Zabbix stebėjimas
Apache su Zabbix yra stebimas per specialų Perl skriptą, perduodantį į Zabbix pagrindinius
parametrus iš Apache status - waiting for connection, closing connection, keepalive ir kitus.
Įjungiamas Apache status modulis: a2enmod
status
Konfigūruojama: vi /etc/apache2/mods-
enabled/status.conf
Pakeičiama atitinkamai:
<Location /server-status>
SetHandler server-status
Require local
</Location>
Perkraunamas Apache:
systemctl restart apache2
Sukeliamas skriptas iš priedų: vi
/root/apache_zabbix.py
Pakeičiamos teisės: chmod +x vi
/root/apache_zabbix.py
Į Cron yra įrašoma ši eilutė:
* * * * * /root/apache_zabbix.py -c <server_name> -l http://<server_name>/server-status?auto -z
<Zabbix_IP> > /dev/null 2>&1
Zabbix aplinkoje pridedamas šablonas stebėti Apache. Galutinis variantas turėtų atrodyti taip:
31
Prie serverio atsiras šie papildomi grafikai:
1. Apache
2. MySQL