Strona 1 z 1

: 14 stycznia 2011, 11:24
autor: brandon
Mam problem z poprawnym zainstalowaniem środowiska chroot lighttpd.

Przedstawię może jakie czynności wykonywałem:
  1. Instalujemy PHP z MySQL

    Kod: Zaznacz cały

     apt-get install lighttpd php5-cgi php5-mysql mysql-server
  2. Zakładamy katalog:

    Kod: Zaznacz cały

    mkdir /chroot
    mkdir /mnt/tmp/
    chmod 1777 /mnt/tmp/
    mkdir /mnt/etc
    mkdir -p /mnt/var/log/lighttpd
    chown www-data:www-data /mnt/var/log/lighttpd
    mkdir -p /mnt/var/tmp/lighttpd/cache/compress/
    chown www-data:www-data /mnt/var/tmp/lighttpd/cache/compress/
    mkdir -p /mnt/var/cache/lighttpd/uploads
    chown www-data:www-data /mnt/var/cache/lighttpd/uploads
    mkdir -p /mnt/home/lighttpd
    chown www-data:www-data /mnt/home/lighttpd
    chmod 0700 /mnt/home/lighttpd
  3. Skrypt l2chroot:

    Kod: Zaznacz cały

    #!/bin/bash
    BASE="/mnt"
    
    if [ $# -eq 0 ]; then
      echo "Syntax : $0 /path/to/executable"
      echo "Example: $0 /usr/bin/php5-cgi"
      exit 1
    fi
    
    [ ! $BASE ] && mkdir -p $BASE || : 
    
    # iggy ld-linux* file as it is not shared one
    FILES="$(ldd $1 | awk '{ print $3 }' |egrep -v ^'\(')"
    
    echo "Copying shared files/libs to $BASE..."
    for i in $FILES
    do
      d="$(dirname $i)"
      [ ! -d $BASE$d ] && mkdir -p $BASE$d || :
      /bin/cp $i $BASE$d
    done
    
    # copy /lib/ld-linux* or /lib64/ld-linux* to $BASE/$sldlsubdir
    # get ld-linux full file location
    sldl="$(ldd $1 | grep 'ld-linux' | awk '{ print $1}')"
    # now get sub-dir
    sldlsubdir="$(dirname $sldl)"
    
    if [ ! -f $BASE$sldl ];
    then
      echo "Copying $sldl $BASE$sldlsubdir..."
      /bin/cp $sldl $BASE$sldlsubdir
    else
      :
    fi
    
    # chmod +x /bin/l2chroot
    # mkdir -p /mnt/usr/bin
    # cp /usr/bin/php5-cgi /mnt/usr/bin/
    # cp /usr/bin/php5 /mnt/usr/bin/ 
    
    # cd /mnt/etc/
    # cp -avr /etc/php5 .
    
    Kopiowanie plikow konfiguracyjnych:
    
    # cp /etc/hosts /mnt/etc/
    # cp /etc/nsswitch.conf /mnt/etc/
    # cp /etc/resolv.conf /mnt/etc/
    # cp /etc/services /mnt/etc/
    # cp /etc/localtime /mnt/etc/
    
    # /bin/l2chroot /usr/bin/php5-cgi
    # /bin/l2chroot /usr/bin/php-cgi
    
    
    # cp /lib/ld-linux.so.2 /mnt/lib
    
    # dpkg -L php5-mysql
    
    # mkdir -p /mnt/usr/lib/php5/20060613+lfs
    # cp /usr/lib/php5/20060613+lfs/mysql.so /mnt/usr/lib/php5/20060613+lfs/
    # cp /usr/lib/php5/20060613+lfs/mysqli.so /mnt/usr/lib/php5/20060613+lfs/
    # cp /usr/lib/php5/20060613+lfs/pdo_mysql.so /mnt/usr/lib/php5/20060613+lfs/
    
    # /bin/l2chroot /usr/lib/php5/20060613+lfs/mysql.so
    # /bin/l2chroot /usr/lib/php5/20060613+lfs/mysqli.so
    # /bin/l2chroot /usr/lib/php5/20060613+lfs/pdo_mysql.so
    
    # lighty-enable-mod fastcgi
  4. Pozostaje jeszcze edycja pliku konfiguracyjnego Lighttpd (/etc/lighttpd/lighttpd.conf). edytujemy linie:

    Kod: Zaznacz cały

    server.chroot  = "/mnt"
    server.document-root  = "/home/lighttpd/"
    Z poziomu chroot będzie ono niedostępne dlatego musimy zmienić jego pomożenie. Najpierw utworzymy katalog i zmienimy jego właściciela na mysql:

    Kod: Zaznacz cały

    mkdir -p /mnt/var/run/mysqld/
    chown mysql /mnt/var/run/mysqld/
  5. Następnie edytujemy plik konfiguracyjny MySQL (/etc/mysql/my.cnf) i zmieniamy miejsce gdzie ma być zapisane gniazdo:

    Kod: Zaznacz cały

    [client]
    socket = /chroot/var/run/mysqld/mysqld.sock
    
    [mysqld_safe]
    socket = /chroot/var/run/mysqld/mysqld.sock
    
    [mysqld]
    socket = /chroot/var/run/mysqld/mysqld.sock
    
    Debian posiada dodatkowe skrypty monitorujące pracę MySQL, musimy je powiadomić o tym, że plik gniazda zmienił swoje domyślne położenie. Edytujemy plik /etc/mysql/debian.cnf i sekcję socket ustawiamy na: socket = /chroot/var/run/mysqld/mysqld.sock
    Teraz możemy zrestartować serwer bazy danych oraz lighttpd:

    Kod: Zaznacz cały

    /etc/init.d/mysql restart
     /etc/init.d/lighttpd restart
  6. Oraz dodałem wirtualne hosty w /etc/lighttpd/lighttpd.conf:

    Kod: Zaznacz cały

    ### VirtualneHosty
    include "virtualhost/domena.pl"
    #fastcgi.server = ( ".php" => ((
    #                     "bin-path" => "/usr/bin/php5-cgi",
    #                     "socket" => "/tmp/php.socket",
    #                 )))
    
  7. I wedle poradnika wszystko cacy, powinno dzałać, lecz wyświetla przeróżne błędy m.in:

    Kod: Zaznacz cały

    2010-01-12 16:10:46: (log.c.75) server started
    2010-01-12 16:10:46: (mod_fastcgi.c.1047) the fastcgi-backend /usr/bin/php-cgi failed to start:
    2010-01-12 16:10:46: (mod_fastcgi.c.1051) child exited with status 9 /usr/bin/php-cgi
    2010-01-12 16:10:46: (mod_fastcgi.c.1054) If you're trying to run PHP as a FastCGI backend, make sure you're using the FastCGI-enabled version.
    You can find out if it is the right one by executing 'php -v' and it should display '(cgi-fcgi)' in the output, NOT '(cgi)' NOR '(cli)'.
    For more information, check http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI#preparing-php-as-a-fastcgi-programIf this is PHP on Gentoo, add 'fastcgi' to the USE f$
    2010-01-12 16:10:46: (mod_fastcgi.c.1358) [ERROR]: spawning fcgi failed.
    2010-01-12 16:10:46: (server.c.908) Configuration of plugins failed. Going down. 
Czy ktoś spotkał się może już z podobnymi błędami i rozwiązał problem bo nawet szukanie tych błędów przez Google.pl nie daje u mnie oczekiwanych rezultatów?
Czy ktoś może mi w tym przypadku podpowiedzieć bo coś nie tak jest z tym fastcgi?

Dodane:
Jakieś podpowiedzi co do tych błędów - fastcgi?

: 18 stycznia 2011, 18:50
autor: czarownik
Dokładnie w logach masz napisane co zrobić

Kod: Zaznacz cały

http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI#preparing-php-as-a-fastcgi-program
włącz debug fastcgi zgodnie instrukcja na stronie i zobacz jakich plików Ci brakuje

Kod: Zaznacz cały

 fastcgi.debug = 1