Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Unix socketit chrootatussa ympäristössä

RQ [03.05.2013 08:57:05]

#

Hei,

Pyörittelen useampaa virtualhostia nginx-palvelimella. Jokainen hosti on chrootattu omaan kansioonsa (/home/vhosts/<vhost>). Homma pelittää muuten hyvin, mutta tämä estää mm. unix socketien käytön MySQL ja PHP välillä.

    // Tämä toimii, koska PDO käyttää TCP/IP yhteyttä
    self::$instance = new PDO("mysql:host=127.0.0.1;dbname=", '', '');
    // Tämä ei toimi, koska PDO käyttää unix socketteja
	self::$instance = new PDO("mysql:host=localhost;dbname=", '', '');

Alemmasta rivistä PHP valittaa:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/run/mysqld/mysqld.sock)

Syy on selvä; PHP yrittää etsiä mysqld.sock-tiedostoa chrootin sisältä, mistä sitä ei tosiaankaan löydä.

Olen nyt pyörinyt ympäri Googlea, ja yrittänyt selvittää voiko MySQL:n pakottaa käyttämään TCP/IP yhteyttä vaikka yhteyttä luodessa käyttäisi host=localhost määritettä. Tietäiskö joku teistä viisaammista ratkaisua tähän?

Metabolix [03.05.2013 09:25:56]

#

Onko jokin syy käyttää nimeä localhost, kun osoite 127.0.0.1 kuitenkin on kaikkialla sama asia?

RQ [03.05.2013 09:31:45]

#

Ei erityisemmin, lähinnä vain häiritsee se, että asia "toimii puoliksi".
Itsellä ei ole koskaan tullut vastaan webhotellia, jossa joko vain 127.0.0.1 tai localhost toimisi, joten mietityttää miten muut ovat asian toteuttaneet.

Korim [03.05.2013 10:07:24]

#

Luo chrootteihin tuo /var/run/mysqld hakemisto ja liitä tuo oikea hakemisto siihen?

mount -o bind /var/run/mysqld /home/vhosts/<hosti>/var/run/mysqld

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta