Tag: wordpress

Varnish ja AB (apache bench) testaus

Viikkoharjoitus 5, Linux palvelimena -kurssi: http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-7-ict4tn003-kevaalla-2013

Tällä viikolla asennan Varnishin nopeuttaakseni omien web-sivujen latautumista. Testaan vaikutukset AB:lla (apache bench).

Testikoneena toimii sama kone kuin aikaisemmissa raporteissa, eli vanha HP:n t650.fi.

Alkutestaus

Katsotaan ensiksi kuinka hyvin Apache tällä hetkellä avaa sivut. Käytämme sivuna WordPress blogia. Asensin sisällönhallintapalvelun uudelleen userdir:iin, joten osoitteena on nyt 127.0.0.1/~uusiott/wordpress. Annetaan Apache:lle 100 pyyntöä kerralla:

$ ab -n 100 127.0.0.1/~uusiott/wordpress

Tuloksena oli erittäin pienet ajat.

ab n 100

Tulokset eivät olleet luotettavia, joten lisäsin pikku hiljaa vaativuutta. Sain luotettavia tuloksia kyseisillä asetuksilla:

$ ab -n 4000 -c 200 127.0.0.1/~uusiott/wordpress

Tulokset:

ab n 400 c 200

Varnish asennus ja käyttöönotto

Varnish asennetaan kuten melkein kaikki softa:

$ sudo apt-get install varnish

Seuraavaksi tulikin haastavampi osuus: Varnish pitää saada kuuntelemaan porttia 80 ja siirtämään tiedot eteenpäin Apachelle, joka käyttää eri porttia. Eli Apachen ports.conf -tiedostoa ja Varnishin /etc/default/ -hakemistossa olevaa varnish -tiedostoa pitää muokata. Samoin Varnishin omassa /etc/varnish/ -hakemistossa olevaa default.vcl -tiedostoa. Ensiksi kuitenkin sammutetaan apache:

$ sudo service apache2 stop

ja suljetaan portti 80:

$ sudo ufw deny 80

Tämän jälkeen ensiksi menin /etc/default hakemistoon säätämään varnish -tiedostoa. Kohta mitä piti muokata oli tämä:

default varnish conf

Muokattuna se näyttää tältä:

default varnish conf after

Eli portti vaihdettiin 6081:stä 80:een. Seuraavaksi menin /etc/varnish -hakemistoon muokkaamaan default.vcl -tiedostoa. Tämä ei ole pakollista, koska valmiina oleva portti 8080 on hyvä. Jos haluaa käyttää jotain muuta porttia siirtämään Apachelle dataa, sen voi nyt säätää. Elikkä säädettävä kohta:

default varnish port conf

.port -kohta kyseessä siis.

Vielä Apachen ports.conf pitää säätää. Muokattava kohta on heti alussa:

apache ports conf

Listen 80 pitää vaihtaa Listen 8080, tai siihen minkä on säätänyt /etc/varnish/default.vcl -tiedostossa. Jätin sen default.vcl tiedostossa 8080, joten muokkaan ports.conf -tiedostoa siten, että ensimmäisessä Listen kohdassa lukee Listen 80 sijaan Listen 8080. Tämän jälkeen Apache kuuntelee porttia 8080.

Testaus Varnishin käyttöönoton jälkeen

Ajoin saman komennon kuin aikaisemmin:

$ ab -n 4000 -c 200 127.0.0.1/~uusiott/wordpress

Tulokset:

ab n 4000 c 200 after

Eli aika mikä testiin meni laski noin sekunnilla, vastattujen pyyntöjen määrä sekunnissa nousi noin 1200:sta noin 2000:een ja aika yhden pyynnön vastaamiseen laski noin 50 millisekuntia.

Koko toimenpiteeseen meni noin puoli tuntia.

Jos haluaa, että Varnish pistä joitain sivuja ja tiedostoja cacheen, se pitää säätää default.vcl -tiedostossa (/etc/varnish). Tiedostoon pitää kirjoittaa:

if (req.url ~ "^/*hakemisto*\.*tiedostopääte*$) {
   return pass;
}

Tietenkin ilman * -merkkejä. Esimerkiksi jos kyseessä on levykuvia, jotka ovat hakemistossa images:

if (req.url ~ "^/images\.iso$) {
   return pass;
}

Apuna toimi:

Suhteellisen hyvä Varnish asennus opas, jota käytin tunnilla: http://www.euperia.com/website-performance-2/setting-up-varnish-with-apache-tutorial/299

Varnishin säätäminen usealle web-palvelimelle: http://www.lullabot.com/articles/varnish-multiple-web-servers-drupal

Sisällönhallinta Linuxilla

Viikkoharjoitus 4, Linux palvelimena -kurssi: http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-7-ict4tn003-kevaalla-2013

Tällä viikolla asennan WordPress palvelun koneelle, jossa on Apache 2 web-palvelin ja MySQL -tietokantapalvelin.

Testikoneena toimii sama kone kuin aikaisemmassa raportissa, eli vanha HP:n t650.fi.

Valmistelut

Tarvitsen WordPress ohjelmiston, minkä saa wordpress.org -sivustolta. Latasin WordPress tar.gz -tiedoston. Purin sen.

$ tar -xvf wordpress-3.5.1.tar.gz

Kopioin kansion /var/www/ -hakemistoon:

$ sudo mkdir /var/www/wordpress

$ sudo cp -r Downloads/wordpress/* /var/www/wordpress

SQL -palvelimen säätö

Ensiksi piti luoda tietokanta WordPress -sisällönhallintapalvelimelle. Yritin kirjautua MySQL:ään, mutta olin unohtanut salasanan. Tähän auttoi

$ sudo dpkg-reconfigure mysql-server-5.5

Kun olin säätänyt dialogeissa salasanan uudelleen, kirjauduin sisään MySQL -palveluun root -käyttäjänä

$ mysql -u root -p

-p saa mysql:n pyytämään salasanaa.

MySQL:ssä pääsin tekemään uutta tietokantaa. Tämän jälkeen loin uuden käyttäjän ja annoin käyttäjälle kaikki oikeudet uuteen kantaan. Kaikki SQL-lauseet alapuolella

CREATE DATABASE wp_otto;

CREATE USER ‘ottouusihakala’@’localhost’ IDENTIFIED BY ‘tämäeiolesalasanani’;

GRANT ALL ON wp_otto.* TO ‘ottouusihakala’@’localhost’;

Kun tietokanta oli valmis päästin seuraavaan vaiheeseen.

WordPress -palvelun asentaminen

Pistin selaimeen 127.0.0.1/wordpress osoitteeksi. Eteen tuli sivu jossa ilmoitetaan, että wp-config.conf -tiedosto puuttuu.

wordpress no config

Asennusprosessi käynnistyy, kun painaa Create a Configuration File. Sitä kun painaa pääsee vastaavanlaiselle sivulle:

wordpress lets go

Painoin Let’s Go!, ja pääsin sivulle, missä pyydettiin tietokannan tietoja.

wordpress db info

Täytin lomakkeen luomani tietokannan tiedoilla. Table prefix -kohtaan pistin x -kirjaimen eteen. Tiedot olivat oikein ja yhteys tietokantaan onnistui, mutta wordpress ei onnistunut tekemään wp-config.php -tiedostoa itse, joten joudun tekemään sen wordpressin puolesta. Kentässä on kaikki koodi:

wordpress config copy paste

sen kun kopioi ja liittää

$ sudo nano /var/www/wordpress/wp-config.php

ja tallentaa, voi siirtyä eteenpäin asennuksessa. Seuraavassa lomakkeessa täytin laitoin käyttäjätunnuksen ja salasanan. Tärkeätä: pidä rasti ruudussa lomakkeen lopussa, muuten sivua ei voi löytää netistä esim. googlen avulla.

wordpress user info

Install WordPress painike vei sivulle, missä minulle ilmoitettiin asennuksen onnistuneen, ja tarjottiin Log In -painiketta. Kirjauduin sisään palveluun.

Säädin asetuksista permalinks -asetuksia. Laitoin linkkien noudattavan muotoilua päivämäärä/nimi/. Tämän jälkeen piti päivittää .htaccess -tiedosto, mutta sitä ei ollut, joten tein kyseisen tiedoston. Kopioin ja liitin wordpressin antaman koodin tiedostoon ja tallensin. Itse tiedoston tallensin wordpress kansioon.