Jūs neprisijungęs
Aukštyn Tema Programinė įranga / GNU/Linux, bei Unix Operacinės Sistemos / lighttpd + chroot
- s2 Data 2009-02-18 14:43 Redaguota: 2009-02-18 17:08
Man vienas pažįstamas parašė, o aš deja nieko apie lighttpd ir chroot nekertu:

> man ant busybox linux nesiseka padaryt lighttpd webserverio su php uzdaryto I chroot.
> pats web severis jei be php tai startuoja sekmingai, bet jei su php tai nestartuoja. nu
> zodziu as linku turiu milijona, viska padariau kaip ten raso nu kad ir pvz :
>
> http://www.cyberciti.biz/tips/howto-setup-lighttpd-php-mysql-chrooted-jail.html
> http://www.google.com/search?hl=en&q=lighttpd+chroot&btnG=Google+Search&aq=f&oq=
>
> tai va zodziu nukopinau as ta php su lighttpd I /wwwroot/etc ir taip- toliau ir pabandziau strace
> padaryt, tai tas velnias php panasu kad librarius loadina ne is /wwwroot/lib, bet is savo standartinio
> folderio /ffp/lib
> nu jau uzsipisau. buk zmogus padek nors ant kelio uzvest.jau forumus prirasinejau ir kokio tik velnio
> nedariau bet pagalbos negaunu. gal gali ko nors uzklaust jei pats nezinosi ?
>
> nu busiu dekingas juodai. as gi dabar ziaurus linuxistas :Smile:
> is anksto dekavoju....


Jei kas padėsit, būsim dėkingi abu.  Tada duosiu žmogui gijos URL ir tegul skaito :)

Edit: patikslinau pavadinimą
Pagrindinė Meisteris Data 2009-02-18 15:38
O tas žmogus gal galėtu truputį logais pasidalinti? na kad ir to paties lighthttpd?
Pagrindinė - Kašiukas Data 2009-02-18 16:04
O konfigę nurodyta iš kur php modulį jamt?

Nežinau kaip lighthttpd, bet apačyje tai konfige LoadModule <kelias_iki_modulio> reikia daryti.

P.S. Gal čia ir per daug nusišnekėjau, labai nepykit. :-))
Pagrindinė - alpha Data 2009-02-18 16:37
zodziu nieko nebus, teko prisilogint "ant greito" ir man :)
na lighttpd.conf faile nusirodo kelias iki php-cgi binaru, bet tie binarai libus loadina kazkodel is instaliacinio path, o ne is /wwwroot
ok, vat imetu loga jei php soketo folderis nurodytas /wwwroot/tmp:

2009-02-15 17:12:54: (log.c.97) server started
2009-02-15 17:12:54: (mod_fastcgi.c.924) bind failed for: unix:/mnt/HD_a2/www/tmp/php-cgi.socket-0 No such file or directory
2009-02-15 17:12:54: (mod_fastcgi.c.1365) [ERROR]: spawning fcgi failed.
2009-02-15 17:12:54: (server.c.897) Configuration of plugins failed. Going down.

o va cia jei nurodytas /tmp (root folderyje)

2009-02-15 20:10:41: (log.c.97) server started
2009-02-15 20:10:41: (mod_fastcgi.c.1051) the fastcgi-backend /mnt/HD_a2/www/bin/php-cgi failed to start:
2009-02-15 20:10:41: (mod_fastcgi.c.1055) child exited with status 2 /mnt/HD_a2/www/bin/php-cgi
2009-02-15 20:10:41: (mod_fastcgi.c.1058) 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 flags.
2009-02-15 20:10:41: (mod_fastcgi.c.1365) [ERROR]: spawning fcgi failed.
2009-02-15 20:10:41: (server.c.897) Configuration of plugins failed. Going down.

Lygiai toki pati pranesima kaip pirmasis gaunu, jei php-cgi binarius nurodau i instaliacinu ju folderi, bet palieku chroot lighttpd

alpha
Pagrindinė - Meisteris Data 2009-02-18 19:03
Hmz, o ką sako: php -v
Beje, kokią distribuciją naudoji? Be to gal galėtum ir lighthttpd konfigūracijos failą parodyt?
Taip pat nepakenktu sutikrinti leidimus, kiek suprantu chroot direktorija tūrėtų priklausyti (lighthttpd, ar tai www-data) vartotoju. Na priklausomai nuo sistemos. Pasitikrinti galima:
ls -l /kelias/iki/chroot
Arba kartu su subdirektorijom:
ls -Rl /kelias/iki/chroot
Pagrindinė - alpha Data 2009-02-18 20:20
Hi,

Taip, dabar paeiliui:
1. distribucija: BusyBox 1.12.1
2. lighttpd.cof failas baisiai ilgas, bet jei netingesi skaityti, tai pridesiu paciam laisko gale
3. su teisem viskas ok. testo vardan laikinai net buvau padares chmod -R 777 wwwroot, o siaip normaliai tai teises 750 ir useris lighttpd

Ok, pridedu lighttpd.conf
# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules              = (
#                               "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                                "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/mnt/HD_a2/www/pages"

server.upload-dirs = ( "/mnt/HD_a2/www/tmp" )

## where to send error-messages to
server.errorlog             = "/mnt/HD_a2/www/logs/error.log"

# files to check for if .../ is requested
index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

## php support
## uncomment the following lines and the mod_fastcgi module above
fastcgi.server = ( ".php" => ((
    "bin-path"  => "/ffp/bin/php-cgi",
    "socket"    => "/mnt/HD_a2/www/tmp/php-cgi.socket",
    "max-procs" => 2
)))

## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X

# mimetype mapping
mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar"
)

# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr        = "enable"

## send a different Server: header
## be nice and keep it at lighttpd
# server.tag                 = "lighttpd"

#### accesslog module
accesslog.filename          = "/mnt/HD_a2/www/logs/access.log"

## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
#url.access-deny             = ( "~", ".inc" )

#$HTTP["url"] =~ "\.pdf$" {
#  server.range-requests = "disable"
#}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
#server.port                = 8080

## bind to localhost (default: all interfaces)
#server.bind                = "grisu.home.kneschke.de"

## error-handler for status 404
#server.error-handler-404   = "/error-handler.html"
#server.error-handler-404   = "/error-handler.php"

## to help the rc.scripts
#server.pid-file            = "/var/run/lighttpd.pid"

###### virtual hosts
##
##  If you want name-based virtual hosting add the next three settings and load
##  mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root   = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host  = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"

##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/home/weigon/projects/lighttpd/doc/status-"

## virtual directory listings
dir-listing.activate        = "enable"
dir-listing.show-readme     = "enable"

## enable debugging
#debug.log-request-header   = "enable"
#debug.log-response-header  = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found   = "enable"

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot              = "/mnt/HD_a2/www"

## change uid to <uid> (default: don't care)
server.username            = "lighttpd"

## change uid to <uid> (default: don't care)
server.groupname           = "webusers"

#### compress module
#compress.cache-dir         = "/tmp/lighttpd/cache/compress/"
#compress.filetype          = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server               = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "host" => "192.168.0.101",
#                                   "port" => 80
#                                 )
#                               )
#                             )

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
#fastcgi.server             = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "socket" => "/tmp/php-fastcgi.socket",
#                                   "bin-path" => "/usr/local/bin/php"
#                                 )
#                               )
#                            )

#### CGI module
#cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
#                               ".cgi" => "/usr/bin/perl" )
#

#### SSL engine
#ssl.engine                 = "enable"
#ssl.pemfile                = "server.pem"

#### status module
#status.status-url          = "/server-status"
#status.config-url          = "/server-config"

#### auth module
## read authentication.txt for more info
#auth.backend               = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"

#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
#auth.backend.ldap.filter   = "(uid=$)"

#auth.require               = ( "/server-status" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "user=jan"
#                               ),
#                               "/server-config" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "valid-user"
#                               )
#                             )

#### url handling modules (rewrite, redirect, access)
#url.rewrite                = ( "^/$"             => "/server-status" )
#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#  url.redirect            = ( "^/(.*)" => "http://%1/$1" )
#}

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern        = "/home/storage/dev/www/%3/htdocs/"

#### expire module
#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### ssi
#ssi.extension              = ( ".shtml" )

#### rrdtool
#rrdtool.binary             = "/usr/bin/rrdtool"
#rrdtool.db-name            = "/var/www/lighttpd.rrd"

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10

## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension               = ".cml"
# cml.memcache-hosts          = ( "127.0.0.1:11211" )

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"

#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1
Pagrindinė Meisteris Data 2009-02-18 22:32
Pasikaičiau ta proga pas save lighttpd ir fastcgi, pavargau kol pakūriau, bet jau padėtis kiek aiškesnė. Žodžiu labai didelį dėmesį reikia kreipti konfigūruojant direktorijas. Pvz.: jeigu nustatai chroot:

server.chroot              = "/mnt/HD_a2/www"

tada visur kitur tas /mnt/HD_a2/www skaitomas kaip / todėl kitos eilutės tūrėtų atrodyti maždaug taip:

server.document-root        = "/pages" # o ne "/mnt/HD_a2/www/pages"

Manau, kad tas pats tūrėtų būtį taikoma (tavo atveju, pas mane fastcgi konfigūruojasi kiek kitaip) ir fastcgi konfigūracijai:
fastcgi.server = ( ".php" => ((
    "bin-path"  => "/ffp/bin/php-cgi",
    "socket"    => "/tmp/php-cgi.socket",
    "max-procs" => 2
)))

Taip pat, reikia įsitikinti ar subdirektorijos, šiuo atveju:
/mnt/HD_a2/www/pages
/mnt/HD_a2/www/tmp
/mnt/HD_a2/www/logs
ir visos kitos paminėtos konfige, ištiesų yra sukurtos, priklauso lighttpd vartotojui, lighttpd grupei ir ar leidimai sudėlioti atitinkamai teisingai.

Pasitikrink šitą teoriją, o tuo tarpu, aš dar pažaisiu su savo lighttpd, gal būt dar kas nors išlys ;)
Pagrindinė Meisteris Data 2009-02-18 23:12
Na pasiknaisiojau dar truputį, išsiaiškinau, kad chrooted lighttpd tiesiog negali palaikyti php, jei nori fastcgi, reikia jį konfigūruoti be chroot. Tačiau padėtis nėra tokia beviltiška, su lighttpd versija 1.5 žadamas kažkoks modas, kuris tai leis padaryti. Bent jau taip rašoma čia

> Chrooted lighttpd, evhost and non-chrooted fastcgi
>
> If you're trying to use non-chrooted fastcgi combined with evhost in a chrooted lighttpd, you seem to be out of luck. To properly support this configuration, lighttpd
> would need to prepend its chroot path before its document root when making fastcgi requests. The "docroot" option can do this statically (ie, when not using
> evhost), but not for multiple hosts. Also see #1816 about this.
>
> Docs:ModProxyCore will be supporting this configuration in lighttpd 1.5.


Tačiau aptikau vieną galima apėjimo būdą, tai php binarių nukopijavimas į chroot Čia rašoma plačiau . Patsai dar to nebandžiau, bet tuoj pabandysiu.
Pagrindinė Virginijus Data 2009-02-18 22:11 Redaguota: 2009-02-18 22:13
O pasitikrinai skripte atitikmenis?
tarkim:  php4.
Taip pat komentaras:

>    sorry you asked for my distro and version information as well:
>
>  d# apt-show-versions | grep lighttpd
>    lighttpd/edgy uptodate 1.4.13~r1370-1ubuntu1


čia kaip ir 2006 metai :/
Tas leidimas nuo debinos skyrėsi praktiškai tik pavadinimu.
Kaip ir nieko gero nepasakiau...
Pagrindinė - Meisteris Data 2009-02-19 02:51 Redaguota: 2009-02-19 15:36
Na, ką paleidau savo lighttpd chroot'e kartu su fastcgi. Bėda ta, kad kaip minėjau ankščiau, nėra galimybės paleisti lighttpd chroot aplinkoje, kartu neuždarant ir php. Tačiau išeitis yra sukurti normalią chroot aplinką ir uždarant į ją lighttpd, php ir reikiamus libus. Pamėginsiu nupasakoti, kaip man tai pavyko.
Mano chroot aplinka bus laikoma /webroot direktorijoje, taigi pirmiausia ją ir susikuriu:

# mkdir /webroot

dar reikia laikinos direktorijos:

# mkdir /webroot/tmp/
# chmod 1777 /webroot/tmp/


Taip pat reikės nusikopijuoti php.ini failą, tad susikuriu /webroot/etc direktoriją:

# mkdir /webroot/etc

Toliau direktoriją lighttpd logams:

# mkdir -p /webroot/var/log/lighttpd
# chown lighttpd:lighttpd /webroot/var/log/lighttpd


Reikia ir /var/run direktorijos, kad serveris tūrėtų kur padėti savo procesus:

# mkdir /webroot/var/run
# chown lighttpd:lighttpd /webroot/var/run


Kešo direktorija, jeigu kada sugalvotum daugiau funkcijų įsijungti:

# mkdir -p /webroot/var/tmp/lighttpd/cache/compress/
# chown lighttpd:lighttpd /webroot/var/tmp/lighttpd/cache/compress/


lighttpd namų direktorija virtualiam hostinimui:

# mkdir -p /webroot/home/lighttpd
# chown lighttpd:lighttpd /webroot/home/lighttpd
# chmod 0700 /webroot/home/lighttpd


Taip pat radau bash skriptuką libams automatiškai sukopijuoti, man jis realiai netiko, nes pas mane amd64 sistema :) Bet kitiems gal pravers:

#!/bin/bash
BASE="/webroot"

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


Užsisaugom kaip /bin/chroot bei priskiriam vykdymo teises:

chmod +x /bin/chroot

Dabar reikia įkelti php į chroot aplinką, tad kopijuojam /usr/bin/php bei /usr/bin/php-cgi (priklausomai nuo php versijos, distros bei oro sąlygų, šie binariai gali vadintis įvairiai, kaip ir gali būti kur nors kitur ne /usr/bin tai kaip sakant čia jau reikia pagal savo sistemą žiūrėtis):

# mkdir -p /webroot/usr/bin
# cp /usr/bin/php-cgi /webroot/usr/bin/
# cp /usr/bin/php /webroot/usr/bin/


Dabar reikia php.ini failo, taigi kopijuojam /etc/php direktoriją į /webroot/etc :

# cd /webroot/etc/
# cp -avr /etc/php .


Taip pat ir krūvą kitų konfigūracijos failų:

# cp /etc/hosts /webroot/etc/
# cp /etc/nsswitch.conf /webroot/etc/
# cp /etc/resolv.conf /webroot/etc/
# cp /etc/services /webroot/etc/
# cp /etc/localtime /webroot/etc/


Dabar reikia bibliotekų, čia galima panaudoti tą chroot skriptuką, kūrį minėjau anksčiau (čia vėlgi reikia nurodyti teisingą kelią iki php binarių):

# /bin/chroot /usr/bin/php
# /bin/chroot /usr/bin/php-cgi


!! tačiau man tas skriptukas neveikė, kadangi mano distra yra 64 bitų, o to pasekoje ir libai yra ne lib o lib64 direktorijose, tai aš tiesiog pasileidau mc ir nusikopijavau /lib64 į /webroot/lib64 ir sukūriau symlinką iš /webroot/lib64 į /webroot/lib o taip pat analogiškai /usr/lib64 į /webroot/usr/lib64 ir symlinkas iš /webroot/usr/lib64 į /webroot/usr/lib

Realiai patarčiau tą patį padaryt net ir paprastoj sistemoj tik ten būtų ne lib64 o lib ir symlinkų kurti nereiktų ;)

Dar reikia ld failo:

# cp /lib/ld-linux.so.2 /webroot/lib

Kaip ir viskas su chroot paruošimu. Toliau lieka susikonfigūruoti /etc/lighttpd/lighttp.conf failą atitinkamai, svarbiausia nustatyti server chroot į /webroot bei sužiūrėti faile nustatytus kelius turint galvoje, kad lighttpd nuo šiol mano, jog /webroot yra / (root). Maždaug taip atrodo mano /etc/lighttpd/lighttpd.conf esminė dalis:

# {{{ modules
server.modules = (
    "mod_rewrite",
    "mod_redirect",
    "mod_alias",
    "mod_access",
    "mod_fastcgi",
    "mod_accesslog"
)
# }}}
server.username      = "lighttpd"
server.groupname     = "lighttpd"

server.document-root = "/home/lighttpd"
server.pid-file      = "/var/run/lighttpd.pid"

server.chroot      = "/webroot"

server.errorlog      = "/var/log/lighttpd/error.log"
accesslog.filename   = "/var/log/lighttpd/access.log"


Taip pat /etc/lighttpd/mod_fastcgi.conf:

server.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
                            ( "localhost" =>
                                    (
                                            "socket"            =>              "/var/run/lighttpd-fastcgi$
                                            "bin-path"  =>              "/usr/bin/php-cgi"
                                    )
                            )
                    )


Tai tiek, Ilgokas čia postas gavosi, na tikiuosi, kad bent kiek pagelbės ar bent jau "ant kelio" užves :)

P.S.
Pas mane gentoo 2008.0 64bitų sistema, lighttpd 1.4.20 bei php 5.2.8 iš esmės viskas pagal šitą how to Bent jau daugiausia juom rėmiausi.
Pagrindinė - alpha Data 2009-02-19 21:38
Labas,

na dekui uz toki issamu atsakyma ir sugaista laika, taciau... :(
jokiu sansu. padariau lyg ir viska. teises ok, keliai ok, viskas, kaip tavo ar dar kituose manualuose. zinome ne viskas tiko man, pvz pas mane nera mod_fastcgi.conf failo. ir is vis jokio fastcgi konfiguracinio failo aplamai nera. taip ld-linux.so.2 pas mane skamba kitaip na ir sakykim dar geras gabalas visokiu skirtumu, bet mano galva neesminiai. ir neina.... :( errorus loge gaunu tuos pacius kaip visada. php-cgi binaru path turi but su /mnt/HD_a2/www/bin/php-cgi nes kai rodo loga klaidos tai rodo butent ta path'a, kuris konfige irasytas t.y. /root jis neprideda. aciu uz pagalba, bet gal dar kokiu minciu?

alpha
Pagrindinė - Meisteris Data 2009-02-19 22:34
O jei parašai:
# php -v
Ar rodo kažką panašaus?
PHP 5.2.8-pl2-gentoo (cgi-fcgi) (built: Feb 18 2009 20:56:08)

ta prasme cgi-fcgi ar ką nors kitko?
Pagrindinė - alpha Data 2009-02-19 22:44
php -v rodo:

PHP 5.2.6 (cli) (built: Sep  1 2008 17:27:55)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies


taciau php-cgi -v rodo va ka:

PHP 5.2.6 (cgi-fcgi) (built: Sep  1 2008 17:13:05)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies


alpha
Pagrindinė - Meisteris Data 2009-02-19 22:52
Tai čia viskas gerai tada. Na, ką aš daugiau galiu pasakyt :/ tik tiek, kad pas tave kažkas negerai su chroot aplinka, kažko trūksta tenai, nebandei į chroot direktoriją nusikopijuot viso savo /lib ir /usr/lib ?
Pagrindinė - alpha Data 2009-02-19 23:09
jo, nukopinau is vis viska is sisteminio diro, nes jau susinervinau. aisku nusikopino viskas kaip owneris root, bet as absoliuciai pakeiciau visus i lighttpd, bet vis tiek tas pats error. nu zodziu viltys mano zlugo :( bet vis tiek aciu uz pagalba nes nemazai cia buvo padirbeta is tavo puses :)
jei kada nors gyvenime pasikursiu tai parasysiu

alpha
Pagrindinė - Meisteris Data 2009-02-19 23:21
Žinoma ir tam chroot'e kelias turi sutapti, ta prasme direktorijos esančios chroot viduje (mano atveju /webroot/) turi būti tokios pačios kaip ir realiai sistemoje, taip pat, kaip sakiau ir lithtpd.conf turi būti nurodyti keliai. Kiek aš išsiaiškinau, tai realiai nebūtina, kad visas chroot priklausytų lighttpd vartotojui, bet tam tikros dalys tai taip. Toliau chroote turi būti tam tikri konfigūraciniai failai iš /etc bei libai, binarių iš /usr/bin ar /bin geriau nedėti, na apart php ir php-cgi. O kas liečia log'us, tai aš pastebėjau, kad lighttpd į savo logą visad rašo tą patį, nors realiai bėda (pas mane) buvo visai ne ten, o grynai sunkiausia dalis būtent ir buvo pačio chroot sudarymas ir teisingi keliai lighttpd.confe. Žinoma aš praktiškai nieko nežinau apie sistemą kurią tu naudoji konkrečiai, tai kiek ant savo sistemos išsiaiškinau, tiek parašiau, gaila kad problemos išspręst neįšėjo, bet man pačiam čia buvo labai įdomu pasiknaisioti, o ir web serveriuko vistiek reikėjo bandymams :)
Pagrindinė - alpha Data 2009-02-20 19:25
Labas,

Pabandziau va toki dalyka:

chroot /mnt/HD_a2/www /bin/php-cgi

ir gavau atsakyma chroot: cannot execute /bin/php-cgi: No such file or directory. taigi yra itarimo kad kazkas negerai su chroot. beje, toks path /mnt/HD_a2/www/bin/php-cgi tikrai egzistuoja. Gal yra kokiu komentaru va tokiam dalykui ?

alpha
Pagrindinė - alpha Data 2009-02-21 20:15
Galu gale pavyko pasileist viska. uzteko binarus, libus ir etc nukopint i /wwwroot/ffp/bin, /wwwroot/ffp/etc, /wwwroot/ffp/lib ir viskas veikia. nezinau kodel, bet sitoje distroje php-cgi failas risasi prie /ffp/bin path'o. jei toks path egzistuoja, tai pradzia jo ne tiek svarbi. priekyje path gali but koks tik nori, ji padarai kaip chroot ir svabu kad liktu /ffp/bin ir viskas. vaziuoja. bet kodel tai tikrai nezinau.

alpha
Pagrindinė Meisteris Data 2009-02-22 18:46
Na, realiai būtent tai ir tūrėjau galvoje sakydamas, kad labai svarbu teisingai kelią atkartoti, šiaip ar taip sveikinu :)
Aukštyn Tema Programinė įranga / GNU/Linux, bei Unix Operacinės Sistemos / lighttpd + chroot

Powered by mwForum 2.29.6 © 1999-2015 Markus Wichitill