12.3.2013

Linux palvelimena, kotitehtävä 5: Optimointi

Tero Karvinen says: w07 Tue 2013-02-12 at 15:09
 

Kotitehtävä optimointi:
Tee kaksi seuraavista
a) Asenna Varnish. Muuta jotain sen asetusta VCL-kielellä (esim iso-kuvat suoraan läpi – ei välimuistiin)
b) Analysoi ja nopeuta weppisivua YSlow -lisäkkeen avulla
c) Analysoi ja nopeuta weppisivua Firebug -lisäkkeen Net-välilehden avulla
d) Etsi jokin nopeuden analysoinnissa auttava palvelu wepistä ja käytä sitä
f) Asenna nginx käänteisproxyksi


Tästä lähdin tahkoamaan ensimmäisenä Varnishin asennusta ja testausta.

Tehtävään käytettävä kone:

HP elitebook 2530p
Core2Duo L9400 1,86 GHz
4 GB muistia
Käyttöjärjestelmänä Xubuntu 12.04 32-bit.


Koneeseen oli jo valmiiksi asennettu toimiva LAMP-stack ja wordpress, joten lähdin testaamaan olemassa olevan sivuston suorituskykyä.

Perinteiseen tapaan aloitus:

$ sudo apt-get update

ja vielä päivitys

$ sudo apt-get upgrade -y

Testataan suorituskykyä Apache Benchmarkilla ja lähetetään palvelimelle 400 yhteyspyyntöä, joista 200 samanaikaisesti:

$ ab -n 800 -c 400 http://localhost/~a1003594/wordpress/

Tuloksena saatiin seuraavaa:

Concurrency Level:      400
Time taken for tests:   5.107 seconds
Complete requests:      800
Failed requests:        144
   (Connect: 0, Receive: 0, Length: 144, Exceptions: 0)
Write errors:           0
Non-2xx responses:      656
Keep-Alive requests:    656
Total transferred:      404352 bytes
HTML transferred:       209920 bytes
Requests per second:    156.65 [#/sec] (mean)
Time per request:       2553.410 [ms] (mean)
Time per request:       6.384 [ms] (mean, across all concurrent requests)
Transfer rate:          77.32 [Kbytes/sec] received


800 pyynnöstä 144 epäonnistui, ja palvelin pystyi käsittelemään 156 pyyntöä sekunnissa.

Seuraavaksi asennetaan Varnish ja kokeillaan samaa sen kanssa.

$ sudo apt-get install varnish -y

jonka jälkeen asetettiin varnish kuuntelemaan porttia 80:

$ sudo nano /etc/default/varnish

Muutetaan seuraavalla tavalla:

DAEMON_OPTS="-a :80 \

jonka jälkeen muutetaan ports.conffia

$ sudo nano /etc/apache2/ports.conf

NameVirtualHost *:8080
Listen 8080

Virtuaalipalvelimen asetuksia muokattiin seuraavasti:

$ sudo nano /etc/apache2/sites-available/testsite.com

<VirtualHost *:8080>
        ServerName www.testsite.com
        ServerAlias testsite.com
        DocumentRoot /home/a1003594/public_html/testsite.com
</VirtualHost>

ja sama muutos tehtiin default-virtuaalipalvelimelle.

Tämän jälkeen käynnistettiin apache uudelleen, sekä testasin porttiohjauksen toimivuuden surffaamalla osoitteeseen localhost:8080, joka toimi mainosti. Sen jälkeen käynnistin vielä Varnishin uudelleen:

$ sudo service varnish restart

Ajoin seuraavaksi samat 800 yhteyspyyntöä kuin aikaisemminkin seuraavin tuloksin:

 Concurrency Level:      400
Time taken for tests:   0.110 seconds
Complete requests:      800
Failed requests:        0
Write errors:           0
Keep-Alive requests:    0
Total transferred:      759190 bytes
HTML transferred:       577600 bytes
Requests per second:    7291.89 [#/sec] (mean)
Time per request:       54.855 [ms] (mean)
Time per request:       0.137 [ms] (mean, across all concurrent requests)
Transfer rate:          6757.72 [Kbytes/sec] received

Nopeus oli siis parantunut huomattavasti. Yksikään yhteys ei epäonnistunut, ja yhteyksiäkin pystyttiin jo käsittelemään hulppeasti melkein 7300 sekunnissa. Kaiken kaikkiaan Varnish tekee siis sen minkä lupaakin.

Vielä piti muokata jotain Varnishin asetusta VCL-kielellä. Kun en muutakaan keksinyt, tein serverin nimen muuttamisen niin kuin moni muukin.

$ sudo nano /etc/varnish/default.vcl

unset.beresp.http.Server;
set beresp.http.Server = “SeveriServeri”;

Varnishin uudelleen käynnistys ja kokeilu curlilla

$ curl -I http://localhost

HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Type: text/html;charset=UTF-8
Server: SeveriServeri
Date: Tue, 12 Mar 2013 21:12:48 GMT
X-Varnish: 1150814261
Age: 0
Via: 1.1 varnish
Connection: keep-alive

Ja näin on serverin nimi muutettu. Sitä missä muualla se näkyy kuin curlissa, en tiedä.

6.3.2013

Linux palvelimena, kotitehtävä 4: Wordpressin asentaminen

Tero Karvinen says: w06 Tue 2013-02-05 at 15:28
 

Tee ja raportoi kaksi näistä viidestä vaihtoehdosta

a) Asenna WordPress, aloita tyhjältä koneelta (vagrant tai liveromppu).
Ota järkevät URLit (permalinks) käyttöön. Vaihda teema. Kirjoita esimerkki
artikkeli ja varmuuskopioi sisältö. Suojaa kone tulimuurilla.
b) Tee WordPressiin oma teema
c) Asenna Drupal ja kokeile sitä
d) Tee WordPressiin oma plugin
e) Tee yksinkertainen CRUD-ohjelma PHP:lla ja MySQL:ä


Tämän viikon kotitehtävä piti valita ylläolevasta listasta.

Valitsin ensimmäiseksi tehtäväksi Wordpressin asentamisen tyhjälle koneelle.

Wordpressin asennus:

Tehtävään käytettävä kone:
MSI P35 Neo
Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
4 GB muistia
Käyttöjärjestelmänä Xubuntu 12.04 liveusb:lta buutattuna.

Ensimmäiseksi pitää asentaa LAMP-stackin muut osat, eli apache, php ja mysql.

$ setxkbmap fi suominäppis
$ sudo apt-get update pakettilistauksen päivitys

Ja sitten vain ohjelmien asennukseen...


$ sudo apt-get install apache2

Testaus localhostilla että toimii, jonka jälkeen kotihakemistot käyttöön ja Apachen uudelleenkäynnistys

$ sudo a2enmod userdir  Kotihakemistojen käyttöönotto
$ sudo service apache2 restart Apachen uudelleen käynnistys

Seuraavaksi tein kotihakemistoon public_html kansion ja sinne nanolla index.html tiedoston Hei, Maailma sisältöisenä

$ cd
$ mkdir public_html
$ nano index.html


Testasin toimivuuden avaamalla Firefoxiin localhost/~xubuntu, ja totesin käyttäjäkohtaisen kansion toimivuuden.


Seuraavaksi asensin PHP:n komennolla

$ sudo apt-get install libapache2-mod-php5


ja kävin ottamassa php:n käyttöön käyttäjille muokkaamalla php5.conf tiedostoa

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


ja käynnistin apachen uudelleen.


$ sudo service apache2 restart

Seuraavaksi testasin PHP:n toimivuuden käyttämällä Tero Karvisen mallikoodia.

<?php echo "Hello PHP World, 2+2 is " . (2+2); ?>

$ nano ~/public_html/hello.php

Testasin tämä taas menemällä Firefoxilla http://localhost/~xubuntu/hello.php ja totesin PHP:n toimivaksi.

Seuraavaksi asensin MySQL:n komennolla:

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

ja annoin asennuksen aikana salasanan MySQL:n rootille.

Asensin vielä phpMyAdminin jos sattuisin sitä tarvitsemaan

$ sudo apt-get install phpmyadmin

Seuraavaksi asensin ja purin Wordpressin viimeisimmän version:

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


Tämän jälkeen palasin luomaan tietokannan Wordpressille.

$ mysql -u root -p
ja kirjauduttiin sisään aikaisemmin antamalla vahvalla salasanalla.

Luodaan Wordpressille tietokanta:
mysql> CREATE DATABASE wptesti;

ja luodaan käyttäjätunnus
mysql> CREATE USER wptestidude@localhost IDENTIFIED BY 'tähänihantuskaisenhyväsalasana';


ja annetaan oikeudet tietokantaan
mysql> GRANT ALL PRIVILEGES ON wptesti.* TO wptestidude@localhost;

Näin tietokanta ja käyttäjä on luotu WordPressiä varten, ja voidaan siirtyä sen asentamiseen.

Aloitin WP:n asennuksen kirjoittamalla firefociin sen osoitteen  http://localhost/~xubuntu/wordpress/ ja aloin luomaan pyydettyä asetustiedostoa..






















..antamalla pyydetyt tiedot..






















...asennusohjelma ei kuitenkaan saanut tiedostoa tehtyä, joten luotiin tämä wp-config.php manuaalisesti wordpressin kansioon,ja kopioitiin siihen annettu koodi.

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






















Tämän jälkeen palatiin firefoxiin ja ajettiin asennus, johon annettiin sivujen otsikko, käyttäjänimi, salasana, e-mail osoite ja valinta saako hakukoneet löytää sivun.






















Nämä tiedot annettuani, pääsikin jo Wordpressiin kirjautumaan.






















Tämän jälkeen homma onkin muokkausta oman mielen mukaisesti.
Tehtävässä kuitenkin pyydettiin ottamaan permalinksit käyttöön, joten valitsin settings valikon alta permalinks osion ja valitsin haluamani tyylin. Tämän jälkeen ohjelma käski päivittää .htaccess tiedostoon valmiin koodin, joten otin siitä kopion ja liitin sen suoraan tiedostoon.


















Unohdin tässä kohtaa enabloida mod_rewriten, eikä permalinksit toimineet.

Siispä:

$ sudo a2enmod rewrite
ja uudelleen käynnistys

$ sudo service apache2 restart.

Ja niin lähti permalinksit toimimaan...






















Teeman vaihtaminen onnistuu kätevästi Appearance -> themes -valikosta, josta voi valita haluamansa ulkoasun. Valinnan jälkeen tein vielä testipostauksen...























Varmuuskopiointi onnistuu mainiosti Tools ->export valikosta, josta voi valita mitä otetaan talteen. Itse otin toki kaiken. Tällöin luodaan xml-tiedosto, joka pitää sisällään kaiken sivuston materiaalin, kommentit, artikkelit, kommentit jne.

Lopuksi piti suojata kone vielä tulimuurilla.

$ sudo ufw allow 80/tcp
$ sudo ufw allow 22/tcp

Konfiguroitiin muuri sallimaan HTTP ja SSH porttien yhteydet.
Tämän jälkeen vielä käynnistin muurin ja tarkastin sen toimivuuden.

$ sudo ufw enable
$ sudo ufw status

Näin on tehtävä valmis, mutta toinen tehtävä jatkuu myöhemmin...

Lähteet:

 http://terokarvinen.com/fedora_linux_apache_mysql_php.html

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