Erinevus lehekülje "PHP käivitamine kasutaja õigustes" redaktsioonide vahel

Allikas: Kuutõrvaja
48. rida: 48. rida:
 
  LoadModule suexec_module libexec/apache2/mod_suexec.so
 
  LoadModule suexec_module libexec/apache2/mod_suexec.so
 
  LoadModule fastcgi_module    libexec/apache2/mod_fastcgi.so
 
  LoadModule fastcgi_module    libexec/apache2/mod_fastcgi.so
 +
 +
Apache oskab siduda mingit laiendit teatud cgi skripti käivitamisega
 +
näiteks saame globlaalselt käivitada php lisades httpd.conf'i
 +
 +
ScriptAlias /php-cgi/ /usr/local/www/data/cgi-bin
 +
AddType application/x-httpd-fastphp .php
 +
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
 +
 +
Reaga '''ScriptAlias /php-fastcgi/ /usr/local/www/data/cgi-bin'''
 +
tekitame me enda veebiserverile aliase php-cgi
 +
url'iga http://nimi/php-cgi
 +
 +
Järgmise reaga '''AddType application/x-httpd-fastphp .php'''
 +
Tekitame uue application tüübi nimega x-httpd-fastphp mille seome .php laiendiga
 +
 +
Kolmas rida '''Action application/x-httpd-fastphp /php-cgi/php5-fcgi''' määrab ,et
 +
application x-httpd-fastphp. Seetähendab kõik .php failid suunatakse automaatselt
 +
skriptile nimega '''php5-fcgi''' ehk siis http://nimi.ee/php-cgi/php5-fcgi
 +
 +
 +
Nii saame näiteks hõlsasti teha kasvõi uue application tüübi näiteks laiendiga .jms
 +
ja siduda selle cgi skriptiga mis loeb talle saadetud .jms laiendiga
 +
failidest käske ja täidab neid luues nii kasvõi endale primitiivse veebiskriptimise keele.
 +
 +
  
  
 
Tekitame virtualhostid
 
Tekitame virtualhostid
 +
  
 
  <VirtualHost *:80>
 
  <VirtualHost *:80>
58. rida: 84. rida:
 
   ServerName www.nimi.ee
 
   ServerName www.nimi.ee
 
   
 
   
  ScriptAlias /php-fastcgi/ /usr/local/www/data/katse/
+
  ScriptAlias /php-fastcgi/ /usr/local/www/data/katse/cgi
 
  AddType application/x-httpd-fastphp .php
 
  AddType application/x-httpd-fastphp .php
 
  Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
 
  Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
70. rida: 96. rida:
 
   ServerName test.nimi.ee
 
   ServerName test.nimi.ee
 
   
 
   
  ScriptAlias /php-fastcgi/ /usr/local/www/data/katse3/cgi-bin
+
  ScriptAlias /php-fastcgi/ /usr/local/www/data/katse3/cgi
 
  AddType application/x-httpd-fastphp .php
 
  AddType application/x-httpd-fastphp .php
 
  Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
 
  Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
+
 
 
  </VirtualHost>
 
  </VirtualHost>
  
Alternatiivselt kataloogipõhiselt:
 
 
  SuexecUserGroup katse katse
 
 
 
  <Directory "/usr/local/www/data/cgi">
 
    Options +ExecCGI
 
    AddHandler fastcgi-script .cgi
 
    AddType application/x-httpd-fastphp .php
 
    Action application/x-httpd-fastphp /cgi/php5-fcgi.cgi
 
  </Directory>
 
  
  
101. rida: 117. rida:
 
  exec /usr/local/bin/php-cgi
 
  exec /usr/local/bin/php-cgi
  
Kopeerime selle faili kasutajate katse ja katse 3 kaustadesse (kataloogidesse):
+
Kopeerime selle faili kasutajate katse ja katse 3 kataloogidesse)
  
/usr/local/www/data/katse/cgi-bin/php5-fcgi
+
/usr/local/www/data/katse/cgi/php5-fcgi
/usr/local/www/data/katse3/cgi-bin/php5-fcgi
+
/usr/local/www/data/katse3/cgi/php5-fcgi
  
 
Muudame mõlema faili kasutajaõigusi chown käsuga:
 
Muudame mõlema faili kasutajaõigusi chown käsuga:

Redaktsioon: 10. oktoober 2007, kell 22:28

Apache suexec on programm, mis lisati versioonis 1.2 ja mis annab apache kasutajatele võimaluse käivitada cgi ja ssi programme kasutaja id-ga, mis erineb veebiserveri id-st. Normaalselt toimivad kõik skriptid veebiserveri õigustes. Kahjuks võimaldab see nõnda startida ainult cgi skripte.

Käesolev pala kirjeldab, kuidas saada iga serveris asuv php tükk samuti käima antud kasutaja õigustes. Näites kasutatav PHP on 5. versioon, kuid kasutada võib ka neljandat. Trellidega (#) on näidetes tähistatud käsuviip.

Tarkvara installeerimine

Installeerime apache koos suexec-ga:

 # cd /usr/ports/www/apache2
 # make  WITH_SUEXEC_MODULES="YES"  install 

Seejärel installeerime php:

 # cd /usr/ports/lang/php5
 # make install clean

PHP installeerimisel küsitakse täiendavaid parameetreid. Valida tuleb CGI ja FastCGI tugi. Apache moodulit pole vaja, kui seda ei plaanita täiendavalt paralleelselt kasutada.

Järgneb fastcgi installeerimine:

 # cd /usr/ports/www/mod_fastcgi
 # make install clean

Peale installeerimist saame kontrollida suexec'i parameetreid selliselt:

# suexec -V
 -D AP_DOC_ROOT="/usr/local/www/data"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/var/log/httpd-suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="public_html"


Nagu näha, soovib suexec, et kõik skriptid, mida tema abil käivitatakse, asuksid kataloogis /usr/local/www/data Ei hakka DOC_ROOT muutma ja loome testi sinna.

Apache konfiguratsioon

Muudame httpd.conf, vajadusel lisame:

LoadModule suexec_module libexec/apache2/mod_suexec.so
LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so

Apache oskab siduda mingit laiendit teatud cgi skripti käivitamisega näiteks saame globlaalselt käivitada php lisades httpd.conf'i

ScriptAlias /php-cgi/ /usr/local/www/data/cgi-bin
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi

Reaga ScriptAlias /php-fastcgi/ /usr/local/www/data/cgi-bin tekitame me enda veebiserverile aliase php-cgi url'iga http://nimi/php-cgi

Järgmise reaga AddType application/x-httpd-fastphp .php Tekitame uue application tüübi nimega x-httpd-fastphp mille seome .php laiendiga

Kolmas rida Action application/x-httpd-fastphp /php-cgi/php5-fcgi määrab ,et application x-httpd-fastphp. Seetähendab kõik .php failid suunatakse automaatselt skriptile nimega php5-fcgi ehk siis http://nimi.ee/php-cgi/php5-fcgi


Nii saame näiteks hõlsasti teha kasvõi uue application tüübi näiteks laiendiga .jms ja siduda selle cgi skriptiga mis loeb talle saadetud .jms laiendiga failidest käske ja täidab neid luues nii kasvõi endale primitiivse veebiskriptimise keele.



Tekitame virtualhostid


<VirtualHost *:80>
 SuexecUserGroup katse katse
 ServerAdmin kasutaja@nimi.ee
 DocumentRoot /usr/local/www/data/katse
 ServerName www.nimi.ee

ScriptAlias /php-fastcgi/ /usr/local/www/data/katse/cgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi

</VirtualHost>
<VirtualHost *:80>
 SuexecUserGroup katse3 katse3
 ServerAdmin kasutaja@nimi.ee
 DocumentRoot /usr/local/www/data/katse3/cgi-bin
 ServerName test.nimi.ee

ScriptAlias /php-fastcgi/ /usr/local/www/data/katse3/cgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi
</VirtualHost>


Skript wrapperiks

Varasemalt sidusime virtualhostis iga .php laiendi kindla cgi skriptiga, mida suexeciga käivitame. Viimaks ehitame skripti enda, mis käivitatuna suexeci abil kasutaja õigustes stardib php enda ja sellekaudu ka veebi.


#!/bin/sh
#PHPRC="/usr/local/etc/php.ini"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
exec /usr/local/bin/php-cgi

Kopeerime selle faili kasutajate katse ja katse 3 kataloogidesse)

/usr/local/www/data/katse/cgi/php5-fcgi
/usr/local/www/data/katse3/cgi/php5-fcgi

Muudame mõlema faili kasutajaõigusi chown käsuga:

chown katse:katse /usr/local/www/data/katse/cgi-bin/php5-fcgi
chown katse3:katse3 /usr/local/www/data/katse3/cgi-bin/php5-fcgi

Testimine

Testimiseks saab teha skripti

< ?php
print "hello world< p >\n";
system("id");
php? >


www.nimi.ee skripti vaadates

hello world

uid=1004(katse) gid=1004(katse) groups=1004(katse) 

test.nimi.ee

hello world

uid=1009(katse3) gid=1009(katse3) groups=1009(katse3) 


EENet 2006