Portál AbcLinuxu, 1. června 2024 18:20


Dotaz: Apache 2.4 a modul Xsendfile

27.2. 10:23 MSMU
Apache 2.4 a modul Xsendfile
Přečteno: 567×
Odpovědět | Admin
Zdravím,

Potřebuji umožnit stahovat na webu i velké soubory, třeba archivy. Optimální je (nebo možná bylo) prý k tomu využívat modul pro Apache Xsendfile, který obejde hlavičky a PHP limity. Je ale lehce starší a tak bych se rád zeptal, jestli má někdo zkušenosti s provozováním na Apache 2.4? Moc informací jsem k tomu nenašel, vyzkoušel jsem ve virtual hostu modul povolit a sprovoznit to s Projectsend, ale bez úspěchu. Díky za osvětlení.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.2. 11:26 X
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebylo by lepsi to na klienta poslat po castech ie. nejaky chunk, nebo stream? Jinak budes ten soubor cpat do pomocne cache a mit 5G soubor v RAM asi nechces.
27.2. 11:39 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Asi bylo, ale není to určené pro širokou veřejnost, ale pro předem daný okruh uživatelů a neplánuji soubory větší, než je dostupná paměť. S tímhle řešením moc zkušeností nemám.
Max avatar 27.2. 12:40 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Několik možností:
Zdar Max
Měl jsem sen ... :(
28.2. 20:56 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
První řešení asi bude jediné možné, protože měnit server kvůli ostatním věcem nechci. V Debianu je balíček s modulem xsendfile, ale právě asi zřejmě moc s Apache 2.4 už nefunguje, prostě to nefunguje. První možnost je super a díky za nakopnutí, ani nebude třeba upravovat PHP.
28.2. 22:49 tttttttttttt
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
EnableSendfile podle mě neřeší tvůj problém. Pokud je zapnuté, bude Apache předávat soubory pomocí syscallu sendfile místo read/write. V dotazu píšeš, že potřebuješ obejít PHP limity, tedy ten požadavek zpracovává PHP a ne přímo apache a EnableSendfile neudělá nic.

Modul xsendfile umožní PHP předat hlavičku do Apache, ten pak pošle data přímo a obejde PHP. To
EnableSendfile
neumí.

Ale ověř si to, Apache už delší dobu nepoužívám.
29.2. 09:01 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Díky, ono právě moc informací k rozhodování není, nebo jsem asi blbě hledal, všude jen zkuste, mělo by a podobně, tak mě zajímala osobní zkušenost.
29.2. 09:24 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak to je pre malú komunitu, nebolo by jednoduchšie použiť klasický .htaccess? Používal som to tak pred niekoľkými desaťročiami, takže viem že je to nemoderné.
29.2. 10:16 X
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
To mu stahovat velke soubory moc nepomuze. Osobne nechapu co je za problem napsat si tech par radek do PHP.
29.2. 10:20 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
On tie súbory môže sťahovať aj bez PHP. To PHP má odhadujem kvôli obmedzeniu prístupu, a to rieši aj desaťročiami overená klasika. Načo vymýšľať koleso, ak je to niečo pre malú komunitu ľudí.
29.2. 12:03 X
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Pockej a jake reseni vlastne myslis? Ja to s tim .htaccess nechapu.
29.2. 14:24 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Načo tam potrebuješ to php pri downloade keď to ide aj bez neho?
29.2. 15:40 X
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Tim PHP to potrebujes poslat nasekane. Jinak se to bude Apache snazit cele narvat do cache v jednom requestu a chcipne to bud na velikost RAM, nebo timout:
@ob_end_flush();
flush();

$fileDescriptor = fopen($file, 'rb');

while ($chunk = fread($fileDescriptor, 8192)) {
    echo $chunk;
    @ob_end_flush();
    flush();
}

fclose($fileDescriptor);
exit;
pripadne,
$context = stream_context_create();
$file = fopen($url, 'rb', FALSE, $context);
while(!feof($file))
{
    echo stream_get_contents($file, 4096);
}
29.2. 17:10 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Ozaj, aj keď nie je cache zapnutá? To sa mi nezdá.
29.2. 18:18 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Tak som si zo srandy nahodil Debian 12 s Apache, vytvoril 5GB súbor, znížil VM pamäť na 1/2G (10x menej RAM ako je veľkosť súboru), a v pohode mi to Apache stiahol.
29.2. 17:41 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
RAMky na to je dost, ale myslím, že tohle řeší právě Enablesendfile přes kernel. Každopádně moc díky, ale PHPčkem moc nevládnu. Ale smysl to dává.
29.2. 17:37 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Není potřeba jen download, ale i upload, jednotlivý uživetelé někdy nemají vidět soubory těch druhých a podobně
29.2. 18:13 X
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Samotne stahovani/nahravani budes realizovat jak? Jaky jazyk? PHP, JS, Java? Protoze pak je to samozrejme o implmentaci a konfgurace apache hraje roli jen castecne.
3.3. 17:32 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Je to PHP, konkrétně 8.2 s Projectsend.
29.2. 17:32 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Díky, ale to nic neřeší, pořád zůstávají velké soubory a navíc to umožňuje pouze stahovat a ne přijímat soubory, nemohu předpokládat, že všichni budou vědět, jak takto soubory odeslat.
29.2. 18:37 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Rieši to sťahovanie. Ale pravda je, že to nerieši že by si užívatelia medzi sebou poslali link.
29.2. 23:39 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co znamená "vyzkoušel modul povolit"? Výpis konfigurace do tagu <pre> by se hodil. Jak zprovoznit? Co znamená bez úspěchu? Co se stalo, co se zalogovalo?
Quando omni flunkus moritati
3.3. 17:50 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Modul jsem nainstaloval, povolil a do virtualhostu přidal XSendFile on. V loghu Apache žádná chyba není, prostě normální download, jen ten stažený soubor prázdný a má nulovou velikost.
5.3. 09:51 karel
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Imho v nginxu jsem pouzival neco podobnyho a mam dojem, ze to je interni presmerovani, podle me ta konfigurace je slozitejsi. Musi bejt explicitne jasny, ze ten soubor ma obslouzit webserver a nikoli aplikace ...

https://tn123.org/mod_xsendfile/

Je to jenom poznamka, realne jsem primo tvuj problem neresil, ale myslim, ze to bude ono
5.3. 10:13 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
podle me ta konfigurace je slozitejsi
Není. Maximálně v případě, že požadované soubory jsou někde mimo ten web
Quando omni flunkus moritati
11.3. 11:14 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Podle autora modulu stačí modul ve virtual hostu povolit a mít v PHP úpravu, aby byly předány soubory.
11.3. 11:11 MSMU
Rozbalit Rozbalit vše Re: Apache 2.4 a modul Xsendfile
Ano, podle toho jsem postupoval a Projectsend to právě má jako možnost, takže by s předáváním požadavku neměl být problém.

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.