Talk:Veebiserveri labor: Difference between revisions

From ICO wiki
Jump to navigationJump to search
(Removing all content from page)
 
Line 1: Line 1:
=Legend=
Firmale on vaja luua kaks veebilehte:


*www.firma.ee
*sales.firma.ee
Mõlemal lehel saab kasutada php'd
Lisaks tuleb konfigureerida mysql ja phpMyAdmin andmebaaside seadistamiseks
=Üldinformatsioon=
Allolev juhend sobib veebiserveri paigaldamiseks Ubuntu 9.04 operatsioonisüsteemis, kuid suure tõenäosusega ka uuemate/vanemate versioonidega.
Selle juhendi kasutajalt eeldatakse linuxi käsurea mõningast tundmist ning oskust kasutada käsurealt tekstieditori n. '''vi''' või '''nano'''.
Vaikimisi eeldame, et veebileht peab olema kättesaadav KA turvalist ühendust kasutades, mistõttu seadistame ka SSL-i pordile 443 ja 444.
=Töö käik=
Kuna enamus järgnevaist toimingutest vajavad root kasutaja privileege, on 2 võimalust:
1. Käivitada iga säherdune käsk root kasutaja õigustes '''sudo''' abil
näiteks:
<pre>
sudo apt-get update
sudo nano /etc/hosts
</pre>
2. Logime ennast root kasutajaks ning käivitame vajalikud toimingud. Kuna '''sudo'''-t sel juhul enam vaja ei lähe, hoiad selle arvelt pisut aega kokku. Samas on aga tunduvalt lihtsam midagi ära rikkuda, sest '''KÕIK''' käsud käivitatakse root kasutaja õigustes!
<pre>
sudo -i
apt-get update
vi /etc/hosts
</pre>
Kuidas keegi jätkab on igaühe enda valida. Järgnevas juhendis on root kasutaja õigustes käivitatavatel käskudel ees '''sudo'''. Kui otsustad ennast kohe root kasutajaks keerata, siis edaspidistes toimingutes võid (aga ei pea) sudo eest ära jätta. Kuna enamus konfiguratsioonifaile on root kasutaja omad, pead nende muutmiseks omama ka root kasutaja privileege - tekstieditor tuleb käivitada toot kasutaja õigustes nagu ülal näidatud.
=Eeldused=
Et üleüldse saaks veebisirvijaga serverist seest minna aadressidele www.firma.ee ja sales.firma.ee on vaja seadistada nimelahendus nii, et eelpool nimetatud aadressidele vastaks serveri enda ip aadress.
* Kuna lokaalne server vastab alati aadressil 127.0.0.1 siis lisa /etc/hosts faili read:
<pre>
127.0.0.1  www.firma.ee
127.0.0.1  sales.firma.ee
</pre>
* Saad seda teha näiteks nii:
<pre>
sudo echo "127.0.0.1  www.firma.ee" >> /etc/hosts
sudo echo "127.0.0.1  sales.firma.ee" >> /etc/hosts
</pre>
Testimiseks pingi www.firma.ee ja sales.firma.ee Kui ping vastab, on nimelahendus õigesti seadistatud.
''Kui sa ühendud mõnest teisest arvutist, siis pead seadistama ka teise arvuti nimelahenduse korrektse serveri IP aadressiga''
=Installeerimine=
* Enne installeerimist tasub uuendada tarkvara nimekirja:
<pre>
sudo apt-get update
</pre>
* Installeerime apt abil links veebissirvija, apache veebiserveri, mysql andmebaasi ning phpMyadmin kasutajaliidese:
<pre>
sudo apt-get install links apache2 mysql-server phpmyadmin
</pre>
* Installeerimise käigus küsitakse:
** MySQL peakasutaja (root) parooli määramist
** Veebiserver, millele phpMyAdmin paigalda - vali apache2
** phpMyadmini administraatori parooli
** kas paigaldada vaikimisi seadistusega andmebaas - vali "yes"
=Seadistamine=
==phpMyadmin==
* Installi ajal lingitakse phpmyadmini seadistustefail apache2 seadistuste kataloogi. Kontrolli, kas link eksisteerib:
<pre>
ls -la /etc/apache2/conf.d/phpmyadmin.conf
</pre>
* Kui linki ei ole, siis on seadistamiseks 2 varianti:
1. Tekita see link ise:
<pre>
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
</pre>
2. Lisa Apache konfiguratsioonifaili '''/etc/apache2/apache2.conf''' rida:
<pre>Include /etc/phpmyadmin/apache.conf</pre>
==Nimepõhiste virtuaalserverite loomine ==
*Loo kataloogid www ja sales /var/www kausta.
<pre>
sudo mkdir -p /var/www/www /var/www/sales
</pre>
*Tee /etc/apache2/sites-available/default konfiguratsiooni failist koopiad nimedega www ja sales:
<pre>
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/sales
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www
</pre>
* Muuda sales ja www faile. Pööra tähelepanu ridadele, mis algavad '''ErrorLog''' ja '''CustomLog'''  - nendega määratakse ära selle virtuaalserveri logifailide asukohad!
** sales:
<pre>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName sales.firma.ee #Lisa see rida siia
        DocumentRoot /var/www/sales #Seda rida tuleb muuta
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/sales>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny               
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/sales.error.log #Seda rida tuleb muuta
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/sales.access.log combined #Seda rida tuleb muuta
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>
</pre>
** www:
<pre>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.firma.ee #Lisa see rida siia
        DocumentRoot /var/www/www #Seda rida tuleb muuta
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/www.error.log #Seda rida tuleb muuta
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/www.access.log combined #Seda rida tuleb muuta
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>
</pre>
* sales ja www virtuaalserverite kasutamiseks tuleb nad kõigepealt lubada:
<pre>
sudo a2ensite sales
sudo a2ensite www
</pre>
* Kui soovid keelata vaikimisi serveri (üldjuhul siis n. http://firma.ee), siis käivita:
<pre>
sudo a2dissite default
</pre>
'''Nüüdseks on mõlemad virtuaalserverid seadistatud töötama pordil 80 (http).'''
==SSL keskkonna loomine==
===Sertifikaadi genereerimine===
* Kõigepealt genereerime serverile võtmepaari:
<pre>
sudo ssh-keygen -t rsa -b 1024
</pre>
* Kui küsitakse, kuhu võtmed salvestada, sisesta /etc/apache2/<võtmenimi> . Parool jäta tühjaks.
<pre>
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /etc/apache2/id_rsa.key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/apache2/id_rsa.key.
Your public key has been saved in /etc/apache2/id_rsa.key.pub.
</pre>
''Antud näite puhul tehti siis 2 võtit - salajane (private) ja avalik (public), mis salvestati vastavalt failidesse /etc/apache2/id_rsa.key ja /etc/apache2/id_rsa.key.pub .''
* Edasi on meil vaja serveri salajase võtme abil genereerida CSR - Certificate Signing Request mõlema virtuaalse serveri jaoks:
** www.firma.ee:
<pre>
sudo openssl req -new -key /etc/apache2/id_rsa.key -out /etc/apache2/www.firma.ee.csr
</pre>
Küsimustele võid vastata nii nagu allolevas näites
<pre>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:EE
State or Province Name (full name) [Some-State]:Harjumaa
Locality Name (eg, city) []:Tallinn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:www.firma.ee
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
</pre>
** sales.firma.ee:
<pre>
sudo openssl req -new -key /etc/apache2/id_rsa.key -out /etc/apache2/sales.firma.ee.csr
</pre>
Küsimustele võid vastata nii nagu allolevas näites
<pre>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:EE
State or Province Name (full name) [Some-State]:Harjumaa
Locality Name (eg, city) []:Tallinn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:sales.firma.ee
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
</pre>
''Nüüd on olemas request-id mõlema sertifikaadi teemiseks. Päriselus tuleks need request-id saata mõnele usaldusväärsele asutusele (CA - Certificate Authority) allkirjastamiseks. CA põhimõtteliselt kinnitab (request-i allkirjastades), et selle sertifikaadi taga peitub see, kes ta väidab ennast olevat - antud juhul siis Firma.''
''Meil kahjuks ei ole sellist luksust, mistõttu me allkirjastame request-i serveri enda salajase võtmega. Sel moel saame nn. SELF-SIGNED sertifikaadi. Kui meie veebilehte külastab klient, siis tema näeb, et tegemist on iseallkirjastatud sertifikaadiga - usaldus veebilehe vastu kaob. Iseallkirjastatud sertifikaadiga erilist usaldusväärsust me ei saavuta, saame lihtsalt turvalise ühenduse, mis on turvaline niikaua, kuni keegi ei saa kätte serveris olevat salajast võtit.''
* Allkirjastame mõlemad request-id kehtivusajaga 1 aasta ja salvestame saadud sertifikaadid vastavate nimedega:
<pre>
sudo openssl x509 -req -days 365 -in /etc/apache2/www.firma.ee.csr -signkey /etc/apache2/id_rsa.key -out /etc/apache2/www.firma.ee.crt
sudo openssl x509 -req -days 365 -in /etc/apache2/sales.firma.ee.csr -signkey /etc/apache2/id_rsa.key -out /etc/apache2/sales.firma.ee.crt
</pre>
* Huvi korral võid vaadata/kontrollida sertifikaatide sisu. Vastavad käsud on toodud all.
<pre>
openssl x509 -in /etc/apache2/www.firma.ee.crt -noout -text
openssl x509 -in /etc/apache2/sales.firma.ee.crt -noout -text
</pre>
===SSL seadistamine===
* Et lubada apache-l SSL mooduli kasutamine käivita järgmine käsk:
<pre>
sudo a2enmod ssl
</pre>
* Seadista veebiserver kuulama SSL mooduli lubamise järel porte 443 ja 444, selleks ava fail '''/etc/apache2/ports.conf''' ning lisa tagide '''<IfModule mod_ssl.c>''' ja '''</IfModule>''' vahele:
<pre>
Listen 444
</pre>
''Listen 443 peaks seal vahel juba olema''.
* Seadistame www ja sales virtuaalserverid kuulama pordil 443 ja 444 ning kasutama SSL-i:
** www: lisa '''/etc/apache2/sites-enabled/www''' faili lõppu, peale viimast '''</VirtualHost>''' rida uus sektsioon:
<pre> 
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName www.firma.ee
        DocumentRoot /var/www/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/www-ssl.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/www-ssl.access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
  SSLEngine on
  SSLCertificateFile /etc/apache2/www.firma.ee.crt
  SSLCertificateKeyFile /etc/apache2/id_rsa.key
  SSLOptions +StdEnvVars
</VirtualHost>
</pre>
** sales: lisa '''/etc/apache2/sites-enabled/sales''' faili lõppu, peale viimast '''</VirtualHost>''' rida uus sektsioon:
<pre> 
<VirtualHost *:444>
        ServerAdmin webmaster@localhost
        ServerName sales.firma.ee
        DocumentRoot /var/www/sales
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/sales>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/sales-ssl.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/sales-ssl.access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
  SSLEngine on
  SSLCertificateFile /etc/apache2/sales.firma.ee.crt
  SSLCertificateKeyFile /etc/apache2/id_rsa.key
  SSLOptions +StdEnvVars
</VirtualHost>
</pre>
''Jälgida, et crt ja key failid oleks vastavates kataloogides. Pöörake tähelepanu ka logifailidele!''
'''Nüüdseks peaks apache olema seadistatud. Käivita veebiserver ning kontrolli kas kõik töötab nii nagu vaja. Käivitamine ja kontroll kirjeldatud järgmistes punktides.'''
=Käivitamine/Seiskamine=
* Veebiserveri käivitamine:
<pre>
sudo service apache2 start
</pre>
või
<pre>
sudo /etc/init.d/apache2 start
</pre>
* Veebiserveri seiskamine:
<pre>
sudo service apache2 stop
</pre>
või
<pre>
sudo /etc/init.d/apache2 stop
</pre>
* Siinkohal oleks mõistlik uurida, kas veebiserver peale serveri (re)starti automaatselt käivitub:
** Üsna lihtne on seda teha '''sysvconfig''' utiliidi abil. Kui sul seda ei ole, siis paigalda see apti abil:
<pre>
sudo apt-get install sysvconfig
</pre>
* Peale '''IGAT''' konfiguratsioonimuudatust peaks muudatused ka veebiserverisse laadima. Peale igat seetõttu, et kui midagi valesti läks, siis on viga lihtsam leida.
** Selleks võib veebiserverile teha restardi:
<pre>
sudo service apache2 restart
</pre>
või
<pre>
sudo /etc/init.d/apache2 restart
</pre>
** Saab ka ilma restardita:
<pre>
sudo service apache2 reload
</pre>
või
<pre>
sudo /etc/init.d/apache2 reload
</pre>
'' '''reload''' eelis on selles, et see toimib kasutajatele märkamatult, kasutajate sessioonid säilivad. Näiteks kui sinu veebilehele on sisseloginud 100 kasutajat, siis '''restart''' puhul peaksid nad kõik uuesti sisse logima, '''reload''' puhul ei pea.''
=Tulemuse kontroll=
Tuleb luua phpinfo.php leht, mille vaatamisel kuvatakse phpinfo funktsiooni väljund:
<pre>
echo "<?php phpinfo(); ?>" > /var/www/phpinfo.php
</pre>
Tuleb luua index.html fail nii /var/www/www/ kui /var/www/sales/ kataloogi:
<pre>
echo "<h1>Firma pealeht</h1>" > /var/www/www/index.html
echo "<h1>Myygiosakond</h1>" > /var/www/sales/index.html
</pre>
*Kontrollimiseks mine veebilehitsejaga järgmistele aadressidele:
<pre>
links http://www.firma.ee/phpinfo.php
links http://www.firma.ee
links http://sales.firma.ee
links http://www.firma.ee/phpmyadmin/
</pre>
Minnes http://www.firma.ee/phpinfo.php peaksid nägema standartset phpinfo lehte.
Minnes links abil lehele www.firma.ee peab kuvatama leht sisuga "firma pealeht". Külastusest peab jääma jälg logifaili
'''/var/log/apache2/www.firma.ee.access.log''' , vigadest peab jääma jälg faili '''/var/log/apache2/www.firma.ee.error.log'''
Minnes links abil lehele sales.firma.ee peab kuvatama leht sisuga "müügiosakond". Külastusest peab jääma jälg logifaili
'''/var/log/apache2/sales.firma.ee.access.log''' , vigadest peab jääma jälg faili '''/var/log/apache2/sales.firma.ee.error.log'''
http://www.firma.ee/phpmyadmin/ lehel peab saama luua andmebaase ja tabeleid
=Varundus ja taastamine=
Varundamiseks kopeeri allolevates kataloogides asuvad failid alternatiivsele andmekandjale.
Failiõiguste säilitamiseks ja andmete tihendamiseks kasuta '''tar''' käsku.
==Andmete asukohad==
Veebide sisu: /var/www
Veebi sales.firma sisu: /var/www/sales
Apache2 konfiguratsioon: /etc/apache2
Veebiserveri logifailid: /var/log/apache2
==Varundamise ja taastamise näited==
Varundame kõik veebid juurkataloogis asuvasse faili veebid.tar.gz
<pre>
sudo tar -cvvf /veebid.tar.gz /var/www/*
</pre>
Taastame kõik veebid juurkataloogis olevast failist veebid.tar.gz endisesse asukohta:
<pre>
sudo tar -xvvf /veebid.tar.gz
</pre>

Latest revision as of 15:20, 9 October 2009