Arkisto lokakuu 2012

Läksy w43: Puppet palvelinautomaatio järjestelmän perusteita

28.10.2012

Harjoitustehtävän aiheena oli tutustua Puppet palvelinautomaatio järjestelmän Learning Pupppet dokumentaation ensimmäisiin lukuihin Resources and the RAL ja Manifests. Käytännön harjoituksena asennettiin Puppet palvelinautomaatio järjestelmä Xubuntu versio 12. 04 käyttöjärjestelmään ja tehtiin lyhyitä Puppet ohjelmia (manifest) edellä mainitun dokumentaation teemoista.

Harjoitusympäristö

Harjoitus suoritettiin 28.10.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta. Käyttöjärjestelmä ladattiin Xubuntu versio 12.04 32-bittinen Linux live-cd:ltä. Tietokoneen kiintolevylle asennettua käyttöjärjestelmää ei käytetty harjoitustehtävän suorittamiseen.

Lenovo R60 kokoonpano:

  • Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
  • Keskusmuisti: 4 Gt DDR2
  • Kiintolevy: 100 Gt SATA150 54000rpm
  • Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen

Puppet palvelinautomaatio järjestelmän asentaminen

Aloitin harjoitustehtävän tekemisen päivittämällä Ubuntun pakettivarastot komennolla:

$sudo apt-get update

Pakettivarastojen päivitys kesti muutamia sekunteja.

Asensin Puppet järjestelmän komennolla:

$sudo apt-get install puppet

Testasin asennuksen ajamalla komennon puppet komentoriviltä:

$puppet

Komento antoi tulosteen:

See 'puppet help' for help on available puppet subcommands

Totesin puppet asennuksen onnistuneen.

Puppet resource työkalun kokeileminen

Kokeilin puppet resource työkalua komennolla, joka tulostaa käyttäjän xubuntu tiedot:

$puppet resource user xubuntu

Komento antoi tulosteen:

user { 'xubuntu':
  ensure  => 'present',
  comment => 'Live session user,,,',
  gid     => '999',
  groups  => ['adm', 'cdrom', 'sudo', 'dip', 'plugdev', 'lpadmin', 'sambashare'],
  home    => '/home/xubuntu',
  shell   => '/bin/bash',
  uid     => '999',
}

Seuraavaksi loin käyttäjän puppet_tester käyttämällä puppet resource komentoa:

$sudo puppet resource user puppet_tester ensure=present shell="/bin/bash" home="/home/puppet_tester" managehome=true

Komento antoi tulosteen:

notice: /User[puppet_tester]/ensure: created
user { 'puppet_tester':
  ensure => 'present',
  home   => '/home/puppet_tester',
  shell  => '/bin/bash',
}

Testasin uuden käyttäjän luomista tutkimalla /home hakemiston tiedostolistausta komennolla:

$ls -l /home

Komento antoi tulosteen:

total 0
drwxr-xr-x  2 puppet_tester puppet_tester 140 Oct 28 17:48 puppet_tester
drwxr-xr-x 23 xubuntu       xubuntu       700 Oct 28 17:47 xubuntu

Kokeilin kirjautumista puppet_tester käyttäjänä luomalla ensin salasanan passwd ja vaihtamalla käyttäjää su komennolla:

xubuntu@xubuntu:~$ sudo passwd puppet_tester
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
xubuntu@xubuntu:~$ su - puppet_tester
Password: 
puppet_tester@xubuntu:~$ 

Pääsin kirjautumaan puppet_tester käyttäjänä ja totesin puppet resource komennon onnistuneen. Seuraavaksi kokeilin pupper resource komennon –edit valitsinta, jolla resurssia pystyy muokkaamaan tekstieditorissa:

$sudo puppet resource user puppet_tester --edit

Komento avasi puppet_tester user resurssin vim editorissa muokattavaksi. Muutin ensure rivin muotoon, jolla käyttäjä poistetaan:

ensure           => 'absent',

Tallensin muutokset ja poistun vim editorista komennolla ‘:x’ ja seuraavaksi puppet poisti käyttäjän:

warning: Could not retrieve fact fqdn
info: Applying configuration version '1351440883'
notice: /Stage[main]//User[puppet_tester]/ensure: removed
notice: Finished catalog run in 2.94 seconds

Testasin käyttäjän poistamista tutkimalla /home hakemiston tiedostolistausta komennolla:

$ls -l /home

Komento antoi tulosteen:

total 0
drwxr-xr-x  2    1000    1000 160 Oct 28 18:01 puppet_tester
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu

Käyttäjän puppet_tester kotihakemistoa ei oltu poistettu. Kokeilin seuraavaksi kirjautumista puppet_tester käyttäjänä luomalla ensin salasanan passwd ja vaihtamalla käyttäjää su komennolla:

xubuntu@xubuntu:~$ sudo passwd puppet_tester
passwd: user 'puppet_tester' does not exist
xubuntu@xubuntu:~$ su - puppet_tester
Unknown id: puppet_tester

Salasanan vaihtaminen ja kirjautuminen puppet_tester käyttäjänä ei onnistunut, koska puppet_tester käyttäjää ei ollut enää olemassa. Totesin puppet resource –edit komennon onnistuneen, vaikka se ei poistanut käyttäjän kotihakemistoa. Seuraavaksi kokeilin poistaa puppet_tester käyttäjän kotihakemiston komennolla:

xubuntu@xubuntu:~$ sudo puppet resource file '/home/puppet_tester' ensure=absent recurse=true
notice: /File[/home/puppet_tester]: Not removing directory; use 'force' to override
notice: /File[/home/puppet_tester]/ensure: removed
file { '/home/puppet_tester':
  ensure => 'directory',
}
xubuntu@xubuntu:~$ ls -l /home/
total 0
drwxr-xr-x  2    1000    1000 160 Oct 28 18:01 puppet_tester
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu

Hakemistoa ei poistettua, jonka myös ls komento vahvisti. Seuraavaksi kokeilin lisätä edelliseen puppet resource komentoon force=true määrityksen:

xubuntu@xubuntu:~$ sudo puppet resource file '/home/puppet_tester' ensure=absent force=true recurse=true
notice: /File[/home/puppet_tester]/ensure: removed
file { '/home/puppet_tester':
  ensure => 'absent',
}
xubuntu@xubuntu:~$ ls -l /home
total 0
drwxr-xr-x 23 xubuntu xubuntu 700 Oct 28 18:14 xubuntu

Tällä kertaa puppet_tester käyttäjän kotihakemiston poistaminen onnistui.

Puppet manifestin kirjoittaminen

Aluksin tein hakemiston puppet ja sen alihakemiston manifests:

xubuntu@xubuntu:~$ cd
xubuntu@xubuntu:~$ mkdir puppet
xubuntu@xubuntu:~$ cd puppet/
xubuntu@xubuntu:~/puppet$ mkdir manifests
xubuntu@xubuntu:~/puppet$

Kirjoitin Puppet manifestin käyttämällä nano editoria:

$nano manifests/site.pp

Puppet manifestin sisältö oli seuraava:

file {"/etc/motd":
   ensure  => link,
   target  => "/var/run/motd",
}  

file {"/var/run/motd":
   ensure => present,
   content => "Tervetuloa Xubuntu 12.04.1 LTS Linuxiin.\n\n* Dokumentaatio:  https://help.ubuntu.com/\n\n\n",
}

Puppet manifest muuttaa kirjautumisen yhteydessä näytetyn /etc/motd tiedoston sisällön suomenkieliseksi. Ajoin Puppet manifestin komennolla:

$ sudo puppet apply manifests/site.pp
warning: Could not retrieve fact fqdn
notice: /Stage[main]//File[/var/run/motd]/content: content changed '{md5}12a60eba83a333eddefc6ec1342ebf0e' to '{md5}b7a50b4ef95b24e4e7bc6b9733788edd'
notice: Finished catalog run in 0.06 seconds

Testasin Puppet manifestin toimivuutta komennolla:

xubuntu@xubuntu:~$ cat /etc/motd
Tervetuloa Xubuntu 12.04.1 LTS Linuxiin.

* Dokumentaatio:  https://help.ubuntu.com/

Totesin Puppet manifestin toimivaksi.

Apache palvelimen asentaminen Puppet manifestilla

Kirjoitin toisen Puppet manifestin Apache palvelimen asentamiseksi nano editorilla:

$nano manifests/site.pp

Manifestin sisällöstä tuli seuraava:

package { "apache2":

ensure => installed,
allowcdrom => true,
}

service { "apache2":

ensure => running,
enable => true,
}

Ajoin Puppet manifestin komennolla:

$ sudo puppet apply manifests/apache.pp 
warning: Could not retrieve fact fqdn
err: /Stage[main]//Service[apache2]: Could not evaluate: Could not find init script for 'apache2'
notice: /Stage[main]//Package[apache2]/ensure: ensure changed 'purged' to 'present'
notice: Finished catalog run in 13.02 seconds

Puppet ilmoitti, että se ei löydä taustaprosessin käynnistysskriptiä (init script) “apache2″ palvelulle. Apache palvelin kuitenkin asennettiin.
Ajoin uudestaan saman komennon:

$ sudo puppet apply manifests/apache.pp 
warning: Could not retrieve fact fqdn
notice: Finished catalog run in 0.39 seconds

Tällä kertaa Apachen käynnistysskripti löytyi, koska se oli asennettu kun Puppet manifesti ajettiin ensimmäisen kerran. Testasin Apache pavelimen toimivuutta avaamalla Firefox selaimella osoitteen “localhost”:

Totesin Apache asennuksen toimivaksi. Seuraavaksi muutin Puppet manifestia niin, että Apache taustaprosessin sammutetaan:

service { "apache2":

ensure => stopped,
enable => true,
}

Ajoin uudestaan Puppet manifestin, jotta Apache taustaprosessin tila päivitettiin:

$ sudo puppet apply manifests/apache.pp 
warning: Could not retrieve fact fqdn
notice: /Stage[main]//Service[apache2]/ensure: ensure changed 'running' to 'stopped'
notice: Finished catalog run in 1.60 seconds

Testasin Apache pavelimen toimivuutta uudestaan avaamalla Firefox selaimella osoitteen “localhost”:

Yhteyttä localhost palvelimeen ei saatu, koska Apache taustaprosessi oli sammutettu. Totesin Puppet manifestiin tehdyn muutoksen toimivan.

Lähteet

Karvinen, Tero 2012a. Hello Puppet – on Ubuntu 12.04 LTS.
http://terokarvinen.com/2012/hello-puppet-on-ubuntu-12-04-lts

Karvinen, Tero 2012b. Linux keskitetty hallinta ICT4TN011-2 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet

Puppet Labs 2011. Docs: Learning — Resources and the RAL.
http://docs.puppetlabs.com/learning/ral.html

Puppet Labs 2011. Docs: Learning — Manifests
http://docs.puppetlabs.com/learning/manifests.html

About

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen

Harjoitustehtävä 7: Webpalvelimen suorituskyky

8.10.2012

Harjoitustehtävän aiheena oli webpalvelimen suorituskyvyn tutkiminen ja sen parantaminen Varnish välityspalvelimen (reverse proxy) avulla. Harjoituksessa asennettiin WordPress sisällönhallinta, jonka suorituskykyä webpalvelimella tarkasteltiin Apache Benchmark (ab) ohjelmalla sekä normaalin asennuksen jälkeen että Varnish välityspalvelimen asentamisen jälkeen. Lisäksi WordPress sivuston suorituskykyä tutkittiin Firefox selaimen Firebug lisäosalla.

Harjoitusympäristö

Harjoitus suoritettiin 08.10.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta, johon oli asennettu Xubuntu versio 12.04 32-bittinen Linux käyttöjärjestelmä.

Lenovo R60 kokoonpano:

  • Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
  • Keskusmuisti: 4 Gt DDR2
  • Kiintolevy: 100 Gt SATA150 54000rpm
  • Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen

WordPress sisällönhallintajärjestelmän asentaminen

Aloitin harjoitustehtävän tekemisen päivittämällä Ubuntun pakettivarastot komennolla:

$sudo apt-get update

Pakettivarastojen päivitys kesti muutamia sekunteja.

Apache palvelin ja PHP oli jo valmiiksi asennettuna koneella. Apache palvelimella oli otettu käyttöön käyttäjäkohtaiset public_html kansiot. Tein omaan kotihakemistooni kansion  WordPress asentamiseksi Apachen “virtuaalipalvelimeen” varten komennolla:

$mkdir ~/public_html/blogsite.com

Seuraavaksi siirryin muokkaamaan /etc/hosts tiedostoa komennolla:

$sudo nano /etc/hosts

Määrittelin /etc/hosts tiedostoon “virtuaalipalvelimen” nimitiedot lisäämällä rivit:

192.168.xxx.xxx www.blogsite.com
192.168.xxx.xxx blogsite.com

Seuraavaksi ryhdyin muokkaamaan Apache:n asetustiedostoja. Siirryin Apache:n asetuskansioon sites-available, johon Apachen “virtuaalipalvelimet” määritellään:

$cd /etc/apache2/sites-available/

Tein Apachen oletuspalvelimen default tiedostosta blogsite.com nimisen kopion:

$sudo cp default eliimatt.com

Muokkasin blogsite.com tiedostoa nano editorilla:

<VirtualHost *:80> 
    ServerName www.blogsite.com 
    ServerAlias blogsite.com 
   DocumentRoot /home/eino/public_html/blogsite.com 
        <Directory /home/eino/public_html/blogsite.com>
            php_admin_value engine 1
        </Directory>
</VirtualHost>

Tämän jälkeen otin käyttöön uuden “virtuaalipalvelimen” komennolla:

$sudo a2ensite  blogsite.com

Käynnistin Apache palvelimen uudelleen komennolla:

$sudo service apache2 reload

Testasin “virtuaalipalvelimen” toimintaa tekemällä lyhyen testi.php tiedoston $HOME/public_html/blogsite.com hakemistoon:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<?php
print_r('<h1>Terve maailma</h1>');
print_r('<p>Käyttämäsi selaimen tiedot:</p>');
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
?>

Testasin sivun lataamista Firefox selaimella avaamalla osoitteen “www.blogsite.com/testi.php”:

Totesin “virtuaalipalvelimen toimivan. Seuraavaksi siirryin asentamaan MySQL palvelinta.

Asensin MySQL palvelimen sekä tarvittavat Apache ja PHP rajapinnat komennolla:

$sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Tein WordPressille oman tietokantakäyttäjän ja tietokannan MySQL komentotulkilla komennoilla:

$mysql -u root -p
mysql> CREATE DATABASE wpeblogsite;
mysql> GRANT ALL PRIVILEGES ON wpeblogsite.* TO "wpeliimatt"@"localhost" IDENTIFIED BY "xxx";
mysql> FLUSH PRIVILEGES;
mysql> EXIT

Siirryin asentamaan WordPress sisällönhallintaa. Siirryin blogsite.com hakemistoon ja latasin WordPress asennuspaketin wget komennolla.
Purin paketin tar komennolla.

$cd $HOME/public_html/blogsite
$wget http://wordpress.org/latest.tar.gz
$tar -xzvf latest.tar.gz

Käynnistin WordPress asennusohjelman avaamalla Firefox selaimella osoitteen “www.blogsite.com/wordpress/wp-admin/install.php”. Asennus ei lähtenyt käyntiin, joten Apachen “virtuaalipalvelin” tiedostoa muokattiin seuraavasti:

<VirtualHost *:80> 
    ServerName www.blogsite.com 
    ServerAlias blogsite.com 
   DocumentRoot /home/eino/public_html/blogsite.com 
        <Directory /home/eino/public_html/blogsite.com/wordpress>
            php_admin_value engine 1
        </Directory>
</VirtualHost>

Käynnistin Apache palvelimen uudelleen komennolla:

$sudo service apache2 reload

Kokeilin uudestaan avata osoitteen osoitteen “www.blogsite.com/wordpress/wp-admin/install.php”. Nyt asennus lähti normaalisti toimimaan. WordPress asennusohjelmalla annettiin aikaisemmin luodun tietokannan tiedot ja taulujen etuliite muutettiin “elwp_” alkuiseksi. Asennustiedosto kopioitiin web-sivulta wp-config.php tiedostoon nano editorin avulla. Asennusta jatkettiin. WordPress sivustolle annettiin nimi ja sille luotiin ylläpitokäyttäjä. Asennuksen lopuksi kirjauduttiin sisään WordPress ohjausnäkymään.

WordPress asennus todetiin onnistuneeksi. WordPress asetuksista otettiin käyttöön PermaLinks toiminto. Sitä varten otettiin käyttöön Apachen mod_rewrite moduli komennolla:

$sudo a2enmod rewrite

Apachen “virtuaalipalvelin” tiedostoa muokattiin seuraavasti:

<VirtualHost *:80> 
    ServerName www.blogsite.com 
    ServerAlias blogsite.com 
   DocumentRoot /home/eino/public_html/blogsite.com 
        <Directory /home/eino/public_html/blogsite.com/wordpress>
            php_admin_value engine 1
            AllowOverride all
        </Directory>
</VirtualHost>

Käynnistin Apache palvelimen uudelleen komennolla:

$sudo service apache2 reload

WordPressin PermaLinks asetuksen toimintaa kokeiltiin Firefox selaimella avaamalla WordPress sivusto osoitteessa “www.blogsite.com/wordpress”:

Todettiin PermaLinks asetuksen toimivan, koska selaimessa alisivujen URL rivit näkyivät uudelleenkirjoitettuina.

WordPress suorituskyvyn tutkiminen

WordPress sisällönhallintajärjestelmän suorituskykä tutkittiin Apache Benchmark komennolla, johon turvallisuussyistä annettiin WordPress sivuston osoite localhost viittauksen kautta:

$ab -c 500 -n 1000 http://localhost/~eino/blogsite.com/wordpress

Komennolla suorittettiin 500 yhtäaikaisella HTTP yhteydellä 1000 HTTP pyyntöä. Tulokseksi saatiin seuraavaa:


Concurrency Level:      500
Time taken for tests:   51.813 seconds
Complete requests:      1000
Failed requests:        100
(Connect: 0, Receive: 0, Length: 100, Exceptions: 0)
Write errors:           0
Non-2xx responses:      900
Total transferred:      538200 bytes
HTML transferred:       296100 bytes
Requests per second:    19.30 [#/sec] (mean)
Time per request:       25906.503 [ms] (mean)
Time per request:       51.813 [ms] (mean, across all concurrent requests)
Transfer rate:          10.14 [Kbytes/sec] received

Testitulos kertoi, että 1000 HTTP pyynnöstää 900 onnistui. Palvelin pystyi käsittelemään keskimäärin 19.3 HTTP pyyntöä sekunnissa.
Testi toistettiin WordPress sivuston alisivulle komennolla:

$ab -c 500 -n 1000 http://localhost/~eino/blogsite.com/wordpress/2012/10/08/hello-world/

Tulokseksi saatiin seuraavaa:


Concurrency Level:      500
Time taken for tests:   6.183 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      495000 bytes
HTML transferred:       292000 bytes
Requests per second:    161.72 [#/sec] (mean)
Time per request:       3091.707 [ms] (mean)
Time per request:       6.183 [ms] (mean, across all concurrent requests)
Transfer rate:          78.18 [Kbytes/sec] received

Testitulos kertoi, että 1000 HTTP pyynnöstä kaikki onnistuivat. Palvelin pystyi käsittelemään keskimäärin 161.72 HTTP pyyntöä sekunnissa.

Varnish välityspalvelimen asentaminen

Asensin Varnish välityspalvelimen komennolla:

$sudo apt-get install varnish

Muutin Varnish taustaprosessin asetuksia komennolla:

$sudo nano /etc/default/varnish

Rivi DAEMON_OPTS muutettiin seuraavaksi:

DAEMON_OPTS="-a :80 \           

Apachen asetuksia muutettiin tiedostosta /etc/apache2/ports.conf seuraavasti:

NameVirtualHost *:8080
Listen 8080          

Apachen “virtuaalipalvelin” tiedostoa muokattiin seuraavasti:

<VirtualHost *:8080> 
    ServerName www.blogsite.com 
    ServerAlias blogsite.com 
   DocumentRoot /home/eino/public_html/blogsite.com
        <Directory /home/eino/public_html/blogsite.com/wordpress>
            php_admin_value engine 1
            AllowOverride all
        </Directory>
</VirtualHost>

Apachen default “virtuaalipalvelin” tiedostoa 000-default muokattiin seuraavasti:

<VirtualHost *:8080> 

Käynnistin Apache palvelimen uudelleen komennolla:

$sudo service apache2 restart

Testasin Apachen porttien uudelleenohjauksen avaamalla selaimella osoitteen “localhost:8080″:

Totesin Apachen porttimuutoksen toimivan. Käynnistin varnish taustaprosessin uudelleen komennolla:

$sudo service varnish restart

Testasin välityspalvelimen toimintaa avaamalla selaimella osoitteen “”www.blogsite.com/wordpress”:

Totesin Varnish välityspalvelimen toimivan, koska WordPress sivusto latautui normaalisti vaikka Apache “virtuaalipalvelin” oli määritelty porttiin 8080.

Varnish välityspalvelimen vaikutus WordPressin suorituskykyyn

Varnish välityspalveminen vaikutusta WordPress sivuston   suorituskykyyn tutkittiin toistamalla aikaisemmat Apache Benchmark testit:

$ab -c 500 -n 1000 http://localhost/~eino/blogsite.com/wordpress

Komennolla suorittettiin 500 yhtäaikaisella HTTP yhteydellä 1000 HTTP pyyntöä. Tulokseksi saatiin seuraavaa:


Concurrency Level:      500
Time taken for tests:   0.307 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      646990 bytes
HTML transferred:       336000 bytes
Requests per second:    3257.27 [#/sec] (mean)
Time per request:       153.503 [ms] (mean)
Time per request:       0.307 [ms] (mean, across all concurrent requests)
Transfer rate:          2058.03 [Kbytes/sec] received

Testitulos kertoi, että 1000 HTTP pyynnöstää kaikki onnistuivat. Palvelin pystyi käsittelemään keskimäärin 3257.27 HTTP pyyntöä sekunnissa. Muutos sivujen käsittelykapasiteetissa on valtava verrattuna aikaisempaan 19.3 sivuun sekunnissa. Kaikki HTTP pyynnöt onnistuivat toisin kuin aikaisemmassa testissä. Muutokset vasteajoissa olivat suuria: aikaisemmassa testissä HTTP pyynnön käsittely kesti keskimäärin 51.813 millisekuntia ja nyt aikaa kului keskimäärin 0.307 millisekuntia HTTP pyyntöä kohden. Tiedonsiirtonopeus kasvoi aikaisemmasta 10.14 Kb/s  nopeudesta huippunopeuteen 2058.03 Kb/s.
Testi toistettiin WordPress sivuston alisivulle komennolla:

$ab -c 500 -n 1000 http://localhost/~eino/blogsite.com/wordpress/2012/10/08/hello-world/

Tulokseksi saatiin seuraavaa:


Concurrency Level:      500
Time taken for tests:   0.413 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      533990 bytes
HTML transferred:       294000 bytes
Requests per second:    2421.72 [#/sec] (mean)
Time per request:       206.464 [ms] (mean)
Time per request:       0.413 [ms] (mean, across all concurrent requests)
Transfer rate:          1262.87 [Kbytes/sec] received

Testitulos kertoi, että 1000 HTTP pyynnöstä kaikki onnistuivat. Palvelin pystyi käsittelemään keskimäärin 2421.72 HTTP pyyntöä sekunnissa. Muutos sivujen käsittelykapasiteetissa oli tässäkin testissä valtava verrattuna aikaisempaan noin 161.72 HTTP pyyntöön sekunnissa. Myös muutokset vasteajoissa olivat suuria: aikaisemmassa testissä HTTP pyynnön käsittely kesti keskimäärin 6.183 millisekuntia ja nyt aikaa kului keskimäärin 0.413 millisekuntia HTTP pyyntöä kohden. Tiedonsiirtonopeus kasvoi aikaisemmasta 78.18 Kb/s  nopeudesta merkittävästi nopeuteen 1262.87 Kb/s.

WordPress sivuston tutkiminen Firefoxin Firebug lisäosalla

Asensin Firebug lisäosan Firefox selaimeen valitsemalla Tools ->Addons. Kirjoitin hakukenttään sanan “firebug” ja painoin Enter näppäintä:

Valitsin lisäosan Firebug 1.10.3 ja valitsin Install painikkeen. Firebug asentui. Tarkistin vielä Extensions välilehdeltä, että
Firebug lisäosa näkyi asennettuna:

Valitisin Firebug painikkeen selaimen oikeanpuoleisesta sivupalkista:

Valitsin asetuksen Firebug UI Location -> Detached. Firebug ikkunasta valitsin Net välilehden ja aktivoin sen valitsemalla Enable:

Latasin WordPress sivuston uudelleen ja Firebug kuvasi nyt latausaikaa seuraavasti:

Tuloksesta havaitaan, että HTML sisällön lataamiseen kului suurin osa ajasta, 431 millisekuntia. Yhteensä tehtiin 5 erillistä HTTP pyyntöä, joihin kului aikaa yhteensä 826 millisekuntia. Seuraavaksi testi toistettiin alisivulle:

Tuloksesta havaitaan, että edelleen HTML sisällön lataamiseen kului suurin osa ajasta, 404 millisekuntia. Blogin kommenttien kirjoittamisen toiminallisuuteen haetttiin gravatar-kuva osoitteesta  0.gravatar.com, johon kului 53 millisekuntia. Yhteensä tehtiin 4 erillistä HTTP pyyntöä, joihin kului aikaa yhteensä 790 millisekuntia.

WordPress sivuston tutkiminen Firefoxin YSlow lisäosalla

Asensin Firebug lisäosan Firefox selaimeen valitsemalla Tools ->Addons. Kirjoitin hakukenttään sanan “yslow” ja painoin Enter näppäintä:

Valitsin lisäosan YSlow 3.1.4 ja valitsin Install painikkeen. YSlow asentui ja ilmoitti, että selain on käynnistettävä uudelleen:

Käynnistin selaimen uudestaan valitsemalla Restart Now. Selaimen käynnistyttyä tarkistin, että YSlow lisäosa näkyi Extensions välilehdellä:

Firebug ikkunasta valitsin YSlow välilehden ja aktivoin sen valitsemalla Run test. Testi WordPress sivuston pääsivusta kertoi seuraavaa:

YSlow antoi sivustolle A luokituksen pistemäärällä 92. Parannettavia kohtia YSlow testin mukaan olisivat: sisällön peilaaminen toisille palvelimelle maantieteelliseti lähemmäksi käyttäjää, selaimen välimuistin käyttöä ohjaavien Expires otsakkeiden ja ETags määrittelyjen lisääminen web-palvelimen asetuksiin sekä staattisen HTML sisällön tarjoaminen osoitteesta, joka ei käytä keksejä HTTP pyyntöjen välityksessä.

Käytetyt ohjelmistot

Firebug https://getfirebug.com/
Varnish  https://www.varnish-cache.org/
YSlow http://developer.yahoo.com/yslow/

Lähteet

Karvinen, Tero 2012. Linux palvelimena ICT4TN003-4 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012

Liimatta, Eino 2012a. Harjoitustehtävä 5: Apache.
http://eliimatt.wordpress.com/2012/09/24/harjoitustehtava-5-apache/

Liimatta, Eino 2012b. Harjoitustehtävä 6: Sisällönhallinta.
http://eliimatt.wordpress.com/2012/10/01/harjoitustehtava-6-sisallonhallinta/

Ubuntu Community Help Wiki 2012. ApacheMySQLPHP.
https://help.ubuntu.com/community/ApacheMySQLPHP

WordPress Codex 2012.
http://codex.wordpress.org/

About

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen

Harjoitustehtävä 6: Sisällönhallinta

1.10.2012

Harjoitustehtävän aiheena oli WordPress sisällönhallintajärjestelmän asentaminen Xubuntu Linux käyttöjärjestelmään. Sisällönhallintajärjestelmää varten asennettiin Apache ja MySQL palvelimet sekä PHP. Sisällönhallintajärjestelmää muokattiin asentamalla siihen ulkoasuteema ja toiminnallinen lisäosa (plugin).

Harjoitusympäristö

Harjoitus suoritettiin 30.09.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta. Käyttöjärjestelmä ladattiin Xubuntu versio 12.04 32-bittinen Linux live-cd:ltä. Tietokoneen kiintolevylle asennettua käyttöjärjestelmää ei käytetty harjoitustehtävän suorittamiseen.

Lenovo R60 kokoonpano:

  • Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
  • Keskusmuisti: 4 Gt DDR2
  • Kiintolevy: 100 Gt SATA150 54000rpm
  • Kiintolevylle asennettu käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen

Apache palvelimen asennus

Aloitin harjoitustehtävän tekemisen päivittämällä Ubuntun pakettivarastot komennolla:

$sudo apt-get update

Pakettivarastojen päivitys kesti muutamia sekunteja.

Ensiksi asensin Apache palvelimen komennolla:

$sudo apt-get install apache2

Testasin Apache asennuksen avaamalla Firefox selaimessa osoitteen “localhost”:

Totesin Apachen toimivan. Seuraavaksi otin käyttöön käyttäjäkohtaiset public_html kansiot Apachessa komennolla:

$sudo a2enmod userdir

Käynnistin Apachen uudelleen komennolla:

$sudo service apache restart

Siirryin käyttäjähakemistoon ja tein kansion public_html komennoilla:

$cd
$mkdir public_html

Siirryin public_html hakemistoon ja tein nano editorilla testi-HTML tiedoston komennoilla:

$cd public_html
$nano index.html

Tiedoston sisällöksi tuli:

Hei, maailma!

Testasin käyttäjäkohtaisen public_html kansion toimintaa avaamalla Firefox selaimessa sivun “localhost/~xubuntu”:

Totesin käyttäjäjä kohtaisten public_html kansioiden toimivan.

PHP:n asennus

Seuraavaksi asensin PHP:n komennolla:

$sudo apt-get install libapache2-mod-php5

Seuraavaksi muutin Apachen PHP lisäosan asetuksia niin, että PHP:tä voidaan ajaa käyttäjäkohtaisesta public_html kansiosta:

$sudo nano /etc/apache2/mods-enabled/php5.conf

Asetustiedostosta kommentoitiin ulos seuraavat rivit lisäämällä rivien alkuun ristikkomerkki #:

<IfModule mod_userdir.c>
      <Directory /home/*/public_html>
           php_admin_value engine Off
      </Directory>
</IfModule>

Käynnistin Apache palvelimen uudelleen komennolla:

$sudo service apache2 restart

Testakseni PHP:n toimivuutta, tein kotihakemistoni public_html kansioon testi.php tiedoston komennolla:

$nano ~/public_html/testi.php

Tiedoston sisällöksi tuli:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<?php
print_r('<h1>Terve taas, maailma!</h1>');
?>

Seuraavaksi avasin Firefox selaimessa osoitteen “localhost/~xubuntu/testi.php”:

Totesin PHP:n toimivan käyttäjäkohtaisissa public_html kansioissa.

MySQL palvelimen ja phpMyAdmin työkalun asennus

Asensin MySQL palvelimen sekä tarvittavat Apache ja PHP rajapinnat komennolla:

$sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

MySQL asennuksen aikana määritin salasanan MySQL root käyttäjälle:

Asensin phpMyAdmin työkalun, joka tarjoaa graafisen käyttöliittymän MySQL palvelimelle komennolla:

$sudo apt-get install phpmyadmin

phpMyAdmin asennuksessa valitsin liittämisen Apache palvelimeen:

Seuraavaksi määritin phpMyAdmin työkalun käyttämän tietokannan:

phpMyAdmin työkalun omalle tietokantakäyttäjälle piti määrittää salana ja sen jälkeen antaa MySQL palvelimen root käyttäjän salasana, jotta phpMyAdmin työkalun käyttämä tietokanta voitiin luoda:

Testasin phpMyAdmin työkalun asennuksen avaamalla Firefox selaimella osoitteen “localhost/phpmyadmin”:

Totesin phpMyAdmin työkalun toimivan. Seuraavaksi kirjauduin sisään MySQL palvelimen root käyttäjänä:

Tietokantakäyttäjän ja tietokannan luominen sisällönhallintajärjestelmälle phpMyAdmin työkalulla

Siirryin valikkoon Privileges ja valitsin Add a new User:

Valitsin tietokantakäyttäjän nimeksi “wpeliimatt” ja palvelimeksi “localhost”. Generoin satunnaisen salasanan valinnalla Generate. Valitsin “Create database with same name and grant all privileges”, jolla tietokantakäyttäjälle luotiin samanniminen tietokanta ja annettiin siihen täydet oikeudet. Valinnalla Create User tein uuden tietokantakäyttäjän ja tietokannan:

Totesin uuden tietokantakäyttäjän luomisen onnistuneen, koska valikosta Users voidaan havaita uusi tietokantakäyttäjä “wpeliimatt” ja vasemman laidan navigointialueella on uusi tietokanta “wpeliimatt”:

Kirjauduin ulos phpMyAdmin työkalun käyttöliittymästä.

WordPress sisällönhallintajärjestelmän asennus

Aloitin asennuksen avaamalla Firefox selaimella sivun “www.wordpress.org”:

Valitsin latauslinkin Download WordPress 3.4.2:

Valitsin .tar.gz tyyppisen asennuspaketin, koska siinä Linuxin tiedostojen käyttöoikeudet säilyvät toimivina. Tiedoston latauduttua purin asennuspaketin käyttäjäkohtaisen public_html kansioon komennoilla:

$cd ~/public_html
$tar -xzvf ~/Downloads/wordpress-3.4.2.tar.gz

Seuraavaksi avasin Firefox selaimessa osoitteen “localhost/~xubuntu/wordpress/wp-admin/install.php”:

WordPress asennusohjelma kertoi, että tarvittava asetustiedosto puuttui. Tehdäkseni uuden asennustiedoston valitsin Create Configuration File:

Seuravassa ikkunassa syötin aikaisemmin luomani tietokantakäyttäjän ja tietokannan tiedot. Lisäksi muutin tietoturvasyistä tietokannassa käytettävien taulujen etuliitettä:

Asennusohjelma antoi seuraavaksi valmiin asetustiedoston pohjan:

Kopioin asetustiedoston pohjan leikepöydälle ja siirryin komentokehotteeesen. Siirryin wordpress kansioon ja avasin uuden asetustiedoston nano editorilla komennoilla:

$cd ~/public_html/wordpress
$nano wp-config.php

Liitin asetustiedoston pohjan leikepöydältä nano editoriin ja tallensin tiedoston:

Palasin takaisin Firefox selaimeen ja valitsin Run Install. Seuravassa ikkunassa annoin otsikkonimen WordPress sivustolle. Muutin oletuskäyttäjän “admin” nimen ja annoin oman sähköpostiosoitteeni. Jätin salasanakentän tyhjäksi, jotta WordPress generoi satunnaisen salasanan. Jätin myös päälle valinnan “Allow search engines to index this site”:

Seuraavassa ikkunassa asennusohjelma kertoi asennuksen olevan valmis ja antoi generoimansa salasanan:

Valitsin Log In. Avautuneessa kirjautumisikkunassa syötin luomani käyttäjätunnuksen ja salasanan:

Kirjautumisen jälkeen pääsin WordPress sisällönhallintajärjestelmän ohjausnäkymään:

Totesin WordPress sisällöhallintajärjestelmän asennuksen onnistuneen.

PermaLinks asetuksen ottaminen käyttöön WordPress sivustolla

Siirryin WordPress ohjausnäkymässä kohtaan Settings. Muutin ensi General välilehdellä aika- ja päivämääräasetuksia:

Seuraavaksi siirryin PermaLinks välilehdelle. Otin käyttöön Day and Name asetuksen, joka muuttaa blogikirjoitusten linkit päivämäärän ja kirjoituksen nimen muotoiseksi:

WordPress ilmoitti, että Apachen mod_rewrite asetukset ei ole käytössä:

Siirryin komentokehotteeseen korjaamaan asetukset kuntoon. Otin Apachen mod_rewrite moduulin käyttöön komennolla:

$sudo a2enmod rewrite

Seuraavaksi muokkasin Apachen käyttäjäkohtaisten public_html kansioiden asetustiedostoa nano editorilla komennolla:

$sudo nano /etc/apache2/mods-enabled/userdir.conf

Muutin asetusten käsittelyä lohkon <Directory /home/*/public_html> sisällä:

AllowOverride all

Siirryin WordPress asennushakemistoon ja avasin tiedoston .htaccess nano editorilla:

$cd ~/public_html/wordpress
$nano .htaccess

Kopioin WordPress ohjausnäkymän sivulla esitetyt .htaccess tiedoston asetukset leikepöydälle ja sieltä
nano editorissa avattuun tiedostoon:

Muutos 6.10.2012: poistettu kuvaus .htaccess tiedoston oikeuksien muuttamisesta, joka on tarpeetonta WordPressin PermaLinks asetusten toiminnalle  sekä muodostaa tietoturvariskin.

Muutin .htaccess tiedoston oikeuksia, jotta WordPress voi päivittää niitä automaattisesti:

$chmod 666 .htaccess

Käynnistin Apachen uudelleen komennolla:

$sudo service apache2 restart

Tallensin uudestaan PermaLinks asetuksen WordPress ohjausnäkymässä. Tällä kertaa se onnistui:

Testasin PermaLinks toimintoa avaamalla Firefox selaimella WordPress sivuston osoitteen “localhost/~xubuntu/wordpress”:

Totesin asetuksen onnistuneen, koska PermaLinks osoitteet näkyivät selaimessa.

Ulkoasuteeman asentaminen WordPress sivustolle

Avasin Firefox selaimella osoitteen “http://wordpress.org/extend/themes/“, jonne on koottu WordPress teemoja:

Valitsin teeman nimeltä Montezuma ja latasin sen omalle koneelleni. Purin paketin kansioon ~/public_html/wordpress/wp-content/themes komennolla:

$unzip ~/Downloads/montezuma.1.1.3.zip -d ~/public_html/wordpress/wp-content/themes/

Siiryin WordPress ohjausnäkymässä valikkoon Appearance ja välilehdelle Themes, josta löytyy uusi Montezuma teema:

Otin uuden teeman käyttöön valitsemalla Activate. Testasin teemaa avaamalla Firefox selaimella Firefox selaimella WordPress sivuston osoitteen “localhost/~xubuntu/wordpress”:

Totesin uuden teeman toimivan.

Pluginin asentaminen WordPress sivustolle

Avasin Firefox selaimella osoitteen “http://wordpress.org/extend/plugins/“, jonne on koottu WordPress plugineja:

Valitsin pluginin nimeltä TinyMCE Advanced, joka on kehittyneempi versio WordPress artikkelieditorista, ja latasin sen omalle koneelleni. Purin paketin kansioon ~/public_html/wordpress/wp-content/plugins komennolla:

$unzip ~/Downloads/tinymce-advanced.3.4.9.zip -d ~/public_html/wordpress/wp-content/plugins

Siirryin WordPress ohjausnäkymässä valikkoon Plugins, josta löytyy uusi TinyMCE Advanced plugin:

Otin pluginin käyttöön valitsemalla Activate. Testasin pluginia kokeilemalla uuden artikkelin kirjoittamista WordPress ohjausnäkymässä:

Totesin uuden pluginin toimivan.

Lähteet

Emphatic Nonsense 2011. Enabling Apache’s PHP execution in User Directories on Ubuntu Lucid.
http://emphaticnonsense.com/2011/10/06/enabling-apache-php-execution-in-user-directories-on-ubuntu-lucid/

Techy Talk.info 2011. Enable Apache mod_rewrite on Ubuntu Linux system
http://www.techytalk.info/enable-apache-mod_rewrite-on-ubuntu-linux/

Karvinen, Tero 2012. Linux palvelimena ICT4TN003-4 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012

Ubuntu Community Help Wiki 2012. ApacheMySQLPHP.
https://help.ubuntu.com/community/ApacheMySQLPHP

WordPress Codex 2012.
http://codex.wordpress.org/

WordPress Plugin Directory 2012.
http://wordpress.org/extend/plugins

WordPress Themes Directory 2012.
http://wordpress.org/extend/themes/

About

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen


Seuraa

Get every new post delivered to your Inbox.