torstai 14. helmikuuta 2013

Tehtävä 5 - Varnish

Tämän viikon tehtävänä oli asentaa Varnish, muuttaa jotain sen asetusta VCL-kielellä ja käyttää liitännäistä Yslow analysointiin ja nopeutukseen.

Suoritin tehtävän koulun läppärillä (hp 2560p) käyttäen live USBia. Käyttöjärjestelmänä toimi Xubuntu 12.10.

Varnishin asentaminen

Aluksi työpöytäni avauduttua asetin näppäimistöni suomeksi, ja hain uusimmat päivitykset

setxkbmap fi
sudo apt-get update

 Päivitysten asennuttua asensin apache-weppipalvelimen ja varnish-http kiihdyttimen.

sudo apt-get install apache2
sudo apt-get install varnish

Testailuni kohteena päätin käyttää omaa wordpress sivustoani.

Varnishin asetukset

Halusin siirtää Varnishin apachen eteen. Siirryin varnishin asetuksiin muokkaamaan default.vcl tiedostoa

cd /etc/default/varnish
sudo nano varnish

Muokkasin tiedostoa niin, että se kuuntelee oletus HTTP-porttia

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"





Tämän jälkeen siirryin muokkaamaan VCl-tiedostoa oikeanlaiseksi.




sudo nano  /etc/varnish/default.vcl


Muutin hostin ip-osoitetta ja porttia.


  backend apache { .host = "127.0.0.1"; .port = "8000";
 
 
 
 

Ongelmia ja ratkaisuita

Seuraavaksi päätin kokeilla toimiiko localhost-sivuni.

sudo a2enmod userdir
localhost/~xubuntu/wordpress

Sain eteeni sivun "503 Service Unavailable - varnish cache server"
Tämän jälkeen koitin uudelleenkäynnistää varnishin

sudo /etc/init.d/varnish restart

Päätin lähteä tutkimaan apachen asetuksia.

sudo nano /etc/apache2/ports.conf

Muutin tietoja seuraavasti

NameVirtualHost *:8000
Listen 127.0.0.1:8000
 
Muutin myös apachen sites enabled kansiossa virtual hostin tietoja.

sudo nano /etc/apache2/sites-enabled/000-default

Vaihdoin virtual hostin nimeksi <VirtualHost *: 8000>

Uudelleenkäynnistin varnishin ja yritin yhdistää localhost/~xubuntu/wordpress sivulle. Tällä kertaa yhdistäminen onnistui.

Päätin kokeilla apache benchillä, nopeutuuko sivuni lataus mikäli varnish on päällä.
Aluksi sammutin varnishin sudo /etc/init.d/varnish stop jonka jälkeen kokeilin wordpressiin yhdistämistä. Laitoin pyyntöjen määräksi 200 ja samanaikaisten pyyntöjen määräksi 100.

ab -n 200  -c 100 localhost/~xubuntu/wordpress

Muutaman testauskerran keskiarvoksi sain noin 0.023 sekuntia.

Tämän jälkeen laitoin varnishin päälle ja kokeilin apache benchiä samoilla luvuilla.

sudo /etc/init.d/varnish restart
ab -n 200  -c 100 localhost/~xubuntu/wordpress

Tällä kertaa sain ajaksi keskimäärin 0.015 sekuntia. Otaksuin näin ollen varnishin toimivan.

Mainittakoon vielä, ettei testeissäni tullut yhtään "failed" pyyntöä.

VCl asetusten säätö

Päätin että haluan muuttaa serverini niemä apachesta johonkin muuhun.
Tutkittuani asiaa, löysin että tämä on mahdollista muokkaamalla kohtaa VCL-tiedostossa kohdan "fetch" jälkeen.
Lisäsin seuraavan.

 unset obj.http.Server; 
 set obj.http.Server = "Olenkuningas"; 

Yslow

Seuraavaksi siirryin Yslow-liitännäisen asennukseen. Liitännäinen tarvitsi ilmeisesti toimiakseen myös Firebug-liitännäisen, joten asensin sen ensimmäiseksi selaimeeni. Asennusten jälkeen restarttasin Firefoxin.
Menin seuraavaksi wordpress-sivustolleni ja kokeilin Yslow liitännäistä.
Painoin "run test" nappulaa. Sain tulokseksi:
Overall performance score 94Ruleset applied: YSlow(V2)URL: http://localhost/~xubuntu/wordpress/

Yslow suositteli minun vähentämään kompontenttien määrää wordpress-sivustollani ja pitämään keksien määrän alhaisena.

Lopputulos

Sain varnishin hyvin toimimaan, muutettua VCL-asetuksia ja mittailtua sivuani Yslow-liitännäisellä. Tehtävään kului noin neljä tuntia.

Lähteet:

http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-7-ict4tn003-kevaalla-2013


http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian
http://httpd.apache.org/docs/2.2/programs/ab.html


keskiviikko 6. helmikuuta 2013

Tehtävä 4 - Wordpress



Tämän viikon tehtävänä oli asentaa wordpress, ottaa järkevät URLit käyttöön, vaihtaa teema, tehdä esimerkkiartikkeli, varmuuskopioida sisältö ja suojata kone tulimuurilla. Lisäksi piti tehdä wordpressiin oma teema.

Lähdin suorittamaan tehtävääni koulun läppärillä(hp elitebook 2560p) käyttäen uutta live USB tikkua. Tikkuun asensin Xubuntu 12.10. version.

Lamp-ympäristön asennus

Apache

Aluksi halusin asentaa Lamp-ympäristön koneelleni. Tarvitsin siis Linuxin, Apachen, MySql-serverin ja PhP:n.
Aloitin apachen asennuksesta. Aluksi kuitenkin tahdoin varmistaa koneellani olevan päivitykset kunnossa "sudo apt-get update". Vaihdoin myös näppäimistön suomistandardiin "setxkbmap fi".
Päiviysten asennuttua annoin komennon "sudo apt-get install apache2"
Tämän jälkeen tahdoin luoda public_html kansion ja kotisivun käyttäjälleni testejä varten.
"mkdir public_html"
"cd public_html"
"nano index.html"
Kirjoitin index.html tiedostoon "Hyvää iltaa kaikille!"


Kokeilin apachen toimivuutta aluksi selaimen kautta osoitteella "localhost".
Toimivuuden tarkistettuani tahdoin ottaa käyttöön käyttäjän kotisivut.
"sudo a2enmod userdir"
"sudo service apache2 restart"

Kokeilin nyt toimivuutta osoittella "localhost/~Xubuntu" ja sain Hyvää iltaa kaikille -tekstin eteeni.

Php

Seuraavaksi päätin siirtyä php-asennukseen. Ensitöikseni asensin php-valmiuden komennolla "sudo apt-get install libapache2-mod-php5"
Asennuksen valmistuttua tahdoin saada php:n käyttöön public_html sivustollani.
Tutkittuani asiaa tajusin, että minun pitää kommentoida ulos pari riviä tiedostosta php5.conf. Tiedosto löytyi apachen mods-enabled kansiosta.
"sudo nano /etc/apache2/mods-enabled/php5.conf"
Ulos kommentoitiin seuraavat rivit risuaidalla.

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

Tämän jälkeen restarttasin apachen varmuuden vuoksi.
"sudo service apache2 restart"

Halusin kokeilla toimiiko php, joten poistin vanhan tiedoston public_html kansiosta ja korvasin sen index.php tiedostolla.
"cd public_html"
"rm index.html"
"sudo nano index.php"
Tiedoston sisällöksi tuli

<?php
echo "Php testailua!";
?> 

Menin seuraavaksi selaimella kokeilemaan sivustoni toimivuutta osoitteeseen "localhost/~Xubuntu" ja sain näkyviini tekstin "Php testailua!"

MySql ja phpMyAdmin

Viimeiseksi siirryin MySql serverin ja phpMyAdmin-liitännäisen asennukseen.
"sudo apt-get install mysql-server"
"sudo apt-get install libapache2-mod-auth-mysql"
"sudo apt-get  install php5-mysql"

MySql kysyi asennusvaiheessa uutta salasanaa root-käyttäjälle. Tein salasanan ja tallensin sen nanotiedostoon.

Internetissä tutkittuani tulin siihen tulokseen, että phpMyAdmin olisi paras vaihtoehto, sillä saisin graafisen käyttöliittymän käyttööni MySql palvelimella.
"sudo apt-get install phpmyadmin"
Asennuksessa minulta kysyttiin mihin palvelimeen halusin työkalun liitettävän. Valitsin "apache2".
Seuraavaksi ohjelma tahtoi määrittää tietokannan ja kysyi uuden salasanan itselleen. Salasanavarmistuksien jälkeen saatiin tietokanta luotua.
Kokeilin työkalun toimivuutta selaimella "localhost/phpmyadmin" ja sain vastaukseksi 404 not found -sivun.
Aikani pähkäiltyä en löytänyt vastausta ongelmaan, joten päätin siirtyä eteenpäin.

WordPress

Nyt pääsin viimein varsinaisen tehtävän kimppuun.
Latasin wordpressin "tervapallo"-version(tar.gz) sivustolta "wordpress.org"
Purin kansion public_html hakemistoon.
Seuraavaksi halusin luoda varsinaisen tietokannan wordpressille. Tein tämän manuaalisesti, sillä phpMyAdmin ei suostunut kanssani yhteistyöhön.

"mysql -u root -p"
Tämän jälkeen syötin salasanani ja seuraavat komennot:

mysql> CREATE DATABASE wpbase;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON wpbase.* TO "root"@"localhost"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
  
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
Bye
$ 

Seuraavaksi tahdoin muuttaa wp-config-sample.php tiedoston varsinaiseksi versioksi. Menin wordpressin hakemistoon ja avasin nanolla kyseisen tiedoston.
"cd public_html/wordpress"
"sudo nano wp-config-sample.php"
Lähdin muuttamaan nanolla seuraavia tietoja:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Lisäksi muokkasin kohtaa
/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each a unique
 * prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'wp_';

Vaihdoin table prefixiä tietoturvan vuoksi.
Tallensin tiedoston nimellä wp-config.php

Wordpress käyttöönotto

Seuraavaksi menin selaimellani sivustolle http://localhost/~xubuntu/wordpress/wp-admin/install.php
ja aloitin asennuksen. Sain eteeni tekstin  "error establishing a database connection"
Palasin wp-config.php tiedostoon ja huomasin tehneeni salasanavirheen. Korjasin virheeni ja sain asennuksen käynnistymään.

Asetin sivustoni nimeksi ottokalliomaki. Kirjautumisen onnistuttua siirryin muokkaamaan sivustoni tietoja. 

Seuraavaksi halusin fiksut URLit, eli permalinksit käyttöön. Settings>permalinks. Valitsin "day and name" asetuksen.
Muutin myös general-asetuksista "Helsinki" aikavykkeen päälle.
Vaihdoin myös taglineni.

Seuraavaksi tein esimerkkiartikkelin sivustolleni. Kokeilin linkkiäni ja se toimi.
Seuraavaksi siirryin teeman laadintaan.

Appearance>themes>customize

Vaihdoin taustavärityksen sivustollani vaaleanpunaiseksi ja asetin oman taustakuvan. Taustakuvaksi tuli http://matt.lee.name/skeletor/2013/skeletor.jpg


Varmuuskopiointi ja palomuuri

Viimeiseksi tahdoin varmuuskopioida tietokantani. 
Löysin wordpressin sivustolta liitännäisen, joka voi tehdä tämän puolestani.

http://s.wordpress.org/extend/plugins/backup/screenshot-1.png?r=664331
  
Seuraavaksi tarkistin palomuurini tilanteen komennolla:
"sudo ufw status"
xubuntu@xubuntu:~$ sudo ufw status
WARN: / is world writable!
WARN: / is group writable!
Status: inactive 


"sudo ufw enable"
 

Sain tehtävän tältä osin valmiiksi. Aikaa kului tehtävään noin 5 tuntia.