sunnuntai 16. maaliskuuta 2014

ICT4TN003-12: Wordpress-palvelimen optimoiminen

Aloitin puhtaalta pöydältä, eli Ubuntu 12.04 LTS live-CD:ltä. Asensin aluksi L:ään (Linux) AMP:in (Apache, MySQL ja PHP). Testasin asennukset (tai oikeastaan tässä vaiheessa ainoastaan Apachen) kirjoittamalla Firefoxiin osoitteeksi "localhost". "It works!"-sivu aukesi, kuten pitikin, joten ainakin Apache on asentunut oikein.

Seuraavaksi asensin edellisen tehtävän komennoin Wordpressin ja siirsin sen var/www/-kansioon. Lisäsin yhden kuvallisen artikkelin ja tein nopeasti vastaavan staattisen sivun kopioimalla Firefoxin näyttämän lähdekoodin erilliseen html-tiedostoon. Selvyyden vuoksi kävin vielä muuttamassa dynaamisen sivun nimeä.

Sitten testaamaan! Käytin oppaana tehtävänannossa mainittua sivua ja ajoin ensiksi suoraan sieltä poimitun komennon:

ab -c 500 -n 1000 http://localhost/

Vastaukseksi tuli seuraavaa:

apr_socket_recv: Connection reset by peer (104)
Total of 11 requests completed

Tämän jälkeen kone meni aivan jumiin ja koska live-CD-sessioista ei jää mitään talteen, olisin joutunut aloittamaan jälleen alusta, johon minulla ei ollut enää aikaa. Tämän sijaan päätin tarkastella muiden vastauksia ja oppia niiden kautta.

Lähteet:

sunnuntai 9. maaliskuuta 2014

ICT4TN003-12: WordPress-blogin siirtäminen ".comista" omaan domainiin

Tällä kertaa sovelletaan hieman. Tehtävänantona on WordPressin asentaminen, esimerkkisisällön kirjoittaminen sekä joukko valinnaisia lisätehtäviä. Koska tämä tehtävä menee niin lähelle asiaa, joka minun pitäisi muutenkin tehdä, päätin iskeä kaksi kärpästä yhdellä iskulla.

Eli tarkoituksena on siirtää osoitteessa kaunishumala.wordpress.com jo vajaan vuoden toiminut olutblogi omaan www.kaunishumala.fi-domainiin. Domainin ja virtuaalipalvelimen olen hankkinut jo aiemmin Hostingpalvelu.fi:stä.

WordPressin asentaminen kyseisen palvelun virtuaalipalvelimelle on varsin helppoa, sillä hallintapaneelista löytyy linkki Asennusohjelma. Tämän jälkeen voi valita haluamansa ohjelman sisällönhallintaohjelmissa on WordPressin lisäksi tarjolla muun muassa Joomla ja itselleni töiden kautta hyvinkin tuttu Drupal. Lisäksi tarjolla on foorumi- ja verkkokauppasovelluksia.



Käyn kuitenkin ensin luomassa (edelleen hallintapaneelin kautta) WordPress-käyttäjän MySQL:ään. Tämän jälkeen aloitan varsinaisen asennuksen, jonka aikana pitää valita käytettävä domain ja tarkempi polku. Näiden osalta ei tarvitse muutoksia tehdä, koska haluan, että WordPress-sisältö löytyy domainin juuresta. Käytännössä asennus suoritetaan käyttäjän public_html-kansioon.

Jos haluat asentaa WordPressin käsin suoraan terminaalista, se onnistuu nopeiten, kun annat seuraavat komennot (testattu toisella serverillä):

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

Tämän jälkeen kopiot wordpress-hakemistoon purkautuneet tiedostot siihen hakemistoon, johon haluat WordPressin asentaan. Yleensä tämä on, kuten edellä, käytäjän public_html-hakemisto. Tämän jälkeen asennus jatkuu ohjaamalla selain siihen kansioon, johon tiedostot (ja erityisesti index.php) siirrettiin.

Takaisin omaan asennukseeni, jossa tehdään tietyt valinnat ennen asennusta. Seuraavaksi valitaan versio, kieli ja automaattisen päivityksen sekä varmuuskopioinnin asetukset. Sen jälkeen valitaan admin-tunnuksen nimi, salasana, sähköposti sekä sivuston nimi ja kuvaus. Ja sitten vielä valitaan halutaanko käyttää multi-site-toimintoa, rajoittaa sisäänkirjautumisyrityksiä, luodaanko uusi tietokanta automaattisesti ja niin edelleen.

Sitten painetaan nappia.



Noin 30 sekunnissa asennus on valmis ja on aika siirtyä seuraavaan vaiheeseen, joka on sisällön siirtäminen wordpress.com-blogista omalle palvelimelle. Olen jo ladannut vanhasta blogista XML-tiedoston, joka sisältää käytännössä kaiken muun paitsi kuvat.


Kun siirtotyökalu on ladattu on aika ottaa se käyttöön.



Asennuksen jälkeen pääsen valitsemaan, mitä tehdään mukana tulleille käyttäjile. Muutan nimet yksinkertaisempaan ja keskenään samanlaiseen muotoon. Tämän valinnan alla on jännittävin rasti: "Download and import file attatchments". Voisiko tämä tuoda kuvat vai vaatiiko se enemmän työtä?

Kauniin humalan puolella lataus on vihdoin valmistunut ja selain päätynyt virhesivulle, jolla lukee "Mitään ei löytynyt". Siirtyiköhän loppujen lopuksi yhtään mitään? Vastaus selviää pian: ei siirtynyt. Ei kuvia, ei edes tekstejä. Päätän kokeilla samaa vielä uudestaan, tällä kertaa ilman tiedostoliitteitä.

Tällä kertaa prosessi on nopeampi ja tuloksena toisenlaisia virheitä, joiden päässä rohkaisevasti "All Done. Have fun!"

Ilmeisesti kaikki sisältö oli kuitenkin siirtynyt jo ensimmäisellä kerralla, sillä virheet liittyvät sivuilla jo oleviin tiedostoihin. Litanjan alussa oli kuitenkin se ikävin ilmoitus, jonka mukaan käyttäjätietojen siirto ei onnistunut, joten kaikki sisältö laitetaan adminin nimiin. Tämä on hieman kurjaa, kun kirjoituksia on lähes 300 ja kirjoittajia useampia. Jos kyse olisi vain minusta, ongelma ei olisi näin suuri, mutta tämän kanssa ei voi elää. Toinen vielä ratkaistavaksi jäävä ongelma on kuvien palauttaminen.

Epäilen, että kirjoittajatietojen vääristyminen johtuu siitä, että tekstit ja käyttäjät siirtyivät jo ensimmäisellä yrityksellä, mutta eivät syystä tai toisesta näkyneet. Kun toin niitä toista kertaa, ei uusien käyttäjien luominen samoilla nimillä enää onnistunut, joten Tuo-toiminta muutti tekijät varmuuden vuoksi adminille. Päätän aloittaa alusta ja tyhjennän tietokannan WordPress Reset -lisäosalla.

Kolmas kerta toden sanoo? Kyllä nyt näyttäisi olevan kaikki tekstit oikeilla kirjoittajilla järjestelmässä.

Entäs ne kuvat? Käyttämäni ohjeen lopusta löydän linkin, jossa kehotetaan käyttämään Import External Images -lisäosaa. Se ei kuitenkaan sovellus, koska alkuperäisessä blogissa kuvat on sijoitettu gallerioihin, ei suoraan <img>-tägeihin. Tähän ei näytä olevan mitään järkevää ratkaisua, sillä lukuisilla foorumeilla viime vuosina esitettyihin kysymyksiin ei ole tullut ratkaisevia vastauksia.

Päätän siis kokeilla vielä kerran WordPressin nollaamista ja sisällön tuomista tuon "Download and import file attatchments"-rastin kanssa. Muistan vanhan sananlaskun siitä, että yksi hulluuden määritelmistä on tehdä sama asia uudelleen ja odottaa toista lopputulosta.

No, saan kuitenkin toisen lopputuloksen, joskaan se ei ole aiempaa mieluisampi: 500 Internal Server Error. Osa kuvista on kuitenkin siirtynyt, teksteistä ei ole tietoakaan. Kokeilen seuraavaksi sitä, että jätän kaikki jo siirtyneet aloilleen ja teen prosessin uudestaan: josko tällä kertaa pääsisin vähän pidemmälle...

Jyräämistaktiikka näyttäisi toimivan. Tekstejä ei ole edelleenkään siirtynyt, mutta toisella kierroksella kuvien määrä tuplaantui noin 75:stä 150:een. Koska kuvia on lähes 500, voisi olettaa, että kierroksia vaaditaan ainakin seitsemän, ehkä kahdeksas teksteille.

Ihan noin montaa ei tarvittu, mutta noin kuuden kierroksen jälkeen kaikki on siirretty ja näyttäisi toimivan. Tai ainakin sillä tasolla, että kuvat ovat löytäneet oikeat paikkansa. Seuraavaksi on aika ottaa käyttöön sama teema kuin alkuperäisessä blogissa. Se onnistuu mutkattomasti hallintasivujen kautta: ensin ladataan haluttu teema sivuilla ja sen jälkeen valitaan se aktiiviseksi:


Tämä onnistuu ilman suurempia mutkia, mutta joko teemaa on muutettu tai sitten wordpress.com mahdollisti perusteellisemman "customoinnin" sillä fontit eivät täsmää. Ja kuvatkin näkyvät hieman väärällä tavalla. Ulkoasuasetuksista löytyy kuitenkin asetus fontin vaihtamiseen.

Nyt vielä gallerian tyyppi uusiksi "and I'm all set"...

Galleriatyypin vaihtaminen ei kuitenkaan onnistu, sillä koko valintavaihtoehtoa ei enää ole näkyvissä. Googlailu paljastaa, että kyseessä on tyypillinen ongelma, sillä tyypit kuuluvat vain .com-hostattuihin sivuihin. Ratkaisuksi tarjotaan Jetpack-lisäosaa.

Tarvitsemani tiled-tyyppi ei kuitenkaan tule automaattisesti näkyviin vaan se on aktivoitava erikseen Jetpackin asetuksista. Sitten on seuraavan haasteen vuoro: miten muuttaa nopeasti ja yksinkertaisesti kaikkien artikkelien galleriatyyppi rectangularista tilediksi.

Ei mutta hei! Alunperin (edellisessä blogissa) tiled-tilassa olleet galleriat ovat nyt (kun kyseinen tyyppi on aktivoitu) muuttuneet automaattisesti siihen. Upeaa, olin jo ajatellut, että joudun ajamaan muutoksia suoraan tietokantaan. Tosin, galleriat piirretään edelleen liian kapeina (491 pikseliä) eivätkä ne siten aiemman blogin tapaan täytä koko palstaa.

Koska teeman muokkaus ei korjannut leveysongelmaa vaan rikkoi sivun, päätin kokeilla seuraavaksi Custom Content Width -lisäosaa. Tämä toimii, eikä ennakkoluuloistani poiketen edes riko teeman responsiivisuutta.

Permalinksit kuntoon asetuksista ("Osoiterakenne"):



Vielä pientä säätöä kuten Jetpackin mahdollistama Facebook-vimpaimen lisääminen sekä faviconin asettaminen ja sivu alkaa vihdoin näyttää samalta kuin alunperin:


Olin muuten onnistunut faviconia lisätessä rikkomaan header.php-tiedoston, minkä seurauksena jokaiselle sivulle ilmestyi ylimääräinen muotoilematon otsikko vasempaan alakulmaan. Onneksi tämä oli helppo korjata yhdellä ">"-merkillä.

Olisikohan tehtävä tässä? Pakolliset (WordPress-asennus ja esimerkkisisältö) on ainakin tehty. Sitten pitäisi tehdä neljä vapaavalintaista. Näistä ainakin teeman vaihtaminen, sisällön palauttaminen puhtaaseen asennukseen, lisäosan (plugin) asentaminen ja toimivien kuvien lisääminen on tehty, joten tehtävä pulkassa!

Lähteet:

sunnuntai 2. maaliskuuta 2014

ICT4TN003-12: Virtuaalipalvelimet ja "name based virtual hosting" Apachella

Tällä kertaa tehtävänä oli harjoitella Apachen käyttöä hankkimalla virtuaalipalvelin. Itse hankin tällaisen harjoittelu- ja kokeilukäyttöön ranskalaiselta Netcieliltä jo reilu kuukausi sitten. Päädyin palveluun, koska se oli yksi edullisimmista jollain Ubuntu-sivustolla listatuista palveluista.

Palvelu maksaa 4,5 euroa kuukaudessa ja siihen sisältyy 10 gigatavua palvelintilaa, jonka pyörittämiseen on varattu "yhden ytimen teho" ja 256 megatavua RAM-muistia. Tiedonsiirtonopeudeksi luvataan 15 megabittiä sekunnissa eikä kokonaissiirtomäärää ole rajoitettu. Viimeisimmästä lupauksesta tosin sain kuulla tunnilla, ettei tämä käytännössä koskaan pidä paikkaansa vaan jossain vaiheessa tulee raja vastaan.

Muista palveluun liittyvistä lisätoiminnoista keskeisimmäksi nousi mahdollisuus SSH-yhteyteen, joka vaikutti olevan tässä hintaluokassa enemmän poikkeus kuin sääntö.

Edullisesta hinnasta ja vaatimattomasta palvelutasostaan huolimatta palvelu on toiminut sitä käyttämäni noin kuusi viikkoa moitteettomasti.

Olen myös oppinut omalla palvelimella leikkiessäni yhtä sun toista. Esimerkiksi yksinkertainen php-etusivuni meni rikki, kun aktivoin käyttäjäkansiot edellisen tunnin harjoituksissa antamalla /etc/apache2/mods-enababled -kansiossa komennot:

sudo ln -s ../mods-available/userdir.load
sudo ln -s ../mods-available/userdir.conf

Myöhemmin tunnilla opin, että sama olisi hoitunut ketterämmin komennolla:

sudo a2enmod userdir

Apachen uudelleen käynnistyksen jälkeen käyttäjäkansioiden aktivoiminen siis johti siihen, ettei serveri enää ajanut sivuilla olevaa php-koodia vaan tulosti sen sellaisenaan näkyviin. Hämmästelin asiaa jonkin aikaa löytämättä Googlella mitään kunnollista ohjetta tai apua. Lopulta löysin Apachen mods-available-kansion php5.conf-tiedostosta kohdan, josta ongelman syy ja ohjeet postamiseen löytyivät:



On tietysti aivan ymmärrettävää, ettei oikeuksia php:n ajamiseen haluta automaattisesti antaa kaikille käyttäjille, mutta omassa tapauksessani, jossa a) olen ainoa käyttäjä ja b) sivuston juuri on omassa käyttäjähakemistossani, siitä on haittaa ei hyötyä. Siispä toimin ohjeiden mukaisesti ja vuosiluku alkoi taas näkyä sivulla, kuten pitikin.

No, tämä ei varsinaisesti kuulunut tehtävänantoon, eli siirrytään itse asiaan nimeltä nimipohjainen virtuaalipalvelin Apachella. Tämän teen oman virtuaalipalvelimeni sijaan suljetummassa ympäristössä, eli aiemmista tehtävistä tutulla testikoneella.

Vaikka yritin suorittaa tehtävän pilkulleen verkosta löytämieni ohjeiden mukaisesti, en saanunt enää Apachea käyntiin. Httpd.conf jäi tämän näköisesksi:



Uudelleenkäynnistys antoi tällaiset virheet:



Ja Apachen omasta error.logista ei juurikaan ollut apua varsinkaan, kun sinne tulostui sama rivi, vaikka olin tehnyt käsin tuon lokitiedoston:



Kokeilin tehtävää vielä ohjeilla, jotka olivat kurssitoverilla toimineet, mutta tämäkään ei toiminut. Mahtaako sitten johtua, että käytössäni oli vanhempi Ubuntu, josta en esimerkiksi löytänyt lisäsäätöä vaatinutta /etc/NetworkManager/dnsmasq.d/hosts.conf-tiedostoa.

Lähteet: