Säkerhet, hastighet, överensstämmelse och flexibilitet - alla dessa beskriver pron lighty som snabbt omdefinierar effektiviteten hos en webbserver som den är konstruerad och optimerad för miljöer med hög prestanda. Med ett litet minnesfotavtryck jämfört med andra webbservrar, effektiv hantering av Cpu-load och avancerad funktionalitet FastCGI, SCGI, Auth, Output-komprimering, URL-omskrivning och många fler är den perfekta lösningen för varje server som lider av lastproblem och bästa av allt det är Open Source licensierad enligt den reviderade BSD-licensen . Driver flera populära Web 2 0-platser. Den höghastighets-io-infrastrukturen gör det möjligt för dem att skala flera gånger bättre med samma hårdvara än med alternativa webbservrar. Den här snabba webbservern och dess utvecklingsteam skapar en webbserver med framtida behov Webben i åtanke. Snabbare FastCGIET möter modmailbox. Its händelsesdriven arkitektur är optimerad för ett stort antal parallella anslutningar som är levande, vilket är viktigt för högpresterande AJAX-applikationer. January 14, 2017. Viktiga förändringar. bugfixar buggfix-bara Release. I har en dedikerad server med 1GB s dedikerad, 4GB ram och 4cpus Jag har statiska filer för nedladdning från 300mb till 900mb Jag testade över Apache, Nginx and. Apache gör för många hot och efter 200 anslutningar går det väldigt högt så apache Det är ingen GO. Nginx efter 100 anslutningar går det väldigt högt så det går inte heller. Hittills är det väldigt bra som en enkelgängad server Med 500 samtidiga anslutningar är lasten 090-110 mycket bra, men jag har ett problem med nedladdningshastighet, det går långsammare även när jag har en port med 1GBps, ser jag Iptraf och med 500 samtidiga anslutningar går det inte mer än 250000 KB s Med apache och nginx ibland gick det till 700000 KB s uppströms i servern jag bytte mellan sendfile och writev i config och det har samma resultat. Jag använder inte Någon php eller snabb cgi, bara rakt nedladdning direkt till filen, till exempel och det hämtar filen. Jag lägger till lite info här för att du ska hjälpa mig att räkna ut det. Äktenskaplig top commandstat-en grep 80 wc - l. What Ska jag ändra för att klienterna ska hämtas snabbare, de sa ibland att det hämtas långsammare än 10 KB s. Problemet här är inte din webbserver, det är det som verkligen inte är utformat som ett filhämtningsprotokoll Det är Hyper Text Transport Protocol, Och många av besluten kring fokus på Hyperlinked Tex T-aspekt-filstorlekar förväntas vara små, under några tiotals kb och säkert under en Mb. Webinfrastrukturen utnyttjar detta faktum i många av deras metoder för datakachning osv. I stället för att använda för något som det verkligen inte är utformat För att jag rekommenderar att du tittar på att använda en annan transportmekanism. FTP-filöverföringsprotokollet FTP var utformat specifikt för att överföra filer av godtycklig storlek och gör inte samma antaganden som programvara Om allt du gör är statiska nedladdningar, är din webbsida HTML Kan länka till de statiska filerna med en ftp-länk och konfigurera en FTP-server för att tillåta anonym nedladdning är vanligtvis okomplicerad Kontrollera din FTP-server s dokument för detaljer Webbläsare sedan IE6 FF2 har stödt grundläggande FTP-nativt-den genomsnittliga användaren har inget annat arbetsflöde än Vanligt Detta är förmodligen inte det bästa sättet som FTP utformades förut och som Perry nämnde, länge innan vi hade en halv gig-filer. CDN Använda ett innehållsleveransnät som Amazon s S3 går inte tekniskt runt, men det gör att du inte behöver oroa dig för att dina användare överbelastar din server som du ser. BitTorrent Om dina användare är lite mer tekniskt klara, överväga att ställa in din server så att den statiska filen är obestämd så länge då Publicera magnetlänkar på din webbplats I värsta fall kommer en enda användare att uppleva en direktladdning från din server, med ett protokoll som faktiskt vet hur man hanterar stora filer. I bästa fall kommer dina hundratals användare att både leka och frö varandra, Ja, det här krävs att dina användare vet hur man kör och konfigurerar bittorrent, vilket förmodligen inte är fallet, men det är ett intressant paradigm för nedladdningar av filer ändå. Svarade 5 maj 12 på 3 09. Jag Ta problem med uttalandet FTP var utformat speciellt för att överföra filer som är större än vad som kan hanteras eftersom FTP konstruerades länge innan det fanns några 300mb - 900mb filer och länge innan någonsin existerade. Kanske svarade någonting någonting Lite annorlunda men som det står tror jag att svaret är vilseledande OP-s problemet är sannolikt hans konfiguration och har ingenting att göra med protokollet som används Perry 16 juni 12 kl 20 04. Perry Du är helt korrekt, min karaktärisering av FTP är Fel och beroende på konfiguration kan det ha bra problem med IO Jag hade tänkt att mitt svar skulle bli en godkännande av BitTorrent För att leverera stora filer är den sämsta möjliga transportmekanismen att använda Vi som IT-proffs bör gå vidare med att använda mer lämpliga tekniker För att lösa problem David Souther Jun 17 12 på 13 34. 1 4 på Unix systems. This avsnitt innehåller anteckningar och tips specifika för 1 4 installationer av PHP på Unix systems. Please använd trac för att lära sig att installera korrekt innan fortsättning. Fastcgi är Den föredragna SAPI för att ansluta PHP och Fastcgi är automatiskt aktiverad i php-cgi i PHP 5 3, men för äldre versioner konfigurerar PHP med --enable-fastcgi För att bekräfta att PHP har fastcgi aktiverat, ska php - v Innehåller PHP 5 2 5 cgi-fcgi Innan PHP 5 2 3, fastcgi aktiverades på php binär fanns det ingen php-cgi. Letting spawn php processer. För att konfigurera för att ansluta till php och spawn fastcgi processer, ändras Sockets föredragna för att ansluta För att fastcgi processer på det lokala systemet. Exempel 1 Delvis. Bin-path-direktivet tillåter att kasta fastcgi-processer dynamiskt. PHP kommer att spaja barn enligt PHPFCGICHILDREN miljövariabel. Bin-miljödirektivet sätter miljön för de spridda processerna. PHP kommer att döda ett barn Bearbeta efter att antalet begäranden som anges av PHPFCGIMAXREQUESTS är uppnådda. Direktiverna min-procs och max-procs bör generellt undvikas med PHP. PHP hanterar egna barn och opcode-cacher som APC kommer bara att dela mellan barn som hanteras av PHP. Om min-procs är inställd Till något större än 1 multipliceras php-svararna PHPFCGICHILDREN 2 min-procs 16 barn ger 32 responders. Spawning with spawn-fcgi. Tillhandahåller ett program som kallas spawn-fcgi för att underlätta processen för att gyta fastcgi-processer lättare. Spridning av php-cgi. It är möjligt att spawna processer utan spawn-fcgi, men lite tunglyftning krävs. Ställ in PHPFCGICHILDREN-miljön var kontrollerar hur många Barn PHP kommer att spawna för att hantera inkommande förfrågningar Ställning av PHPFCGIMAXREQUESTS kommer att avgöra hur länge i förfrågningar varje barn kommer att leva Här är ett enkelt bash-skript för att hjälpa till att gissa php-svar. Exempel 2 Spawning FastCGI Responders .-- Starta - bin bash. Usr bin spawn-fcgi - s - f usr bin php-cgi - c - u-g-C4-P-F12-End. 1 5 - Konfig - Starta. , Statistik MIRRORLANGUAGE kr, MIRRORSTATS 1. round-robin aktivera fastcgi 16 - Slut. 1 4 Unix. Unix 1 4 PHP. Trac. PHP SAPI fastcgi fastcgi PHP 5 3 php-cgi php konfigurera --enable-fastcgi PHP fastcgi php - v PHP 5 2 5 cgi-fcgi PHP 5 2 3 php-cgi php fastcgi. Php. Php fastcgi fastcgi. bin-path fastcgi PHP PHPFCGICHILDREN bin-miljö PHPFCGIMAXREQUESTS PHP döda min-procs max-procs PHP PHP APC opcode PHP min-procs 1 PHP PHPFCGICHILDREN 2 min-procs 16 32.spawn-fcgi. Spawn-fcgi fastcgi. spawn-fcgi PHPFCGICHILDREN PHP PHPFCGIMAXREQUESTS php bash .2 FastCGI .-- Start - bin bash. Usr bin spawn-fcgi - s - f usr bin php-cgi - c - u-g-C4-P-F12-End. 1 5 - Konfig - Starta. , Statistik MIRRORLANGUAGE kr, MIRRORSTATS 1. round-robin aktivera fastcgi 16 - End. Apache Tutorial Dynamic Content med CGI. CGI Common Gateway Interface definierar ett sätt för en webbserver att interagera med externa innehållsgenerera program, som ofta hänvisas till Till som CGI-program eller CGI-skript Det är det enklaste och vanligaste sättet att lägga dynamiskt innehåll på din webbplats. Detta dokument kommer att vara en introduktion till att konfigurera CGI på din Apache-webbserver och börja skriva CGI-program. För att få dina CGI-program att fungera korrekt måste du ha Apache konfigurerad för att tillåta CGI-körning. Det finns flera sätt att göra detta. Notera Om Apache har byggts med delad modulstöd måste du se till att modulen är laddad i din dig Måste se till att LoadModule-direktivet inte har kommenterats. Ett korrekt konfigurerat direktiv kan se ut så här. I Windows, eller med en icke-gängad MPM som prefork, kan ett korrekt konfigurerat direktiv se ut så här. Sc RiptAlias-direktivet berättar Apache att en viss katalog är avsatt för CGI-program. Apache kommer att anta att varje fil i den här katalogen är ett CGI-program och försöker att utföra det när den specifika resursen begärs av en klient. ScriptAlias-direktivet ser ut som. ScriptAlias cgi-bin usr local apache2 cgi-bin. Det visade exemplet är från din standard konfigurationsfil, om du installerade Apache i standardplatsen. ScriptAlias-direktivet är ungefär som Alias-direktivet, som definierar ett URL-prefix som ska mappas till En särskild katalog Alias och ScriptAlias används vanligtvis för kataloger som ligger utanför DocumentRoot-katalogen Skillnaden mellan Alias och ScriptAlias är att ScriptAlias har den extra betydelsen att allt under det här URL-prefixet kommer att betraktas som ett CGI-program. Så exemplifierar ovan Apache Att någon begäran om en resurs som börjar med cgi-bin ska serveras från katalogen usr local apache2 cgi-bin och ska vara trea Ted som ett CGI-program. Till exempel, om URL-adressen begärs, försöker Apache att utföra filen och returnera utdata. Naturligtvis måste filen existera och vara körbar och returnera utdata på en viss sätt, eller Apache Kommer att returnera ett felmeddelande. CGI-program begränsas ofta till ScriptAlias ed-kataloger av säkerhetsskäl På så sätt kan administratörer stäta kontroll över vem som får använda CGI-program. Om de korrekta säkerhetsåtgärderna vidtas finns det emellertid ingen anledning till att CGI-program Kan inte köras från godtyckliga kataloger Du kan till exempel vilja låta användare ha webbinnehåll i sina hemkataloger med UserDir-direktivet Om de vill ha egna CGI-program men inte har tillgång till huvudkatalog-katalogen, Kommer att behöva kunna köra CGI-program på annat håll. Det finns två steg för att tillåta CGI-körning i en godtycklig katalog. Först måste cgi-script-hanteraren aktiveras med AddHandler - eller SetHandler-direktivet. ExecCG Jag måste specificeras i alternativdirektivet. Du kan uttryckligen använda alternativdirektivet, i din huvudserverkonfigurationsfil, för att ange att CGI-körning skulle tillåtas i en viss katalog. Dokumentsamhälle lokala apache2 htdocs somedir Alternativ ExecCGI Directory. Ovanstående direktiv berättar Apache för att tillåta exekvering av CGI-filer Du måste också berätta för servern vilka filer som är CGI-filer Följande AddHandler-direktiv berättar servern att behandla alla filer med cgi eller pl-förlängningen som CGI-program. AddHandler cgi-script. Handledningen visar Hur man aktiverar CGI-program om du inte har tillgång till. För att tillåta CGI-programkörning för alla filer som slutar i användarkataloger kan du använda följande konfiguration. Hemsida publiceradml Alternativ ExecCGI AddHandler cgi-script Directory. If du vill ange en Cgi-bin-underkatalogen i en användares katalog där allt kommer att behandlas som ett CGI-program, kan du använda följande. Directory-hem publiceratml cgi-bin Alternativ ExecCGI SetHandler cgi-script Directory. There är två huvudsakliga skillnader mellan vanlig programmering och CGI programmering. Först måste all utmatning från ditt CGI-program föregås av en MIME-typ header Detta är header som berättar för kunden vilken typ av innehåll det är Mottar det mesta. Det kommer att se ut. För det andra måste din produktion vara i HTML eller något annat format som en webbläsare kan visa. Det mesta av tiden kommer det att vara HTML, men ibland kan du skriva en CGI Program som matar ut en gif-bild eller annat icke-HTML-innehåll. Förutom de två sakerna, kommer ett CGI-program att se ut som ett annat program som du kanske skriver. Följande är ett exempel CGI-program som skriver ut en rad till din Webbläsare Skriv in följande, spara den till en fil som heter och lägg den i din cgi-bin-katalog. Usr bin perl print Innehållstyp text html nn print Hej, Värld. Även om du inte är bekant med Perl, borde du kunna se vad som händer här Den första raden berättar Apache eller vad som helst som du råkar köra under det här Programmet kan utföras genom att mata filen till tolken som hittades på platsen usr bin perl Den andra raden skriver ut innehållstypdeklarationen vi pratat om, följt av två vagnar-retur-nyparpar Detta lägger en tom linje efter rubriken för att indikera Slutet av rubrikerna och kroppens början Den tredje raden skriver strängen Hej, Världen Och det är slutet på det. Om du öppnar din favoritwebbläsare och berättar att den ska få adressen. or vart du lägger din fil, Du kommer att se en rad Hej, Världen visas i ditt webbläsarfönster Det är inte väldigt spännande, men när du väl har det, får du en bra chans att få nästan allt som fungerar. Det finns fyra grundläggande saker som du kan se i Din webbläsare när du försöker ansluta S CGI-programmet från webben. Utdata från ditt CGI-program Great Det betyder att allt fungerat bra Om utmatningen är korrekt, men webbläsaren inte behandlar den korrekt, se till att du har rätt innehållstyp i ditt CGI-program. Källkoden för ditt CGI-program eller ett POST-metod Ej tillåtet meddelande Det betyder att du inte har korrekt konfigurerat Apache för att bearbeta ditt CGI-program. Läs avsnittet om att konfigurera Apache och försök hitta det du missat. Ett meddelande som börjar med förbjudet Det betyder att det finns Ett behörighetsproblem Kontrollera Apache-felloggen och avsnittet nedan på filbehörigheter Ett meddelande som säger Internt serverfel Om du kontrollerar Apache-felloggen ser du förmodligen att det står för tidigt slut på skripthuvud, eventuellt tillsammans med ett felmeddelande som genereras av din CGI-program I det här fallet vill du kolla alla avsnitten nedan för att se vad som kan förhindra att ditt CGI-program emitterar de riktiga rubrikerna. Kom ihåg att s Erver körs inte som du Det är när servern startar, körs den med behörigheterna för en ofrivillig användare - vanligtvis ingen eller www - och så behöver det extra behörigheter för att utföra filer som ägs av dig. Vanligtvis är vägen Att ge en fil tillräckliga behörigheter som ska utföras av ingen är att ge alla behörighet på filen. Om ditt program läser från eller skriver till andra filer måste de ha rätt behörigheter för att tillåta detta. När du kör ett program från kommandoraden har du viss information som skickas till skalet utan att du tänker på det. Till exempel har du en PATH som beskriver skalet där det kan leta efter filer som du refererar till. När ett program körs Via webbservern som ett CGI-program kan det inte ha samma PATH. Alla program som du anropar i ditt CGI-program som sendmail måste till exempel anges med en hel sökväg så att skalet kan hitta dem när det försöker Exekvera din CGI pr Ogram. En vanlig manifestation av detta är vägen till manuskript tolken ofta perl anges i den första raden i ditt CGI-program, vilket kommer att se ut som om. Make säker på att detta faktiskt är vägen till tolken. När du redigerar CGI-skript på Windows-rader kan kopplas till tolkbanan Säkerställ att filerna överförs till servern i ASCII-läge Om det inte går att göra det kan det leda till att kommandot inte hittas varningar från operativsystemet på grund av den oigenkända slutändan Linjekaraktär tolkas som en del av tolkfilnamnet. Om ditt CGI-program beror på icke-standardiserade miljövariabler måste du försäkra dig om att de variablerna överförs av Apache. När du saknar rubriker från miljön, se till att de är formaterade enligt Till RFC 2616 avsnitt 4 2 Rubriknamn måste börja med ett bokstav, följt endast av bokstäver, siffror eller bindestreck. Alla rubriker som bryter mot denna regel släpps tyst. Större delen av tiden då ett CGI-program misslyckas, beror det på att Fa problem med själva programmet Detta är särskilt sant när du hänger ihop med CGI-grejerna och gör inte längre de två ovanstående misstagen. Det första du måste göra är att se till att ditt program körs från kommandoraden innan du testar det via Webbserver Till exempel, try. cd usr local apache2 cgi-bin. Ring inte perl tolk Skalet och Apache ska hitta tolken med hjälp av sökinformationen på första raden i manuset. Det första du ser skrivet av ditt program borde vara en uppsättning rubriker, inklusive innehållstyp följt av en Tom linje Om du ser något annat kommer Apache att returnera den tidiga änden av skripthuvudfel om du försöker köra den via servern Se Skriva ett CGI-program ovan för mer information. Felmeddelandena är din vän Allt som går fel genererar meddelande i Felloggen Du borde alltid titta där först Om platsen där du är värd för din webbplats inte tillåter dig åtkomst till felsökningen, borde du antagligen vara värd för din webbplats någon annanstans Lär dig att läsa felsökningarna, och du kommer att finna att nästan Alla dina problem identifieras snabbt och löses snabbt. Suexec-supportprogrammet tillåter CGI-program att köras under olika användarbehörigheter, beroende på vilken virtuell värd eller användarens hemkatalog de är placerade I Suexec har mycket strikt behörighetskontroll och eventuella misslyckanden i den kontrollen kommer att resultera i att dina CGI-program misslyckas med tidigt slut på skripthuvud. För att kontrollera om du använder suexec, kör apachectl - V och kolla på platsen för SUEXECBIN Om Apache finner En suexec binär där du startar kommer suexec att aktiveras. Om du inte förstår suexec helt, borde du inte använda den. Om du vill inaktivera suexec, ta bort eller byt namn på suexec binär pekade på av SUEXECBIN och starta sedan servern om. Efter att ha läst om suexec Du vill fortfarande använda den och kör sedan suexec - V för att hitta platsen för suexec-loggfilen och använd den loggfilen för att hitta vilken policy du bryter mot. Om du blir mer avancerad i CGI-programmering blir det användbart att förstå Mer om vad som händer bakom kulisserna Specifikt hur webbläsaren och servern kommunicerar med varandra Eftersom det är mycket bra att skriva ett program som skriver ut Hello, World, det är inte särskilt användbart. Mentvariabler är värden som flyter runt dig när du använder din dator. De är användbara saker som din sökväg där datorn söker efter den faktiska filen som implementerar ett kommando när du skriver det, ditt användarnamn, din terminaltyp och så vidare. För en fullständig lista Av dina normala miljövariabler varje dag, skriv env vid en kommandoprompt. Vid CGI-transaktionen ställer servern och webbläsaren också miljövariabler, så att de kan kommunicera med varandra. Det här är saker som webbläsartypen Netscape, IE, Lynx, servern typ Apache, IIS, WebSite, namnet på CGI-programmet som körs osv. Dessa variabler är tillgängliga för CGI-programmeraren och är hälften av berättelsen om klient-serverkommunikationen. Den kompletta listan Av erforderliga variabler finns vid Common Gateway Interface RFC. Detta enkla Perl CGI-program visar alla miljövariabler som skickas runt. Två liknande program ingår i cgi-bin-katalogen i Apache distr Ibution Observera att vissa variabler krävs medan andra är valfria så att du kan se några variabler som inte finns på den officiella listan Dessutom erbjuder Apache många olika sätt att lägga till egna miljövariabler till de grundläggande som tillhandahålls som standard . Usr bin perl print Innehållstyp text html nn foreach nycklar ENV skrivnyckel - ENV br. Övrig kommunikation mellan servern och klienten sker över standardinmatning STDIN och standardutmatning STDOUT I normalt vardagligt sammanhang betyder STDIN tangentbordet eller en Fil som ett program ges för att agera på och STDOUT betyder vanligtvis konsolen eller skärmen. När du lägger till ett webbformulär till ett CGI-program, är data i det formuläret buntat upp i ett speciellt format och levereras till ditt CGI-program över STDIN Programmet kan sedan bearbeta den data som om den kom in från tangentbordet eller från en fil. Det speciella formatet är mycket enkelt. Ett fältnamn och dess värde är sammanfogade med ett lika tecken och värdespar sammanfogas Med en ampersand Obefläckade tecken som mellanslag, ampersands och lika tecken, omvandlas till deras hex-ekvivalent så att de inte tvingar upp arbeten. Hela datasträngen kan se ut som något. Du kommer ibland även att se denna typ av strängapp Slutade till en URL När det är klart lägger servern den strängen in i miljövariabeln som heter QUERYSTRING Det kallas en GET-förfrågan. Din HTML-blankett anger huruvida en GET eller en POST används för att leverera data genom att ange METHOD-attributet i FORM tag. Your program ansvarar då för att dela upp den här strängen till användbar information Lyckligtvis finns det bibliotek och moduler som kan hjälpa dig att bearbeta dessa data samt hantera andra aspekter av ditt CGI-program. När du skriver CGI-program, Du bör överväga att använda ett kodbibliotek eller en modul för att göra det mesta av det grunt arbetet för dig. Detta leder till färre fel och snabbare utveckling. Om du skriver CGI-program i Perl finns moduler tillgängliga på CPAN Den mest populära modulen för detta Syftet är att du också kan överväga CGI Lite som implementerar en minimal uppsättning funktioner, vilket är allt du behöver i de flesta program. Om du skriver CGI-program i C finns det en mängd olika alternativ En av dessa är CGIC-biblioteken Y. From. There finns ett stort antal CGI-resurser på webben Listan från HTML Writers Guild är en utmärkt källa till svar på dina frågor. Du kan läsa mer om. Den nuvarande CGI-specifikationen finns tillgänglig i Common Gateway Interface RFC . När du ställer in en fråga om ett CGI-problem som du har, oavsett om det är en e-postlista eller en nyhetsgrupp, se till att du ger tillräckligt med information om vad som hände, vad du förväntade dig hända och hur det som hände var annorlunda, Vilken server du kör, vilket språk ditt CGI-program var i och om möjligt den överklagade koden. Det kommer att göra att du hittar ditt problem mycket enklare. Notera att frågor om CGI-problem aldrig ska läggas ut i Apache-feldatabasen om du inte är säker Du har hittat ett problem i Apache-källkoden. Obs! Det här är inte en QA-del. Kommentarer som placeras här bör pekas mot förslag om att förbättra dokumentationen eller servern och kan tas bort igen av våra moderatorer om de är e Ither genomfört eller anses vara ogiltigt utanför ämnet Frågor om hur man hanterar Apache-servern ska riktas till antingen vår IRC-kanal, på Freenode eller skickas till våra adresslistor. Copyright 2017 Apache Software Foundation Licensierad enligt Apache License, Version 2 0 .
Comments
Post a Comment