Kirjoittaja Aihe: Vinkkejä Apachen asennukseen liittyen  (Luettu 3117 kertaa)

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vinkkejä Apachen asennukseen liittyen
« : 19.02.18 - klo:20.51 »
Tänne ketjuun kannattaa jatkaa perään Apachen asennukseen tai ylläpitoon liittyviä juttuja, jotka voi säästää vaivaa ja ongelmia seuraavalla kerralla.
Avaanpa tämän heti tuoreen asennuksen yhteydessä vastaan tulleella kummallisuudella.
Asennettu oli "apache2" ja "php7.0"+ jotain tuohon liittyneitä lisukkeita.  Tuloksena oli käynnistymätön Apache ja virheissä näkyi tämmöistä:
Lainaus
There is more than one MPM loaded. Do not proceed due to undefined results
ERROR: Module mpm_ does not exist!
apache2_switch_mpm Switch to prefork failed. Rolling back to
ERROR: Could not switch to prefork MPM, not enabling PHP 7.0
Koodia: [Valitse]
sudo a2dismod
näytti, että kaksi erityyppistä mpm-modulia oli määritetty käynnistymään:
Lainaus
Your choices are: access_compat alias auth_basic authn_core authn_file authz_core authz_groupfile authz_host authz_user autoindex cgi deflate dir env filter mime mime_magic mpm_event mpm_prefork negotiation php7.0 reqtimeout rewrite setenvif status
eli mpm_event ja mpm_prefork.
Poistin tuolta mpm_event: in ja jätin mpm_preforkin.

Seuraavaksi tarkistus, joka kannattaa tehdä aina konffausmuutosten jälkeen ennen uudelleen käynnistystä:

Koodia: [Valitse]
sudo apache2ctl configtest
Lainaus
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/conf.d/virtual.conf:2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Nuo ovat normaaleja viestejä, eivät estä käynnistymistä. 

Koodia: [Valitse]
sudo service apache2 start... ja käynnissä oli.

Tein virtuaalidomaini määritykset tuossa vaiheessa ja kopioin datat toiselta koneelta.   Testiä käyntiin, mutta jotain oli merkillisellä tavalla pielessä tällä uudella koneella:  Webbiselaimella tuli vuoroon 404 File not found ja taas sivu löytyi ok.   Testasin curl: in avulla seuraavaksi, tältä se näytti vuoroon aivan miten sattui:
Lainaus
HTTP/1.1 404 Not Found
Date: Mon, 19 Feb 2018 16:53:41 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1
Lainaus
HTTP/1.1 200 OK
Date: Mon, 19 Feb 2018 16:53:39 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Fri, 08 Mar 2013 08:52:20 GMT
ETag: "1a45-4d765f0e43900"
Accept-Ranges: bytes
Content-Length: 6725
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

Oli ideat aika vähissä, miksi asennus toimi 2 muulla Apache-koneella ok, mutta tämä uusi reistaili.   Näkyvää syytä ei löytynyt aivan pienellä vaivalla. Apache oli tismalleen sama versio kuin toimivassa kokoonpanossa, konffaukset oli kopioitu toisesta asennuksesta.  "a2dismod" näytti, että kaikki ladatut modulit pitäisi olla samoja.  Huomiota kiinnitti pieni sivuseikka:  Apache tunkee väkisin virheet tuossa iso-8859-1 muodossa vaikka muuten toimii UTF-8 asetuksilla.  Tuo on ilmeisesti Apachen ominaisuus/omituisuus, johon en löytänyt lääkettä:

https://stackoverflow.com/questions/20283301/set-charset-in-errordocument-messages

Jäljille johti yksi havainto, mitähän ajattelet tästä:

Koodia: [Valitse]
sudo service apache2 stop
root@Web01:/etc/apache2# pgrep apache
3575
3578
3579
 
Koodia: [Valitse]
ps -ef | grep -i apache
root      1682 31370  0 20:04 pts/0    00:00:00 grep --color=auto -i apache
root      3575     1  0 12:51 ?        00:00:02 /usr/sbin/apache2 -k start
www-data  3578  3575  0 12:51 ?        00:00:13 /usr/sbin/apache2 -k start
www-data  3579  3575  0 12:51 ?        00:00:13 /usr/sbin/apache2 -k start

Käynnissä oli prosesseja, jotka eivät olleet hallinnassa. En ala arvaamaan tarkemmin, mistä nuo olivat jääneet mutta viittaa vahvasti silti siihen alkutilanteeseen useammasta mpm-modulista.

Koodia: [Valitse]
sudo killall apache2
sudo service apache2 start

Kaikki kunnossa eikä enää puolet ajasta 404 sivuja.







« Viimeksi muokattu: 19.02.18 - klo:20.55 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Vinkkejä Apachen asennukseen liittyen
« Vastaus #1 : 20.02.18 - klo:12.42 »
Apachen ajaminen edustalla

Tämän kokeen ajaksi korotan itseni rootiksi:
Koodia: [Valitse]
sudo -s
Apache näyttää käynnistymisensä kun sitä ajaa edustalla käyttäen -X vipua.   Käynnistyminen tarvitsee kuitenkin joitakin ympäristömuuttujia, jotka pitää asettaa ensin.  Tarvittavat ympäristömuuttujat ovat /etc/apache2/envvars tiedostossa, jonka pystyy ajamaan.  Kannattaa kuitenkin huomata, että nuo ympäristömuuttujat pitää saada nykyiseen ympäristöön, suora ajaminen muuttaa vain käynnistetyn aliprosessin ympäristöä eikä nykyistä. Asian voit todeta ajamalla tuon tiedoston:

Koodia: [Valitse]
/etc/apache2/envvars 
ja katsomalla "env" komennolla tuloksen (mitään ei muuttunut).
Oikea keino muutta nykyistä ympäristöä on käyttää ns. "source" -menetelmää, jota voi kutsua kahdella eri syntaksilla:

Koodia: [Valitse]
source /etc/apache2/envvars 
tai "piste välilyönti" menetelmällä:
Koodia: [Valitse]
. /etc/apache2/envvars
Molemmat tekevät täysin saman asian. Tuon jälkeen voi käynnistää Apachen -X vivun kanssa ja kannattaa samalla korottaa myös virheilmoitusten tasoa "debug" -tasolle, jolloin näkee mitä Apache lataa käynnistyessään:

[Tue Feb 20 12:51:38.132462 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module access_compat_module from /usr/lib/apache2/modules/mod_access_compat.so
[Tue Feb 20 12:51:38.133114 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module alias_module from /usr/lib/apache2/modules/mod_alias.so
[Tue Feb 20 12:51:38.133486 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module auth_basic_module from /usr/lib/apache2/modules/mod_auth_basic.so
[Tue Feb 20 12:51:38.133862 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module authn_core_module from /usr/lib/apache2/modules/mod_authn_core.so
[Tue Feb 20 12:51:38.134183 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module authn_file_module from /usr/lib/apache2/modules/mod_authn_file.so
[Tue Feb 20 12:51:38.134586 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module authz_core_module from /usr/lib/apache2/modules/mod_authz_core.so
[Tue Feb 20 12:51:38.134899 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module authz_host_module from /usr/lib/apache2/modules/mod_authz_host.so
[Tue Feb 20 12:51:38.135355 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module authz_user_module from /usr/lib/apache2/modules/mod_authz_user.so
[Tue Feb 20 12:51:38.135687 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module autoindex_module from /usr/lib/apache2/modules/mod_autoindex.so
[Tue Feb 20 12:51:38.136271 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module deflate_module from /usr/lib/apache2/modules/mod_deflate.so
[Tue Feb 20 12:51:38.136635 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module dir_module from /usr/lib/apache2/modules/mod_dir.so
[Tue Feb 20 12:51:38.136961 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module env_module from /usr/lib/apache2/modules/mod_env.so
[Tue Feb 20 12:51:38.137311 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module filter_module from /usr/lib/apache2/modules/mod_filter.so
[Tue Feb 20 12:51:38.137652 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module headers_module from /usr/lib/apache2/modules/mod_headers.so
[Tue Feb 20 12:51:38.137977 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module mime_module from /usr/lib/apache2/modules/mod_mime.so
[Tue Feb 20 12:51:38.138315 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module mime_magic_module from /usr/lib/apache2/modules/mod_mime_magic.so
[Tue Feb 20 12:51:38.138658 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module mpm_prefork_module from /usr/lib/apache2/modules/mod_mpm_prefork.so
[Tue Feb 20 12:51:38.138994 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module negotiation_module from /usr/lib/apache2/modules/mod_negotiation.so
[Tue Feb 20 12:51:38.139308 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module rewrite_module from /usr/lib/apache2/modules/mod_rewrite.so
[Tue Feb 20 12:51:38.139544 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module setenvif_module from /usr/lib/apache2/modules/mod_setenvif.so
[Tue Feb 20 12:51:38.139844 2018] [so:debug] [pid 7252] mod_so.c(266): AH01575: loaded module status_module from /usr/lib/apache2/modules/mod_status.so
AH00526: Syntax error on line 243 of /etc/apache2/apache2.conf:
Invalid command 'puppua_jhgjfhkdfjhkhgfkj', perhaps misspelled or defined by a module not included in the server configuration

Tein tahallaan virheen tuonne konffaustiedostoon asian havainnollistamiseksi.

Normaalisti ajettaessa Apache käynnistää useamman prosessin (lukumäärä määritetty /etc/apache2/apache2.conf tiedostossa) mutta käynnistettäessä -X vivulla edustalle käynnistyy vain yksi prosessi.

Palvelinohjelman ajaminen edustalla on joskus hyödyllinen keino selvittää ongelmallisia tilanteita. Siksi hyvin monessa palvelinohjelmassa on jokin vipu tyyliin -X, -F, --debug, jolla sen saa jätettyä päätteeseen käyntiin ilman että se vie itsensä taustalle ajoon.

Ajon saa lopetettua päätteessä painamalla Ctrl-C.

Hieman ympäristöstä
 Jos et halua muutoksia nykyiseen ympäristöön, voit aina käynnistää testailua varten uuden ympäristön (joka on nykyisen ympäristön kopio) yksinkertaisesti komennolla:
Koodia: [Valitse]
bash
ja ajaa kokeet. Lopuksi kun annat komennon:
Koodia: [Valitse]
exit 
olet taas alkuperäisessä ympäristössä (missä alkuperäiset ympäristömuuttujat).   Mikä juju tuossa sitten on?  Uusi ympäristö on kopio nykyisestä ja sisältää KOPIOT nykyisistä ympäristömuuttujista. Tämä kopioympäristö hävitetään, kun siitä palataan exit -komennolla alkuperäiseen (=edelliseen) ympäristöön. Kopioympäristössä tehdyt muutokset häipyvät etkä voi mitenkään sotkea kopioympäristössä alkuperäisen ympäristön muuttujia.
Kuten monet muistavat, ympäristömuuttujat näkee komennolla:
Koodia: [Valitse]
envKomennon antamassa listauksessa isoilla kirjaimilla kirjoitetut ovat muuttujien nimiä ja onmerkin jälkeinen osa on muuttujalle annettu arvo.  Minkä hyvänsä ympäristömuuttujan arvon voi helposti tarkastaa echo -komennolla, dollarimerkki tarvitaan silloin eteen, esimerkiksi USERNAME:
Koodia: [Valitse]
echo $USERNAME root
Ympäristömuuttuja luodaan "export" komennolla ja hävitetään "unset" komennolla:
Koodia: [Valitse]
export KISSA=valkoinen
Koodia: [Valitse]
echo $KISSA
valkoinen
(Tarkasta myös "env" komennolla, että meni ympäristömuuttujaksi eikä jäänyt vain tavalliseksi muuttujaksi. Ympäristömuuttuja periytyy lapsiympäristölle, tavallinen muuttuja ei. )
Koodia: [Valitse]
unset KISSA
Koodia: [Valitse]
echo $KISSA
« Viimeksi muokattu: 20.02.18 - klo:13.48 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.