Linux palvelimen optimointi käänteisproxyn avulla

Tehtävä: http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

“h7:
– Asenna WordPress ja tee siihen esimerkkisisältöä
– Mittaa WP:n tehoa. Vertaile etusivun ja alasivujen nopeutta siihen, että tallennat saman sisällön staattiseksi. Analysoi mittaustulokset.
– Asenna käänteisproxy. Kokeile, että dynaamiset ominaisuudet, kuten kommenttien jättö, toimivat edelleen. Mittaa ja analysoi tulokset. Vertaa tilanteeseen ilman käänteisproxya.”

Aloitan tehtävän tekemisen tilanteesta missä olen asentanut LAMP ympäristön ja wordpressin tietokoneelleni, ohjeita näiden tekemiseen löydät seuraavista:

LAMP: https://henrimikkonen44.wordpress.com/2013/09/27/linux-xubuntu-ja-lampn-asennus/

WordPress: https://henrimikkonen44.wordpress.com/2013/10/04/wordpressin-asentaminen-linux-xubuntu-palvelimelle/

Palvelimen kuormittamista ab:lla eli apache benchmark ohjelmalla.Minun ei tarvinnut asentaa ab:ta sillä se on ilmeissti tullut apache asennuksen mukana. Kuormitan wordpress sivustoja jotka käyttää mysql tietokantaa joten se on luultavasti huomattavasti hitaampi kuin staattinen sivu missä ei ole lainkaan mysql tietokantahakuja.

ajoin seuraavan komennon:

$ ab -n 100 -c 100 http://localhost/~henri/wordpress/

Sain seuraavan laiset tulokset:

“Percentage of the requests served within a certain time (ms)
50%   1613

100%   2916 (longest request)”

50% pyynöistä palveltiin noin puolestatoista sekunnissa ja pisimpään palvelimella kesti noin kolme sekunttia.

Eli jo melko pitkä aika kärsimättömille nykynopeuksiin tottuneille ihmisille. Vertaukseksi kopion saman sivun toiseen hakemistoon jotta pääsen hakemaan sivua ilman mysql tietokanta liitoksia. Menin osoitteeseen http://localhost/~henri/wordpress/ ja valitsin firefoxin yläkulmasta File -> Save page as ja navigoin public_html kansiooni ja tallensin sen nimellä wptest.html.

Ajoin nyt tälle staattiselle sivulle saman testin:

$ ab -n100 -c100 http://localhost/~henri/wptest/

tulokset:

Percentage of the requests served within a certain time (ms)
50%      5

100%      6 (longest request)

Eli 50% pyynnöistä palveltiin jopa 5 millisekunnissa ja hitainkin vain yhden millisekuntin erolla. Se on jo varsin nopea vastausaika.

Seuraavaksi asennamme palvelimelle käänteisproxyn jotta saisimme  mysql tietokantaa käyttävän wordpress sivuston vastaamaan pyyntöihin huomattavasti nopeammin.

$ sudo apt-get install varnish

Tämän jälkeen laitamme proxyn ottamaan vastaan kaikki pyynnöt porttiin 80 ja vaihdamme apachalle uuden portin. Ensin apachalle uusi porttinumero:

$ sudoedit /etc/apache2/ports.conf

muutamme kohtiin NameVirtualHost ja Listen numerot 8080 ja tallennamme tiedoston:

NameVirtualHost *:8080
Listen 8080

$ sudo service apache2 restart

Sitten muutamme varnishin kuuntelemaan porttia 80:

$ sudoedit /etc/default/varnish

## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.  Use a 1GB
# fixed-size cache file.
#
DAEMON_OPTS=”-a :80 \

Tallennus ja varnishin uudelleen käynnistys

$ sudo service restart varnish restart

Kokeilin vielä että kommentointi ja muut dynaamiset toiminnot toimivat:

postintest

Nyt on tarvittavat asetukset tehty ja voimme testata uudelleen kuormittaa wordpress sivustoa:

$ ab -n 100 -c 100 http://localhost/~henri/wordpress/

Tulokset:

Percentage of the requests served within a certain time (ms)

50%      8

100%     10 (longest request)

Puolet pyynnöistä sai vastauksen noin 8 millisekunnissa ja pisinkin sai jo 10 millisekunnissa. Eli vastaukset tulivat huomattavasti nopeammin käänteisporxyn kanssa.

WordPressin asentaminen Linux Xubuntu palvelimelle

Tehtävä: http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

“h6:
– Asenna WordPress (alkaen tilanteesta, jossa LAMP on asennettu)
– Kirjoita esimerkkisisältöä

Tee ja raportoi kolme seuraavista:
– Ota järkevät URLit (permalinks) käyttöön
– Vaihda teema
– Varmuuskopioi sisältö
– Tee WordPressiin oma teema
– Asenna Drupal ja kokeile sitä
– Tee WordPressiin oma plugin
– Vuokraa virtuaalipalvelin ja kokeile sitä”

– Asenna WordPress (alkaen tilanteesta, jossa LAMP on asennettu)

Olen siis nyt asentanut LAMP ympäristön tietokoneelleni, jota siis käytän localhost palvelimena. Aloitan tekemällä wordpressille oman tietokannan, kirjautumalla mysqln sisään ja luomalla sinne uuden tietokannan. Jonka jälkeen kirjaudun uutena käyttäjänä sisään ja tarkistan että se toimii.

$ mysql -u root -p

mysql> create database wordpress;

mysql> grant all on wordpress.* to wordpress@localhost identified by ‘s4l4juttu’;

mysql> exit:

$ mysql -u wordpress -p

mysql>  show databases;

mysql> use wordpress;

pääsen käyttämään wordpress käyttäjänä wordpress tietokantaa, joten tietokannan ja käyttäjän luominen onnistui.

Seuraavaksi siirryin osoitteeseen http://codex.wordpress.org/Installing_WordPress josta latasin wordpressin linkistä: http://wordpress.org/latest.tar.gz ja purin sen public_html hakemistoon ja poistin tar paketin.

$ wget http://wordpress.org/latest.tar.gz

$ tar -xf latest.tar.gz

$ rm latest.tar.gz

Tämän jälkeen siirryin osoitteeseen http://localhost/~henri/wordpress/ josta alkoi asennus wizardi. Asennus wizardi vaati wp-config.php tiedoston tekemistä /home/henri/public_html/wordpress kansioon joten loin hakemistoon tiedoston.

$ nano wp-config.php

Tämän jälkeen sain suoritettua asennuksen loppuun. Näin wordpress on asennettu localhost palvelimelleni.

esmrkkisislto

– Ota järkevät URLit (permalinks) käyttöön

Valitsen asetuksista -> Settings -> Permalinks ja täppä http://localhost/~henri/wordpress/2013/10/04/sample-post/

permalinks

Tämän jälkeen wordpress hakemistoon pitää vielä tehdä tiedosto .htaccess ja asaettaa apachelle asetus jotta se toimii.

$ nano .htaccess

ja tiedostoon seuraavat rivit:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /~henri/wordpress/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~henri/wordpress/index.php [L]

$ sudo a2enmod rewrite

$ sudo service apache2 restart

Ja näin permalinkit toimii:

permalinksworks

– Vaihda teema

Siirryin kohteeseen oikeaan kansioon mihin teemat ladataan ja latasin mieleiseni teeman ja purin paketin kansioon. Tämän jälkeen vielä poistin zip paketin minkä juuri purin.

$ cd /home/henri/public_html/wordpress/wp-content/themes

$ wget http://wordpress.org/themes/download/customizr.3.0.13.zip

$ unzip customizr.3.0.13.zip

$ rm customizr.3.0.13.zip

Siirryin wordpressin hallinta paneeliin ja vaihdoin juuri lataamani ja purkamani teeman.

teemanvaihto

newtheme

Kerrassaan upea!

– Varmuuskopioi sisältö

Menin Tools välilehteen ja valitsin Export josta taas valitsin all content täpän ja download export. Koneelleni tallentui XML tiedoston jonka voin importata toiseen wordpress asennukseen.

Tämän jälkeen halusin testata varmuuskopiota. Jotta varmuuskopioinnin tuonti toimisi, piti wordpressiin asentaa importer niminen ohjelma, latasin zipin oikeaan hakemistoon ja purin sen sinne.

$ cd /henri/public_html/wordpress/wordpress/wp-content/plugins

$ wget http://downloads.wordpress.org/plugin/wordpress-importer.0.6.1.zip

$ unzip wordpress-importer.0.6.1.zip

Imporeter plugin ei kuitenkaa pysty toimimaan ennenkuin olen asettanut wp-content hakemistolle oikeat oikeudet käyttäjille:

$ cd /home/henri/public_html/wordpress

$ chmod o+wr wp-content

Ja tämän jälkeen pystyin tuomaan hetki sitten tekemäni varmuuskopion takaisin wordpressiin.