Manpremo

From ICO wiki
Jump to navigationJump to search

REFERAAT ON VEEL POOLELI JA TÄIENEB JOOKSVALT!!!!

Manpremo on kaughaldus süsteem, mis on loodud selleks, et süsteemi administraatorid saaksid keskselt hallata paljusid arvuteid kiirelt ja mugavalt. Seda rakendust arendab Eesti firma Povi Software OÜ. Manpremo on vabavaraline ja avatud lähtekoodiga. Tarkvara loomisel on põhiliselt kasutatud Pythonit. Serveri poole loomiseks on kasutatud lahtise lähtekoodiga võrguraamistikku nimega Django. Kliendi pool on kirjutatud Pythonis. Manpremo projekt on hetkel veel varajases arengu staadiumis, kuid on kasutatav Linux põhiste süsteemide administreerimisel.

Praegune Manpremo versioon on 0.2.

Põhilised omadused

  • Veebi põhine kasutajaliides laseb arvuteid hallata olenemata asukohast ilma spetsiaalset tarkvara paigaldamata. Liides töötab korralikult kõikide peamiste veebilehitsejatega.
  • Jõuline kasutajaõiguste kontroll annab täieliku kontrolli selle üle, mida kasutajad teha saavad. Näiteks võib neil keelata muude käskude jooksutamise peale nende, mis süsteemi administraator on lubanud, anda ligipääs ainult teatud arvutitele ja palju muud.
  • Mitme operatsiooni süsteemi tugi laseb hallata Linuxi, Windowsi ja Mac OS X põhiseid arvutied ühe süsteemiga. Käskluseid võib teisendada operatsiooni süsteemide vahel, lastes administraatoril kasutada samu käsklusi kõikides erinevates süsteemides.
  • Lihtne kasutada nii administraatorite poolel kui ka kasutajate. Administraator võib telegeerida ülesandeid kasutajatele ilma, et nemad peaks õppima keerulisi käsklusi kirjutama.
  • Turvaline platvorm tagab selle, et kliendi ja serveri vahelist suhtlust ei saa pealt kuulata ega muuta.

Vajalikud mõisted, teadmised ja tarkvara

Selleks, et järgnevat oleks võimalik järgida seletan lahti mõned mõisted ja panen kirja vajalikud teadmised ja tarkvara.

Mõisted (lähtudes käesoleva referaadi teemast)

  • Server on arvuti, millele on paigaldatud Manpremo serveri poolne tarkvara.
  • Klient on arvuti, millele on paigaldatud Manpremi kliendi poolne tarkvara.
  • Development server on Manpremo serveri poolne tarkvara, mis on eelkõige mõeldud testimiseks ja arendamiseks.
  • Production server on Manpremo serveri poolne tarkvara, mis on mõeldud töös oleva arvutivõrgu haldamiseks. See server kasutab serveri ja klientide vahelise ühenduse turvamiseks SSL krüpteerimist.

Teadmised/Tarkvara

Mina kasutasin serveri poole paigaldamiseks Ubuntu 10.10 Maverick versiooni. Manpremo loojad ise on testinud paigaldamist Debian Squeeze peal. Nende sõnul peaks paigaldamine õnnestuma Ubuntu ja sarnaste operatsioonisüsteemide peal.

Selleks, et paigaldada Manpremo on vaja täita järgnevad nõuded:

  • Django - Serveri veebiliides
  • Gettext - Serveri veebiliides
  • stunnel (valikuline) - Turvalisus
  • Mercurial - Manpremo koodi saamiseks
  • Python - Manpremo on kirjutatud Pythonis

Kõide vajaminevate pakettide paigaldamiseks võib kasutada järgnevat käsurea käsklust:

sudo apt-get install python-django gettext stunnel4 mercurial python-tz

Manpremo serverite paigaldamine

Järgnevalt käin läbi erinevate Manpremo osade paigladamise. Mina kasutasin serverite paigaldamisel operatsioonisüsteemi Ubuntu 10.10. Kõik juhised ja käsud lähtuvad antud operatsioonisüsteemist. Vigade tekkimise korral kontrollida, et kõik ülesse loetud paketid on korralikult arvutisse paigaldatud. Enne kui paigaldama hakata, tuleks läbi mõelda kumba versiooni soovitakse kasutada. Development serveri peale ei õnnestu ilma suuremate jamadeta paigaldada production serverit seega tuleks enne ära otsustada.

Manpremo Development Server

Töö alustamiseks avada Terminal. (Applications > Accessories > Terminal).

Kõige viimase Manpremo versiooni kloonimine:

hg clone http://manpremo.org/hg/manpremo/

Manpremo kataloogi sisenemine ja viimase versiooni valimine:

cd manpremo/
hg up default

Andmebaasi intialiseerimine:

cd pyserver/
./manage.py syncdb
./manage.py createcachetable cache_manpremo_ccs

Serveri käivitamine:

./manage.py runserver

Kui server käivitus (konsooli ekraanile ilmub kinnitus teade), on serveri veebillides kätte saadav aadressilt 127.0.0.1:8000.

Production serveri paigaldamine

Töö alustamiseks avada Terminal. (Applications > Accessories > Terminal).

Kõige viimase Manpremo versiooni kloonimine ja selle paigutamine /srv/manpremo kataloogi:

hg clone http://manpremo.org/hg/manpremo/
cd manpremo/
hg up stable-0.2
cd
sudo mv manpremo /srv/

Manpremo andmebaasi jaoks vajalike pakettide paigaldamine:

sudo apt-get install postgresql python-psycopg2

(Vaikimisi kasutatakse PostgreSQL andmebaasi. Django dokumentatsioon annab ülevaate võimalikest alternatiividest.)

Andmebaasi ja kasutaja loomine:

sudo -u postgres psql
CREATE DATABASE manpremo;
CREATE USER manpremo; //Või sisesta omal valikul mõni kasutajatunnus.
ALTER USER manpremo WITH ENCRYPTED PASSWORD 'notsecure'; //Või sisesta omal valikul mõni parool.
GRANT ALL PRIVILEGES ON DATABASE manpremo TO manpremo;
\q

Andmebaasi seadistamine:

sudo gedit /srv/manpremo/pyserver/settings.py

(Mina kasutasin gedit tööriista. Võib asendada ka muude alternatiividega nagu näiteks nano.)

Avanenud aknas otsida järgnevad väljad ja muuta ringi vasvalt juhisele:

DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'manpremo'
DATABASE_USER = 'manpremo' //Kui valisite enne mingi muu kasutajatunnuse, sisestada see siia.
DATABASE_PASSWORD = 'notsecure' //Kui valisite enne mingi muu parooli, sisestada see siia.
DATABASE_HOST = 'localhost' # Use TCP socket, not local UNIX domain socket
DATABASE_PORT = 
CACHE_BACKEND = 'db://cache_manpremo_ccs'

Andmebaasi initiliseerimine:

cd /srv/manpremo/pyserver
./manage.py syncdb //Käsu jooksutamisel lastakse luua "super" kasutaja, kui seda veel ei ole.
./manage.py createcachetable cache_manpremo_ccs

Süsteemi kasutaja loomine andmebaasi jaoks:

sudo useradd manpremo
sudo mkdir -p /srv/manpremo/pyserver/data
sudo chown manpremo:manpremo -R /srv/manpremo/pyserver/data

Apache veebiserveri jaoks vajalike pakettide paigaldamine:

sudo apt-get install apache2-mpm-prefork libapache2-mod-python libapache2-mod-wsgi

Serveri jaoks võtmete loomine:

sudo mkdir /etc/apache2/ssl
sudo openssl req -new -x509 -nodes -out /etc/apache2/ssl/manpremo.crt -keyout /etc/apache2/ssl/manpremo.key //Käsu jooksutamisel küsitakse sertifikaadi loomiseks erinevat informatsiooni.
                                                                                                            //Väljale CN(Common Name) sisestada serveri IP aadress või URL.
sudo chmod 600 -R /etc/apache2/ssl
sudo chown root:root -R /etc/apache2/ssl

Apache seadistus faili loomine:

sudo touch /etc/apache2/sites-enabled/manpremo
sudo gedit /etc/apache2/sites-enabled/manpremo

Avanenud aknasse kopeerida järgnev tekst ja see salvestada:

WSGIRestrictStdout Off
<VirtualHost *:80>
        # Redirect from HTTP to HTTPS:
        RewriteEngine On
        RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        WSGIScriptAlias / /srv/manpremo/pyserver/manpremo.wsgi
        WSGIDaemonProcess manpremo user=manpremo group=manpremo
        WSGIProcessGroup manpremo
        Alias /media "/srv/manpremo/pyserver/media
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/manpremo.crt
        SSLCertificateKeyFile /etc/apache2/ssl/manpremo.key
</VirtualHost>

SSL aktiveerimine ja moodulite ülekirjutamine:

sudo a2enmod ssl rewrite

Apache veebiserveri restart:

sudo apache2ctl restart

Kui kõik sammud said õigesti ja edukalt läbitud, peaks saama aadressilt https://localhost/ siseneda Manpremo veebiliidesesse käsu ./manage.py syncdb ajal sisestatud kasutajatunnustega. Kui sellel aadressil pärast sertifikaadi laadimist kuvatakse Internal Server Error 500, sisestada terminali järgmine käsk ja uurida viimaseid ridu vea põhjuse leidmiseks:

gedit /var/log/apache2/error.log

Autor

Henrik Leinola A22