Kezdőoldal » Számítástechnika » Egyéb kérdések » Hogyan kell beállítani a...

Hogyan kell beállítani a fastcgi-t apache2 linuxos webszerveren?

Figyelt kérdés
2010. jan. 12. 10:11
 1/4 A kérdező kommentje:
Senkitöbbet harmadszor?
2010. jan. 12. 20:34
 2/4 A kérdező kommentje:

ÖNTSÜNK TISZTA VIZET A FASTCGI-BE!


Találtam a neten néhány jó leírást, de ezek közül egyik sem volt alkalmas arra, hogy egy tökéletesen működő fastcgi-t be tudjak állítani.

Ezért szeretném én is leírni, hogy nekem, hogyan sikerült beállítani és mik voltak azok a problémák, ami miatt elsőre nem sikerült a leírások alapján!

Sajnos én sem fogok mindenre kitérni, de aki fastcgi-t akar telepíteni az legyen azért az alapokkal tisztában (pl mit jelent hogy az apacheban be van töltve egy modul vagy mi a cgi módban fordított php5 metapack vagy mire jó az apt-get vagy az yum parancs)

Lássuk akkor hát a fastcgi telepítésének menetét, apache2.2 alá, fcgid modul segítségével DEBIAN 5 alatt:


1. Az apache2-ben a következő moduloknak kell betöltve lenni (ha nincsenek, akkor a csomag kezelővel, apt-get-el le kell tölteni):

actions, alias, cgi, cgid, env, expires, rewrite, negotation, auth_basic, authn_file, authnz_ldap, authz_dbm, authz_default, authz_groupfile, authz_host, authz_owner, authz_user, autoindex, deflate, dir, suexec, fcgid vagy normál mod_fastcgi, headers, include, ldap, mime, mime_magic, setenvif, ssl, userdir, vhost_alias


Természetesen ezek közül sem létfontosságú mind!


2. Hozzunk létre egy UNIX felhasználót és egy csoportot. Nálam mindkettő neve PHP0 lesz és az id 1001, szintén mindkettőnek (a csoportnak és a felhasználónak is)

A www-data felhasználó éd csoport id-je 33-as lesz! A root felhasználó UserID-je és GroupID-je 0.


3. Hozzuk létre az alábbi könyvtárakat az alábbi felhasználói tulajdonságokkal:

var/www/ ---> CHMOD 755 UID:33 GID: 33

var/www/fcgi ---> CHMOD 555 UID:0 GID: 0

var/www/fcgi/main ---> CHMOD 755 UID:1001 GID: 1001

var/www/virtual/ ---> CHMOD 555 UID:0 GID: 0

var/www/virtual/main/ ---> CHMOD 770 UID:1001 GID: 33

var/www/virtual/main/cgi-bin ---> CHMOD 755 UID:1001 GID: 1001

var/www/virtual/main/htdocs ---> CHMOD 755 UID:1001 GID: 1001

var/www/virtual/main/error ---> CHMOD 775 UID:1001 GID: 1001

var/www/virtual/main/phptmp ---> CHMOD 770 UID:1001 GID: 33



Ezek is eltérhetnek igény szerint. A HTDOCS nevű mappa az adott virtual host documentum rootja.


4. A var/www/fcgi/main mappába hozzuk létre a következő fájlt!


php5-fcgi-starter


Tartalma legyen:

------

#!/bin/sh


umask 022


PHPRC="."

export PHPRC


TMPDIR="/var/www/virtual/main/phptmp"

export TMPDIR


PHP_FCGI_CHILDREN=2

export PHP_FCGI_CHILDREN


exec /usr/bin/php5-cgi

------


Mellé rakjunk egy php init!


5. Hozzunk létre egy virtual hostot az apacheban!


Ezek a dolgok legyenek benne!

------

<IfModule suexec_module>

SuexecUserGroup PHP0 PHP0

</IfModule>

#Figyelj oda hogy minden összetevő előtt legyen ott az "<IfModule akármilyen_module>" rész és a lezárója </IfModule>


ServerAdmin webmaster@main

DocumentRoot /var/www/virtual/main/htdocs


ServerName daomaineved.hu #vagy ha nincs akkor töröld ki a sort

ServerAlias www.daomaineved.hu daomaineved.hu *.daomaineved.hu php0.daomaineved.hu


Alias /errors /var/www/virtual/main/errors/


ErrorDocument 401 /errors/401.html

ErrorDocument 403 /errors/403.html

ErrorDocument 404 /errors/404.html

ErrorDocument 500 /errors/500.html

ErrorDocument 503 /errors/503.html


<IfModule mod_cband.c>

CBandUser main

</IfModule>


# httpd awstats support BEGIN.


# httpd awstats support END.


# httpd dmn entry cgi support BEGIN.

ScriptAlias /cgi-bin/ /var/www/virtual/main/cgi-bin/

<Directory /var/www/virtual/main/cgi-bin>

AllowOverride AuthConfig

#Options ExecCGI

Order allow,deny

Allow from all

</Directory>

# httpd dmn entry cgi support END.


<Directory /var/www/virtual/main/htdocs>

# httpd dmn entry PHP support BEGIN.

# httpd dmn entry PHP support END.

Options -Indexes Includes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

Allow from all

</Directory>


# httpd dmn entry PHP2 support BEGIN.

<IfModule mod_php5.c>

php_admin_value open_basedir "/var/www/virtual/main/:/var/www/virtual/main/phptmp/:/usr/s

hare/php/"

php_admin_value upload_tmp_dir "/var/www/virtual/main/phptmp/"

php_admin_value session.save_path "/var/www/virtual/main/phptmp/"

php_admin_value sendmail_path '/usr/sbin/sendmail -f vu2002 -t -i'

</IfModule>

<IfModule mod_fastcgi.c>

ScriptAlias /php5/ /var/www/fcgi/main/

<Directory "/var/www/fcgi/main">

AllowOverride None

Options +ExecCGI -MultiViews -Indexes

Order allow,deny

Allow from all

</Directory>

</IfModule>

<IfModule mod_fcgid.c>

Include /etc/apache2/mods-available/fcgid_ispcp.conf

<Directory /var/www/virtual/main/htdocs>

FCGIWrapper /var/www/fcgi/main/php5-fcgi-starter .php

Options +ExecCGI

</Directory>

<Directory "/var/www/fcgi/main">

AllowOverride None

Options +ExecCGI MultiViews -Indexes

Order allow,deny

Allow from all

</Directory>

</IfModule>

------


6. Állítsuk be a fastcgid modult a configurációs állomány segítségével. Nálam ez így néz ki!


<IfModule mod_fcgid.c>

AddHandler fcgid-script .fcgi .php .php5

SocketPath /var/lib/apache2/fcgid/sock

IdleTimeout 600

IdleScanInterval 120

BusyTimeout 300

BusyScanInterval 120

ErrorScanInterval 3

ZombieScanInterval 3

ProcessLifeTime 900

SpawnScoreUpLimit 10

SpawnScore 1

TerminationScore 2

MaxProcessCount 200

DefaultMaxClassProcessCount 10

DefaultMinClassProcessCount 1

IPCConnectTimeout 900

IPCCommTimeout 900

MaxRequestsPerProcess 500

</IfModule>


7. Indítsuk újra az apache-ot!


8. Ellenőrizzük a működést


Készítsünk phpinfo,php fájlt az alábbi tartalommal:

<?php

phpinfo();

?>


Ezt futtassul le a böngészőben pl [link]


Megjegyzések!

------

Természetesen az itt leírt elérési utak változhatnak, a felhasználó nevek, uid-k, gid-k szintén.

Figyeljünk arra, hogy a php5-fcgi-starter fájl a tulajdonosa által futtatható legyen (exec)

Fontos, hogy a modulokat IfModule tag-be zárjuk.


Ha valakinek kérdése van a leírtakkal kapcsolatban, vagy valamit elírtam, az írjon ide!

Üdv!

2010. febr. 24. 22:52
 3/4 A kérdező kommentje:

Nézzük a fastcgi beállítását most a mod_fastcgi vel. DEBIAN 5 alatt. Ehhez debianon a libapache2-mod-fastcgi.deb et kell telepíteni. Ezt a csomagkezelővel lehet letölteni (apt-get)

Példa domain az srv11.ath.cx lesz.


Szokásos módon belőjük az apache-be a mod_fastcgit és kilőjük az előbb beállított mod_fcgid-t


LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so


A virtual hostunk az SRV11-hez úgy néz ki mint a fcgid példában volt, mert ebben már minden jó php verzió benne van, még a mod_php-s <IfModule ...>

Annyit változtattam a dolgon hogy most a fastcgi wrapper a domain nevével megegyező mappában lesz.


Tehát a mappa szerkezetem így néz ki:

/var/www/virtual/srv11.ath.cx/

/var/www/virtual/srv11.ath.cx/fcgi

/var/www/virtual/srv11.ath.cx/htdocs

/var/www/virtual/srv11.ath.cx/phptmp

/var/www/virtual/srv11.ath.cx/sessions

/var/www/virtual/srv11.ath.cx/errors/

/var/www/virtual/srv11.ath.cx/.... n mappa .../


A phptmp tulaja a vu2002-es user csoportja www-data (GID : 33), a sessionnak is.


A virtual hostot tegyük bele mondjuk a httpd.conf -ba vagy akár egy külön fájlba

------

<VirtualHost 192.168.0.121:80>


<IfModule suexec_module>

SuexecUserGroup vu2002 vu2002

</IfModule>


ServerAdmin webmaster@srv11.ath.cx

DocumentRoot /var/www/virtual/srv11.ath.cx/htdocs


ServerName srv11.ath.cx

ServerAlias www.srv11.ath.cx srv11.ath.cx *.srv11.ath.cx vu2002.srv10.ath.cx


Alias /errors /var/www/virtual/srv11.ath.cx/errors/


ErrorDocument 401 /errors/401.html

ErrorDocument 403 /errors/403.html

ErrorDocument 404 /errors/404.html

ErrorDocument 500 /errors/500.html

ErrorDocument 503 /errors/503.html


<IfModule mod_cband.c>

CBandUser srv11.ath.cx

</IfModule>


# httpd awstats support BEGIN.


# httpd awstats support END.


# httpd dmn entry cgi support BEGIN.

ScriptAlias /cgi-bin/ /var/www/virtual/srv11.ath.cx/cgi-bin/

<Directory /var/www/virtual/srv11.ath.cx/cgi-bin>

AllowOverride AuthConfig

#Options ExecCGI

Order allow,deny

Allow from all

</Directory>

# httpd dmn entry cgi support END.


<Directory /var/www/virtual/srv11.ath.cx/htdocs>

# httpd dmn entry PHP support BEGIN.

# httpd dmn entry PHP support END.

Options -Indexes Includes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

Allow from all

</Directory>


# httpd dmn entry PHP2 support BEGIN.

<IfModule mod_php5.c>

php_admin_value open_basedir "/var/www/virtual/srv11.ath.cx/:/var/www/virtual/srv11.ath.c

x/phptmp/:/usr/share/php/"

php_admin_value upload_tmp_dir "/var/www/virtual/srv11.ath.cx/phptmp/"

php_admin_value session.save_path "/var/www/virtual/srv11.ath.cx/phptmp/"

php_admin_value sendmail_path '/usr/sbin/sendmail -f vu2002 -t -i'

</IfModule>


#EZ LESZ MOST HASZNÁLVA

<IfModule mod_fastcgi.c>

ScriptAlias /php5/ /var/www/virtual/srv11.ath.cx/fcgi/

<Directory "/var/www/virtual/srv11.ath.cx/fcgi">

AllowOverride None

Options +ExecCGI -MultiViews -Indexes

Order allow,deny

Allow from all

</Directory>

</IfModule>


<IfModule mod_fcgid.c>

Include /etc/apache2/mods-available/fcgid_ispcp.conf

<Directory /var/www/virtual/srv11.ath.cx/htdocs>

FCGIWrapper /var/www/virtual/srv11.ath.cx/fcgi/php5-fcgi-starter .php

Options +ExecCGI

</Directory>

<Directory "/var/www/virtual/srv11.ath.cx/fcgi">

AllowOverride None

Options +ExecCGI MultiViews -Indexes

Order allow,deny

Allow from all

</Directory>

</IfModule>

# httpd dmn entry PHP2 support END.


Include /etc/apache2/ispcp/srv11.ath.cx.conf


</VirtualHost>

------


A wrapper a /var/www/virtual/srv11.ath.cx/fcgi mappában egy php5-fcgi-starter fájlban van, aminek a tulaja vu2002 , Futtatható a fájl. Mellette van egy php2002.ini fájl (Az user azonosítóját raktam a fájlhoz, de lehetne php-userneve.ini is)


A php5-fcgi-starter tartalma

------

#!/bin/sh


umask 022


PHPRC="php2002.ini"

export PHPRC


TMPDIR="/var/www/virtual/srv11.ath.cx/phptmp"

export TMPDIR


PHP_FCGI_CHILDREN=4

export PHP_FCGI_CHILDREN

PHP_FCGI_MAX_REQUESTS=10000

export PHP_FCGI_MAX_REQUESTS


exec /usr/bin/php5-cgi

------


A fastcgi.conf -ot a következő tartalommal töltöttem fel!

------

<IfModule mod_fastcgi.c>

#OLD fastcgi

#AddHandler fastcgi-script .fcgi

#FastCgiWrapper /usr/lib/apache2/suexec

#FastCgiIpcDir /var/lib/apache2/fastcgi


FastCgiWrapper On

FastCgiIpcDir /var/lib/apache2/fastcgi


FastCgiConfig -minProcesses 1 \

-maxProcesses 400 \

-maxClassProcesses 100 \

-multiThreshold 80 \

-killInterval 60 \

-startDelay 5

# -singleThreshold 100 \

# -autoUpdate \

# -pass-header HTTP_AUTHORIZATION


#FastCgiServer /var/www/fcgi/master/php5-fcgi-starter -user www-data -group www-data -idle-timeout 300


AddHandler php-fastcgi .php .php5


<Location /php5/php5-fcgi-starter>

SetHandler fastcgi-script

Options +ExecCGI

</Location>


Action php-fastcgi /php5/php5-fcgi-starter

AddType application/x-httpd-php .php .php5

</IfModule>


------

Ez itt található /etc/apache2/mods-available és a /etc/apache2/mods-enabledbe egy szinbolikus linket teszek rá ha használni akarom, ha nem kell már akkor törlöm a szimbolikus linket!


Apache újraindítsás <? phpinfo(); ?> tartalmú fájlal gyönyörködünk az eredményben. Ha kell a php inivel finomhangolhatjuk a virtualhostra szabott php beállításainkat


Ha van némi előtapasztalatod a leírtak alapján tudod beállítani a fastcgit mod_fastcgi -vel


Ha valamit elírtam / valami nem világos / akkor kérdezni lehet.

2010. febr. 24. 22:52
 4/4 A kérdező kommentje:

A PHP CGI módban való hasznmálatára a fastcgi, és az fcgid modulon kívül a suPHP-val van még lehetőségünk.


Mint előzőekben most is következő környezetben dolgozunk: debian5, apache2 és php5.

Ezt is egy példán keresztül szeretném bemutatni.


srv10.ath.cx lesz a fihktív virtual hostunk, aminek a tartalmát a /var/www/virtual/SRV10/htdocs elérési útvonalon tároljuk.


Betöltöm a suphp modot a2enmod suphp


LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so



Felhasználónk, akinek a nevében futa a php-cgi: SRV10.ATH

A html fájlokat www-data felhasználó futtatja (Az apach felhasználó)

Rendszergazda felhasználó : root


A következő mappa szerkezetünk van


/var/www/ => Tulajdonos: root csoport: root

... /virtual/ => Tulajdonos: root csoport: root

... ... /SRV10/ => Tulajdonos: SRV10.ATH csoport: www-data

... ... ... /cgi-bin => Tulajdonos: SRV10.ATH csoport: SRV10.ATH

... ... ... /errors => Tulajdonos: SRV10.ATH csoport: SRV10.ATH

... ... ... /fcgi => Tulajdonos: SRV10.ATH csoport: SRV10.ATH

... ... ... /htdocs => Tulajdonos: SRV10.ATH csoport: www-data

... ... ... /phptmp => Tulajdonos: SRV10.ATH csoport: www-data

... ... ... /session => Tulajdonos: SRV10.ATH csoport: www-data (CHMOD : 1733)


/var/www/virtual/SRV10/fcgi mappában lesz a php ini php-SRV10.ini néven (CHMOD 644)

Itt mindent beállíthatunk: memória limit, open_basedir, stb ...


Beállíthuk a virtual hostot (Erre akár egy külön fájlt is beállíthatunk)

-------------------------------------------------------------------------

ServerAdmin webmaster@SRV10

DocumentRoot /var/www/virtual/SRV10/htdocs

ServerName srv10.ath.cx


#Alias /errors /var/www/virtual/SRV10/errors/


#ErrorDocument 401 /errors/401.html

#ErrorDocument 403 /errors/403.html

#ErrorDocument 404 /errors/404.html

#ErrorDocument 500 /errors/500.html

#ErrorDocument 503 /errors/503.html


<IfModule suexec_module>

SuexecUserGroup SRV10.ATH SRV10.ATH

</IfModule>


ScriptAlias /cgi-bin/ /var/www/virtual/SRV10/cgi-bin/

<Directory /var/www/virtual/SRV10/cgi-bin>

AllowOverride AuthConfig

#Options ExecCGI

Order allow,deny

Allow from all

</Directory>



<Directory /var/www/virtual/SRV10/htdocs>

Options -Indexes Includes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

Allow from all

</Directory>


#Így töltöm be az egyedi php ini-t minden felhasználónak egyedi php lehetőségeket adva

<IfModule mod_suphp.c>

suPHP_ConfigPath /var/www/virtual/SRV10/fcgi/php-SRV10.ini

</IfModule>

----------------------------------------------------------------------

Az apache /etc/apache2/mods-enabled/suphp.conf fájlt az alábbi módon állítotttam be!

------------------------------------------------------------------------------------

<IfModule mod_suphp.c>

AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml

suPHP_AddHandler application/x-httpd-suphp


<Directory />

suPHP_Engine on

</Directory>


# By default, disable suPHP for debian packaged web applications as files

# are owned by root and cannot be executed by suPHP because of min_uid.

<Directory /usr/share>

suPHP_Engine off

</Directory>


# # Use a specific php config file (a dir which contains a php.ini file)

# suPHP_ConfigPath /etc/php4/cgi/suphp/

# # Tells mod_suphp NOT to handle requests with the type <mime-type>.

# suPHP_RemoveHandler <mime-type>

</IfModule>

--------------------------------------------------------------------------------------


A suphp-hez használunk még egy globális beállítás fájlt is amit a suphp telepítő alapértelmezetten az /etc/suphp könyvtárba tesz,

aminek a tartalát az alábbi módon állítom be:

-----------------------------------------------------

[global]

;Path to logfile

logfile=/var/log/apache2/suphp.log


;Loglevel

loglevel=info


;User Apache is running as

webserver_user=www-data


;Path all scripts have to be in

docroot=/var/www/virtual



;Path to chroot() to before executing script

;chroot=/var/www/virtual/*


; Security options

allow_file_group_writeable=false

allow_file_others_writeable=false

allow_directory_group_writeable=false

allow_directory_others_writeable=false


;Check wheter script is within DOCUMENT_ROOT

check_vhost_docroot=true


;Send minor error messages to browser

errors_to_browser=true


;PATH environment variable

env_path=/bin:/usr/bin


;Umask to set, specify in octal notation

umask=0077


; Minimum UID

min_uid=100


; Minimum GID

min_gid=100



[handlers]

;Handler for php-scripts

application/x-httpd-suphp="php:/usr/bin/php-cgi"


;Handler for CGI-scripts

x-suphp-cgi="execute:!self"

----------------------------------------------------------


Ha mindent jól csináltunk, akkor újra indítom az apache-ot.

<?php phpinfo(); ?> fájlal ellenőrzöm a működést:

[link]

2010. márc. 7. 15:02

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!