Instalimi dhe konfigurimi i Ubuntu Server dhe disa prej aplikacioneve te perdorura.
Ubuntu Server është një nga sistemet operative më të përdorura në serverat e shumë kompanive të ndryshme. Ajo qe e ben Ubuntu-n distribucion shume te preferuar eshte suporti qe mund te maresh per kete sistem.
Suporti i Ubuntu Server ndahet në dy lloje: ai komercial dhe i komunitetit. Suporti komercial mbulohet nga kompania Canonical Ltd , e cila e mundëson këtë në bazë të desktop-eve apo serverave që klienti në fjalë ka. Ndërsa suporti i komunitetit mundësohet nga persona individualë dhe kompani të tjera, të cilat duan që Ubuntu të bëhet distribucioni më i mirë.
Do të përshkruajmë shkurtimisht si të instalojmë dhe të konfigurojmë aplikacione të ndryshme në Ubuntu Server. Gjatë këtij procesi shumë hapa janë opsionale dhe i lihen në dorë administratorit të sistemit të bëjë ndryshimet perkatëse.
Përgatitja për instalim
Fillimisht do të shohim disa aspekte që duhen pasur parasysh përpara se të instalojmë sistemin. Ubuntu i suporton të dy arkitekturat e mëdha: Intel x86 dhe AMD64. Mëposhte janë dhënë disa specifikime hardware që paraqesin kërkesat minimale për instalimin e sistemit.
RAM – 128 MB
Storage – 500 MB Sistemi baze
Diferencat midis versionit Server dhe Desktop.
Ka disa dndryshime midis Ubuntu Server dhe Ubuntu Desktop, edhe pse të dy versionet përdorin të njëjtat burime për instalimin e aplikacioneve. Kjo
mundëson që një aplikacion i caktuar të instalohet pa problem në të dy versionet. Diferencat midis dy sistemeve përqëndrohen midis menaxhimit grafik
te sistemeve, procesit të instalimit si dhe opsioneve të ndryshme të Kernelit.
Instalimi i Ubuntu Server
Hapat bazë për instalimin e sistemit janë pak a shumë të njëjtat hapa që ndiqen për instalimin e cdo sistemi operativ. Ndryshe nga versionet Desktop, versioni
Server i Ubuntu nuk përfshin një guidë grafike të instalimit të sistemit. Versioni Server përdor një dritare të bazuar mbi menu.
Fillimisht vendosim CD e Ubuntu Server dhe boot-ojmë nga CD. Zgjedhim gjuhën e sistemit operativ:
Në hapat vijues do të kërkohet të zgjedhim gjuhën e sistemit, si dhe llojin e tastierës.
Procesi i instalimit pasi detekton hardware-in bën konfigurimin automatik të rrjetit. Në hapin pauses jepet mundësia që të kthehemi pas dhe të bëjmë një kofigurim manual të IP.
Në hapat vijues kërkohet të futen hostname, fjalëkalimi etj…Sistemi do të quhet server1.example.com, prandaj shkruajmë server1.
Particionimi i diskut.
Për thjeshtësi, në këtë fazë do të zgjedhim “Guided – use entire disk and set up LVM”, opsion i cili do të na krijojë një Volum Grup me dy volume (particione) të tjera logjike, një particion për rrënjën e sistemit operativ ( “/” ) dhe një për particionin e swap-it. Sigurisht që particionimi është plotësisht në dorën e përdoruesit – pra nëse jeni të sigurtë, mund ta particiononi manualisht.
Selektojmë diskun që duam të particionojmë:
Pasi na kërkohet të ruajmë ndryshimet, selektojmë “Yes”, dhe këtu fillon konfigurimi i LVM (Logical Volume Management – Menaxhimi i Volumit me particione Logjike).
Meqë kemi zgjedur “Guided – use entire disk and set up LVM”, do të kemi një particion të vetëm i cili do të na shfrytëzojë të gjithë hapësirën e diskut. Tani mund të specifikojmë se sa hapësirë të diskut do të shfrytezohet nga volumi logjik “ / ”, dhe sa nga swap-i. Eshtë e këshillueshme të rezervohet edhe një pjesë e diskut e pashfrytëzuar fare, kështu që mund ta përdorim më vonë për të zgjeruar particionin aktual ose të krijojmë particion të ri, kjo na lejon më shumë fleksibilitet.
Pasi të kemi mbaruar, zgjedhim “Yes” pasi të kemi mbaruar me ndryshimet e bëra në disk.
Më pas particionet do të krijohën dhe do të formatohen:
Pas kësaj faze fillon instalimi i sistemit bazë. Më pas na jepet menuja për të vendosur se cilat paketa dhe shërbime do të instalojmë.
Paketat dhe shërbimet që ato ofrojnë.
Gjatë instalimit të sistemit operativ na jepet mundësia të instalojmë disa paketa shërbimesh. Paketat janë të grupuara sipas llojit të shërbimit që ato mundësojnë. Do të përshkruajmë shurtimisht disa nga paketat më kryesore ndër të cilat jo domosdoshmërisht do ti instalojmë te gjitha. Në këtë fazë nuk do të instalohet asnjë nga paketat dhe shërbimet e përshkruara, pasi është vendosur të instalohen dhe konfigurohen manualisht, është e këshillueshme që gjatë këtij procesi të instalohet OpenSSH.
Disa nga shërbimet janë:
• DNS server: Selekton BIND DNS server dhe dokumentacionin përkatës.
• LAMP server: Selekton një bllok paketash të prekonfiguruara Linux/Apache/MySQL/PHP server.
• Mail server: Selekton disa paketa të domosdoshëm për menaxhimin e sistemit të mailit.
• OpenSSH server: Selekton paketa të domosdoshme për OpenSSH server. OpenSSH server, nuk do të instalohet në këtë moment, te gjitha shërbimet në këtë faze janë opsionale. OpenSSH do të instalohet më vonë.
• Print server: Mundëson sistemin të funksionojë si një print server.
• Samba File server: Mundëson sistemin të funksionojë si një Samba File server, që realisht është shumë i përdorur për të ndarë direktoritë në rrjet midis kompjuterave me sisteme të ndryshme operative, si Windows ashtu edhe Linux.
• Virtual machine host: Përfshin paketat e domosdoshme për të ekzekutuar KVM (Kernel Virtual Machine) makinat virtuale.
Instalimi i GRUB Loader-it:
Theksojmë se Grub Loaderi duhet të instalohet në MBR(kur të na kerkohet se ku duam të instalojmë Grub Loaderin, zgjedhim opsionin që na lejon ta instalojmë ne MBR). Zgjedhja e këtij opsioni është e detyrueshme nëse në diskun tone nuk ka sistem tjetër operativ, në të kundërt Ubuntu Server nuk do të ngarkohet pasi të ketë mbaruar instalimi.
Këtu mbaron instalimi i Ubuntu Server. Heqim CD nga CD-Rom drive dhe shtypim “Continue” për të ristartuar sistemin.
Pasi është instaluar sistemi, useri i krijuar ka automatikisht të drejtat e administratorit (root) nëpërmjet komandës sudo. Nëse në ndonjë nga hapat nuk duam që të konfigurohen automatikisht, përdorim opsionin “Go Back” për të konfiguruar manualisht modulin përkatës. Nëse në ndonjë nga pikat e instalimit kemi paqartësi në konfigurim, atëherë ekziston gjithmonë opsioni i F1 (help).
Kalimi në një version më të fundit (Upgrading)
Ka disa mënyra për të upgrade-uar një version ekzistues të Ubuntu në një version më të fundit.
Një mënyrë që rekomandohet më shpesh është programi do-release-upgrade, i cili është pjesë e paketës update-manger-core dhe nuk ka ndërfaqe grafike të menaxhimit.
Një komandë tjetër që bën upgrade është apt-get dist-upgrade, megjithatë është e rekomandueshme të përdorim do-release-upgrade pasi me këtë mënyrë do të kemi mundësinë që të ruajme konfigurimin aktual të sistemit.
Konfigurimi i rrjetit
Do të fokusohemi më shumë në konfigurimin e rrjetit me anë të komand line. Konfigurimi i Ethernet është i përqëndruar më shumë në një file të vetëm, /etc/network/interfaces. Nëse nuk kemi asnjë ndërfaqje Ethernet, vetëm ndërfaqja loopback do të shfaqet në këtë file dhe do të ketë një pamje pak a shumë:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0
Nëse kemi një nderfaqe Ethernet, eth0, e cila e merr konfigurimin e saj automatikisht nga një DHCP server duhet të shtojmë vetëm dy reshtat e mëposhtëm:
auto eth0 iface eth0 inet dhcp
Rreshti i parë tregon që eth0 do të aktivizohet automatikisht ne momentin që ndizet kompjuteri, ndërsa rreshti i dytë, ndërfaqja (interface (“iface”) eth0 do të ketë një hapësirë adrese IPv4 (për një adrese IPv6 duhet zëvendësuar inet me inet6), e cila do të marrë konfigurimin automatikisht nga DHCP server. DHCP server do të vendosë automatikisht default gateway (e cila vendoset
nëpërmjet komandës route), IP adresën (që vendoset nga komanda ifconfig), dhe DNS server adres (që është e implementuar në file-in /etc/resolv.conf). Për të konfiguruar IP adresën në mënyrë statike mund të veprojmë si më poshtë:
supozojmë se duam të kemi IP adresën 192.168.0.2 për kartën e rrjetit eth1, me një subnetmak 255.255.255.0. Gateway i adresës është 192.168.0.1. Për këtë konfigurim, në filen e /etc/network/interfaces shtojmë:
iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Më pas duhet të specifikojmë DNS server manualisht në filen /etc/resolv.conf, e cila do të këtë pamjen:
search.com nameserver 192.168.0.1 nameserver 4.2.2.2
Fjala kyçe search specifikon nje stringë e cila i adresohet një hostname-i jo të plotë. E kemi konfiguruar “com”, kështu kur shkruajme: ping ubuntu ajo do të interpretohet si: ping ubuntu.com. Nameserver tregon IP adresën e serverit. Nëse emrat e DNS server merren automatikisht nga DHCP apo ISP juaj, atëhere nuk është e nevojshme ti konfigirojmë ato, pasi ato do të mbishkruhet nga DHCP server apo ISP.
Administrimi në Distancë
Ka shumë mënyra për të adminstruar në distancë një Linux server. Në këtë pjesë do të trajtojmë atë që është më popullor: SSH.
OpenSSH Server
Në këtë seksion të Ubuntu server do të trajtojmë mjetet më të fuqishme për manipulimin në distancë të rrjtetit dhe transferimet e të dhënave midis kompjuterave të të njëjëtit rrjet, që quhet OpenSSH.
OpenSSH është version free (falas) i protokollit Secure Shell(SSH) që është një mjet aplikacion për kontrollin dhe transferimin e fileve në distancë. Disa toolse shtesë që mund të përdoren si psh. telnet apo rcp janë të pasigurtë pasi ato e trasmetojnë paswordin në tekst të pastër, i cili nuk ka nevojë të dekriptohet nga hakerat.
OpenSSH ofron një daemon (proces) server dhe një klient për të mundësuar ekriptimin controllit dhe transferimit në distancë. Procesi server i OpenSSH, sshd qëndron në pritje të vazhdueshme për ndonjë lidhje nga cdo process klient. Kur ndodh një kërkese për t’u lidhur me serverin, sshd bën lidhjen e duhur në varësi të lllojit të aplikacionit të përdorur nga klienti për t’u lidhur më serverin. Psh. nëse kompjuteri në distance perdor ssh për t’u lidhur me serverin, OpenSSH server hap nje session kontrolli të sigurt pasi është autentikuar paswordi i klientit; nëse klienti lidhet me OpenSSH server me ane te scp, daemon-i (procesi) OpenSSH server inicializon një kopje të sigurt të të fileve midis serverit dhe klientit vetëm pasi është autentikuar paswordi i klientit.
Instalimi
Për të instaluar aplikacionin OpenSSH client dhe server mjafton të shkruajmë në terminal:
sudo apt-get install openssh-client
Për të instaluar OpenSSH server application, dhe filet që suportojnë atë shkruajmë:
sudo apt-get install openssh-server
Paketa openssh-server mund të instalohet gjithashtu edhe gjatë instalimit të sistemit operativ.
Konfigurimi
Mund të konfigurojmë OpenSSH server, sshd, duke edituar file-in /etc/ssh/sshd_config.
Përpara se të bëjmë ndonjë ndryshim në file-in e konfigurimit, duhet të bëjmë një backup file-it original për të korrigjuar kështu ndonjë gabim të mundshëm.
Kështu përdorim komandën:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
për të bërë backup-in e nevojshëm.
Në filen e konfigurimit mund të ndryshojmë:
• Portën në të cilën serveri do të presë kërkësat, pradaj e ndryshojmë nga porta 22 në një portë psh 2222:
Port 2222
• Për të patur një çelës publik bazuar në kredencialet e autentikimit te userave, thejsht shtojmë ose modifikojmë rreshtin e mëposhtëm:
PubkeyAuthentication yes
Nëse ekziston, shohim nëse është e komentuar ose jo. Pasi kemi bërë modifikimet përkatëse në file-in e konfiguritmit ristartojmë sshd
server :
sudo /etc/init.d/ssh restart
Çelësat ssh
Çelësat ssh lejojnë që dy hoste të autentikohen midis tyre pa pasur nevojën e një passwordi. SSH përdor dy çelësa autentikimi, çelësin privat dhe çelësin publik. Për të gjeneruar çelesat nga terminali shkruajmë:
ssh-keygen -t dsa
Kjo, do të gjenerojë autentikimin DSA. Gjatë këtij procesi do t’ju kërkohet një password, pastaj shtypim Enter pasi na kërkohet të krijojmë çelësin. Çelësi publik ruhet në file-in ~/.ssh/id_dsa.pub, kurse ~/.ssh/id_dsa është çelësi privat. Tani kopjomë file-in id_dsa.pub ne hostin tjetër dhe e ruajmë ne ~/.ssh/authorized_keys duke shkruar:
ssh-copy-id username@remotehost
Së fundmi kontrollojmë nëse vetëm useri i autentikuar ka të drejta shkrimi dhe leximi mbi file-in authorized_keys, nëse të drejtat mbi këtë file nuk janë të duhurat, atëherë i ndryshojme duke shkruar:
chmod 644 .ssh/authorized_keys
Kështu do te kemi të mundur të hyjmë në distancë tek hosti ynë pa na kërkuar ndonjë password.
Web Server
Web server është një software përgjiegjës për të pranuar kërkesa HTTP nga klientët, të cilët janë të njohur si Web browsers, dhe u shëbejnë atyre përgjigje HTTP me një përmbajtje te caktuar data(të dhëna), të cilat zakonisht janë faqe Web etj.
HTTPD – Apache2 Web Server
Apache është Web Serveri më i përdorur në sistemet Linux . Protokolli që përdoret më shpesh për transferimin e të dhënave në Web është Hyper Text Transfer Protocol (HTTP). Protokollet si Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS), dhe File Transfer Protocol (FTP), një protokoll për ngarkimin dhe shkarkimin e fileve janë gjithashtu të suportuar nga Apache.
Apache Web Server përdoret gjithashtu dukë u kombinuar me databazën MySQL, HyperText Preprocessor (PHP) që është një gjuhë skriptimi, si dhe gjuhë të tjera si Python dhe Perl.
Për të instauar Apache në Ubuntu, në terminal shkruajmë:
sudo apt-get install apache2
Konfigurimi
Apache2 është i konfiguruar duke i vendosur parametrat e tij nëpër file text, të cilat janë të ndara në disa direktori të ndryshme:
Disa nga file-t kruesore të konfigurimit janë:
• apache2.conf: është file i konfigurimit global të Apache2.
• conf.d: përmban file-t e konfigurimit të cilat aplikohen globalisht tek Apache2.
• httpd.conf: historikisht është file kryesor i konfigurimit menjëherë pas httpd daemon. File mund të përdoret për të konfiguruar opsione specifike të userit të cilat mund të ndikojnë globalish tek Apache.
• mods-available: kjo direktori parmban file-t e konfigurimit të moduleve qe ngarkohen.
• mods-enabled: mban linke simbolike të fileve që ndodhen në /etc/apache2/mods-available. Kur një moduli të një file i krijohet një link simbolik këtu, ai modul ngarkohet herën tjetër që Apache ristartohet.
• ports.conf: shërben për të mbajtur numrat e portave TCP në të cilat Apache pret kërkesat.
• sites-available: kjo direktori mban filet e konfigurimit të hosteve virtual (Virtual Hosts). Virtual Hosts i lejojnë Apache-it të konfigurohet për site me konfigurime të ndryshme.
• sites-enabled: njësoj si mods-enabled, sites-enabled mban linket simbolike të direktorisë /etc/apache2/sites-available. Kur një file konfigurimi në sites-available ka një link simbolik në këtë direktori, ai kofigurim do të jetë aktiv pasi Apache të ristartohet.
File të tjera konfigurimi mund të shtohen duke përdorur direktivën Include, gjithashtu mund të përdoren wildcards për të përfshirë disa file konfigurimi njëkohësisht.
Konfigurimi minimal
Mbasi ka mbaruar installimi bëjmë konfigurimin e apache web serverit si më poshtë:
a. Hapim file-in httpd.conf që ndodhet e lokalizuar në direktorinë /etc/apache2 në një editor teksti të thjeshtë:
$vim /etc/apache2/apache2.conf
b. Në këtë file do të ndryshojmë disa rrjetshta në mënyrë që HTTP deamon të punojë. Për të arritur këtë, zëvendësojmë you@example.com me email-in e personit i cili do të merret me mirëmbatjen e serverit. Rreshti duhet të duket si më poshtë:
ServerAdmin edvin.hysenllari@gmail.com
Më pas modifikojmë rrjeshtin duke fshirë shenjën e komentit, shenja #, duke vendosur emrin ose adresën e makinës. Rrjeshti duhet të ketë pamjen e mëposhtme:
ServerName localhost: 80
Për të përfshirë dhe modulin SSL, ç’komentojmë rreshtin përkatës, i cili duhet të duket si mëposhtë:
Include /etc/apache2/extra/httpd-ssl.conf
c. Ruajmë file-in httpd.conf dhe dalim nga editori i teksit duke shtyp tastën CTRL, pastaj :+wq, dhe pastaj hapim filen httpd-ssl.conf:
$vim /etc/apache2/extra/httpd-ssl.conf
d. Shkojmë në rreshtin ku ndodhet ServerName dhe ServerAdmin dhe zëvendësojmë host.example.com me emrin e hostit që është
server1.example.com, dhe adresën e email-it you@example.com me edvin.hsyenllari@gmail.com. Këto dy rreshta,mbasi të bëjmë
zëvendësimin duhet të duken si më poshtë:
ServerAdmin edvin.hsyenllari@gmail.com ServerName localhost :80
e. Ruajmë ndryshimet që kemi bërë në file dhe japim exit.
Tani kemi mbëritur në fazën e testimit të Apache HTTP Server. Apache përfshin një program të quajtur apachectl, i cili është në gjendje të testojë nëse file i konfigurimit ka gabime sintaksore apo jo. Ekzekutojmë këtë program për të kontrolluar për gabime sintaksore:
$apachectl configtest Syntax OK
Dalja e programit Syntax OK tregon që në filën e konfigurimit nuk kemi gabime sintaksore. Gjithashtu ne do konfigurojmë sistemin që Apache të startojë automatikisht që në bootim. Për të bërë këtë gjë, shtojmë disa rrjeshta në filen rc.conf të localizuar në /etc. Hapim filen rc.conf:
$vim /etc/rc.conf
Shtojmë rrjeshtat në këtë file:
apache22_enable=”YES” apache22_http_accept_enable=”YES”
ose duke përdorur komandën:
$echo apache22_enable=”YES” >> /etc/rc.conf
Tani startojmë Apache2 me komandën e mëposhtme:
$/usr/local/etc/rc.d/apache22 start
ose me komandën
$apachectl start
Mbasi startohet apache, pa errore, do bëjmë provën nëse funksionon me komandën:
$telnet localhost 80 Trying 127.0.0.1. . . Connected to server1.example.com. Escape character is '^]'. GET /index.html http/1.0 HTTP/1.1 200 OK Server: Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g DAV/2 ….......
Gjithashtu për të parë nëse është bërë mirë konfigurimi i SSL, bëjmë provë lidhjen me HTTP nëpërmjet SSL:
$openssl s_client -connect localhost:443 GET /index.html http/1.0
Në rast suksesi dalja do jetë e njësoj si në rastin e komandës telnet. Testimi i apache http serveriti mund të bëhet dhe në browser. Nëse browseri nxjerr një mesazh “It Works” atëherë apache është installuar dhe konfiguruar me sukes, në rast se nuk e nxjerr këtë mesazh atëhere daemoni httpd nuk është inicializuar, për arsye të ndryshme. Zakonisht aryseja me e shpeshtë një gabim sintaksor në filen e konfigurimit httpd.conf.
PHP5
PHP është një gjuhë skriptimi e cila përdoret në zhvillimin e aplikacioneve Web. Do të shpjegojmë shkurtimisht instalimin dhe konfigurimin e PHP5, e cila kërkon të instaluar Apache2 dhe MySQL server.
Instalimi
Për të instaluar PHP5 në Ubuntu Server, në terminal shkruajmë komandën e mëposhtme:
sudo apt-get install php5 libapache2-mod-php5
Mund të ekzekutojmë skriptet e php nga terminali, por për këtë duhet instaluar moduli përkatës:
sudo apt-get install php5-cli
Për të ekzekutuar skriptet e php pa instaluar PHP5, duhet të installojmë patekat e php5-cgi me komandën:
sudo apt-get install php5-cgi
Për të pëdorur MySQL më nëpërmjet PHP5 duhet të instalojmë modulin përkatës php5-mysql me ndihmën e apt-get.
Në mënyrë të ngjashme veprojme edhe për PostgreSQL, moduli përkatës është php5-pgsql.
Konfigurimi
Pasi kemi instaluar PHP5 mund të ekzekutojmë skriptet e PHP nga browser-i, ose nga terminali nëse kemi të instaluar php5-cli.
Automatikisht Apache2 Web server është i konfiguruar të ekzekutoje skripte PHP. Me fjalë të tjera moduli i PHP është në listën e moduleve të cilat ngarkon Apache. Për të verifikuar këtë kontrollojmë nësë file-at
/etc/apache2/mods-enabled/php5.conf dhe /etc/apache2/mods-enabled/php5.load ekzistojnë.
Nëse nuk ekzistojnë, përdorim komandën a2enmod php5 për të lejuar Apache të ngarkojë modulet e PHP. Pasi të kemi instaluar modulet e PHP5 për Apache, duhet të ristartojmë Apache 2 Web server. Pët të restartuar Apache në terminal shkruajmë komandën:
sudo /etc/init.d/apache2 restart
Testimi
Për të verifikuar nëse intalimi ynë ishte i suksesshëm , ekzekutojmë skriptin e phpinfo:
<?php phpinfo(); ?>
Mund të ruajmë kodin e mësipërm në një file phpinfo.php nën direktorinë e DocumentRoot të Apache2 Web server. Më pas shkruajmë në browser http://hostname/phpinfo.php, e cila do të na shfaqë parametrat e konfigurimit të PHP5.
Database Server MySQL
Ubuntu i mundëson të dy databazat më të përdorshme të cilat janë:
• MySQL
• PostgreSQL
Ato janë të mundësuar nga vetë distributorët e paketave të Ubuntu.
MySQL
MySQL është shumë e shpejtë, suporton multi-threadet, multi-user dhe një SQL database server shumë robust. Përdoret edhe në sisteme kritike. Për të instaluar MySQL ne terminal ekzekutojmë komandën e mëposhtme.
sudo apt-get install mysql-server
Gjatë procesit të intalimit do të na kërkohet të vendosim paswordin për administratorin e MySQL, root. Për të kontrolluar nëse MySQL server është i startuar shkruajmë komandën:
sudo netstat -tap | grep mysql
Nëse shkruajmë komandën e mesipërme, do të shohim një rezultat të tillë:
tcp 0 0 localhost:mysql *:* LISTEN 716/mysqld
Nëse server nuk është startuar, shkruajmë komandën e mëposhtëme për të startuar:
sudo /etc/init.d/mysql restart
Konfigurimi
Për të konfiguruar MySQL editojmë filen /etc/mysql/my.cnf dhe e konfigurojmë për pathet e file-ve log si portën etj., psh për të konfiguruar MySQL që të presë kërkesa nga hostet në rrjet ndryshojmë direktivën e bind_address në adresën IP të serverit:
bind-address = 192.168.0.2
Zëvendësojmë 192.168.0.2 më adresën përkatëse të serverit. Pasi të kemi bërë ndryshimin përkatës në file-in /etc/mysql/my.cnf daemon-i i mysql duhet të restartohet:
sudo /etc/init.d/mysql restart
Nëse duam të ndryshojmë paswordin e MySQL root, shkruajmë komandën e mëposhtme:
sudo dpkg-reconfigure mysql-server-5.0
Msql daemon do të ndalet, dhe do të na kërkohet te fusim një password të ri.
Backup
Ka disa mënyra për të bërë backup-in e të dhënavë në Ubuntu dhë në sistemet Linux në përgjithësi. Ajo që është më e rëndësishme në backup-in e të dhënave është implementimi i një plani të mirë backup-i i cili duhet të përfshijë specifikime të tilla si: cfare të dhënash do të ruhen, ku do të ruhen, koha, si dhe kthimi nga i të dhënave nga backup-i.
Më poshtë do të diskutojmë se si mund ti realizojmë këto hapa.
Skriptet e Shell
Një nga mënyrat më të thjeshta për të bërë backup file-t e sistemit janë skriptet në shell. P.sh., një skript mund të përdoret për të konfiguruar se cilat direktori apo file do t’u bëhet backup, dhe më pas përdorimi i direktorive si argument për programin “tar” me të cilin mund të arkivojmë të dhënat. Arkivi mund të kopjohet dhe të ruhet në një vendndodhjë tjetër. Arkivi mund te kopjohet gjithashtu edhe në një NFS(Network File System) të montuar në sistemin tonë.
Programi “tar”, krijon një file arkiv i cili mund të përmbajë një ose shumë filë apo direktori. Tar mundet gjithashtu edhe të kompresojë këto të dhëna, duke reduktuar kështu kapacitetin real që do të kishte arkivi.
Një Shell skript i thjeshtë
Shell skriptet e mëposhtëm përdorin tar për të krijuar një arkiv në një file sistem NFS të montuar remote.
Emrat e arkivave janë përcaktuar duke përdorur utilitetete e komandave.
#!/bin/sh #################################### # # Backup në një NFS mount. # #################################### # File-t që do të bëjmë back-up. backup_files="/home /var/spool/mail /etc /root /boot /opt" # Destinacioni ku ruhen file-at. dest="/mnt/backup" # Krijjon emrin e arkivit bazuar në datë dhe në emrin e hostit. day=$(date +%A) hostname=$(hostname -s) archive_file="$hostname-$day.tgz" # Printon një mesazh statusi të arkivit. echo "Duke bere backup filet $backup_files ne $dest/$archive_file" date echo # Përdor komandën “tar” për të bërë back-up filet. tar -czf $dest/$archive_file $backup_files # Printojmë një mesazh statusi, pas backup-it echo echo "Backup-i mbaroi" date # Listojmë file-at në $dest për të parë madhësinë e tyre. ls -lh $dest
Sqarime:
• $backup_files: është një variabël i cili përmban listën e të gjithë fileve që do të bëhen backup, në rasin konkret është një direktori e cila përmban direktori dhe file të tjera. Ky variabël duhet të kostumizohet sipas nevojave të administratorit.
• $day: një variabël që mban ditën e javës ( E Hene, E Marte , … ), në anglisht. Ky variabël përdoret që për cdo arkiv që krijohet, emrit të arkivit i bashkangjitet edhe emri i ditës në të cilën është krijuar arkivi. Kjo shërben për të marrë një historik të backup-eve gjatë një jave. Për të përdorur datën ka mënyra të ndryshme.
• $hostname: variabël që mban emrin e sistemit i cili gjithashtu i bashkangjitet emrit të arkivit. Kjo na mundëson që në një direktori të vendosim backup-et e sistemeve të ndryshëm.
• $archive_file: variabël që mban emrin e plotë të arkivit.
• $dest: destinacioni ku do të ruhet arkivi pasi është krijuar. Në këtë cdo rast nëse backup-i do të ruhet në një direktori remote, fillimisht direktoria duhet të montohet në sistemin përkatës në të cilin do të bëhet backup-i.
• mesazhet e statusit: mesazhet e satusit janë opsionale dhe printohen në terminal nëpërmjet komnadës echo.
• tar czf $dest/$archive_file $backup_files: komanda tar përdoret për të krijuar arkivin e fileve. Opsionet:
• c: tregon që do të krijohet një arkiv.
• z: filtron arkivin duke perdorur një program “gzip” i cili e kompreson arkivin.
• f: tregon që arkivi do të krijohet në një file i cili do të specifikohet në parametrat e tar. Përveç kësaj tragon që outpu-i i arkivit do të
dërgohet në STDOUT që është terminali (pra shohim outputin në terminal).
• ls -lh $dest: janë parametra opsionale: -l tregon listim dhe -h tregon që output do te jete i lexueshëm nga njerëzit pra ka një enkodim të
karaktereve standarte. Kjo është shumë e përdorshme nëse duam të dimë madhësinë e nje file-i.
Ky ishte vetëm një skript i thjeshtë, ka edhe shumë opsione të tjera që mund të përdoren për backup.
Ekzekutimi i një Skripti nga Terminali
Mënyra më e thjeshtë për të ekzekutuar skriptin e mësipërm është të bëjmë copy/paste përmbajtjen e skriptit në brendësi të një file p.sh. backup.sh. Pastaj nga terminali ekzekutojmë komandën:
sudo bash backup.sh
Përpara se të ekzekutohët skripti duhet ti japim të drejta të plota userit që do ta ekzekutojë si dhe ta bëjmë atë të ekzekutueshëm p.sh. komanda:
sudo chmod 755 backup.sh
e bën të ekzekutueshëm dhe të lexueshëm për të gjithe userat, dhe vetëm superuseri ka të drejtë të modifikojë këtë file.
Kjo është një mënyrë e mirë për të testuar nëse skripti funksionon siç duhet.
Cron
Programi cron mund të përdoret për të automatizuar ekzekutimin e skriptit.Procesi i cron-it mund të përdoret për të ekzekutuar skripte ose komanda , në një kohë të caktuar në mënyrë periodike. Procesi i cron është i configuruar nëpërmjet një ose disa entry në file-in e crontab-it, të ndara në disa fusha:
# m h dom mon day command
• m: minuta në të cilën do të ekzekutohet skripti, midis 0 dhe 59.
• h: ora në të cilën do të ekzekutohet skripti, midis 0 dhe 23.
• dom: dita e muajit në të cilën do të ekzekutohet skripti.
• mon: muaji në të cilën do të ekzekutohet skripti, midis 0 dhe 12.
• day: dita e javës në të cilën do të ekzekutohet skripti, midis 0 dhe 7. E diela mund të specifikohet duke përdorur 0 ose 7, të dyja vlerat janë të vlefshme.
• command: komanda ose skripti që do të ekzekutohet. Për të shtuar ose modifikuar një entry në crontab mund te përdorim komandën
crontab –e. Përmbajtja e file-it crontab mund të shihet duke përdorur komandën crontab –l. Për të ekzekutuar skriptin backup.sh në cron, fillimisht shkruajmë
komandën:
sudo crontab –e
dhe më pas editojmë file-in e cronit si më poshtë:
# m h dom mon day command 0 0 * * * bash /usr/local/bin/backup.sh
Skripti backup.sh tani do të ekzekutohet cdo ditë në 12:00 am. Skripti duhet të kopjohet ne direktorinë: /usr/local/bin/ në mënyrë që të interpretohet nga shelli (bash). Ndryshe skriptin mund ta vendosim kudo ne sistem mjaft që të ndryshojmë pathin përsëri në crontab.
Rikthimi i të dhënave nga arkivi
Pasi është krijuar arkivi, është shumë e rëndësishme që ai testohet. Arkivi mund të testohet duke listuar të gjithë file-at që ai përmban, por përveç kësaj, mënyra më e mirë është që të rikthejmë të gjithë përmbajtjen e arkivit.
• Për të parë listën e fileve që përmban një arkiv në terminal shkruajmë komandën:
tar -tzvf /mnt/backup/host-Monday.tgz
• Për të rikthyer përmbajtjen e arkivin në një direktori të caktuar shkruajmë:
tar -xzvf /mnt/backup/host-Monday.tgz -C /tmp etc/hosts
Opsioni -C I mësipërm shërben për të specifikuar direktorinë në të cilën do të ekstraktohet file-i. Shembulli i mëposhtëm do të rikthejë jashtë arkivit file-in
/etc/hosts në /tmp/etc/hosts. Programi tar rikrijon strukturën e të gjithë direktorive që përmban.
• Për rikthyer të gjithë file-t nga arkivi shkruajmë komandën:
cd / sudo tar -xzvf /mnt/backup/host-Monday.tgz
Kjo komandë do të mbishkruajë të gjithë file-t në sistem.
• Shell skripti i mësipërm përdor komandën tar për të krijuar një arkiv, por ka shumë komada të tjera të cilat mund ti përdorim. Pët shembull:
• cpiO: përdoret për të kopjuar filet nga dhe për në një arkiv.
• dd: pjesë e paketës bazë të sistemit. Një utilitet i nivelit të ulët i cili mund të kopjojë filet nga një format të caktuar në një tjetër format.
• rsnapshot: përdoret për të kopjuar një file sistem të tërë.
Rrotullimi i arkivave.
Skripti i mëparshëm lejon krijimin e vetëm shtatë arkivave të ndryshëm. Për një server në të cilin të dhënat nuk ndryshojnë edhe aq shumë me kalimin e kohës, skripti i mësipërm është më se i mjaftueshëm, por për një server me një sasi të mëdha të dhënash, është e nevojshme nje skemë më optimal të rrotullimit të arkivave.
Rrotullimi i arkivave NFS.
Në këtë seksion skripti do të modifikohet duke implementuar skemën muaj-jave-ditë.
• Fillimisht do të kryhet një backup ditor nga e Diela deri të Premten.
• Të Shtunën do të kryhet një backup javor duke na dhënë keshtu katër backup-e në muaj.
• Backup-i mujor do të kryhet në ditën e parë të çdo mujaji, me nje hark rrotullimi prej dy muajsh, duke u bazuar në faktin se një muaj është tek apo çift.
Skripti është si më poshtë:
#!/bin/bash #################################### # # Skript backup-i i një file NFS me skemën e rrotullimit: # muaj-javë- ditë. # #################################### # Ajo që do të bëjmë backup. backup_files="/home /var/spool/mail /etc /root /boot /opt" # Destinacioni ku do të ruhët backup-i. dest="/mnt/backup" # Vendosja e variablave për emrat e arkivave. day=$(date +%A) hostname=$(hostname -s) # Shoh se cila javë e muajit është 1-4. day_num=$(date +%d) if (( $day_num <= 7 )); then week_file="$hostname-ëeek1.tgz" elif (( $day_num > 7 && $day_num <= 14 )); then week_file="$hostname-week2.tgz" elif (( $day_num > 14 && $day_num <= 21 )); then week_file="$hostname-week3.tgz" elif (( $day_num > 21 && $day_num < 32 )); then week_file="$hostname-week4.tgz" fi # Shoh nëse mujaji është tek apo çift. month_num=$(date +%m) month=$(expr $month_num % 2) if [ $month -eq 0 ]; then month_file="$hostname-month2.tgz" else month_file="$hostname-month1.tgz" fi # Krijoj emrin e arkivit. if [ $day_num == 1 ]; then archive_file=$month_file elif [ $day != "Saturday" ]; then archive_file="$hostname-$day.tgz" else archive_file=$week_file fi # Printoj një mesazh statusi. echo "Duke bërë backup filet $backup_files në $dest/$archive_file" date echo # Bëj bacup file-at duke përdorur tar. tar czf $dest/$archive_file $backup_files # Printoj një mesazh statusi për mbarimin e arkivit. echo echo "Backup-i mbaroi" date # Listoj file-t në $dest për të parë madhësitë e fileve. ls -lh $dest /
Skripti mund të ekzekutohet me të njëjtat mënyra si skripti i mëparshëm.
Një praktikë e mirë është që filet e backupit ti cojmë diku jashtë serverit në të cilin punojmë. Në shell skriptin e shembullit, media në të cilëmn i ruajmë backupet është një NFS share nga një server i rrjetit lokal.
Në varësi të lidjeve në rrjet, nje opsion i mirë do të ishte kopjimi i arkivave në një server me një vendndodhje tjetër në rrjetin WAN. Një mundësi tjetër do të ishtë kopjimi i arkivit në një hard disk te jashtëm, dhe meqë kostoja e hard disqeve te jashtëm është në rënie nuk do të ishtë gabim nëse do të përdornim dy të tillë, një për secilin nivel arkivi. Kjo do të na mundesonte të kishim një hard disk te jashtëm të lidhur me serverin e backup-it dhe një hard disk diku në një vendndodhje tjetër.
Tape-t
Një tape drivei lidhur më serverin mund të përdoret gjithashtu si një NFS share. Duke përdorur një tape drive, thjeshtohet më shumë rrotullimi i arkivave, dhe mund të zhvendosim të dhënat më lehtë. Kur përdorim një tape drive, emrat e vendndodhjeve të destinacionit në skript, nuk janë të nevojshëm pasi të dhënat mund të dërgohen direct në tape. Për këtë janë të nevojshme disa komanda shtesë për të manipuluar tape-in.Kjo mund të arrihet duke përdorur komandën “mt”, një utilitet për manipulimin e tapeve magnetikë, që është edhe pjesë e paketës cpio, paketë baze e sistemit operativ. Më poshtë jepet skripti i modifikuar i cili përdor si destinacion një drive Tape.
#!/bin/bash #################################### # # Backup ne nje Tape drive. # #################################### # Cfare do te bejme backup. backup_files="/home /var/spool/mail /etc /root /boot /opt" # Destinacioni ku do te behen backup. dest="/dev/st0" # Printon nje mesazh statusi. echo "Duke bere backup filet $backup_files ne $dest" date echo # Sigurohem nese tape-i eshte i lidhur me serverin mt -f $dest rewind # Perdor komanden tar per te krijuar arkivin perkates. tar czf $dest $backup_files # Cmontoj tape-in nga serveri. mt -f $dest rewoffl # Printoj nje mesazh statusi. echo echo "Backup-i mbaroi” date
Emri i prekonfiguruar për një SCSI tape është /dev/st0. Përdorim këtë path për sistemin tonë.
Rikthimi i fileve nga një backup është e njëjtë mërikthimin e tyre nga një file.Thjesht monojmë tape-in në sistemin tonë dhe përdorim pathin e device-it ne vend të pathit të file-it, p.sh. për të kthyer filet e /etc/hosts në /tmp/etc/hosts,
shkruajmë:
mt -f /dev/st0 rewind tar -xzf /dev/st0 -C /tmp etc/hosts
Konkluzione
Suporti.
Suporti që mundëson komuniteti, njerëz individualë dhe kompani të ndryshme kane bërë që Ubuntu të jetë distribucioni më i mirë i mundshëm i Linux.
Menaxhueshmeria.
Ubuntu server është lehtesisht i menaxhueshem, duke filluar nga instalimi i sistemit, menaxhimi i librarive e deri tek instalimi ne rrjet i cili mund të realizohet vetëm në pak minuta.
Update dhe upgrade.
Sistemi ofron gjithashtu lehtësi në update-im dhe kalimin në një version më të fundit (upgrade), pa pasur nevoje për ristartim të sistemit si dhe duke ruajtur kështu konfigurimet aktuale pa ndërprerë asnjë proces në ekzekutim.
Siguria.
Si cdo distribucion tjetër i Linux, Ubuntu server ofron një siguri të lartë ndaj sulmeve të hakerave dhe viruseve. Ky shërbim mundësohet nga firewall-i i tij si dhe update-t më të fundit.