LAMP-pinon asennus ja ongelmat

X-Telnet Oy:n wiki

Loikkaa: valikkoon, hakuun
Tämä artikkeli tai osio on keskeneräinen. Voit auttaa täydentämällä artikkelia.

Tälle sivulle on tarkoitus kerätä hyödyllisiä tietoja LAMP-pinon asennuksesta ja siihen liittyvistä ongelmista.

Sisällysluettelo

[muokkaa] Ennen kuin aloitat

Paras tapa asentaa LAMP on edetä kirjainjärjestyksessä. (Linux, Apache, MySQL, PHP) [1]

[muokkaa] Asioita, jotka on hyvä tietää

  • Paikallisverkon tiedot
    • IP-osoitteet
    • Isäntänimet
    • Aliverkot
  • (Tarkka) käyttöjärjestelmän versio
  • Palomuurin (tai IPtablesin yms.) asetukset
    • Mitkä portit ovat auki/kiinni?
    • Mitä protokollia on sallittu?
    • Koneelta/lähiverkosta/maailmalta tulevat kutsut?
  • Onko asennettuna häiritseviä sovelluksia?
    • Skype (Tykkää portista 80)
    • HTTP-suodattimet (mainokset tms.)

[muokkaa] Linux

[muokkaa] Apache

[muokkaa] MySQL

MySQL kirjoittaa lokinsa tiedostoihin isäntänimi.err and isäntänimi.log, missä isäntänimi on koneen isäntänimi.

[muokkaa] PHP

<?php phpinfo(); ?>, tulostaa PHP-asennuksen tiedot. Älä jätä tätä komentoa sisältävää sivua julkiselle sivustolle, sillä voit paljastaa asetustietoja ulkopuolisille.

[muokkaa] Tarkistuslista

  1. Ovatko tietokone ja käyttöjärjestelmä käynnissä? Ovatko ne kiinni verkossa?
  2. Onko Apache käynnissä?
    1. Onko Apachen prosessi käynnnissä?
    2. Saako Apachea pingattua?
    3. Aukeavatko tiedostot web-selaimessa?
  3. Onko MySQL käynnissä?
  4. Onko PHP käytössä?
    1. Ajetaanko PHP-tiedostossa oleva koodi?
  5. Saako PHP MySQL-yhteyden?
  6. Saako ulkomaailmasta yhteyden palvelimelle?
  7. Ovatko kirjastojen ja laajennusten versiot yhteensopivia keskenään?

[muokkaa] Versioinnista

Apachen, MySQL:n ja PHP:n yhteiskäyttö edellyttää yhteensopivia versioita kirjastoista, joilla komponentit keskustelevat keskenään. Versioiden hallinta voi olla erityisen hankalaa, jos koneessa on useita eri versioita.

Kirjasto- tai asetustiedosto voi latautua eri paikasta, kun mistä oletettiin. Esimerkiksi PHP voi etsiä asetustiedostoaan C-levyn juuresta tai Windows-hakemistosta.

Ennen ongelmanselvittelyä on syytä tarkistaa, että sovelluksessa on varmasti oikeista paikoista ladatut versiot.

MySQL:n ja PHP:n toimivuuden kannalta on erityisen tärkeää, että PHP:n client-kirjasto on yhteensopiva asennetun MySQL:n kanssa. Monen PHP 4-version mukana tullut MySQL-kirjasto ei suostu toimimaan, jos käytössä on MySQL 5. MySQL 5:ssä salasanat tallennetaan hash-menetelmällä, joka ei ole yhteensopiva MySQL 4.1:n tai vanhempien rajapintamääritysten kanssa.[2]

Windowsissa MySQL:n client-kirjasto on nimeltään libmysql.dll, Unix/Linux-puolella lybmysql.so (tarkista nimet, erityisesti Unix).

PHP:n mukana toimitetun kirjaston MySQL-versiovastaavuus selviää seuraavasta taulukosta

PHP-versio Ilmestyi MySQL-kirjasto
5.2.4 30.8.2007 5.0.45
5.2.3 31.5.2007 5.0.37
5.2.2 3.5.2007 5.0.37
5.2.0 2.11.2006 5.0.22
5.0.0 RC 3 8.6.2004 4.1.3
5.0.0 Beta 1 29.6.2003 MySQL-kirjasto poistettu

[muokkaa] MySQL-yhteyden testaaminen PHP:llä

Seuraavalla PHP-skriptillä voit testata, aukeaako yhteys MySQL-tietokantaan ongelmitta ja onnistuuko järjestelmätietokannan valitseminen aktiiviseksi.

Ennen testaamista sijoita sopivat käyttäjätiedot connect-komennon tunnus- ja salasanamuuttujiin.

<html>
<head><title>MySQL-yhteystesti</title></head>
<body>

<?php
$conn = @mysql_connect("localhost", $tunnus, $salasana);
if (!$conn)
  die("<p>Ongelma MySQL-yhteyden avauksessa: <i>" . mysql_error() . "</i></p>");
else
  echo("<p>MySQL-yhteyden avaus onnistui.</p>");

if (!@mysql_select_db("mysql", $conn))
  die("<p>Tietokannan 'mysql' aktivointitesti epäonnistui: <i>" . mysql_error() . "</i></p>");
else
  echo("<p>Tietokannan 'mysql' aktivointitesti onnistui.</p>");

mysql_close ($conn);
echo("<p>MySQL-yhteys suljettu.</p>");
?>
</body>
</html>

Vaihtoehtoisesti voit käyttää tätä muotoa, jossa hyödynnetään PHP 5:n olio-ominaisuuksia ja PDO-kirjastoa:

<html>
<head><title>MySQL-yhteystesti</title></head>
<body>

<pre>
<?php
try {
   $dbh = new PDO('mysql:host=localhost;dbname=mysql', $tunnus, $salasana);
   foreach ($dbh->query('SELECT description from help_topic WHERE name = "SELECT"') as $row) {
      print_r($row);
   }
   $dbh = null;
} catch (PDOException $e) {
   print "Virhe " . $e->getMessage() . "<br/>";
   die();
}
?>
</pre>

</body>
</html>

Testiskripti näyttää toimiessaan MySQL:n SELECT-komennon ohjetekstin.

[muokkaa] Lähteet

  1. ^ http://fedorasolved.org/server-solutions/lamp-stack/
  2. ^ http://dev.mysql.com/doc/refman/5.0/en/old-client.html

[muokkaa] Linkkejä

Henkilökohtaiset työkalut