perjantaina, maaliskuuta 28, 2014

Apache ei käynnisty Arch Linux päivityksen jälkeen

Apache 2.4 päivitys ja php


Arch Linuxin kimurantin päivittämisen jälkeen meni muutama päivä, että luulin kaiken olevan ok, kunnes huomasin, että koneessani oleva web-palvelin Apache ei käynnisty. Apache oli tämän viimeisimmän päivityksen jälkeen Arch Linuxissa päivittynyt 2.2.x -versiosta 2.4.9:ään.

Apache ei enää käynnistynytkään komennolla:

sudo systemctl start  httpd
systemctl status httpd.service -komento valaisi asiaa vähän enemmän ja heitti terminaaliin seuraavanlaista infoa:

httpd: Syntax error on line 59 of /etc/httpd/conf/httpd.conf: Cannot load modules/mod_authn_default.so into server: /etc/httpd/modules/mod_authn_default.so: cannot open shared object file: No such file or directory

Jonkin aikaa asian kanssa pähkäiltyäni hoksasin, että vanha /etc/httpd/conf/httpd.conf ei sinällään ei enää toimi.

Otin varmuuskopiot tiedostosta löytyvistä asetustiedostoista:


$ sudo cp /etc/httpd/conf/httpd.conf /home/sun_tunnus/
$ sudo cp /etc/httpd/conf/httpd.conf.pacnew  /home/sun_tunnus/


Sen jälkeen tein httpd.conf.pacnew -tiedostosta httpd.conf-tiedoston:

sudo mv httpd.conf.pacnew httpd.conf


Kokeilin käynnistää Apachen jälleen kerran:

sudo systemctl start httpd

Tadaa, sehän käynnistyi!

PHP toimimaan Apache 2.4:ssä


Homma ei kuitenkaan vielä ollut valmis, sillä php:tä Apache ei suostunut tunnistamaan.

Etsittyäni tietoa, huomasin, että minun lienee järkevintä asentaa pacmanilla php-fpm.

$ sudo pacman -S php-fpm

Tämän jälkeen kävin tarkistamassa /etc/httpd/conf/httpd.conf -tiedostossa geditillä, että seuraavat rivit ovat poiskommentoidut ja olivathan ne (=ei risuaitaa rivien edessä ;-) ).

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 Sitten kävin muokkaamassa php-fpm.conf-tiedostoa geditillä.


$ sudo gedit /etc/php/php-fpm.conf

Täällä pitää muokata

listen = /run/php-fpm/php-fpm.sock -rivi
riviksi:
listen = 127.0.0.1:9000

Käytännössä voit laittaa vain risuaidan tuon ylemmän rivin eteen ja vastaavasti poistaa risuaidan alemman rivin edestä.

Sitten vain sallitaan php-fpm ja käynnistetään se. Minun Arch Linuxissani tuota sallimista ei tarvittu, vaan käynnistin palvelun vain suoraan alla olevalla start-komennolla.

$ sudo systemctl enable php-fpm
$ sudo systemctl start php-fpm
Ihan vieläkään ei homma ollut valmista kauraa, vaan vähän piti käydä käpystelemässä /etc/httpd/conf/httpd.conf -tiedostoa.

$ sudo gedit /etc/httpd/conf/httpd.conf
Lisäsin tiedoston loppuun seuraavan rivin:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1

Lopuksi korvasin rivin 

LoadModule mpm_event_module modules/mod_mpm_event.so 

rivillä

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Uudelleenkäynnistin Apachen ja phpinfo.php näytti toimivan:


sudo systemctl restart httpd 
Ilmeisesti tämän jälkeen on vielä ongelmia ainakin phpMyAdminin kanssa, mutta se lienee sitten taas toinen tarina ja värkkäys.

EDIT: 4.4.2014 Muokkasin pari kohtaa ohjeesta selkeämmäksi palautteen perusteella.

Ei kommentteja: