FollowSymlinks σε cgi-bin directory στον Apache

George Notaras gnot at g-loaded.eu
Fri Apr 24 17:43:28 EEST 2009


Alexandros Kosiaris wrote:
> George Notaras wrote:
>> George Miliotis (Corfiot) wrote:
>>> On 23/4/2009 6:07 μμ, George Notaras wrote:
>>>> 2) να κάνω ένα central installation του awstats και παράλληλα ο κάθε
>>>> χρήστης να μπορεί να το τρέχει ως cgi script. Στην περίπτωση αυτή είναι
>>>> σχεδόν αναγκαστική η χρήση symlink προς το awstats.pl μέσα στο
>>>> script-aliased directory, εκτός κι αν κάθε φορά που γίνεται update του
>>>> central installation του awstats μεταφέρεται το εκτελέσιμο awstats.pl
>>>> στον κατάλληλο script-aliased κατάλογο του κάθε χρήστη.
>>> Μπορεί να εξετάσεις και την πιθανότητα να κάνεις ένα ξεχωριστό vhost για
>>> τα διαχειριστικά σου (phpmyadmin, awstats, munin, mpla mpla mpla) και να
>>> μην βάλεις κανένα alias. Δεν ξέρω αν αυτό σε ικανοποιεί σε αυτό το κομμάτι;
>>>
>>> Όσο για τα permissions, μάλλον για suexec σε βλέπω...
>> Ευχαριστώ. Με προβλημάτισε συγκεκριμένα το awstats γιατί δεν έχει
>> φτιαχτεί με το σκεπτικό του central installation όσον αφορά τη χρήση του
>> ως cgi script, οπότε αναγκαστικά θα γίνουν κάποιες αλχημείες.
> 
> Ναι. Δυστυχώς το awstats έχει κάποια θέματα με το που θα γράφει τα
> αρχεία .txt του και με τα permissions των log files(εάν θες να
> ενεργοποιήσεις τα update from web commands κτλ). Παρόλα αυτά μπορεί να
> γίνει central installation για πολλά vhosts. Δεν είναι κάτι υπερβολικά
> δύσκολο.

Το πακέτο awstats του fedora κάνει ένα central setup, δηλαδή, όλα τα
configurations στο /etc/awstats/, όλα τα databases στο
/var/lib/awstats/, το processing γίνεται με το awstats_updateall.pl κτλ.
Το μόνο στραβό είναι ότι για να τρέξει κανείς το awstats.pl ως cgi
script, θα πρέπει να έχει το awstats.pl και το configuration αρχείο στο
cgi-bin directory. Οπότε είναι απαραίτητο είτε να χρησιμοποιηθούν
symlinks ή να μεταφέρονται τα αρχείο αυτά από το κεντρικό installation
στο cgi-bin του κάθε χρήστη κάθε φορά που γίνεται αναβάθμιση του πακέτου
awstats ή που γίνονται αλλαγές στο configuration αρχείο για κάποιο vhost.

> Κακώς ο apache σου εκτελεί όλα τα php scripts ανεξαρτήτως virtualhost.
> Είτε με το mod_php είτε μέσω CGI μπορείς να αποφασίσεις ποια
> virtualhosts θα έχουν η όχι δυνατότητα να έχουν PHP

Πάλι όμως, θεωρητικά τουλάχιστον, δύο χρήστες, των οποίων τα
virtualhosts υποστηρίζουν php scripts, δε θα μπορούν να βλέπουν ο ένας
το περιεχόμενο των αρχείων του άλλου;

Πάντως. τώρα που χρησιμοποιώ το mod_fcgid δεν εκτελεί παντού php
scripts. (γραφω το config παρακάτω)

> 
> Παραδείγματος χάρη εγώ χρησιμοποιώντας mod_cgid(και όχι mod_fcgid γιατί
> απλά δεν ασχολήθηκα ποτέ να το στήσω) έχω ANA Directory ANA VirtualHost
> που με ενδιαφέρει το απλό(και OXI μέσα στο κεντρικό configuration σε
> κάνα <Directory /> directive)
> 
> <VirtualHost TADE>
> <Directory DEINA>
> 	Action php4-script /cgi-bin/php4
> 	AddHandler php4-script .php
> </Directory>
> </VirtualHost>
> 
> Προφανώς πολύ εύκολα κάνεις το ίδιο με mod_php
> 	AddType application/x-httpd-php .php
>         AddType application/x-httpd-php-source .phps
> 
> Το /cgi-bin είναι ένα κοινό script-alias για όλα τα virtualhosts. Εκεί
> μέσα υπάρχει μόνο το php4 cgi και τίποτε άλλο(και εάν δεν έχεις root στο
> μηχάνημα δεν μπαίνει και τίποτε άλλο εκεί)

Το mod_cgid τρέχει την php ως FastCGI ή ως απλό CGI script; (δεν ξέρω κι
αν χρησιμοποιώ σωστά τους όρους) Δηλαδή, όταν εκτελείται ένα php script,
ο apache δημιουργεί ένα process της php, το οποίο εξυπηρετεί περισσότερα
του ενός http requests?

> 
> Για cgi-bin directories ανά Virtualhost(ξέχωρα δηλαδή από το cgi-bin)
> ορίζω πράγματα της μορφής
> Alias /cgi-local /path/to/cgi-local
> <Directory /path/to/cgi-local>
>                 Options +ExecCGI
> </Directory>

Το mod_fcgid το χρησιμοποιώ χονδρικά όπως παρακάτω. Έχω δει κάποια πολύ
μυστήρια setups, αλλά αυτό είναι πιστεύω το πιο απλό που μπορεί να κάνει
κανείς.

Στον main server:

  LoadModule fcgid_module modules/mod_fcgid.so
  AddHandler fcgid-script .php
  FCGIWrapper /usr/bin/php-cgi .php

Και σε κάποιο directoryA σε κάποιο virtualhostA, το μόνο που κάνω είναι
να προσθέτω το option ExecCGI. Πχ

  <Virtualhost A>
    <Directory /path/to/Α>
      Options +ExecCGI
    </Directory>
  </Virtualhost>

Πιθανότατα το 'FCGIWrapper /usr/bin/php-cgi .php' να είναι πολύ πιο
σωστό να μπει μέσα στο <Directory> όπου θα εκτελούνται τα php scripts.

>> Τρέχω την php ως fastcgi μέσω του mod_fcgid. Αν χρησιμοποιούσα το
>> mod_php θα μπορούσα να κάνω χρήση του παραπάνω directive (SuexecUserGroup)?
> 
> Τσου. Το mod_php σημαίνει ότι ο κώδικας εκτελείται από τον apache και
> άρα δεν έχει νόημα το suexec μία και είναι μόνο για CGI. Για mod_php
> χρησιμοποιείς open_basedir και παλιότερα έβαζες και safe_mode αλλά είναι
> πλέον deprecated και δεν σου προτείνω να το χρησιμοποιήσεις.

Μάλιστα. Δεν έχω σκοπό να χρησιμοποιήσω ξανά το mod_php. Ένας επιπλέον
λόγος είναι ότι με το mod_fcgid μπορώ πλέον να χρησιμοποιήσω το threaded
MPM του apache.

>> Επίσης, ας πάρουμε το υποθετικό σενάριο ότι υπάρχει μεγάλος αριθμός από
>> virtualhosts και ότι τα php scripts τρέχουν ώς fastcgi με την ταυτόχρονη
>> χρήση του suexec. Αν την ίδια χρονική στιγμή επισκεφτεί κανείς όλα τα
>> virtualhosts, λόγω του suexec, δεν θα τρέξουν και τόσα php-cgi processes
>> όσα είναι και τα virtualhosts που προσπελάστηκαν? Αυτό δεν προκαλεί
>> υπερβολική κατανάλωση πόρων στο server?
> Θεωρητικά έχεις δίκιο. Πρακτικά δεν ξέρω σε πιο σημείο θα σε δαγκώσει
> αυτό που περιγράφεις. Επιπλέον εάν έχεις μεγάλο αριθμό από VirtualHosts
> δεν είναι και φοβερά πιθανό το σενάριο που περιγράφεις.
> 
> Εάν τα (πολλά θυμήσου είπες) Virtualhosts σου είναι τόσο δημοφιλή ώστε
> να συμβαίνει μάλλον θα χρειαστεί να τα απομονώσεις σε dedicated
> hardware. Αλλά όταν φτάσεις εκεί θα βγάζεις λεφτά από τα virtualhosts
> σου εικάζω και δεν θα σε ενοχλεί.

Πιο πολύ ρωτάω από περιέργεια. Δεν έχει τύχει να έχω πρόσβαση σε κάποιον
webserver που να έχει Πραγματική Κίνηση(ΤΜ) κι έτσι δεν έχω εικόνα των
πραγμάτων. BTW, αν ποτέ βγάλω χρήματα από virtualhosts, θα δώσω μερικά
(χρήματα) σε αυτούς που κατέχουν το αντικείμενο -δεν είμαι άπληστος:) -,
οπότε το θέμα με απασχολεί πιο πολύ "εγκυκλοπαιδικά" :)

Ευχαριστώ για την αναλυτική απάντηση





More information about the Linux-greek-users mailing list