Portál AbcLinuxu, 8. května 2025 20:12

Dotaz: Mass virtual hosting (Apache + suPHP), oddělení uživatelů

18.1.2010 22:33 Profik123
Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Přečteno: 1127×
Odpovědět | Admin
Dobrý den,

rozhodl jsem se zkusil nakonfigurovat vlastní webový server, který bych mohl používat já i moji známý. Rovnou přidám úryvek ze současné konfigurace:
NameVirtualHost *

suPHP_Engine On

<VirtualHost *>

    # /home/domena.tld/public_html/subdomena
    VirtualDocumentRoot /home/%-2.0.%-1/public_html/%-3

    RewriteEngine On
    RewriteCond  %{HTTP_HOST} ^([^.]*)\.([^.]*)$
    RewriteRule  (.*)  http://www.%{HTTP_HOST}

    <Directory /home/%-2.0.%-1/public_html >
        Order deny,allow

        suPHP_AddHandler application/x-httpd-php

    </Directory>

</VirtualHost>
Současný stav je takový, že každý uživatel má vlastní obsah ve svém domovském adresáři a je nastavený jako vlastník (práva 600). Tím pádem suPHP funguje skvěle, PHP běží pod právy vlastníka. Problém nastává ve chvíli, kdy na server přijde požadavak na nějaký statický obsah, na který Apache sahá se svými právy (u mě v Ubuntu uživatel www-data) a ne skrz suPHP.

Jak je vhodné nastavit práva souborů, aby Apachi vše vyhovovalo a zároveň si uživatelé nemohli "lézt do zelí"?

Jediné řešení, které mne napadlo je nastavit práva souborů na 644, ale v tu chvíli budou čitelné i ostatními uživateli, což je nežádoucí.

Doufám, že je můj dotaz alespoň trošku k pochopení.

Díky za odpovědi :-)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.1.2010 22:59 NN
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Odpovědět | | Sbalit | Link | Blokovat | Admin
No jelikoz bezi apache pod www-data a je owner tak klidne 600.

NN
18.1.2010 23:13 Profik123
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Současný stav je takový, že každý uživatel má vlastní obsah ve svém domovském adresáři a je nastavený jako vlastník...

Nevím, jestli to z toho úplně patrné, ale vlastníkem je konkrétní uživatel. Jinak by ani to suPHP nemělo smysl.
-rw------- 1 Profik123 Profik123 20 2007-08-30 18:22 phpinfo.php
19.1.2010 13:59 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podobne ako su riesene user_diry pod ~. Vlastnici aj ich adreare patria do tej istej skupiny a www-data nie. akze na www-data sa vztahuju prava ako na "others", kdezto susedny user patri do "group". Prava ako 701 (alebo 705) by teda mali stacit.
If you hold a Unix shell up to your ear, you can you hear the C.
19.1.2010 19:03 Profik123
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Díky za dobrou inspiraci.

Ještě mě napadla jedna věc.

Adresář i soubory by byly vlastněny userem, skupina www-data. Celý adresář s webem by měl nastaven sgid bit, tudíž všechny přidané soubory by opět měly skupinu www-data.

Práva u souborů by potom byla 640.
drwxr-S--- 2 Profik123 www-data 4096 2010-01-19 19:01 public_html
Myslíte, že je to tak použitelné?

Nebo jaké jsou best practices?
19.1.2010 21:08 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Prava 701 sa bezne davaju na homediry v ktorych su podadresare public_html s uzivatelskymi strankami. Apache sa dostane, kolega user nie. Trik je v tom. Unix aplikuje tu zlozku prav, ktora najviac pasuje aj keby prava pre others boli povolnejsie.
If you hold a Unix shell up to your ear, you can you hear the C.
Jakub Lucký avatar 19.1.2010 21:19 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm, tak mě napadá, jakou máte zkušenost s výkonností suPHP?

My to chtěli implementovat ale ukázalo se, že to má 5x-20x nižší výkon než klasické mod_php, což je docela dost propad...
If you understand, things are just as they are; if you do not understand, things are just as they are.
Max avatar 19.1.2010 23:17 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Já jsem věřil testům uživatele "al_quaknaa", který to řešil u sebe v blogu :Apache mass hosting, pár nápadů a názor :)

Po několika týdenním zkoumání a zjišťování různých řešení jsem se konečně rozhoupal a vyhodnotil jsem, že nejlepší cesta(výkon a možnosti) asi opravdu bude přes fastcgi+suexec (takže né suPHP). Včera jsem na něj překlopil hosting s cca 20 doménama. Testy výkonnosti jsem nedělal. Server je předimenzován, takže nepociťuji žádné rozdíly ve výkonu.

Práva jedou parádně, mohu si definovat u jednotlivých domén, pod kterým uživatelem a skupinou se má php spouštět.
Navíc lze provozovat více verzí php (ale to jsem nezkoušel, nicméně to brzo přijde :) ).
Zdar Max

Měl jsem sen ... :(
20.1.2010 23:36 Profik123
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Pravda. Teď jsem dělal takový menší test a vyšlo mi, že suPHP je 10x - 20x pomalejší než mod_php.

Jedna věc je, že nevím, jak moc bude ten můj server vytížen, asi by to stíhal i se suPHP, ale vzhledem k tomu, že by bylo dobré to mít nakonfigurované už "hezky", zkusím to FastCGI.

Nevíte? Dá se FastCGI zkonfigurovat nějak s mod_vhost_alias?
Max avatar 20.1.2010 23:48 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Mass virtual hosting (Apache + suPHP), oddělení uživatelů
Do základu bych ti mohl doporučit nastavení podobné tomuto (detaily a zbytek si donastavíš sám) :
<VirtualHost *:80>

UseCanonicalName Off
ServerName devaine.cz
ServerAlias *.devaine.cz

VirtualDocumentRoot /var/www/vweb/devaine.cz/%1

CustomLog /var/log/apache2/sites/devaine.cz-access.log common

Include /etc/apache2/virtual_rules.conf

RewriteLog      /var/log/apache2/sites/devaine.cz-rewrite.log
RewriteLogLevel   0

<IfModule mod_fcgid.c>
    SuexecUserGroup devaine.cz devaine.cz
    PHP_Fix_Pathinfo_Enable 1
    <Directory /var/www/vweb/devaine.cz/>
      Options +ExecCGI
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/devaine.cz/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

</VirtualHost>
Kde "/var/www/php-fcgi-scripts/devaine.cz/php-fcgi-starter" má práva fyzického uživatele a skupiny :
devaine.cz:devaine.cz
A obsahuje něco jako toto :
#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php
Více viz howto pro debian :
How To Set Up Apache2 With mod_fcgid And PHP5 On Debian Lenny

Jinak cokoli vytvořím v tomto adresáři :
/var/www/vweb/devaine.cz/
To se tváří jako doména třetího řádu. Aby to fungovalo, je zapotřebí správně nastavit DNS.
Zdar Max
Měl jsem sen ... :(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.