LAMP-pinon asennus ja ongelmat
X-Telnet Oy:n wiki
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
- Ovatko tietokone ja käyttöjärjestelmä käynnissä? Ovatko ne kiinni verkossa?
- Onko Apache käynnissä?
- Onko Apachen prosessi käynnnissä?
- Saako Apachea pingattua?
- Aukeavatko tiedostot web-selaimessa?
- Onko MySQL käynnissä?
- Onko PHP käytössä?
- Ajetaanko PHP-tiedostossa oleva koodi?
- Saako PHP MySQL-yhteyden?
- Saako ulkomaailmasta yhteyden palvelimelle?
- 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
- ^ http://fedorasolved.org/server-solutions/lamp-stack/
- ^ http://dev.mysql.com/doc/refman/5.0/en/old-client.html

