You are on page 1of 926
@ ae PBN 7 wr arr a iw fhe A eli tLMEWebHES BAH (4EF PHP, Java, ASP.NET) KAS nett ae @ ft ATHPMUBAT Nginx IRE RB SoA AMIS, Shae GLA PHP. Python, Perl, Java, Ruby ASP.NET HN. AUF PHP 4}, FRAGT php-tpm Astizti', 46k — RIPE T ORI PHP ARH memcache J+, Est 28°F #851 Nbmemeached {) memcached. 3J-F (HH Python HE AFFALAIM A, RATT uWSCGI M2, JEFF VERT CIN POUURTRT. SLE 8 SSC BLUEIR 7 AEASIEIADL FOR, tN Django HEAR. iE4F Python fh) =At% 20%: python-memcached. cmemcache A! libmemcached. [AN, UL Perl, Java (1 Tomcat SJ] IB % A 29 Al ELE > AU Ruby FSAUGLAM MTARAL, RENAE IEE. tT ASPNET HATA. AEM Windows AGE FIM Linux RIE RE, AERA AA Mono, dA BPP AEE IREY Mono M(H ANT 9 RAK. ACIRIN-ED” X08 Limux SEF %, ATF Linux MERA RSUEEALAA , Limux Ff) Web 18% 28 4888» Linux IRAE PASI AA DL, Nein IRS RPTL, HUI CTC. AEA AEA SPCR APARLHEHH Ngin wir. APHDMA REAP HME DOE, ERRATA MALTA, PALES. ALAA: 010-62782989 13701121933 BZEMMHRA (CIP) SHB RAR Nginx HEAR: RGTERE Web IRI RABE IZHE CET PHP. Java, ASP.NET %$) PFA a Ab Ht: PREM, 2012.6 ISBN 978-7-302-28783-4 1.Oae- U. Olid TL OHM KA W.OTPIB.S HP BREASTS 11 CIP MRF: (2012) 084725 RMB. RAI ABT. tink RRM. eet REM B. FOK AERRSR Ts GA Hh EE BL 4k, hetpe//www.tup. com. ens http://www, wabook. com Shak IRR ROI AE 6. 100084 at BM, 010-62770175 ABM, 010-62786544 URSA MG, 010-62776969, c service@tup. tsinghus, edu. en KK tH, 010-62772015, zhiliang@tup. tsinghua. edu en ae RET et aE TT A LAS 2 SILER 1s8mmX260mm A) 3; 57.75 He 1 Fk, 1596 FE 2012 4 6 JAS 1 ME me 2012 6 AML AI + 1~5000 + 99.00 7 48 SRE EH +) MERSR RE ® a + 047045-01 If ay Nginx HRS ae SHE IE PBT. BYP TIPS. Al, Ze $10 FANS, EME 100 TTP. CLAY S196 RIED 7 Nginx JR BE {4 Nginx KR A4k Apache (70.2%) AIIIS (20.5%) Za —K Web ARS aa. iA EFA CRG HI PIM, PUSH Apache (A113. AVAL, Nginx H2z1K{8 Apache ffiith, R WIELAS KL» Nginx fe HEIRAL Apache, 1996 4F 4 JL, Apache — HA Internet Lb Jit 478 HTTP folikea. OLLAE Linux 9% Apache JLPJE7S MERE, MIZE 2002 AEHEAEAY Neinx JRA CEA A FREON ART a, ES 9 A EAT I Apache RS Ae, HEINIRAE, AE ATH QUA RE. AEST HN, AAR be Apache Ha¢é Tie, MUJEIA Nginx HR % AER) fl T {SF Neginx HR 2 RO DE, RRR, RA, ee AEA, TM TAs AY MEBs GIRS, ST Syne AT a. Nginx ALS I, SPUR. PERE HTTP IRS AA AR, FA tS IMAP/POP3 (ACHR, “ESE tH Igor Sysoev + 2002 EIFK. If HE 2004 ERA TA PNA, FE ELIE] Nginx AEA F 6.55% (13.5M) « Nginx ZOTAR BURT HAZ, READE AUER. Fete. PATA RS fi YAN A HAT EAE Nginx fk FIRS CLOK WA, CALI ARAL A ER, WAC EET TAI LR, TL ae ea . BUM AS AAP TTT ADRAC ESTAR ERE DA Neginx FADES EAE AMIE AN FF Chk FAVS feel) HOSE ER AL. Nginx HUH BURST: AMELIA VPS FINS aS AB A LL Neinx #47 AHA Ae 7 HER R44 MECHA, fd WordPress, Hulu, Github, Ohloh. SourceForge #l TorrentReactor. AEM ABHAR AAS SRA 1 AAG 2 ARTS. JE 10 PASE CHART 86 REMAN AE, SORT AB AY Re /RSEARS, BATE), SEE 1 LER TW 3 AAAS, TAR 2 OLR Tame 7 A BAF #1A8 3B 1 Ha} Neginx IRS 8 sRNeias LAM TERE Neb ARS SADA SiSHE cas ov. dove. asp.ner se) 2 AWAY Nein HRI ARE SI ABE 983 MWA) Neinx ‘5984 $61 B85) Noinx ARB AAA IA SARS AMIDE. Nginx HRS ah RR PEPE. SXX ARAL. Bh DYFLP RE Neginx AU ABNEY AT ALE) Nginx EAA. 1K Neinx MsHhE ACU Nginx JI BENIIEAC SEAM JRE, VDE Nginx BiCMOS AR it. 2 Neginx MERA Nginx |e] Apache —FF. la) PRAESH TREATS, {HEF Apache HARARE, MUR Apache Si4% “Hie” CALAL BMRA Apache WINER ASL BOMB Apache, if 5 1b? SAR, PRT TLAOBTARA Apache ME AYLLT), MSA Nginx Wl Ws2il “TE ah SUE Ht Nginx HRS BSB, SA TO AE Nginx An aA, Batt 463% —J_E HELE Apache JR eH « 3H Nginx Mi ew— PPR Neginx HRS BSCE ig AIL AERC SD BE AT ND, OB AMS AE IP. BR, BUSPIE URL. AHA APTI ABD HEUTE LARA Rae PERE HR EI FEE server_name KEM, IF LAUER FARA 4+ server DE BOK HE ERY PGT AIM, RS RR HE CT EHF Cexact name), iMAC % F (wildcard name) BF Je LE WATE. SBSH HABLA P SRE Nginx RYT TCA nginx.vim AMAT, Le FARE CEI eG vim CT Sy, FUE TT AFLP Sg: Nein MIRC BRAT EF shell (Bash) HAL, 42 Debian RHE FH T4Ethi] Apache2.2 Ned EAL dt 4 aPensite Ml addissite (1) 42 Aili, HH THs) Nginx. IGM azensite Al a2dissite Xz} Perl iW PRS. addissite # a2ensite it) PSHE, TAT, TPA RAT PEA Ik, filfal, nginx dissite 4 nginx ensite ff)“ HEE» {URAL 242 Apache, WA ALAR TARE AEE htpasswd ICA. Nginx ZDBUAR, HERR EEL BEARER A, TR, BRAS Jy HI — ASB / KA HAS 5 6H SXX HEE ACHEAVAT 500. 502 Ail S04 Fi Pet CH LIS Be MeSH 38.7% (HH TCMalloc fi4t Nginx TCMalloc Hl Thread-Caching Malloc M415, ‘CHE Googe 244 FAI ATUL googk-perftools fk fa. TCMalloc 464 4719 4} Fic 1 8c% Al MIE BE MEN glibbe JAE AE Se, CMAN OUL LIER Fi MySQL, Mimi AT ABE RAEN TR, IRE MY DU Nginx SeRIDEEAY DNA, PAK, SPIE BLA] Ngimx 3 ik ACAOE Je HA $8 H PCRE ERIK HIP TEMEIH Nginx AUR #R 2s YB TIPE SN, BIDET BE RI HB A PE MAYA. IELVEA T pere-config Fil peretest rir, LIS Nginx jk 5 ih 84 UTRB EN 26s StU. 9% Neinx MATH MSR BRACE Neginx “FSCS AT YAR AEL-Cs Nginx HRSG HH fi AA A, Sa dh WPM Heartbeat ME AAT AL aL Be AML Heartbeat M4 25K Heth] Nginx HRI iN ia. Gabe, REE 4 PR” AP Sl, Ye IP LAE Nginx IR AEE iT IP, CAL BARAT UALS OY IP HE 10% 107 QA 10 FAA Mi. BIBS Nginx ARB BAIT REAR AMA EAUH DHE T Nginx BEEBE SILAS Sif: 11 ee MATT S12 He RP ER 913 He Soa RA ME Nginx (NAR 14 ACH FLV RIA ASH Neinx MHA 16% HE FTP FR 17H Neginx 5905 Rise Mae 19% RH Nginx MATICRAS 38.20% map SURE 21H Nginx WPHALA/Z DDoS Kit 22H Wh Neinx iN, PRR NLS. 23% HS URI 24 Neinx SRS MDT 9% 25% Nginx 4 X-Sendfile 98 26% Ze Nginx (MZ MRS iA $827 Neinx Sila B28 Neinx HARA be Neinxth A MN St Web AB RAB SME ce me. swe, vor ner) % 29 % location "PRAPLE AIC 30H JG Nginx RS BARRA Pha IP at B31 RTE 32% Nginx 24 HTTPS iS 533 RUN Nginx MLE RAS 3B 34% (Fi empty gif 3835 HE Nginx NLR AR 38.36% Nginx [f) WebDAV $537 Neginx fy Xsit BR 38% Neginx MRAVIEAH 3839 Nginx ff cookie HAO Neinx EPR ARAMA 941% idl Upstream BURGE Neinx SIR fa BRS aE $42 UB ETL 43H KT Nginx REF Ripa Rapk LPM 344% ScGl 945% Expires 45 ETag 98 46% (Fi upstream _keepalive #ik3:9 keep-alive $47 ASRS RM R48 k (A sticky MRAM SIE 49H Nginx NE GRSBAM AL $850 Nginx {8} redis 4B 98 51% Nginx vi /5] MongoDB 52% Nginx ii] Mogilefs S=Ms Nginx SAR JRL Nginx KSLA MERA La UR, HO AA Nginx Bair. Wl proxy cache, proxy_store Ail memcached, ¢r#t4f proxy_cache Zi /\flE/H proxy_store S84F Will, (4 memcached #29 = 7s 4 Memcached; ALUM MB ABR, FIAT PULSAR, SACL Varnish RGR. ORES TAP TOR SAE 38532 B#eteR—proxy_cache Nginx AUIX-SUIHE MA 0.7.48 REATTHARBE OLD, EFM RIL Squid RUE AFINRE. “EM JRUEALIE URL BAD XE RAIL AM Rey, FEF MDS Sai, Sem a Mme APL HE A Sct » RTGS RAPED. PUNE 0.8.53 AA, AE 0.8.31 MATE proxy_cache MLUSEcit T, ZOTAR eRe Te a, USM ERR OR LIL, ELA iit =Jy HE ngx_cache purge KWMRENY URL BF. EATER URL BEE. HE 404/301/302/200 WAPI, Wile, CEN ACAI Nginx ff) proxy_cache SAE MME MRA HG « =——— 954% MtEtER—proxy_store 484i proxy_cache Z fil, #42(8)i) proxy_store, th T Nginx ff) proxy_store 4248 “IK FERIA RETRIAL, FL, MTSE AY EE Ib A” TBE CRANE AEA DEI? OD, RUTATLLA C STW ART RFS. {UH proxy_store ft REE SUDA TAF, ABBA Ngimx PY GLE ACS AEA 2 Par TA OR) A ZF RER ASSDL S proxy_pass THEY RS ee EAL, i SURED TH. AIH proxy_store HA — POR Hay SESAME WHE OLL. ER CE AR HAR ep Bt 4S ALY Ht 9 28— proxy_pass SHAE (4) JiR ARATE PS GUPTA BERT D, BRIERE ATTOUE. Doe KATTVE, BBA RAB AHURA ET, UR BAT ANS BHT RAT BREE PIO CH, BART AT, BTR REA HER — PALO ROH, BE, Ba OE UAT RAF 0 358% Btebi——Memcached ALES, (RT Memcached BULA MOMS AT, 3H Spi JE Nginx ff] memcached IRA. ili A—ASHAL Memeached ARH, Ao MAM Nginx (UACEESC(H. HGR AHEA HOR, BRAL IS DU ABS} AE te 56% RAF beR—NCache JR AMRAE TT ATA BE TR PRT AT SS AS I AE AR SF Jl FI——NCache. 3 dE -+ eRe AMR T . NCache, inx Cache, ‘EA XH} Nginx fi) 0.6.x MEA, AAP Nginx MYSUBIRASPASSHE, HU MIE CEI THROAT EEL Neinx PTE SULA R87 MAAR — Varnish 4€ Nginx "1 Varnish S247 Zi CHEMO SLAY, CER AEHI Varnish SE4EER I ae JUL HEN T Apache iit. Varnish S&S Ai PEREIY SCHENY Web MKB. ETT DA S4e4E Linux 2.6. FreeBSD 6/7 Ail Solaris 10 AGEL, VU AES ey BHI HE TE » 82H 381484) Nginx 4 PHP 38 2 84F Nginx 45 Python 93 35} Nginx 49 Perl 38 4 4} Nginx 49 Java 985 t4} Nginx 'y Ruby 98 6&4} Nginx 'j ASP.NET Jig Nginx ‘5 Apache ENgimtt 8 BTERE Web BESSA ABE 55 EME a pew, dove, agp. nET =) 38.188) Nginx 5 PHP 2H Nginx #1 PHP 484, ik Nginx MEUTARASI HL, Th PHP (yz) ASiM HLACe PHP Mb. WBA A ITT ITI: OK Nginx SERVE) SORA Neinx ARERR, i105 YF “SJE GY FastCGl Bik: HA PHP SHREK UEUUJE FastCGl MER, “EMA SA AP LLL php-fpm FAT, NS — AL PHP (HF) fastegi server, = AU ALAM) lighttpd #Fff spawn-fegi (Wie HA SAAR BR, (VALS RTAT, ALLA LOTR HP IE» BL PRR ARE WEBI 1, MR AD REE. de PHP ATU T php-fpm, ize Neinx 77 FRAT) HEH ME FastCGI Mtb. 982% PHP iii] Memcached 2h #898 Memcached MHA. (3 LUBRFI MALT, ACRE RTABR, FUR AE Ji Memcached 4 fit Zs 3H, RBEATAL AM SP TIL. Fie BE EAT I A AG ER T A AERA EELS MAE SER LS. fe PHP F Ait FH] Memcached fi 458» APS MEFE, —T3LME PHP HEIR IF Zh) memeache, i535 -7S0U) 2 (8/1) bmemeached fii) memcached. 383% php-fpm MRS TWF php-fpm it) TAPARAS- 38 2 88S Nginx 5 Python AA) BAG T APB Nginx ff) uwsgi BU. uWSGI JR 45-28 LK ngx_cache purge, “4% ARAB Ts EAR E MT IXY Django R44 TF Fo 4H UWS RSS uuWSGI fe —-7RRED. EL MEDD. RPFPRPE AA SH A GACT Y A HEE VEIT ARH Oo ACE NWVEZA, uWSGI Reto -7+ WSGI IRIE, RA TE. EME LGR ATEN. GE Web FAIRS 88, PTVUMTIN ML. efi. BEE. RPC AUERLAT IL. EMU BUE uwsgi GER WAT EBAS, AMX Nginx Al Cherokee WOR AT AGAR Oe), FAT PAL REP [a J) IH uwsgi AX. UWSGI ATLGET ERT fork BOX, SURBESt. SHAS, IFAC green threads. coroutines # #723, $iJM uGreen, Greenlet. Stackless #1 Fiber. APPEAL ROK, UWSGI IRS EEE TA AH: Ae AT. SER, XML, inky yaml, json. sqlite3 Sci} All LDAP. PRUE Ok. CC MUBEDE TEAR. cake, AT MAGA AS ned E DL RAE AS EAR ISU, ATOR AEE a ol 5% Neinx ff) uwsgi HR ALE ENE HG Nginx +5 uWSGI HEREBET AE 4, 3¢ AAT DAPHNE UWSGI EES 2. NF uwsei beLA UWSGI JI 25, UWSGI [4 BeAAL uwsgi PL — PSH. Roe RMR (0 WET Nginx ft) uwsgi BR. uWSGI fk 8h UL Ae ngx_cache_purge Zh SAREE it SEBUIU AT LM Django JR TARR. CER MART A Et BA ee Python Friis CEG IMIG RS, BALI Y Python fi 2.43 AAS, iAe Red Hat RHEE HE A), VANS 4 OCF 2.7.2 WAS, SEAS ER AAR CDT EA B7e KpleT FAB A ORV. Ze PIRI EER OER 8 NAT Se. ATTEN 8 : DL uwsel Wieti : SEF] Django #848 <7 UWSGI SENSE BURY & 7 EOLA BLY SC = APS LI HE AS i 1 EAA 4 uWSGI Sf) 2 Fhe Nginx uwsgi HERR A AP LS +s REESE SRE ET RR ME Ys aC AEF Memcached ft PiFt Fist) ATF Memcached H%28, Python %/ Mi 77z0i#eH =A: AL python-memeached, fF aR http: / /www.tummy.com /Community /software/python-memcached/. sie 3/8: 3 1.47; — Fe cmemcache. ‘(ky FHL http:/ /gijsbert.org/cmemcache/, fi BIKA 0.95; =f libmemcached, ‘Eft FAtHHL I http://downbadtangentorg/, ft BRAY 0.9. RoR Ris session fé Django "Pf —“*i2ie TFL, EAT DIT RETPII Afri DAME 4e FCs Tad IAI MITRAL, session (KERTH cookie, (Hse CHEM seit Hee Img MN DU iE. Django Seti eA: Sz AE Sea MM UE. “EE Sey Uae Td RVR AE ROMOR » “CHP IGE CME CEI BES I ELT PRA AICI NY cookies WUNE, cookies tL —AIE ID, HAREBAEA SY. Django KHER BEMIMEA RIK cookie, WRI BEHA Bese fE4i) 4) session Muli, "EASZ1KIH cookies US, ERMA. Django (iis (session) HRA cookie MY). FHC tH FURIE cookie, ii RICH HERE Cal PHP) JBRE, 7E session A°fEIE HS CARAT, RAE session ID ACS URL H!. (RASHES CER EMM, Gere ER 1, Hf session ID HG) URL My IBP AAAS OA URL 4 TIAA, HEFL session ID i647 fest jot Referer Sitka 2s, JAIMZA IU Rea, IXRLAL Django IEF cookie ft) iA. ARN AB FRTERE Web AES BAB SIME ast mie. dove. ash nev a) 383 885} Nginx 5 Perl #6 Nginx MBH LIPASE CGI, IR AAR EA GR AL 4 EAT PA Nginx FR HES ELBEANAT Sh ABREVE (CGI), PAK, PRAT RE A RAS HEBEL HA BAT Sb IAS BY OR, HOSA TT OAK, MN, PHP FastCGl WASH, “dRi¥—4> PHP fA As E483) —P AT LMT PHP FastCGl MES, Mb IMA AY LAAT, NRCS BET AREAL — MEISE, CREATOR BRR ee 8 CELA AT I ADGA A es BT PY CGI RARE. BUTEA —“M fi PEN CGIAR PHE FastCGl, RUTH FIRE Cal RNY, CAH Perl wea RAN. ABATILT =A, BI CGI. perkFCGI 4 Nginx (A F(R Perl HAH. 10% = Nginx S(t Perl CGI isi $811 = Nginx 45 Perl FastCGI S244 Nginx Hil Perl Hi@, ik Nginx MATAPASIA HL, iii Perl M2) ANIM HAE HY Perl Kise. PRBTIEM AIT APB: OA Neinx fa ROR UE) 22H Nginx MUTE BOR, Tab JEW AE AKI FastCG] BUR, GM Perl ARE 2K VEN AL FastCGl ZU. 4% Memcached Jk 45 (GE) ith ict EL FA)" fF ASEH, Perl (4) memcached 2)" iii = * Cache::Memcached * — Cache::Memcacheds:Fast ® — Memcached::libmemcached © Cache::Memcached::libmemcached 912% Neginx A BAY Perl HUADMT Perl BF ELE AMHR, Nginx ARS SEAT APL BECE Nginx PYAHDMAY Perl, ake AeiMict SSI CI Hj Perl. $84 #89 Nginx 5 Java 4E Java 5) BATE T Tomcat JR BEY Java MUMEAT AE. AXA HLM T Tomcat AURRCE, Be He BR mL PTAC « $13 HAH ZERASEDRAHH Nginx BY, GEGEASE Neginx HUTA, TERME, ey asi SUPT “RT RR” GRA FALLIN, ARAL, BTA) Hoa ARI. A BUTS BEE Tomcat. Tomeat ¢:45 Nginx (HEAL. FEA GEH) Nginx FY 82 ESI HE 14% Nginx 45 Tomcat Hie Nginx 45 Java fi) SCBU7y EAM LCP CSL. CE Nginx 75 ATT CER TH Java PLUME Tomcat (AT LAM Resin, W/L HMO AIRS OB. PAVE Ai BATT KVR TL: —HEAUREBLSR, 22 Tomcat ah Resin MURR, = APA TY Fil DA. ¥p Nginx (E29 IM GIRS BEI Tomcat ff Yes FR AS, Nginx ANTHERS CHT. OE 7 SHAS [SP WA GL ALE Hei GAY Tomcat HRI 2h. Nginx ERK RE ACE (Proxy) fibeat SEE, JME BER: FHF OE AEP SHAY HTTP GR 4G Be Bl Ja Bt ARI oS. 15% WH server.xml Ltt ARETE BA TEVA Tomcat (ACB HE. MF BUMBLE A ROR BL, ARG AS BAB ER ROCHE 916% Mi web.xml “FE PTR SEN ME ALIKE ATA: AI CESCATALINA,BASE/conf/ Fa F ii 3A LAESCATALINA_BASE/webapps/[webapp]/WEB-INF/H3¢ + fil# "I EAN fit 42Fi web.xml (Ei, ma RLY Web KAIF A CASALE, Tomcat 486% Web KEE FEM, ORES ELAS PN ADL, ARLE Tomcat fet, HAVE Tomcat SMART TMB. CAPT F, Tomcat M252 BIKE GAC (AN conf/web.xml), 28 Ja Ht 22% A Web A AUY Aa FURR CB WEB-INF/webxml). BUNGE GAA: ALARA Cconf/webxml) ZAC AICHE NAC EL BLT AL AY Web JiHAEIY, Ti+ Web HALF 8 MACH REBT ch. ve ACBE teat faite it CEP RRP EEE, SPAR Web MW AOKUL “EBETL ATA CMY web.xml, WALA, MRA NCIC PE, Tomcat eda, {AAR ERR HF. 38.17 % AEE context.xml 34+ ATEARATIE TK context.xml SPH AL ETAL 3) 18% AH tomcat-users.xml SCfF AAS TEE Tomcat AYE RCE, ERA. Fa AES 919 & AcB catalina.policy Xft XJ catalina.policy MK, HAR LULA AIPA T Security Manager ki, KX tt ABA, TORBEN, MAIR AC Ha -MER. 3E— ARP AP HR IF Java HAE, Fl Tomcat AG KRRIAA, (ER TRA GEM, HARUM TARAS REIN), SAA ABD AR a AEE, AT I BE RAW, SALTS SB BLT SN Java BFE Tomeat LigtT AT» $8 20 # WCF catalina.properties X4+ HEYMAN ACP UBRIN AVA: —JE catalina.properties XfF4}HT, —J& Loader 762841 RATE. AURA ARR LARA, (EAE, CAT ase se SAA lM He 218 LARK TOMS Tomcat Hk TFS LIE (Filters), A LLAMA ARR REBT AT Web BAT RY abo) DMF (4 $CATALINA_BASE/conf/web.xml Sc##"}, (BT DANG HEE YAY WEB-INF/web.xml SCHR, DLE UAINZIN Web IY FI REFFAY keNein AA TBE AE Web ARS FR ABE 5 IEHE cae ove, save, ase ner) 38 5 #85} ~=Nginx 5 Ruby ABS NIAAA: Ruby, Rails, fl! RoR Fil Passenger. ACURA Y Ruby (NSH RALK TL gem, YJri kk Passenger, Passenger 49 Nginx If)#4 RRA RAMA, Wl Passenger 242A Nginx fRTC HE, LL Passenger HHtAIMI EAE PAM RAE A. Rails RAL 48 Ruby ft) MVC RH, BRA HEI PAY Aa HE AA PE AHA T Rails, fd Rails Mt RAL AAT eH AT. Rails BELT SEtrae A, ZEA Rails HEANOR AEA ER bet Lee T Dali 22 ¢¢ #2. Fil Memcached Jit 4. 22 HR ARTEAGA IS 1, PAE RATT BEA Ruby 264, Nginx 49 Python i) Hei it Passenger KIWI, PALE AH BE SPAN MA Passenger fiJ7vik, Passenger itt ASE Neinx 1 HSA « 323% FEL Rails AR — HE RATA Ruby If) SHER Rails, 9122 RoR fi] 43—-P Re Blam BE Rails HEE T AISA A, TAN (action) AIM Be (fragment) 2245 RM BERT LANA, NP SLIT (page) SE¢ARACK BL, CGE Artin Amma SEGARA TUL FLAP: PERF AR SF RAL EA Memeached [li % abi Ehcache #247424. Dalli —— Memcached fi)" 38 6 BBS} Nginx 5 ASP.NET ACMA} URASIYEEILst Mono #f ASPNET FIFiZ(T7E Linux HEERSEF, ASP.NET side Linux ABE FILA. (ARIES, KHER IRS EH BLA HK. 25% Mono HEAT ERA fa) PLU F Mono. HEAT IE TRAN TE, AN ALT Se Mono, 95-4 Mono AYE HE 6 38 26H Nginx 45 ASP.NET (MRR HEATER IEE T SPAR, BOAT CR, Ae FSH BH RA COREE. CERI URE T SMEAR: © Ks Nginx+monos fastegi-mono-server zt Bh © Rs Nginx+monosJexus © 2%: Nginx+monot+xsp 9527 H Session 74k HAF HTTP PHM ALFAR ASU, DAUIL CE PEC UG a] Web STH, 1 Ay N95 A 3th PUL MEET IT Sea, ED TERRA A. RE BAS AIT HB SIE AYR Ab AEA AEP PRU fal ABE EL. LCT EE session. Bwe Bie KF SRMIEAIT IC TRS. MSE OLERUE, Vig Ae NR ae RAE ° RARE ° #8 4 MSEEAPORUE, SABA: 0 Rtas A «RSA PRP SEAE, PER Tit Nginx WT NAPS, Ble, WAS ei Nginx 42 ¢8iR INSEE BUASELIF PA SERA, LAA PRA: © RBA ROLE 0 ADA BRE WBA BM VES HED A AT F 98 29% Nginx {t#E IIS 43 Mono Hitt, H&It) ASPNET LZATE US IRA. ETA, TEE SHUM S AE SU. WUT ASPNET HEA, SEAT A Windows (AE, th BOLT Us. 76: Hie F. ON TMU Neinx AUR RHE GAT CE Linux FD, ATU Nginx (t) CBE ORES (Ea a AR GET. TAIL Nginx [Sp ai TCE A [aia Nginx 5 Apache 3X MISERY, EAT HW, AE T MS Apache, — 44 T WHF SALII Apache, AEBEAT Nginx (IKAMEAR, Apache AoA DHF AT ASDA KAD TTR Nginx Ika AI HE AEB, Cit WRAL FYE ZAIN Apache Mk4-ah, tM MLTR MMA PAE Nginx PBA Apache, HRRATT RHA MIMS, 8 TARA Nginx, Apache 38 2> (811 (URI, — AE ALES bas 1 STR GFE] Nginx, — AR CEDLAS SER EIR Neinx+Apache, SPIKE LICH, ik Apache 245 ¢E/G ft, ili Nginx 324T CET ANNenett WS 1G Web FR ABB SHE cet rr, Jove, nse. ner > fe xt & Pf Linux 326-2. AAT 5 Linux Seni ASCH Linux Ff) Web JI 95- 28 47H Linux [R28 F ASIA IER A BL Neginx Jt 35 a8 1 Bt aa ieaEA — UIT APA Nginx (YF A&A KPA AAA, WREST SAIS. MOE — Fe A PRADK CO PAE Ey ss. man SCH}. howto, README, Changelog. INSTALL, LICENSE, *.conf%#, #020), RAK, (fORRG, RARHA RMA RAN WL, SHEAR, AAA IATA AIA, ATS AAS AREAL CRE BPA OME. MTEL APE, BRB SS Be ETI ALI Wis AESOP CEI H EIT ZE. BLIGE PUA TOCREARC RICH, BeANe, Linux PAIRS ASAE Or S DL BS 2 A322 Ey A, man Xi, howto. README, Changelog, INSTALL. LICENSE, * conf FREI, ALFRED EO, WLR ERS IS SC MONTIA SRT EAE RAO, ui ERP aR AA, PRM ERA RL, VES ALA De AAA Be , PARAL LERORBEN, CRUMB —H, RRMA TEARS. Pe AU AAR AE LEI A, RBA OE TRI, AEA PEP, RAAT HEM RIPE MUNTA. BRERA. SILF aa A-RANLF AR: “BRR AS TR?” R-QHAHKAR, MAMATAMRA, AAOHRGERL BATRA? H-HK NK CRABBY, DCAD, ANAT, KE TAIRA. AMAILF: “MP RG? ” POLFUIRA Pit, RA FL, REMIT, Rea T, ee eH FULT, TREATS, HARI. = irs PRILF EBA “BRR EES VR? ”, RATA BA. FRAHMM, FRRPRASTA MH. HB, HRAASPMARERH TER, BA, BMMPALE LAG RAE QRERARS RE, FARERARY, LMRABRMAMR—MAR HER, KEAAHRARAH, RHBBRARES, RAERMREM IA, —PASBE AHMRRA ERA RAIN, WR, BHAPRREARALWIRR, RHBETA AMBLCAT HAR, HAHAMRAMA ERY, MARMHARARAAESS EH Fie, MRA—QIS, —PYAR—P HA! RAF RAR: MPRRL HRA ERA L? ” RIL RAH: BEABAUATF, RARRALLAG, ARKH ELA, RRL MURR T “RARE, BAI", Ath, ANPRERRAUS. FARTMUE ZEEE, AMAA Y CHROMA, BAA, RRAEMLWLERNAVRT, HAARSWAMET, RSE HAMRRARWKT BAS, KMALAMA! HERSAM LMLERREMAA HM, “RELE-KW, MAURRAS", AARDFRMAHEL, URLITE RAH, BABAR HR EBR, AMER AD CHAR, ARIE AM Z RAEI AR A! Dt, ATAHHAS, RA SASS” PUT HAMHKM. STZ, FARA AL RARLABRA TIT (REA, EPR OMAEEIL), Bat, ART AL A kst FR MRA RA AE, BRRHAI HILT MME. KFRS WaT WHR RABE A Nein HR, AED DLE B04 7 TD UGA Nginx. Miche LEAR FB: © FEGtNRASSCAAL index SCPE, ERE BRS, HIPC IME: oR FIRE IG Bk ARH, A A eo EF ARAP AL AGEL PastCG] RI BENT, Fah SA ARP A « BUREHM: © KH SSL #l TLSSNI. MET “PREIS REO” AAT AGE TAR, HE TEALAL Nginx MTA» IMEC BARBIE, FPA aa: © RIFRUT, ERT 10K Mia: oF, He EAE AONE, PAL, BRAT EAED) Nginx RE EINER AeNina dA 14 FSTERE Web ARS RR AD SIBHE a pie. save, se ner) OT Neinx (CELE AIRE a © = —4 master i#f2 Al JL4* workers iif, workers it fz ti (RAP BUH ig tr. © «WMGH AT: kqueue (FreeBSD 4.1+) , epoll (Linux 2.6+) , rtsignals (Linux 2.2.19+) , /dev/poll (Solaris 7 11/99+) , event ports (Solaris 10) , select fl poll. o KEY kqueue M4 PRN AR, f4% EVICLEAR, EV_DISABLE (28 HHI 3th, NOTE_LOWAT, EV_EOF, number of available data, {i{Ui4. «© 3X#F sendfile( FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5), sendfile64¢ Linux 2.4.21+) Ail sendfilev (Solaris 87/01+) « File AIO (FreeBSD 4.3+, Linux 2.6.22+) » 4 Accept-filters (FreeBSD 4.1+) #1 TCP_DEFER ACCEPT (Linux 2.4+) . 10 000 44:42) HTTP keep-alive i Pe/{] Pi 2.5MB ff. AE SA i PRE Se EI IE RI SPE BWA PH: © FreeBSD 3 — 8/1386, FreeBSD 5 —8 /amd64.. Linux 2.2 — 2.6 / i386, Linux 2.6 / amd64. Solaris 9/1386, sun4u, Solaris 10 /i386, amd64, sun4v. MacOSX / ppc, i386. Windows XP. Windows Server 2003. fe & AINA PERL EHIN A AE, CEE PED AGEL, SPARC, ETS HAUT, BORAT BER AE AS ED EB, RRNA SSAA Bm. BACT, T SOAR, POR, ER NASH, FEC ONE, MARAE PE, Se, TOE wR. Bt, SPRANG TRAY, CROAT M, RRM, RAE REABHLEP RAMA LUNA, MARE — PRIA (BHAA KREME) SVT MPAA, RAR RIE AE, ROR —; Bo, MRAHERG ARATE ASA Z Mh, BRM ARIK (HRT LED): FS, EROAT RNR, BATRA, WRECKABMLET RMA ABLE, PERAURNUHAL, BC, CER MRK, DRA TRB ACM WET GRAMMAR): BDL, Fae CRSA), ee He ii tA A STS, EM SEL SS Ut BE TE RAR MEMS, MRNAS ERA, BAM EG RRA RT RID: BH. ABI T ARAM LAS, BEATA RBS, ASE eee a OH PRB Ah, AES | LA A eh FB TRE. WP AAA RE, FA, AE TESA, DG, RO RT FEAR AUEE MAT DLE ASA LINE: nginx_web_service@126.com. 5 wks UTAH) 20 WALA 10 S4E T, ANITA RAT: 2000 4 seize defy an fT, fe 70 Wat, 26 2000 WAT. AAR A Mkee, CIRM Hee — tyme ial “AK BATA RAE”, DA, PAAR MSE TIES, AR EU A SBE. PETE LAI ATU, TMAH AY A HERE A POM BE PEASANT AL Zs BAAS DUAR I SERA ERO HG ARIAT TTR CHE ER. EAE SCA, (HL AMT GREDR, PREY. WT, TRE GAARA BER, 7S ALTA ORE) Penge iad “OS ECU RL "RATS AT Me, FRAVREA ED TF, OT IE HGR Ee AIS ae. FETE PKA IDC, DEDEDE SMR, 3~5 SE TIEN ARNG AHIR, Ain LADS EL Se AR SB, FRAG BAI, BATA A APA, BIAUSR BL XX, ASAHI FURTESE AS A CLIPS TEED AMIRI: BRE TARA DRE, BT RUE VRP EAE, SURREY BAAR, BUA A AEF Tee, BOE ER ATIC ih. 20 SENET, SAR aR STARK, 20 SARE. ASS RS ‘art PRR AB IEAE CLA ACERS GTP CEE Pe SRRIR ALIA. BEGUM IE ASR I ASR AGIA, AS Ry AOE, TOBA AE EM SST ARMAS, TA ABS TY MOF BPG (BUILT » 3S ALARA NLD a BBR SAE SA BRU HEE ICY "6 AMAA Da a) RAPATTAIR, A TEE AR”, FERIA AE Y, AUARS SLB VEME Maas PRET JRA, APB EL AERR, Ae GT AS HE, ERAT, MRE i AAT OE, BCR ASL. Bea WE APAUI, BIE AZRAGIDEIAA, ERTL ARATE OA, RATT A FARM HAET. TAMA AY TF? HY, SARAMMBOL, RAMSHT. MRM AAS, AE ee” SHY Ae R 31805) Neinx 45 PHP SiR WARS "2 LL php-fpm (2288 9a. “2 111 FAFA PHP: “2 1.1.2 813 php-fpm 3 1.2. php-fpmn (4 FT At 4 1.21 etef FR emrne 4 1.2.2 bin/ a: enn uv 1.23 Sbind ELS es 18 1.24 php-fpm 18 13) 18 php-fpm ~~ 13.187 init ALADIRAE mmr 1.3.2 HIN init ABN oor rrmerrrereee D2 14 AW FastGt Hts: sid 141 Rema 2 142 Hid 23 143 Bill sen 3D 144 fastegi_cache +5 fastegi-store AB “32 14S BefidS FastCGL REE {9B oo) LS 1g FastCG) BURL AUIEE sett 32 LS.1 A@EICfY fastegi.cont Al fastegi_params <----------33, 2 Ma AR WSC! ARS 6S 152 MEK fastegicont Al fastegi_params (4) XH -~-33 1.6 Nginx #1 PHP Midi ¢-~ ‘382% PHP i i8] Memcached 39 21 TB - 21.1 3A¥ memeache: 2.1.2 memeache HEB 72: 2.1.3 Wik memeache 2.1.4 81] memeache.php 43 2.1.5 48 memcached: 47 2.1.6 memcached $24) {07TH --~- 48, 2.1.7 YK memeached=---—- 49 22 ROAR 2.2.1 %A Memeached ft] Nginx ae moh 2.2.2 ViDMRR Fab are “53 23° FabiNBR Memcached 2 ~~ $6 23.1 RE MST AR Memcached $277 ~~ 23.2 BT RARE AAR Memeached #847 ~~ 3B php-fpm Mika 3.1 EAB “61 3.2 UTHER mn 62 Nginx 55 Python 4.1 uwsgi bik = 65 aAMNpoxit AA FBTERE Web ARS HIER S itt 41 uwsgi BOI: 4.1.2 uwsgi SdH RAL 4.1.3 uwsgi ff) Sti 4.2 uWSGI fi 2 4.2.1 uWSGI ARSE a4 3 ‘UWS 26 He HE UWSGI IRS RLS 9H 4078) UDP Fy uWSGI fH Hs ~ HUF iGaR Hat ZeroMQ-~ Emperor Hk 46 worker Z (OSE R MA: ARN EE UWSGI HAF UWSGI PIPES {8A 30 SNMP FR 25 8 ~ UWSGL SERFS uWSGI iT bd AS UWSGT ft SFP (async UWSGI HEELERS eA uGreen (4 (8A cuwsai ULNA sean 42.19 BATHE Nginx Kitt) uWSGI SBS Neinx BY uwsgi BR-————— SAAR 5.2 ARG 5.3 {685 uWSGI II VB 54 UHR HOR PRBS 4.22 423 424 42.5 4.2.6 427 428 429 42.10 42.1 42.12 42.13 42.14 42.15 42.16 42.17 42.18 88 105 109 116 7 122 22 122 131 “13L 6.1 ‘2 Nginx ~ GL FBR ng cache purge HE 134 6.12 HAE Nagios Je nex_cache_purge BME = 135 6.2. BERG Python ern nen as BITE Rett 138 TA SBN Ls SAT TF BRIN 138 TAA ORBEA ~~ seen 138 71.2 INRIA ~~ 7.2 Seb 2: Dh uWSGIARIEAT 140 7.2.1 4° helloworld BUR- 7.2.2 #60 Nginx PUBECHE 7.2.3, ah wWSGL MRS Bm 141 7.3 SEPA) 3+ (FH Django HER 142, 7.3.1 ii wsgipy Bie wees 142 73.2 tr fTi\tF uWSGI ARS BB Rp 143 7A S48) 4: —A uWSGI Se PLELAL BEALS 741 PRS setuptools TFL 147 74.2 ‘3 VirwalEny ~~ me 148, 75 SS: MMT EAS Aa SPI UWSGI SE fi > 135 7.6 391 6: HbA Nginx uwsgi BLY BEA — TER 161 7.7 SEN 7: SENSE 165 78 EAS: StH 168 78.1 RAG: HDIET SBE MA 169 78.2 BOP: MET Memeached fi Ara 176 783 BSR: FNL ‘CREAN Memcached--~-~-~ 180 18 81 8.2 Django My47F ~~ 182 82.1 ADEM ~ 183 82.2 Mt 18S 8.23 AES 187 824 RES E 190 83 ARISEN, 191 83.1 38 Memeached fit 5 tf ABA PAGS i 191 83.2 ERMA THI MRT tsi 210 83.3 AF Linear tos 8.4 HU cache purge~ Be = 9.1 Razah Ae 22 9.2 MRE Re Zeid oI 223 9.2.1 AI/FL a tr MAREE A Rt De = 223 9.2.2 RARE MK ETB 223, 9.23 (INRA E EM Zid 92.4 ARATE TICPENURRAE on 225 9.3 SmI ~~ ear 225 93.1 CE PERE TH 93.2 ARIZ SHE Si 227 9.3.3. fill] Session AP HHI <- 228 Haris 223 9.4 WUE Na NCR 4% cookie: 229 9S CRE SA MIINEHL 229 9.6 RR ever 330) 9.7 LRA IA HEA Ooi 230 983 #4} Nginx 45 Perl $810 Neginx $f Per! CGI Wie) 234 10.1 CGI SEH - 234 LOL #1 234 10.12 7 2~ 242 10.1.3 GFE perlinfo.egi 250 10.14 Raha 251 10.1.5 AROMA SZ 11H Neginx 5 Perl Fast0G! 253 U1 Perl FastCGI (Af) eae 253 11.2 Nginx Al Perl (988 258 M21 SHI 258 11.2.2 Dida ER 261 98 FRX! 231 12.3 BEER eee + 262 113 Perl ij [i] Memeached ~ 262 11.3.1 illiet Cache::Memeached HX = ~ 263 11.3.2 idlist Cache::Memeached:: Fast 77st 275 11.33. idhit Memeached:: libmemcached 7.3% +--+ 292 11.3.4 id Cache::Memeached:: libmemcached Jy 298 $12B Nginx BABA Per! #RUMAST Perl BFF 307 19 Ngati BEN EA ob MRSS REARS ise B13 AS 318 13.1 FRI DK ve 1B 13.2 FARIFSER Tomcat: “319 13.3 Tomeat 9 HRS 320 133.1 bin’ HaK- 320 13.3.2. confl AR 323 133.3. logs) ASR 3 24 13.3.4 work/ AR 325 1335. lib/Aat e325 1336 temp/HaR- rm 325; 133.7 webapps! 1% 13.4 #3 Tomcat 13.4.1 ARH jve~ 13.4.2 4} Tomeat?.sh <4 328 13.4.3. (FH catalina, sh ~~~ 334 14H Nginx 5 Tomcat MHAA~335 14.1 RERA 335 14.2 #4 cee 93S, 143 AB Bernsen 14.4 (EAR om 349 $815 BEB server. xml CHR --351 15.1 98-285}: XML 48. 152 BOW: server 7H 153 $= BWA: Listener TEAM foe — e355 15.3.1 Listener (it: 356 15.3.2 Listener (ORME AT 356 15.4 SVU HBS: bre BULGE ~360 15.4.1 Environment 7636-360 361 363 15.4.2 Resource 76% 15.4.3 ResourceLink 763% 4384) Nginx 4 Java 15.5 ALAWA: Service 7H 15.6 BABI: BEE 15.7 HA-CANGt: 1648 Connector 366 15.7.1 $8 —ApMeiea: HTTP Connector: 366 15.7.2 SR ANERM: AIP Connector 375 15.8 B/S: Engine fH BSE 375 15.8.1 Engine fF = 376 15.8.2 eA E 15.9 BAMA: ROPE 15.9.1 SCH server.xml MY Bi mE “378 15.9.2 REMC RH 159.3 Cluster 7i# 379 15.9.4 Cluster TEA AT MASI TERE 380 15.9.5 Cluster Jif TALE 380 15.9.6 Cluster Manager Ji ~~~ 381 15.9.7 Channel 76:36 abe 383, 15.9.8 Cluster Valve Joi == 394 15.9.9 Cluster (Deployer 763% 395 159.10 ClusterListener Je" 396 159.11 emeachedBackupSession Manager RBI YE =~ 396 159.12 nginx-upstream-jvm-route BUR 15.10 BRI: WUE 15.10.1 JDBC Database Realm =~ 409 15.102 DataSource Database 399 408 Realm“ “414 1.10.3 INDI Directory Realm: 417 15.10.4 Memory Based Realm-~-429 15.10.5 UserDatabase Realm #--432 1510.6 JAAS Realm ~~ od 15.10.7 Combined Realms---435 1510.8 LockOut Realm-+----436 ISL 804s EBA BL ng 15.1.1 Tomeat $3 Nginx t245¢ -438 15.112 Host 73 (mt 15.1.3 Host JER AURERBIE 442 15.114 36L (Host) 4¥ (name) 439 ‘MHZ (Alias) ~ 442 15.2 SEP SHES Valve BER mms 15.121 Access Log Valve: 443, 15.122 Access Log Valve 545 UE 444 15.123 i@ARb nbd ae ~~ 446 15.12.46 JABS BLILRB men hd AGB 15.126 HEASAUE Valve 448 15.12.7 BEALE Valve mo 450 15.12,8 Form iii, Valve---~-452 15.129 SSL iil Valve~ 453 15.12.10 SPNEGO Valve 455; 15.12.11 Remote IP Valves: 456 15.12.12. Crawler Session Manager Valve 57 15.12.13 ALP web BEHIPEFE 458 15.13 Tomeat 2 5 Memeached MSIE 459 5.13.1 SAR 459 15.132 {iH Memcached Hib eis 460 2 15.13.3 ANIC id SPRANG a8 490 HG WB wed. xml CF 491 16.1. confweb.xmt 491 16.11 RORRCHEA Bop iT 491 16.1.2 REBAR SHR 50s 16.2 webspps/manager/WEB-INF/ web.xml 510 16.2.1 3-8: 5 XML ICR AAMRE- semeeenees $10 16.2.2 ABS; servlet WR S11 16.2.3 ABS: AA AE Sh te Bei. SIL 16.24 JADU: EL Web FEE eH 16.2.5 HMB. URL AD SAAR 16.2.6 WAM: BRAM E525 16.2.7 HEAD, RAAT -~ 526 16.2.8 IMS, ADRES AER fh marwresa BED 163. webapps/examples/WEB-INF/ 512 314 web.xml 528 163.1 BI, SESS A a 528 163.2 RBI: servlet MV fal- 529 163.3 WARM, ISP RE 529 16.3.4 SRUURLSE: 413% Web Hs RIOR 16.3.5 MHA; FAA 337 16.4 webapps/host-manager/WEB-INF/ 536 web.xml « ~ $30 a KN A TERE Neb ARS BRIERE S ieee loat BHR AL 539 BITS BLE context. xml Xf 541 171 BARBERS sal 17.2 Context 76% ----~ reer $43. 172.1 FI a see $A3 172.2 pM aba - 17.2.3 Context 1k SIH 03 17.3 Manager 70% 173.1 LAURE 173.2 BRAERB Ene 558 173.3. fife Manager 8% “560 173.4 HYAtE Manager R560 18% ALB tomcat-users. xml mH none 563 18.1 SAREE oS, 18.2 HERS 563 183 SHTRBPES 19% MH catalina. policy eae 19.1 RUPEE 19.2 SHA S72 19.3 HIER ore $73 19.4 APTA “584 19.4.1 Beat: TERT Be NSL 584 19.4.2 M—AA+ catalina.poticy SPERM 7 coe SBM. 19.43 HWS: RAML-SBS 19.4.4 S0UH4: CATALINA ACCA 586 19.4.5 TAS: Web Ki] RAP 586 22 320% WF catalina. properties SOP snnnnnneninnn $87 20.1 catalina.properties XfF---~ 20.1.1 Rife Sena ~~ 20.1.2 HR Tomeat (3K ARELAT 591 20.2 ALAR vevenne SOU 20.3 ALKA nae S91 20.4 Loader ffsiHiJH tt: 593 20.5 Loader #22 AT woe $94 20.6% Virtual WebappLoader ~~ 594 BU8 AARTRPALE, AOE 211 RUE AM 2111 EWR BRE 2112 RB B— 21.2 Bibi CSRF Mab a rod, 21.2.1 baba 4 Hi 596 21.2.2 wb R~ 21.3 Expires ttabas- 213.1 Rea ~ 213.2 Heid ~ 213.3 ARE WI/ AE EH 2134 RBA IRIN Bhmnnnn 599 21.35 HIN 213.6 Bese 601 214 PEIN AaB 21.4.1 LEMAR As. 214.2 RBM 215 Eb 215.1 ae ashe 215.2 WEEK 603 21.6 iAH IP ita es 603 21.66 Co AGE AEA CH ATE DANE HE 607 21.6.1 FAP sbi! “x-forwarded-for” 21.6.7 VICES Re 608 MEARE 603 21.7 Request Dumper i384 ~ 609 21.6.2 fH YALE “x-forwarded-for” 21.7.1 TRAN AK: = 609 Ail “x-forwarded-proto” fi) 217.2 HLS = 609 EARLE “604 21.7.3 NCR = 609 21.6.3 AY ABARER AY MERE RE ---604 21.8 WebDAV Fix iit a ~ 610 21.64 {fEAREB RARE 605 ZBL LBBB AB me 610 21.6.5 AABAME ER 218.2 Mee HL 610 ALE 3B 5 Bist = Nginx 45 Ruby 22 ABB 612 22.4.4 eR 644 22.1 3K Ruby ~~ = 612 22.4.5 Dei ALHS 646 22.1.1 Ae ruby~ “612 22.4.6 HasidaAmidit? 650 22.1.2 EME Ruby: “613 22.4.7 RoR (Et: see 6S 222 KY gem LH 613 22.4.8 Rack MHF H4~ 22.2.1 gem dn REDE ~ 614 22.4.9 SHINS 22.2.2 gem help commands #4 ~-614 22.5 SAT ALARMED TL 22.2.3) WHIM gem fr 622 22.5.1 Ri PTE ER HBR 2224 gem ffi TAS: 625 22.5.2 tft Passenger it f2 i) 22.3 ME passenger 630 Vy RAB “655 22.3.1 HDR 631 22.5.3 §2A% Passenger (XAG A 22.3.2 F 4 Passenger ~~ fi 659 22.3.3 README icf#-- 22.5.4 in YP aT 659 223.4 Be 22.6 AA a foe = 662 223.6 BME A 22.6.1 FARIA = 662, 22.3.6 Nginx (yHISe Ae HE 22.6.2 IN SRI] Passenger ~~~" 663 22.4 Phusion Passenger BUELL Hi 2640, 22.6.3 2) Passenger 3) 22.4.1 $28 Phusion Passenger FEb AR cronemeen i MS 640, 22.64 BRS A ROR MB om 664 22.4.2 BMAF 64 2265 KREG 22.4.3 HERAT vveneee 2 BNR 23 ABN AA MNS EAE Web HAS EMS int 22.6.6 AK Passenger ~ 664 22.7 Passenger MAIER 665 22.7.1 HMR HY 665 22.7.2 Passenger te si/6\ 1-41 SERA Web SAL RFE HAE “665 22.73 AP 22.7.4 take RoR IZ HIPEF 33 % OTR ~ 666 228 BITisty Passenger ‘TPA 667 22.8.1 964% Passenger “~~~ 667 22.8.2 Riaz f7iN Passenger pi 668 228.3 HRR-~ 672 22.8.4 AiR Passenger i -------672. 22.9 Passenger Fff) Rails ~ “615 22.9.1 Kah passenger ML 47 oe 615 22.9.2 HNL 615 22.93 iPM 616 23H EE Rai ls 6r7 23.1 JMR Rails HEME snes DBL BEREIIE oem 677 231.2 Wl rails re ~ 678 23.1.3 Rails HERES IEE 679 23.2 Spi BREN 682, 232.1 REL FACE 682 23.2.2 rake 8 ~ 688 23.23. bundle 704 233 HE RIVERA 709 23.3.1 app A 709 23.3.2 config AH- 12 pasa) db eee 126 24 23.3.4 235 23.3.6 23.3.7 23.3.8 23.3.9 23.3.10 233.11 233.12 233.13, 233.14 23.315 234 iAibi Ralls 44 doc FR: RI fh Boer log Fat ~~ 728 public [3~ 728 seript 728 test Hat 78 tmp Fak ~ 79 Vendor Fai sn 730 4 Rails HEME Fi8 fF Passenger M0 °F i#2- 730, SEAT rails (f) Web IR I-28 734 Rails BYE FH rails #1 --- ee 135 SH Fl 79 ve TAL 23.4.1 {4st Rails 741 23.4.2 MVC RY meron TA] 23.5 Rails fk) ARAL: 2 23.6 Assets (RRB 746 23.7 Generators (R22 me AT 23.8 Rill Middleware-~ severe 749 23.8.1 “bli TAD 23.8.2 Hik~ 751 23.9 AL i18n 152 23.10 Rails UH ue 155 23.11 Rails MALAI SITAR 755 23.111 Action Pack 756 2311.2 Action Mailer =~ 759 23.113 Active Model 23.114 Active Record =~ T6L 23.115 Active Resource 762 23.1.6 Active Support 763 23.12 Railies 164 23.121 BURA 23.122 Bee 23.123 Rails::Railtiedinitializer~-765 64 BBB Rest 168 23.14 Rails WHR) HTTP iAEALA ~769 21S HAS HikilE 769 23.15.1 tht app/controllersapplication _controller.ty PES, 769 23.152. s8LE app/controlters/tm controller EIR 770 23.16 SEPA i z ™ Bue Be. TTS 24.1 BEET 773 24.1.1 GLINEAE 13 24.1.2 Action BAF emrermreeen TTS 24.1.3 WBMEE 776 24.2 BATHER TIT 24.21 TER 778 24.2.2 SCPE RRR: 778 :? 24.2.3 Memcached Mid Mk A-~ 779 24.2.4 Ehcache S774 R 79 2425 AE EEPEER neem 780. 24.3 Dalli —— Memeached ft) a ese 780 243.1 Heit Dali HUG 243.2 SEH Ruby WcA 24.3.3 Dalli MSERERIH - 2a Sha 78S 24.4.1 fll: Ruby i 5H 786 24.4.2 A 2: Rails SLIME 787 2443 3: BMBF 790 2444 4s AMIE Passenger SSN 18 fife 792 2445 Ss SEIMREE 24.4.6 81.6: action BEA =~ 244.7 Ts HBR 244.8 8s shire 781 81 182 36 M4 = Nginx 4j ASP.NET 3 25% Mono 25.1. fA fe Mono 25.1.1 Mono Hi 25.1.2 MUP 25.1.3 Mono SCAU APORIE 807 25.1.4 MLNET fate eett: 25.1.5 Mono faite: 25.2. Mono ft As HF 808 25.2.1 Half) Hello World F2/F809 25.2.2 Giki Fit) Hello World F809 252.3 Winforms ff z%0t) Hello World BF 25.2.4 ASP.Net ff) Hello World PR 810 25.2.5 SeARIEINY LARA oom 811 25.3 meonfig dr vor B14 253.1 tetris: 814 25.3.2 AK MACESC HF 254 web.config Xfi 254.1 B—Bilshe HAW 254.2 HBAS: 816 tee 816 254.3 MSHS: tga 816 25 Naim BN tit Neb ARS BEAD SiMe 98 26% Nginx 5 ASP.NET AY MRBR : 828 26.1 J: Nginx+mono+ fastegi-mono-server ~~ 26.1.1 REE ~~ “828 26.1.2 Ait fastegi-mono-server oe 28 838, 26.2 7H + Ngimetmonotexus841 26.2.1 FRI eee BAD 26.2.2 iil Jexus web server I aE 84S 262.3 IWS 5 Nginx AEA 854 26.2.4 43H IWS - 856 26.3 HRS: Nginx+monotxsp 263.1 SERGE 263.2 XSP MIRE W864 26.3.3 (IH FastCGl Wyatt? -~-876 860 860 36 27% Session Trfik 879 271 TENT AAEM 27.1.1 web.config fF 271.2 AERA 27.2 Wass ah 27.2.1 MRE - 884 27.2.2 FR ARA TILA 885, Hwee BF- 888 28.1 SYA MRE 888 28.1.1 @OutputCache 24 o---~- 889 28.1.2 MF @OutputCache ft (BRHF ~ 891 28.1.3 “FAM MNREMEOETE ~~ 894 895 28.1.4 AARC ALR 9 29% Nginx 4B 1I1S~ FBit: Neinx 5 Apache- 1 897 1 B53 Nainx & PHP SEK Neinx A PHP Sid, ik Neinx MEBTRPANTAIC, Ti] PP MuabAch Tee PHP Abs. MOTTE AWH FATES: OA Nginx J BEI) — JL Nginx (ACHE, TESS St— RAWAL FastcG! MUR. TUM PHP AOR PML FastCGI, EMIS. — Fe VU. php-fpm AHGe4T, BAY PHP A Server, B= ARBIE(NHN lightopd (49 spawn-fegi (Wrae AH IER, (ELL UMSERIAS, ARARIE Oi GRH TI) » HaVSe0FR) PHP MAE 534, PH He ABET TM, BAR AB ARE RH BE. Bie fs EI a oe PE TRE PR i PBR As i” EAL MEAL FastCGI Application Pe ASM ARADO 1D, MUTTRAME I, A PHP PHAM T php-fpm, AH Nginx % ii #4148) 4% FastCGl HER. HEED php-fpm moses samt : fe PHP WK 5.3.3 DLE, RAAT 1M php-fpm 24% Calan SVN BRAATAT TD 16 Fak A THEE OT LLY hetp://php.net/ AI http://php-fpm.org 34s F ARMINIA. php-fpm ff fRAEL Andrei N gmatulin. i 1.1.1 FRR PHP ii ERA ie oe ae BML ARAN) PHP ee Ae 1. SiR Fa php-5.3.4: [root@mail ~1# wget http: //en.php.net/distributions/php-5.3.4.tar.be2 H4F./configures (root@mail ~}#tar -jxvt php-5.3.4.tar-be2 {root@mail php-5.3.4]# ./configure --help 4k PREM A—EL AF “./configure --helj A. WRAL EER, DPT HES RE TUR + (APRA, AERA PHP TFS INGE. IB TRE UMA HR ACHE, 41 GD, libxml2, mhash, curl, gettext. iconv $F, (sii Bete 4 PHP ZH HEE Le Me aF FE FF be ee4e PHP: (root@mail php-5.3.4]#./configure --enable-fpm « ESF make install NY, AAA wIE, ALB — FA [root@mail php-5.3.4]# make install Installing PHP SAPI module: fpm Installing PHP CLI binary: /usr/local/php5.3.4/bin/ Installing PHP CLI man page: /usr/local/php5.3.4/man/man1/ Installing PHP FPM binary: /usr/local/php5.3.4/sbin/ Installing PHP FPM config: /usr/local/php5.3.4/etc/ Installing PHP FPM man page: /usr/local/php5.3.4/man/man8/ Installing build environment: /usr/local/phpS.3.4/1ib/php/build/ Installing header files: /usr/local/phpS.3.4/inelude/php/ Installing helper programs: /usr/local/php5.3.4/bin/ program: phpize program: php-config w1 ot Installing man pages: /ust/local/php5.3.4/man/mani/ page: phpize.1 page: php-config-L Installing PEAR environment: /usr/local/php5.3.4/1ib/php/ 2. ARE #85 php.ini Xf: {root@mail php-5.3.4]#cp php.ini-production /Lib/php.ini SRR Neinx ALEC, End FRC: [root@mail sbin]#vi /usr/local/nginx0.8.53/conf/nginx.conf /usr/local/php5.3.4 location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; fastogi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastegi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; 1.1.2 Bah php-fpm [root@mail sbin}# cd /usr/local/php5.3.4/sbin/ {root@mail sbin)# ./php-fpm 6 Nginx (4) html 53 FARM RL ts [root@mail sbin}# cd /usr/local/nginx0.8.53/ntm1/ [root@mail html] #vi t.php Viel Mik: Configuration cgi-fegi ey APL php-fpm iy lA eH. TEDL EAI ANI. IRATLL php-fpm M7224 F PHP, Jf Hid y Nginx fy FastCGr BUSCH Hic, (EAD Nginx HET xt NET, PAY OL EH Nginx KMPH. i PHP AY ld TK CLPFRITIEZ 2-php) ii php-fpm Hee UT. CE PAYA FE RRATTAS 5) S32] php-fpm Fl FastCGI #8. RA Nginxtt Ae M12 GE Wed MASE cat me, soe, ase mere) BEES pbp-fpm mami Neinx 5 php-fpm MAC HAN IRIS HM Hear See ese me PHP Jal REI, Heme bin/. sbin/. etc/ik=+HR. 1.2.1 etc/HR [root@mail php5.3.41# tree etc/ etc/ I-- pear.conf '<- php-fpm.conf.default itp SEP ALIK CHE E php-fpm.conf, iXJ& php-fpm MACE XE, MARAE, BAT TLASILA Bf: 0 PRAY UNIX BF GUANA AL © php-fpm {hil IP Sd Asi C1 ; = CLIN a OR AA © f0¥FXE2% 31 php-fpm ff) IP shbk; = Tf php-fpm fifth KAS C/status) + = eR. 1. REX ft php-fpm.conf SF PHP (ft) FastCGl ALM. ACE A Sd, STD y fpm AL: oh RASA, ab AEA X VHRR SCPE, At Neginx £1 TRPRARA HEBD. th PHP A 5.3.3 JPRG SERS php-fpm, ‘EMAL HPF A ORM xml Hat T ini et. RT MAE, ARATE, ATR see RT, BS 2eek fpm ERE. RH: tpn ke E AARC HCE MATAR EAB ZE PHP Zee HSMN SK “—prefix=” 47K, (Lik WE “fust/local/php5.3.4” , iii prefix der iF} WLU “-p” SROKMAACK. sincludevete/fpm.a/*.cont BOAT AE —TME PLE. WUE glob (3) 4F4E (glob CO) PRUE IIDC RHE BStHY SUA MH a. en BCI — 4 ENE ITE / RACAL. UR NE [9] false) , AEA of CLL Hl glob (3) BRM HL. IRS AT OLE RCE CPF IY AETTHe y UE. e A 8, RURAL, USA OTTERS Fm EBs = WRT -p SHAR, BAMA (global prefix) ; + AFNN9LIE/usr/local/phpS.3-4, 3&4 44% php HUN) “~prefix-” Hise MIRK TE. RAMP: SBR 4p Joh A BEA 4} ch tea [global] FF 4G. ;pid = run/php-£pm.pid ELA php-tpm Id. $19 et HLH pid SUPE GLE. BRU ALTE /usr/local/php5.3.4/var (NF i Je “--prefix=” / ft) var/ HARE) o pid HORT RUM, MALATE pid 01. error_log = 1og/php-fpm.1og WR HRA RM KE. HHS MMU LEH log/php-fpmiog , Ef A iA ii Hi Jusr/local/php5.3.4/var. jlog_level = notice ICH AHH, AY HEMILY: alert. error, warning. notice. debug. SUMED: notice. semergency_restart_threshold = 0 HU SE PERE TO GEAR) A. TT IGSEGV 8k SIGBUS iBil, 28 & fpm #2. EH “0”. AaAKARIN HE. semergency restart interval = 0 “CHE (graceful) (MLAS MY, WAKES emergency restart interval wtf] fl SIGE MMH AIT ME ABS Fl) «ASR ER TE PE I BB SE RAT | BRU: BRM: 0 #process control timeout = 0 F REPELS master UREA SEI. A AMINTIAUY A: s Ceconds) . m Cinutes) . h Cours) BRd (ays) . SRIMi% “0” » #daemonize ~ yes 45 fpm HFS HT. MRK “no” , AA fpm eT, ROA FP imik. BRUAY “yes” « RLUP: BAMMRL SELL a AS Fi AAS Fa Te A PP Fig aA. IF fpr (Re i eh a tit M1 & 2 PA (ww) RE MMPI, 4H “www” . ZEEESpool BT LIEF EAI SERA, “CHES ARAL AERA 7. ACEI AE www. rprefix = /path/to/pools/$pool APPA ATH, “EAT DALAL E Fade + slowlog + listen (unixsocket) + chroot + chdir + php_values + php_admin_values MRR RR, BARR MEE Col4t/usr/local/phps.3.4) FeV. MN gi tt Rat MSF Wed AR RAAB SIEM Cs mr. sve, Asp eT) BE: MROLTVARNTS AMR. PRUMA: B41 (none) . listen = 127.0.0,1:9000 RSE FastCGI WARY IP Sha, AT MILL Fe + ipaddressport: (Hise it) IP SWh-FOSH C145 EMG TCP See 7. = port: Ze AF Fi IP Sebi Ae Se oie 1 EMO TCP EHR Fo * /path/to/unix/socket: 7 UNIX SEF EMT. 3235: 127.0.0.1:9000" #MAR RAH. jlisten.backlog = -1 ah S HT WE listen (2) backlog. sR BY “ 24: 128 (FreeBSD #I OpenBSD “-1" ) » jlisten.allowed clients = 127.0.0.1 DH CUP FastCGl % Psi HAY [Pwd IP Hii: Bt Mek PHP FCGI (5.2.24) AUPE ‘Ht FCGI_WEB SERVER ADDRS #f17F. E—‘V tah < [il ty SEARLS RIF | bn Ratt tH HL Baa IEDR RAY TOR ERE © BRUM any, WIBSE CE RIE. = listen.owner = nobody + HB, RAG ASE PAR BU EL = listen.group = nobody = listenmode = 0666 UNIX HRT. RIE. SCPE A Web HR 5 Ai. CE Linux 97020 BE JPL. VEE BSD ARS CHEETA IRI. AKUMA: ser #0 group #bie Be iz 47 fpm (HIF, Til mode iA 0666. user = nobody group = nobody JE 47 fpm MERA RIAL, A AAI ¢E UNIX ABH dE. TES: user RHA), UIMRH, 4oR group LAKE, MARIA user Hsasfik RAL pm = dynamic SPEAR 2 fo Hd FP. TAAL = static: X) FF MERE TE Rk Hn — “MBSE EL (pm.max_children) « = dynamic: FHERMECH Waa, CMM eA Pim SH. pm.max_children: [A] It AURa6 Fig RA FEAL + pmstart servers: ZEA ZI Maii) FUERA » pm.min_spare_servers: bP “4#)H Cidle') ” Ras (AEARE) [ely FUL. {ar SRS PA SUE ELAN BAL, 8 2 ASP So OE 8 * pm.max spare servers: JAIN FLEECE, WR AS PAI FUER APR AHA IBA HAP BA #12 St 2 dynamic 2 341i. pm.max_children = 50 pm HEBRON “static” MIN, dh O Meas HA php-fpm Me Als “4 pm WEUE EEA “dynamic” AIIM AR, Atte MIE Ae ET I TRE AAU ET AE 6 DTH OHO OR LC LH T-¢E Apache 4! mpm_prefork Fist ApacheMaxClients ()2) fie. (8 LL iT PHP CGI (43% 2 ft PHP_FCGI_CHILDREN. aE: Lit pm RKEY “static” BR “dynamic”, M+ >APSMRMA. WHR IK 165. ipm.start_servers = 20 TEI) fpm BY OEE Fit Fe. 2%: RH pmik HA “dynamic” HARA. HUH: min spare servers + (max spare servers - min spare servers) /2 jpm.min_spare_servers = 5 21 UE APA AML. @E: RAH pmiREH “dynamic” HARM IaH. ;pm.max_spare_servers = 35 Sop as PAA td AL BE: RA pmikEA “dynamic” HARM MHS. ipm.max_requests = 500 CEPR EH BEY PEREZ, BEE RR 5 CES SA PEGS OF Pee iit HLT RA AO”, eh AOR HG AS Ae SP HAT PHP_FCGIMAX REQUESTS. BRiAAL% 0. ipm.status path = /status RUFF URL, LAA fpm ARASH. MUR A, IAAT URI MER AS HL. SUE, ee ibac Fie. = accepted conn: iAilh FURAN Meat. = pool: dERI AMI 4+ = process manager: UATE, AACE pm iS, MPLS TTM +, static dynamic. “eB a HE = active processe: iT FAY EP = total processes: {i fiREREMCH. “CAA Pat DERE CE = max children reached: is Sisk APRIL, LOBIREREAIRE TH, “i pm RIE & OT AEAOMTR C4 pm Lt te dynamic HY). * idle processes: AM Neginxth RAE MMSE Web MR HABA SGEML cay me, se as er) idle processes. active processes fil total processes ftifii tit eh 3 2K. ii accepted conn AOL NT FE Ma: } accepted conn:12073 pool: waw process manager: static ; idle processes: 35 } active processes: 65 } total processes: 100 max children reached: 1 RUMI, AR48 Ceeatus page) HOA MHS) exe/plain, HLH hel json AEH ey tH KGL NEM MEL Plt, DUR WRE: beep? //wnw.foo.bar/status http: //wnw.£o0.baz/status?)son http: //uxw.£o0.bar/status?htmL BE: RAMA HA), CHET AREA, 22 ZKIAM, php TRE, AHR T RF —AAR AAO PHP KHAN R. BAR SRAM. eping.path = /ping % ping URL S/H pm (MRT, URAL. A AZT URL REE ping 9 Wi. LARA PA Yb A a ik fp AUER MNT. ANE AY DA PD CURE ASHLEE Cd eed): MURATA. NZ DALE AS TART) HEAD (24/7) ¢ 2B: BALE GHA(/) HH, CHMATAREMH, 2X FARA. PHP HAT RE, BARN THERA KTARA EM PHP KAA R. iping. response = pong HARA ping i RAINE, MYSIMS CAE text/plain Cat 200 /ARAE « RUMI ponge jrequest_terminate timeout = 0 PELE WOR AAT. YE worker BERL AIK Z fe. HR OENL TNA A HIN TLE © Ld “max.execution.time” (i%d4¢E php.ini Xf BEL. ARBRE 30, east —PARAR AOE ARATE) PAC RAEN AATINY, SER AIITT GST. SUR BEBE 0". ZO RAT “oft” «RIAA. iAH MiMiL: 0 ivequest_slowlog timeout = 0 +s Ceconds) (ki, %) . m Cinutes) . h Cours) sd (ays) 81% it HINA, WL, eS fiet +> PHP RUPEE RRR, A PTR, us Tide A ER RPI RE REE “Os”, I RAT WA “off” . FMM: s Ceconds) CRIA PL) . m Cinutes) . h Cours) Bad Cays) RUA: 0 #slowlog = 1og/$pocl. log. slow SPI RRIR. BATA 2%: wRIKET request_slwhg timeout 444, A Aid SPITE HRA. srlimit_files = 1024 BRAT FE SC PIA 7 Bi. PRM RSE RIG. jrlimit_core = 0 AES BLE BCE AL EET A BRR, A ORL yO, ABA EME RT PRAT Het, FEMS tT. PAE ARR & fi. aye “unlimited” , ot KPH! SRA: RSCTA. jehroot = iQ chroot HE. CERUE FP RH IN ASE chroot ACARI Ha FB A BUL—PAATHITS, UAT RAIS MIL. IBA chroot 7 BE. WEE: (TVR) “$prefix” AA WTM. “$prefix” 4 (iat Se de An ALE ARM “Sprefix”, SRETMREMHF AR. WRUAROMRAARE, MA HERASA HMR, chroot R—~KAERR AG Hh, Lae TANT RM RH. IR, ATH PHP 5445288 4 chroot 4¢4% (error_log, sessions.save_path, ...). Rit: RAR. sehdir = /var/www FE REAE A BDI AS Zo AE RH OTE ATL 5 FAIRE SAAR. SKU: “nea 4 AE chroot Mai] “/” Hake featch workers output = yes 4§ worker (fbi tH (stdout) ANETEAMHH (stdout) Hse fA) SBMA ICR. MM SUELO, HUE FastCGl (Nt. AA pRAEATH (stdout) AIEI Cstdout) #22 Hk Ae (BU /dev/null |. BE: ARAMA, ARARGM, HRTEM. SSMS TAs LAA uN pincst PSHERE Web ARSS ADB SIEHE ces ee. Java, ase ner BRIMEL: no jenv [HOSTNAME] = SHOSTNAME jenv(PATH] - /usr/local/bin: /usr/bin:/bin jenv(TMP] = /tap genv(TMPDIR] = /tmp yenv(TEMP) = /tmp {ei Hse et, ALT LD_LIBRARY_PATH. Hi f/$VARIABLE #6 AF “ii RH, SRM: TERRE env HAL sphp_admin_value [sendmail_path] =/usr/sbin/sendmail-t-i -£ wew@my.domain.com pphp_flagidisplay errors) ~ off iphp_admin_valueferror_log] = /var/log/fpm-php. ww. log jphp_admin_flag{leq_errors] = on sphp_admin_value[memory limit] = 32M sphp_value/php_flag AA ink EX, ep Abas PHP Hf “ini_set” . #php_admin_value/php_admin_flag LAMENTS MUMS AK PHP AIIM “iniset” Alii. MUN php.ini eX, LAE AAD worker XM. ERB SB de Vn EAC BO PR AY. Gk SES A PHP SAPI (ServerApplicationProgramminginterface, Ili -38/0 1082 C1) FF. ALY php ‘flag, #7289: on, off, 1, 0. true, false. yes no. eX “extension” #423 /\ extension_dir RAMIMMIK SAT. 5 X “disable functions” ek “disable_classes” ¥4°2> #8 ii SEU ¢E php.ini 4522 RUG, MAMET. Es ini ERAT RE, TE TARA WRN (Hl seit Re A, Dy Re EP 44 WT RA A A fusr/local/php5.34, ALAR EM “prefix” BRM I) SRUMA: BRT php.ini WA ACE shina it-d IE RMS, WATS RAR Ae 46 php-fpm 4 AC OCH fy Pd SE Ab AE * pm.max children” A “request_terminatetimeout” . 94> i 1 php-fpm fOAbSERE AT, WWM bib Bea, (ER RTE AERA AMMA EF TEE 4 php-fpm ERE i] 30MB Zea AE. Bilt CURIE RS 120 SUERL, Bhat 224k 120°40MB=4800MB WY 4F, {URAL FEHR TT Sb TER, ART LLL free te SR AE— POE CENS IN FEE HAT Us [roct@s8 ~1# free total used free sharedbuffers cached Mem: 83106248299040 11584 0 1970763848784 -/+ buffers/cache: 42531804057444 Swap: 41942881444194144 WATER, AZ AE Rea a )s, PAM, MRE S12MB AE, RSS ABER IL AOE LIANE, Wi REIT I 3~—S SAL. UR RUIRS, WARES 502, 1% ht 504 HR. HY 502 IRIE. A PREAH TU, TOT 504 KL, BP RY GARR CEPOL OU Tl PLR AS A SY —$ it VR TAT PBL php-fpm AGA Ae Ae MM Gateway Time-out” . iA HIM 7 IS BMRA I, RE Jh— Arte EAE ENG & ALLE “ request_terminate_timeout” » ‘Zvi 1 php-fpm weREMILEE. SAVER AT TO. BARB A RE MAB "HEE Pi VR BRS EL eb MEY PHP FEIPSCRLIN, ISA CERAM F HAE 2 HHI “502 Bad Gateway” #il “504 Gateway Time-out” . 43 SAUERAY “0”. BRALLIR ADA. dBety iia At TY php-fpm Asin Reha, BERET, RARITIES AT, (TRAP HEE php-fpm LOC GEE CALE HA MRE 41 bug, PRGEPRIEMS? ) , BADER EAL I CLARA, AL SEES: Mt RE, ARE SUR MAST DR HE UE 2. fie Cft pear.conf WAALS pear mm OHH X, AL pear MIALBLLT: [root@mail etc]¥ more pear.cont #BEAR Config 0.9 a:31:(8:9:"cache_ dir" 5:"/tmp/pear/cache";s:15:"default_channel"; 78:12: "pear. php.net’ 49:13: "auto_discover"; 1:0; 2:"pear.php.net";s:16:"preferred_mirro} 8:13: "remote_config";s:0: 213: "master_serve £"76:12:"pear.php.net";s:10:"http_proxy"75:0:""ys:7:"php_dir™ 38:27: "/usr/local/php5.3.4/14b/php";s:7: "ext_dir";s:64:"/usz/local/phpS -3.4/1ib/php/extensions /no-debug-non-zts-20090626" ‘doc_d "8:31: "/usr/local/php5.3.4/1ib/php/doc";s:7:"bin_dir al/php5.3.4/bin";s:8:"data_dir";s:32:"/usr/local/php5.3.4/1ib ea 323: "/usr/loc /php/data";s:7:"cfg_dir";s:31:"/usr/local/php5.3.4/1ib/php/cf ei w_dir";5:34:"/usr/local/php5.3.4/1ib/php/htdocs"; 5:8: "test_¢: ¥";8:32:"/usr/local/phpS.3.4/1ib/php/test" temp dirt;s:14:"/tmp/pe ar/temp";$:12:"download_dir";s:18:"/tmp/pear/download";8:7:"p hp_bin";s:27:"/uar/local/phps.3.4/bin/php";3:10:"php_prefix" : O:"php_suffix";s:0:"";s:7:"php_ini";s:0:"" 1*"78:8: "password"; 5:0:"";5:7: "verbose"; i:1/8:15:"preferred_state";s:6: "stable"; s:5:"umask";1:18;5:9:"cache_tt1";i:3600;5:8:"sig typ g"78:7:"sig_bin";s:12:"/usr/bin/gpg";s:9:"sig_keyid";s:0:""7s 110: "sig_keydir";s:32:"/usr/local/php5.3.4/etc/pearkeys";) 1.2.2 bin/BR frootémail php5.3.4]# tree bin/ bin/ 75:8: "username";5:0 eiig Pear peardev pecl phar -> /usr/local/phpS.3.4/bin/phar .phar phar.phar php i A MNeanxit KE HtLAE Neb MSR MBS izH (AEF PHP Jovn, A50 MET |-- php-config ‘>> phpize RMT Nginx HARA, (RE Tae OH TA PL I IE Freq inter. 1. pear > pear (PHP Extension and Application Repository, PHP 4" ‘a )MJUYGWIME. Ji) PHP Extension and Add-on Repository ) & PHP AlFHUAERNAS, Je) HE CEH RI BN HE IT ASA URI) SP PHP Al C if 405 AY PHP HF KE I HE HI TEA LE EAE pear AU BML NRL. Af pear Ui TTI, HF. [root@mail bin]# pyd /usr/local/php5.3.4/bin {root@mail bin}# ./php -r “readfile(*http://pear.php-net/go-pear'):" > go-pear BR AEANAT 1% hn © OS IF i APT [root@mail bin]# ./pear -r “readfile('http://pear.php.net/go-pear');" > go-pear PHP Warning: require_once (Console/Getopt.php): failed to open stream: No such file or directory in /usr/local/phpS.3.4/lib/php/System.php on line 21 PHP Fatal error: require once(): Failed opening required 'Console/Getopt. php’ (include path=!/usr/local/php5.3.4/lib/php') in /usr/local/php5.3.4/1ib/php/System.php on line 21 JX EDA System.php eH, ALAA, WRT Fs [root@mail ~]# wget http: //download.pear.php.net/package/Console_Getopt -1.3.0.tgz [root@mail ~]# {xoot@mail ~]# tar -zxvf Console Getopt-1.3.0.tgz package. xml Console _Getopt-1.3.0/Console/Getopt -php Troot@mail ~]# [root@mail ~]# mkdir /usr/local/phpS.3.4/lib/php/Console/ [root@mail ~]# cp Console Getopt-1.3.0/Console/Getopt-php \ /ase/local/phpS.3.4/1ib/php/Console/Getopt -php iRPAROTL TY, NGA: [root@mail bin)# ./php go-pear BRIAR WUR ATT. FRR FEM: [rootémail bin]* ./pear Commands: build Build an Extension From c Source bundle Unpacks a Pecl Package channel~addAdd a Channel Zi channel-alias Specify an alias to a channel name channel-delete Remove a Channel From the List channel-discover Initialize a Channel from its server channel-info Retrieve Information on a Channel channel-login Connects and authenticates to remote channel server channel-logout Logs out from the remote channel server channel-update Update an Existing Channel clear-cacheClear Web Services Cache config-create Create a Default configuration file config-get Show One Setting config-helpShow Information About Setting config-set Change Setting config-showShow All Settings convertConvert a package.xml 1.0 to package.xml 2.0 format cvsdiffRun a "cvs diff" for all files in a package cvstag Set CVS Release Tag download Download Package download-all Downloads each available package from the default channel info Display information about a package installinstall Package list List Installed Packages In The Default Channel list-all List All Packages list-chapnels List Available Channels list-files List Files In Installed Package list-upgrades List Available Upgrades login Connects and authenticates to remote server [Deprecated in favor of channel-login] logout Logs out from the remote server [Deprecated in favor of channel~logout} makerpmBuilds an RPM spec file from a PEAR package packageBuild Package package-dependencies Show package dependencies package-validate Validate Package Consistency pickle Build PECL Package remote-infoInformation About Remote Packages remote-listList Remote Packages run-scriptsRun Post-Install Scripts bundled with a package run-tests Run Regression Tests search Search remote package database shell-test Shell Script Test sign Sign a package distribution file svntag Set SYN Release Tag uninstall Un-install Package 13 Avena AE SEAL Wed RB MMBB SSH ws ow. save. asp. ver%) update-channelsUpdate the channel List upgradeUpgrade Package upgrade-allUpgrade All Packages [Deprecated in favor of calling upgrade with no parameters] Usage: pear [options] command [command-options] ‘Type "pear help options" to list all options. Type “pear help shortcuts" to list all command shortcuts. Type “pear help " to get the help for the specified command FU LCBCOLN, ML AAEERRAE P T . Fifi 3282-4: [root@mail bin]# ./pear instal Console Getopt-1.3.0 WARNING: channel “pear.php.net™ has updated its protocols, use “pear channel-update pear.php.net” to update downloading Console_Getopt-1.3.0.tgz ... Starting to download Console Getopt-1.3.0.tgz (4,408 bytes) “done: 4,408 bytes install ok: channel://pear.php.net/Console Getopt-1.3.0 TR. ABS BETTE Be: {root@mail bin]# ./pear channel-update pear.php.net Updating channel “pear.php.net" Update of Channel "pear.php.net™ succeede Hee [root@mail bin]# ./pear install HTML QuickForm2-0.5.0 downloading HTML QuickForm2-0.5.0.tgz ..- Starting to download HTML QuickForm2-0.5.0.tgz (138,925 bytes) -.done: 138,925 bytes downloading HTML Common2-2.0.0.tgz . Starting to download HTML_Conmon2-2.0.0.tgz (7,777 bytes) .-done: 7,777 bytes install ok: channel://pear-php.net/HT™ML_Common2-2.0.0 install ok: channel://pear.php.net/HTML QuickForm2-0.5.0 RUE AT. HEAR A ma 2. pecl > pecl ( PHP Extension Community Library ) & PHP (td W&M. “CADET RUC HEM, ty CH SII THe MRR, 2 MCLA DLL Cana REREME) MUESCAINL, ANATLE pear WER, {Hit 45 pear ®VE. pecl IRS 2 ACMI MEAL EAL. BAT pear AM she. BEDEA AE SOLOS aS AT HIE. pecl AY LEAT, EASA pear FF, FAD JEU Se7Beid PA eS, DA TY Soe Bh ASE A LMASUT, ty Gi RARE AR I 20'S 18) PHP IRE 14 3. phpize #1 ‘it “4 PHP Sie sERUG, PHP HY bin Hk F241 phpize KT WATCH, phpize AKA He PHP RSG, iil phpize APLAR. PHP USHER, Cem: SMT EZ HT, BAT F phpize He T . bean tatt te Rik aE AFA PHP POA memcached 8k curl 4 HU, APL phpize, itll DF JL f= PILL curl Bib NP, Bila F au fal Sn PHP A eR. AOR. F& curl: [root@mail ~]# wget http: //curl-haxx.se/download/curl-7.21.3.tar.gz [root@mail curl-7.21.3]4 ./configure --prefix=/usr/local/curl-7.21.3 curl version:7.21.3 Host setup: i686-pe-linux-gnu Install prefix: /usr/local/curl-7.21.3 Compiler:gce SSL support: enabled (OpenSSL) SSH support: no (--with-1ibssh2) nabled krb4 support:no (--with-krb4*) GSSAPI support: no (--with-gssapi) SPNEGO support: no (--with-spnego) 214b suppor’ resolver:default (--enable-ares / --enable-threaded-resolver) ipvé support:enabled IDN support: enabled Build libcurl: Shared-yes, Static-yes Built-in manual: enabled Verbose errors: enabled (--disable-verbose) SSPI support:no (-enable-sspi) ca cert bundle: /ete/pki/tls/certs/ca-bundle.crt ca cert path:no LDAP support:enabled (OpenLDAP) LDAPS support: enabled RTSP support:enabled RIMP support:no (--with-1ibrtmp) Protocols: DICT FILE FTP FTPS GOPHER HTTP RTTPS IMAP TMAPS LDAP LOAPS POP3 POP3S RTSP SMTP SMTPS TELNET TFTP [root@mail curl-7.21.3)# make +21.3]# make install [root@mail curl~ SREY 15 sReNgaett hE MN St Neb MABE SH roe. nse. 33) [root@mail curl]# pwd /root/php-5.3-4/ext/curl [rootémail curl]# /usr/local/php5.3.4/bin/phpize Configuring for: PHP Api Version: 20090626 Zend Module api No: 20090626 Zend Extension Api No: 220090626 {root@mail curl]# ./configure --with-php-config-/usr/local/php5.3.4/bin/ php-config (root @mail curl]# make (root@mail curl]# make install Installing shared extensions: /usr/local/php5 .3.4/1ib/php/extens ions /no-debug-non-zts-20090626/ K—H2E: . /configure SHAT php-config RH HIE. Sa SEACH EAR IC BLT: [root@mail sbin]# vi /usr/local/phpS.3.4/1ib/php. ini 7 or with a path: # extension=/path/to/extension/msql.so extension=curl.so CRNA) phy WA Seti F tka: [DN 5 AT TERE. RANE SOE. FER IP ERE zlib: [root @mail ~Jwget http: //cdnetworks-kr-2.dl.sourceforge.net/project/libpng/zlib/1.2.5/z1i b-1.2.5.tar.bz2 (root@mail ~]#tar -jxvf 2lib-1.2.5.tar.bz2 16 (root@mail zlib-1.2.5]# [root@mail z1ib-1.2.5] #make [root@mail z1ib-1.2.5]#make install Hd EBUR: [root@mail zlib) # pwd /root/php-5.3.4/ext/z1ib (root@mail 211b)# /usr/local/php5.3.4/bin/phpize Cannot find config.m4. 2s -/configure --prefix=/usr/local/zlib-1.2.5 Make sure that you run ‘/usr/local/phpS.3.4/bin/phpize' in the top level source directory of the module [root@mail z1ib]# [root@mail z1ib]# cp config0.m4 config-mé [root@mail zlib]# /usr/local/php5.3.4/bin/phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 [root@mail z1ib]# fit [root@mail 21ib]# ./configure \ ‘with-php-config=/usr/local/php5.3.4/bin/php-config it de [root@mail 21ib]#make Libraries have been installed in: /root /php-5.3.4/ext/z1ib/modules {root@mail zlibl# make install Installing shared extensions: /usr/local/phpS.3. 4/1ib/php/extensions/no-debug-non-2ts-20090626/ FERC RL EHS Un lar B ARAL: [root@mail 2lib]# vi /usr/local/phpS.3.4/1ib/php. ini extension=21ib.s0 wii id me BARE = TBTEBE Web ARS BABB SBME cat rir, Jove. as new) jo, (Ao =} 1.2.3 sbin/ BR J&P ARE —* php-fpm tt: {root@mail php5.3.4]# tree sbin/ sbin/ ‘<> php-fpm 1.2.4 php-fpm de® LAA) php-fpm MIG, sk veed 401 0149 php-fpm. BEE #2 php-ipm 1414 php-fpm AFF C45 php-fpm 4h I, PAE Waa 478 php-fpm i #0 php-fpm. (start|stop|reload) ir, {142 Té{f]S0ii php-fpm ft) master UERREME AUREL, FHS Blfe = SIGINT. SIGTERM: 1.21% ibdbF. = SIGQUIT: “"iteeibvt fe. = SIGUSRI: HRT IPE. SIGUSR2: “TH HAUNT worker i ft} BRA ALE AM ide BEA. ala 2/4) php-fpm: kill -SIGINT ‘cat /usr/local/php 5.3.4/var/run/php-fpm.pid" i & php-fpm: kill -SIGUSR2 ‘cat /usr/local/php 5.3.4/var/run/php-£pm.pia" 1.3.1 #5 init RAW MPR, RNTUAGS FUG — Pik TAH [root@mail init.d]# cat php-fpm 4p int 23K php-fpm. #! Pbin/sh ##% BEGIN INIT INFO i 1 ist # Provides: php-fpm # Required-Start:$remote_fs Snetwork ¥ Required-Stop: $remote fs Snetwork # Default-start: 23.45 # Default-Stop: 01 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon #4 END INIT INFO prefixe/usr/local/ppS.3.4 exec_prefixeS (prefix) php_fpm_BIN@${exec_prefix}/sbin/php-fpm php_fpm_CONF~S (prefix} /etc/php-fpm. cont php_fpm_PID=$ (prefix) /var/cun/php-fpm.pid php_opts="~-fpm-config Sphp_fpm CONF" wait_for_pid () { trys while test $try -1t 35 ; do case "$1" in ‘created') ae [OE S92") 74 then try= break fi "removed') if (1 -£ "$2" ] ; then try-'* break fi esac echo -n . trystexpr $try + 1" sleep 1 done 19 Ai Npimbt RE FB LERE Web ARIS REARS SIEM a7 pur. dave, ase ner case "$1" in start) echo -n “Starting php-fpm " Sphp_fpm BIN Sphp_opts if 1 "$2" 1-0) + then echo " failed" exit 1 fi wait_for_pid created $php_fpm PID if [ -n "Stry" ] ; then echo * failed” exit 1 else echo " done” fi stop) echo -n "Gracefully shutting dow php-fpn “ if [ ! -r Sphp_fpm PID} ; then echo “warning, no pid file found - php-tpm is not running ? exit 1 £ kill -QUIT ‘cat $php_fpm_PrD' wait_for_pid removed $php_fpm_PID 4f [on "Stry" ] ; then echo " failed. Use force-exit" exit 1 else echo " done” EL fe: ie force-quit) echo -n “Terminating php-fpm if [ ! -r $php_fpm_PID ] ; then echo “warning, no pid file found - php-fpm is not running 7 exit 1 f kill ~TERM ‘cat $php_fpm_PID" wait_for_pid removed $php_fpm_PID if [ -n "Stry" 1]; then echo " failed” exit 1 else echo ” done" fi restart) $0 stop $0 start reload) echo -n "Reload service php-fpm * if ( ! -r Sphp_fpm_prD ] + then echo “warning, no pid file found - php-fpm is not running 2" exit 1 fi kill -USR2 ‘cat Sphp_fpm_PzD' echo “ done" - echo “Usage: §0 {start|stop|force-quit | restart reload)" exit 1 2 MM SFE fe Wo MEMS SITE carne. se socr) 22 1.3.2 i&M init BA WRT A CS URL, M2 RAO ILA A PHP CesT! MUA, FUE ORR MCRE CE PHP MUUAROS Hae, RAVAGE aH a ES ARF: Oe) #8) /etc/init.d [root@mail fpm] ¢pwa /root /php-5.3.4/sapi/fpm/ init.d. php-pm [root@mail fpm]# cp init.d.php-fpm /etc/init.d/php-fpm [root@mail fpm]#chmod 755 /etc/init.d/php-fpm Pa LT OL PA AT LL GES service fr KFT: [root@mail fpm]chkconfig --add php-fpm [root@mail fpm] chkconfig service php-fpm fri #] (ii /f] (0 a7 {start| stop|force-quit|restart|reload}, (4/1 Lk Bef} RP MBS IT level 35 php-fpm on Ewe iAiR FastCGl ie FastCG] $e MER BUR, CET AM) wiki PHREIT 29 HS, fe 0.8.53 THREE T 35 MARS, HARADA OR, FEES PO, BA a eS 1.4.1 RED location / { fastegi_pass localhost: 9000; fastegi_index index.php; fastegi_paramSCRIPT_PILENAME Snome/www/scripts/php$fastegi_script_names fastegi_param QUERY_STRING $query string; fastegi_param REQUEST_METHOD ¢request_method; fastcgi_param CONTENT_TYPE $content_type; fastegi_param CONTENT LENGTH §content_length; } yA tis FEAF: http { fastcgi_cache path /path/to/cache levels=1:2 keys_zone=NAME: 10m inactive=5m; 1% ot fastegi_cache_key "$schemeSrequest_methodShost$request_uri"; server { location / { fastcgi_pass127.0.0.1:9000; fastcgi_cache NAME, fastegi_cache valid 200 302 Ih; fastegi_cache valid 301 1d; fastegi_cache valid any 1m; fastegi_ cache min uses 1; fastcgi_cache_use_stale error timeout invalid header http_500; ) , 1.4.2 ie FID RADKAA FastCGl BRE HEMT 5 1. Sie KMS IRA: fastcgi_pass i#tid: fastegl_pass fastegi-server SKIA(f: none {J{44%: location, if in location hfe: HT FastCGl MI ABM OGM, BY TCP SER. AY LARA A SCAR SS a IP Sh. ‘PA da: {RUA TOP S547 Hest fastcgi_pass localhost :9000; {HL ny LAR UNIX $248" fastcgi_pass unix:/tmp/fastcgi.socket; ETT ELIE upstream x Bb. upstream backend { server localhost:12347 fastcgi_pass backend; HHO ZK: fastegibind iid: fastegi bind address SRM: none A8)EEME: http. server. location 23 IRN ttt 24 GETERE Web ASS #8 ABS SME (a mim. deve, ase ner #) Shh: FEW connect () Zit, WEES KR At Lae HR 9 SEHR EA BIAS HAY IP ih Ee VR A DLAE & > A 7 4» FEL HS A IP SUE AY SEHR MACHO HARA. BARS T 0.8.22 MATHIEGE. ia: fastegi_bind 192.168.1.1; dR 2A: fastcgi param iW: fastegi_param parameter value ShUMH: none $EILEANR: http. server. location Dil: HE AED FastCGl MH MMS, SAUTE, SALEVIA. WEAN BESTE, MAESMEM ET (nse, outer level) 4k A; WR Td, MAAR TAB PREZ FB A FE — PM PHP A LAUER fastcgi_param SCRIPT_FILENAME /www/scripte/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query string; SR SCRIPT_FILENAME #& PHP Ji] feAb FUT AI 4 7, if] QUERY_STRING Mil (ue I WARNER. MRAM POST WR, MALAI TFSRYDH >. FMR LPS, oT PHP PEORIA LR fastcgi_param REQUEST METHOD Srequest_method; fastcgi_param CONTENT TYPE Scontent_typer fastcgi_param CONTENT_LENGTH $content_length; WR Ha A PHP HY HE IH T--enable-force-cgi-redirect 2A, MA LAS “200" iM REDIRECT STATUS 424: fastegi_param REDIRECT STATUS 200; TROZM: fastegi_send_lowat Thies AT TCP KF, dS ACVFARILA] SO_SNDLOWAT bredk, {X¢E FreeBSD RAF. 2. SARA MAKES HME: fastegi store Wit: fastegl store on|offlpath MLiMits fastegi store off AKHIS6ME: http. server. location Shes HAR SAT TERE NONI BERT. BRIE HRA, SEP on Hi! TSH root il alias 1H ANAIRURKAES TH Off AR te it: HEAT Ab PER ALANS fe (path) skbh. Reef DALAT RI Fe WEA dots fastegi_stoze /data/wwwSoriginal_uri; APP ICPHO EC HI. EMRE SoH “Last Modified” LKB. TAMER INRA REAR RT) ,aT DAEs T felis — Abt ee 4! (UH) Fastcgi_temp_path $4 2483i Hat HEH 4 OF fe da a (aa SAS A a a A PA A HL, fof tn: location /images/ { root /data/www; error_page 404 = /fetch$uri; 7 location /fetch { internal; fastcgi_pass backend; fastegi_store on; fastegi_store access user:rw group:rw all:r7 fastegi_temp_path /data/temp; alias /data/www: ) dH BP: fastcgistore_access 2 fastegi_store access users:permissions [users:permission ...] MIL: fastegi_store access user:rw ‘UH ASE: http. server, location ils Beat SPT erie OUR CHR ARAL ‘falda: fastcgi_store_access user:zw group:zw all:x; $904 group 2% all BIE TEAL, MA iB HEW user wit T: fastegi store access group:rw allir 482% ¥: fastegi_next_upstream if}; fastegi_next_upstream error|timeout|invalid_header [http _S00|http SO3|http 404) ofe IRIAfiL: fastegi_next upstream error timeout {#/11}488: http. server. location Thies “i tastegi pass HEE) upstream [x BLN, iat Ss CT RITE I ELM BR HLF —7P upstream MID BRIO. aA HE COB ANNIE FH SR UE RLF Ay RastCG) MI ME, CERF wiki TALS AER SAL, 8T ALAA RAM EE: AMAR LS FTF BLM TEM CBS ET BPH, Bish, oR MAREE PARA AA RE, AAT AEA AG HR RR, GM TO LL RTA. 8Y LORE fe) PF — FHS BB Error: (eHE}KIM SORE BE CE EEA DHE AR fe AR IR 9a RH 25. RNG AR FBTERE Web ARSS ARAB BS ISHE cas mie, dove, ASP.NET) Mite, = Timeout: ie 25 AIA) AERIS, AE aA AR Gia BO Se 8 a AR I 9 A PY TAREE: = invalid_header: R925 15] oh AEA MA wa = http_500; 24-2561 500 = http. 503: R9-abiB IF] 503 mi Nz. = http_404: RS AGI] 404 mpi, = off: TABS ILHEPR fei BF — ARS pilin: fastegi_next_upstream error timeout http_5047 3. SMFS JHS2FG: fastegi_buffers WY: fastegi buffers the number is size SLUM: fastegi_buffers 8 4k/8k {8/NH%: http. server, location THRE: BR AETEAOMCAK |, HE PSR TEM PastCGl VAL PEFP ELIE RE. TRS AT APSR, ARR FR, RE FH A fain fastegi_buffers @ 4k; W422: fastcgi_busy_buffers_size ThE: Nginx M 0.1.14 RAH REO T ARS. TEAR TT AY wiki PRAHA, FR ARATE AGLI LG JE BE WY fastegi_buffers (PATE. Pian: fastegi_busy buffers size 64k: HALF: fastcgibuffer_size iBik: fastcgi_buffer_size the_size RUM: fastegi_buffer_size 4k/8k {EAM http. server. location The: WR MAA, APSE FastCGl AYN RET, Aa FEA RAB. RUMI 1 TREE KD. lta: fastegi buffer size 4k; 48424: fastcgicache_min_uses tk: fastcgi cache min_uses n FRUM(H: fastegi_cache_min_uses 1 (EFAS: http. server. location TyRE: TEE MT GUNS a. LST Rok X—-MAIAY URL Seat & > tei aC HES 26 1 Ot ETE, SRE EAS REFN — Yea aR CO A TE key WRAL RAIN) . dH: fastcgi_cache bypass Thies CAN wiki WERATHARS . ARCH TTA AAA eH RR, BUA A AE ME Tr 5 RADIAT. ALE SE AS AR EI a it: fastegi_cache bypass Scookie NAME; H&B: fastegino_cache iid: fastegi_no_cache variable [...] BRIA: none {UPSE: http, server, location Sis ABE CEI DR, F ODS AN Se (FEA. et iS BE AE HH RAE AO AE (AGE. WLULRTEMIAR « ‘tn: fastegi_no_cache $cookie nocache Sarg nocacheSarg comment; fastcgi_no_cache $http_pragma Shttp_authorization? JRA RFK: fastegicache valid iF: fastegi_cache valid [http_return_code [..]] time SUH: none {8FAASE: hep, server. location itis LAF ati Ss AA SOAR IAS LAE PINT) « A, 4.04 HERAT MAAN LAP, AIK. AUG 200 OK MANILA 10 PRAMS. BA ATL MALIK. aia: fastegi_cache_valid 200 302 10m; fastcgi_cache valid 404 Im; 4822: fastegi_cache_use_stale iV: fastegi_cache_use_stale updating|error|timeout|invalid_header|http_500 EXIM: fastegi_cache_use stale off 42/16 hep. server. location Thies BEC KH MT, PL, RIS. ATRL. BRIA MUERTE AE. MUR OME ARS 0 timeout BMC, IF EM KLINT, LZ, Nginx HPP ORT ME. i8<4%f: fastegi_cache_methods Wik: fastegi_cache methods [GET HEAD POST] MMi: fastogi_cache_methods GET HEAD (HBR: main, http. location Shit: 5 HY SE4¢eH HTTP Ai. GET A HEAD MERU AEA, DATS. di, FRAN POST HRM AE. 27 DMN RAE 5 28 AE Web ARS BABB S EME cat ir, Jove, asp ner fa at fastegi_cache_ methods POST; ISBT: fastegicatch_stderr TARE: CUPL AR WG AIRF stderr bree (HAR MTU EE a) NOEs EE ALAS SAE HAE Nginx. WOR Ae ‘Bi fu: fastegi_catch stderr "PHP Fatal error: 48420: fastegi_cache_key iii: fastegi_cache_key line RUM: none {H/A4ES. http, server, location hie: VARS ADRE NOE key, RAIN, MALI SAAS. MR fH key BEE Suri, MA SATS elSuri (TRAE TP REAP. tT GHB Web ML OKVARLAW, BEES key bag mine M, VUE /index.php Al/index.php?page=contact 4.2.48 Fl PFA. fala: fastegi_cache “SschemeShost$request_uri $cookie_user"; H&B: fastcgicache ike fastegi cache zonelotf SUH: off (®VE: http. server, location Sie: WBE TEASER A TEE PI, SEXP cache KM, (zone) . XtbCbe Cone iz pas EPS Ya at ADEE SCG HEL «AD PR WIE AS a ‘falta: fastegi_cache £1; t#S4%: fastegicache_path ii: fastcgicache path path (levels=m:n] keys zone=name:size [inactive=time] [max size AUER. hep DhRe: HP TREES PEAIR, ULAE IE LAMIEE B. BTAT BAR ET HEI seth. olin: fastogi_cache path /si/d/mg levels=1:2 keys_zone=£1:50m; 4. SWRPA S FHS2MK: fastcgi_temp_file write size hfe: VEGETA AE ae LAIN SCPE RIM, SEL SBE EDK Do, ede a 21% se KEN LEN. ‘ta: fastegi_temp file write size 64k; HHA BP: fastegitemp_path fastcgi_temp_path path {level [level2 [level3]] "RUUH: fastegi_temp_path fastegitemp {EHISRUK: etp. server. location Dit: iAH BREE RSC PTTL PS FE PHA DA A I FS HE HT DE — ART TORRESEN AB HIB. ‘ohn fastegi_temp_path /spool/nginx/fastcgi_temp 1 2; WIM Ct MY 4 OT HS As /spool/aginx/fastegi_temp/7/45/00000123457 W822: fastcgi_max_temp_file_size iv fastegimax.temp_file.size 0 Maat: AH/168: http. server, location Dit: EMME. BURBARSAN LY 0, ALA AtT RastCGl if} IST SC, RA SRE) SCAR AH fll: fastegi_max_temp_file size &m; 5. Sim ANS t82%¥: fastegi_pass_header iifid:: fastegi_pass_header name WISE: http. servers 10% yes as SON MAR eT AAU PY flit: fastegi_pass header Authorization; 4844:Mh: fastegi hide header iti: fastegi hide header name none AE 2 ELE ‘{#/1: http. server, location Thies RUG F. Nginx 42245 “Status” #l “X-Accel-..” {ERAS . BARS T DDRB SEE fa ILIA, “Status” All “X-Accel BME, BS Wha UL AH fastegi_pass header SRS EL EAN Ti TALES AP 8 Bi as fastegi_hide_header K-Forwarded-For; AQUI) FastCGl 2b FY 29 RAN giontt AB BEBE Web ARS BARR S HE cat pur. ava, A5P. MET) iR24%: fastegi ignore headers iff¥: fastegi_ignore_headers name [name..] WUTNFFR: http, server. location THEE: ATPASE ARBEMA FastCGl J RS ei lH) PUP fe (2 —) ; X-Accel-Redirect. X-Accel-Expires, Expires Jt Cache-Control. Big: fastcgi_ignore_headers X-Accel-Redirect: 4824%%: fastcgi_pass_request_headers Wid: fastegi_pass_request_headers on | off SKiA(ii: fastcgi_pass_request_headers on 4A}: http, server. location Spi: E XR HARA Crequest headers) (i#H) 4842: fastcgi_pass request body Hi: fastegi_pass_request_body on | off SKU: fastegi_pass_request_body on AUFAIAS: http. server. location DARE: SEE RE ATOR A 18 a BJs FH BB 484% %k: fastegi_intercept_errors if: fastcgi_intercept_errors on|off PX: fastegi_intercept_errors off ANTFRBE: heep. server. location Shite: 52M Nginx Ab HE IK MRA ESP BR. BARS LTS “PA: fastegi_redirect_errors. H&K: fastegi_ignore_client_abort ik: fastegi_ignore_client_abort on|off SXIMM: fastegi_ignore_client_abort off 4#FASPRE: http. server, location pfs WARE MRP TE ETRE TR. BAR RET A 6 MRT IPE A, MW Nein 2AM NTR ALG RABE: RRA, 162 Nginx FABER NAR, EP WAR Mb 38 FF ELIE S FastCGl HRS a SME 6 #8 22%: fastegi_split_pathinfo Hi: fastegi_split_path info regex Se regex BILL a-MAL: + ScbetY PHP BASIE CELHEPAY) , 414 Stastegi_script_names = PHPRAI AL EM SHL, HM PSfastcgipathinfo: Nginx fk % 2% 0.7.31 Wahine inti. AFA: location me hits aH Foie wR CGI {MP4} eit SCRIPT_FILENAME (SCRIPT_NAME) #l! PATH_INFO. ‘foion location ~ *.+\.php { om fastcgi_split_path_info ~(.+\.php) (.*) 57 fastegi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH TRANSLATED S$document_root$festcgi_path_info; on ) if /show.php/article/0001 #2: nu: SCRIPT_FILENAME ---> /path/to/php/show.php PATHINFO ---> /article/0001 WOM: fastegiindex WHY: fastegi_index fle PRUMH: none AUITSABE: hetp. server. location Dyfle: FastCGl IRI ASIF BB) A RAI — MH URI PRO /H Fe, WA Nginx 24 fastegi_index 1H M(H MME /ZS. FH fei te fit$fastcgi_script_name *}. ‘pitt: fastegi_index index.php; fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; 6. SRR S 484M: fastegi_send_timeout iY: fastegi_send_timeout time UAL: fastegi send timeout 60 4/1: hetp. server. location Dyite: WARD Wed LEIS Oe FastCGl EARS Be EA Te], RE LPR A EAR PRT AR, AB YAS HAMEL. ARTE ON ERT OF CADRES OS Te, HEELS T 2 UMP, DARE ERENT. WOR LA WO de AT SEAT BPEL, ASLAN RH KAA EE. i822: fastcgi_connect_timeout iti: fastegi_connect timeout time SRAE: fastey MUHA: http, server, location Dhfté: BARS LES PastCGl ARS AMEE ELNU RET, MARANA, TAMAR 75 Bb. TZ: fastcgiread_timeout ii: fastegi_read_timeout time i connect timeout 60 31 ARN ginnte AB M12 6 Web RBBB SME as ie, Jove ss vere 32 BRUM AL: fi fastegi read timeout 60 tp. server, location dé XJ PastCGl Hie Fy ee IMA NLA A fi]. RY MEPS EAT AA a Ff ASH fbi 4y Past CG) BER ie PA ER HA ads FS AR BD MNS oA) ARE iG BE EI A 5 CEL GE I TO, Neginx PRAT, MA 2238 ("| “504 Gateway Timeout” it) HTTP #tit. 1.4.3 £8 FastCGl ive t fOL PAE A, SLM: Sfastcgi_script_name Thies XE FRA URL, MURRAY URI ELA In th fastegi_index #473 (1) index Xf}. BY LAFAL& 448 hit MR SCRIPT_FILENAME All PATH_TRANSLATED 4& ft, UL (ifs PHP fil ANE Fie (itn, iA “/info/” : fastegi_index index.php; Be“ 7” GK, AZ WRAY URLS fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastegi_script _name; 6% SCRIPT_FILENAME ¥% 22" |“ /home/www/scripts/php/info/index.php 1.4.4 fastcgi_cache 5 fastcgi-store MK 5! RAS, Ce ALMEAE, te MMT BEI, UM DU He fastegi_cache (EKA (7, ‘RMF, fl fastegi-store SE PEE LE TAR BAR: {11 fastegi_cache All fastegi-store ff HII] AT 1.4.5 Wei#E] FastCGl RS BHSR PELE RA a BES RELA B cli Nginx fl fei fF FastCG! Efe EA CEE Bf A PEED. DL BAR aE FEE A) FastCGI HRS Ae. M FastCGI Hit 95 ties Gr HI Ree RAR, RAGS HGH HH OPERA KW A. (Pl, “User-agent #i{¥ 4) HTTP_USER_AGENT & REM. BRT HTTP RIL, WIRE MACAU BAM, UTD IKI fastegi_param SM, BEER 5 Festa mseiac enna x t+ 4 Nginx ‘8h ERCP nginx.conf 4b, GAP PACM LPG FastcGl 1%, Mba AL fastegi.conf fl fastegi_params. HH A Ate BAAR IASI, PEAK #1 % ih 1.5.1 RHI fastcgi.conf fl fastegi_params ie LEP PE, Bl fastegi.conf fil fastcgi_params. Fi FURIE TE, [root@mail conf]# pwd /usr/local/nginx0 .8.53/cont [root@mail conf]# tree |-- fastegi.cont |-- fastegi.conf default fastcgi_params I-- fastegi_params.default 1.5.2 MHI fastcgi.conf HM fastcgi_params HR AE CF fastcgi.conf fil fastcgi_params 4 FastCGl MURR T MAIER Re. FARA Fi Pig AT CF A LE [rootémail conf]# pwd /usr/local/nginxO.8.53/cont [root@mail conf]# diff fastcgi_params fastcgi.conf la2 > fastegi_param SCRIPT_FILENAMESdocument_root$fastcgi_script_name; HY I fastegi.conf Xf} SLALtL fastegi params Xf} % TAF: fastegi_param SCRIPT_FILENAMESdocument_root$fastegi_script_name; AK Nginx 0.7.65 JP Hi, 7E nginx.conf PFT FastCGl ih}, AAA AES nF mie TA Ts fastegi param SCRIPT_FILENAMESdocunent_root$fastcgi_script_name TUE CE Nginx (RCE SCE: include fastegi_parans; OO: include fastcgi.conf; BOTA TPR, MURR ASHRAM, th A) LYE fastcgi_params 3c fF 4s 0a AT thar. EYRE, FRATIVA fastegicconf fk F Monte: [oot@mail conf]# more fastegi.conf fastcgi_param SCRIPT_PILENAMESdocument_root$fastcgi_script_name; fastcgi_param QUERY STRING $query strings fastegi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT TYPE $content_type; fastcgi_param CONTENT LENGTH $content_length; fastcgi_param SCRIPT_NAMESfastcgi_script_name; URISrequest_uri; fastcgi_param REQUE! 33 BRN innit A FBTERE Web ARS RAPS SIBHE ca pre. Java. Ase NET) fastcai_patam DOCUMENT_URI $document_urir fastcgi_param DOCUMENT ROOT $document_root; fastegi_param SERVER PROTOCOLSserver_protocol; fastegi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWAREnginx/$nginx_version: fastcgi_param REMOTE _ADDRSremote_eddr; fastcgi_param REMOTE PORTSremote port; fastcgi_param SERVER_ADDRS$server_addr; fastcgi_param SERVER_PORTSserver_port; fastegi_param SERVER NAMESserver_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS200; SCP ANTI AE A URE POE AIRE, 1K — CEPR fastcgi_param WILE HK, SPRAY EL FADS. OMS, BANNER 5 5 MOK, 4) PHP BAAS SCPE AY HY AL HCE HATS TAR PA, ADS: Bee OSE HG MS LIK. Jn Fe PTS URL, WRG EH S RaW: HMM SHAH. BLE CGI AI Nginx 9A SAU Sy: Bek aE REAS IP HOLA Hse AL, AHINY IP Heh AUR RS BS 36 fikoh: fia f] REDIRECT_STATUS.. RPT AER ET IAEA BIL BAT # PHP only, requized if PHP was built with --enable-force-cgi-redirect fastogi_param REDIRECT_STATUS200; Ja HE Bi Age PEGE PHP IN} (H FT iH “--enable-force-cgi-redirect” . JUF A MALEK, 3 Ai SLE ULL AONLEE ICE PSM “fastegi_param REDIRECT STATUS200;” , fF PHP 5.3.0 LL.E INA, ESV AL, HERE “-enable-force-cgi-redirect” HA HITECE T, WART EE tye, PACE php.ini SCPE cgisforce.redirect witty “0” DURE T OU MVC HLL, BTA AG ERI PATHANFO, ‘lM DLK AY: fastcgi_param PATH_INFO $fastcgi_script_name; RRB — BEE Noinx m PHP ee Ln} HSPAT T Nginx (f) FastCGl HRA PHP ft) php-fpm iat, “Fimact Maley PIAA, ANAS, IASI UC TT Nginx AFB, TidahAsI Crh Php-fpm 4b#2. Stake ATE TERA D AE NBA R T 1. Bm Nginx BeBe Filia To. Nginx MME ESCH nginx.confs http { include conf/mime. types; default type application/octet-stream; server names_hash_bucket_size 12: #log_format main 'Sremote addr - $remote_user [$time_local] # ‘'Sstatus $body bytes_sent "Shttp_referer” ' # ‘'Snttp user_agent" "Shttp_x forwarded for"'; Srequest” ' faccess_log logs/access.log main; sendfileon; ftcp_nopush on; fastegi_buffer_size 64k; fastcgi_buffers 4 64k; fastogi_busy buffers size 128k; fastegi_temp_file write size 128k; fastcgi_connect_timeout 150; fastegi_send_timeout 150; fastegi_read timeout 150; tkeepalive timeout 0; keepalive timeout 20; tep_nodelayon; 4gzip on; server { listen 192.168.3.12:80; Server name xxx.com www.xxx.com; 3. seabNuntt £6 ATERE Web ARS BARBS iBHE (ace ru. seve, ASP ETS) fcharset utf@; faccess_log logs/host.access.log main; location = / [ root /sdbl/www/7 index index.php; ) location / { root /sdbl/www/7 index index.php index.htm); if (!-£ $request_filename) { rewrite *(.*)$ /index.php?q=$1 last; break: , if (!-d Grequest_filename) { rewrite °(.*)§ /index.php?q-$1 last; break; } error_page 404/index.php; # static files directly location ~* *.+. (jpgl jpeglgificssipngljslico)$ { access logoff; expires 30d; # redirect error pages to the static page /50x.htm1 errer_page 500 502 503 504 /50x.html; location = /50x.html { root html; 1 location ~ .php$ { fastegi_pass 127.0.0.1:9001; fastegi_index index.php; include fastcgi.conf; 1 i # deny access to -htaccess files, if it’s a Apache's document root location ~ /\.ht { deny all; ) 2. iin php-fpm Bet php-fpm (82 5 php-fpm.conf: [root@mail etc]# grep -v "7" php-fpm.conf {global} pid = run/php-fpm.pid error_log = 1og/php-fpm. log log_level = debug emergency restart threshold = 10 emergency_restart_interval = 20 process_control timeout = 5 [wwe] listen = 127.0.0.1:9000 Listen.allowed_clients ~ 127.0.0.1 user = nobody group = nobody 9 om = dynamic »max_children = 50 20 .min_spare_servers start_servers .max_spare_servers = 20 BEES -max_requests = 300 pm.status path = /status ping.path = /ping ping.response = pong request_terminate timeout = 50 request_slowlog_timeout = 50 37, ARANgiett AB FSTERE Neb ARIS 2S ABH SIME at mr. dove, asp NET) slowlog = 1og/§$pocl.1og-slow rlimit_files = 1024 JE —*+ FastCGl HSM fastegi.conf MAMMA T. ME LAA. Ria aR aA Nginx HRC HCE ATT. ASA LEMS RASA FC, RR AIM Be SZ AR Se RY A SA Se cai OT AT, CERT TA EP OC PEE de MAL T 4: A XAKLM upstream _keepalive HURL FastCGI MAR KM Keep-alive #4 40iRif K FHL, ERR R ASE. 38, Pe MedCalc | AILM Memcached ORM, ALPHA HT, —PR OM SEH, RRA Memcached #4t{t 44t1., RAT PAL, RAMP AMRAEHRSERABT; F— DRAB ATE RIP RAO AF, AEN ELIE # PHP FAR] Memcached MIB. AAR, — IRS PHP 12RIFAAY memcache, #13 —/-21 RAL libmemcached #4 memcached. ik #4tH 4657 VAAK pecl.php.net FA. AX Memcached MH BHR. RM Arbei eT ARH 1 P ay"Nginx HRA" EX #—+201 HS — I. XX EY BLT a AAS ch PHP LFAi"G, EAL Memcached, th FRA] fi PHP 45 Nginx S247 UPAR, LC RP RACE, DLN Memcached A938 WE Aig Hd RBM AR: HEREARAREEES EERE ESB ERE apache modules WER EARSRER EAR ARES EEEE rewrite xsendfile HEUER EAE ER ERE H RHR NEUE php modules HERE ET RE RET REFEREE mbstring merypt memcached od AL README C¢P} HBA, SULA IGIE CRSSE WED, XE BAS SUMMA. ik memcached PDIP SPE: "PR FEEAGIN Memeached, fiift') Memcached [i #8, iat 248118471 Memcached at es. HAT eA AY “EE” cached fl memcache #{f/At Memcached (t)#¢/" i, St 4Lillit memcached ka Memeached, memeached 4! memeache. i mei memecache i/j{:] Memcached Ih 45 2e PHP ftyifit''-41--4s memeache, i #7—4+ memcached, PY # EFI LAS ores MMSE AE Web ARS AB SIEM cre. sous. 7 Mer) 40 #042 memcache ft F isi: weet http://pecl.php.net/get/memeache-2.2.5.tg2 ‘8K memcached (Y FALL: weet http://pecl.php.net/get/memcached-1.0.2.tg2 2.1.1 3% memcache Memeache ft 24% bt 4s¢ih 1. BE FRED F Ae PRI Tees He [root@web1 ~]# wget http: //pecl.php.net/get/memcache-2.2.5.tgz [root@web] ~]#tar -zxvf memcache-2.2.5.tgz [roct@webl ~]#ed memcache-2.2.5 (root@web1 memcache-2.2.5]# /usr/1ocal/php/bin/phpize [root@web1 momcache-2.2.5]# ./configure --enable-memcache --with-php-config-/usr/local/php/bin/php-config (root@web1 memcache-2.2.5] #make (root@web1 memcache-2.2.5)#make install Installing shared extensions: /usr/local/php/1ib/php/extensions /no-debug-non-2ts~20060613/ 2. ke & php.ini Sch PasIbL FAL: [eoot@web! memcache-2.2.5]# vi /usr/local/php/1ib/php. ini sextension=php_xnirpe.dli jextension=php_xsl.dl1 pextension=php_zip.dl1 extension_dir = "/usr/local/php/1ib/php/extensions/no-debug-non-zts- 20060613/" extension=memcache.so i A ae A) ES HB Pela CE Web BH A aK Pes ont FICE: [root@web1 www) #vi test .php <2php phpinfo (); > WAY, ARG F: e298 PHP 1715] Mencached 9205 ona i aw 2% ma memcache 2.1.2 memcache iM AK th memcache #rene, “Z4eGE TF ta Wi = Memcache::add—##4 In) 4 4H BE 4 HR 9-28 = Memcache::addServer— iit 495841 ~4* Memcache Iii 8 = Memcache::close ——%/4] Memeache i #2 = Memcache::connect—4] #f Memeached HR 45S 1% « + Memcache::decrement— ili)» 36 (1 ff = Memcache::delete—A\ kt 953854 BR 4 = Memcache::flush—ifits CHMBR) L284 ARMIN A 78 = Memcache::get-—UB S381 7: * Memcache::getExtendedStats—— ‘xi £9 F Hid 9 Mets} DFAT HM 5 A ISIE TTA = Memcache::getServerStatus——I1] $k! — 48 95 Bef CELR / SERAR Ao * Memcache::getStats— sk 42 lt 95 2 M196 i147 = Memcache::getVersion—— ila! lt 4 #8 HIM AC; = Memcache::increment—$#4 Jnl --4* 30 SEMI» * Memcache::pconnect —4] FF 451k 5-5 AINE A (LIER » = Memcache::replace—M ih L547 4E M170 HAYLE. = Memcache::set——41 IB BFL 1F 4 AH « + Memcache::setCompressThreshold —J¥ Jr} Ai M12 Heat. EG TIN PECIHH E MY 5M AVARAS. = Memcache::setServerParams- memcache #2 (#(")P8 Hci F . = memcache_debug—## ft iN 4) Hi NY IF /%- HX VM ET LLB) hetp://cn.php.net/memeache. #67770) (EH Se BE AD DET, fete RAT. Pagina AE 5 1 GE Neb MSM BAIS ces me. save. ssc) 42 2.1.3 iit memcache 4é memeache HARK, HVE T ALR, FTDKG Fs [root@web1 memcache-2.2.5]# more example.php set("str_key", "String to store in memcached"); yum_key", 123); Smemcache->set (" Sobject = new Stdclasa; Sobject->attribute = ‘test'; Smemcache->set ("obj_key", Sobject); Sarray = Array('assoc'=>123, 345, 567); Smemcache->set ("arr_key", Sarray)+ var_dump (Smemcache->get ("str_key")) 7 var_dump (Smemcache->get (*num_key')) 7 var_dump (Smemeache->get ('obj_key')) 7 ) else { echo “Connection to memcached failed"; ) > PEA SCA HALE TD TS a a TT p> CX why mmo ei ee ec = strng(23) ‘Stang to store m memcached” sting) "125" obec(ethlase WS (1) (‘atte => stg) “et ) FRA ih telnet H = Fe [root@webl memcache-2.2.5]# telnet 127.0.0.1 11212 ‘Trying 127.0.0.1... Connected to webl (127.0.0.1). Escape character is '*]! get str_key VALUE str_key 0 28 String to store in memcached END ST, WM, ARR IET. NAMM MITA AT PHP {578 Nencaches 2.1.4 {Fi memcache.php ( memeache 'f, #{—4> memeache.php Xf, ‘%)i) #47 Memcached Hk ahd LAE AME ALAR, Jf EE] LEE Memecached fi 9: 1. ii memcache.php 3c fF AC BUNA FIR PHP StF: | 4 SVERSION='$Id: memcache.php,v 1.1.2.3 2008/08/28 18:07:54 mikl Exp $"; define (‘ADMIN USERNAME', 'memcache') ;// Admin Username define (‘ADMIN PASSWORD’, 'password') ;// Admin Password define (*DATE_FORMAT', '¥/m/d H: define (*GRAPH_STZE", 200); define (*MAX_ITEM_DUMP', 50); 7 $MEMCACHE_SERVERS[] = '192.168.4.20:11211'; // add more as an array ‘§MEMCACHE_SERVERS[] = '192.168.4.21:11212'; // add more as an array ALLE RE 43 Bigot AS HBTERE Neb ARS a ADB SHE cr ri. dove, ase ner ZEGR, —KANMETANHM PSHE H, A-RMRHWRAKH Memcached FRA #5 #430 3% OF 2. (EAR ARATE FER Vi fol memcache.php Xft BUM R AACA ST AR, IT RI, ACE TEM MAR AS PM HS = ROAM, RRR SNE, HPS SBT Memeached HRS eHTARAS. 2 Ja EA PEPER — fe Memeached MH anit fy AMM ET. Blan, ik RAT A Memeached IR% 25» WA WILL sbie de AMAT tt F aa 7 PHP Version Memeached Hosts Total Memcache Cache 2000 MBytes BRUNE B—P SH 1 fH) Memcached [iH #4: SBME, FAP Memcached IR B-ARty ERE, WARLFIN AR » CURE PER TR Fei, SEATS 6 Memeached Mid abt ETE, “CAG GEA T Memcached IRS BRITA. MAUL JL4> 2GB ff) Memeached IRI. MAGN ALE 44, PHP Ti) Mencaches 3. Bist TRA FS 1 A) Memeached Ht are at. JELA Slab RUS} H. SMiL Telnet iif F: [root@mail -]# telnet 192.168.3.139 11211 Trying 192.168.3.139... Connected to mail.tt.com (192.168.3.139). Escape character is '*]'. get run.sh VALUE run.sh 0 69 4! bin/sh gee -o run run.c 66 \ gee -o exploit exploit.c 6& \ -/run END eh, ERA. BUT mM delete ae: HiHit telnet fro te Ai mI Ts {root@mail ~]# telnet 192.168.4.20 11211 Trying 192.168.4.20.. 45 eaANginctt AE S12 A Nod MER MBB SIA were. tom scons) Connected to 192.168.4.20. Escape character is '*]'. get run.sh END AERTS RA, Bee —we FBP TATA ROMA WT Siig 11212 AYA A= Flush this server” , iti# _Memcache Server Information eneeiee : Fh herve Start Time ai Bi 05 “Uptime ‘2 hours and31 minutes emezchd Sever Version as Aa wees 10.0 MBytes. on th ee caitene e165 110 a midis Parnehed Eaton | 14S Une Cate Size 22 Weve Tos caeh Size | soo mses # Memcached jk 48 + Uy “Flush this server” (2 4/4, RATE RA F ti Memcached fit #2 : fe dit Hix 14 A runsh: 46, PUP (13 Mencaches AT WL EARLE, TR MAIR ATT. BRAT REE iT FOB? BEAT EAP i al: [root @mail ~]# telnet 192.168.3.139 11211 Trying 192.168.3.139... Connected to mail.tt.com (192.168.3.139) Escape character is '*]'. get run.sh END Oy SEAT EIOUGL.FTATDRALD IN UA EAE Hs — Si fe eee S244 vunsh AH AWHEAET | 4. ie FALL AIEA MAME NS PR, MUL TB, RCP RZ. AFI key ER UT Tl DT RAE TR 2.1.5 %%memcached ¥ memcached #7 memcache ii & fil", libmemcached. [lst iti BE ak 22% libmemcached, “t:(t) F 4s J https://launchpad.net/libmemcached/+download, ili # iA {Li FREINA, ADA AMEE, UR ATER AEM, BAS ELI SARA. 1. RRR 1-F memcached ify libmemcached /%, NHCP 2 + BG “Nginx GE” MSP. memcached 4": [root@web1 ~]# wget http://pecl-php-net/get/memcached-1.0.0.tgz [root@web1 ~]#tar -zxvf memcached-1.0.0.tgz [root@web1 ~]#cd memcached-1.0.0 [root @web1 memcached-1.0.0]# /usr/local/php/bin/phpize [root@web1 memcached-1.0.0]# ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config [root@webl memcached-1.0.0] #make [root@webl memcached-1.0.0]#make instal Installing shared extensions: /usr/local/php/1ib/php/extens ions /no-debug-non-zts-20060613/ aL ABNginett MR St Web GABE SIME cate, sore, ase ners 2am +E php.ini 3c + i48 001401 FA [oot@webl memcached-1.0.2]# vi /usr/local/php/1ib/php. ini sextension-php_xmirpc.dll sextension=php_xsl.d11 extension=php_zip.dl1 extension_dir = "/usr/local/php/1ib/php/extensions/no-debug-non-zts -20060613/" extension=memcached. so ALORA AE ARISE API iil testphp, Wvveti Rima: 22222 ——enn On. =f memcached i847 Memcached R52, EAT Vif AM [oot@web1 ~]# memcached -d -m 1000 -u nobody -1 127.0.0.1 -p 11211 -c 25 =P /tmp/memcached.pid 2.1.6 memcached #R MAK mee Fa BATH: Ait key FIM IN A TCK. i AedH IS LI AB key EM — PIR * Memcached::addServer—— fi ike 3 Ait 49 fl 4" A 88 "= Memcached::addServers— [i JR 2arith 2384 1% £7 HRI 28» * Memcached::append—i U1 fF 7 70 (as IB + Memcached::appendByKey— fol #15 R95 88 LCL 4e-¢e 7K IGE BA = Memcachedsicas——Lt 83 849 (IL = Memcached::casByKey — (i432 B95 Bt LULBOIP ERE « a\a# -4* Memcached 47) lecrement— ink) (41 70 #8140 (F« jelete INRA 70H leleteByKey —— Hiri = Memcached::fetch- le F -“-#i ML = Memecached::_construct— = Memeaches he = Memcached:: = Meme Me He NBR A> HE 48 PHP V5] Mencoches isfetch All IH 41 FY Ae IA flush — fF BESTE YN Fi 70 HE 5 get Ki “P70 BE = Memcached::getByKey —J\ #414 1H BRU TURE - = Memcached::getDelayed- if RE 70H = Memcached::getDelayedBy Key ——\ #7 (1 It 8 itt & A ICH- = Memcached::getMulti_— 48.48 # 70. * Memcached::getMultiByKey——I\ #5 9 MEH ERAS 70H = Memcached::getOption—— {ki Memecached (iti Ziff. = Memcached::getResultCode—— i [Hiri Uk BR TEMS RCI. = Memeached::getResultMessage —— ili Jit AE BE PS = Memcached::getServerByKey 411-4 key FIT WAAL INR % 245 AL. = Memcached::getServerList 4k [Ik % ab th PIR 2h 4. = Memcached::getStats—— sk Jit % AMI) i = Memcached::getVersion DTG I AR AIR Dh REL A = Memcached::increment ——#¥ yeti 70 AIM. = Memcached::prepend——la] U4 44 ¢4:009 76 25 0 MLE RE» = Memcached::prependByKey-— ili key [1489 Memcached Hid 2618 i 4e-¢e 070 # iT iG BH. = Memcached::replace—*#4h C.F ff key Pitt % 2 Memcached [lt 3 #8 4% CFF 46 key F ft = Memcached::replaceByKey— ill it key [Ft HR = Memcached::set—#¥ fit 70%. = Memcached::setByKey — fri O84 4e H SII") Memcached Hi 428 I: = Memcached::setMulti— (fi & 70 = Memcached::setMultiByKkey— ¢¥ fi & 4°98 ¢F 4 H B44 92) Memeached [IR % 25 1: = Memcached::setOption—i # 7 memcached i& 1. MAA EMMA TARA: http://cn.php.net/memcached, 2 FARM HAC BUTEA RET, EXURASAT. 2.1.7 Mit memcached fe Web fui Ha Fis Inn FTE: [root@web1 www]# vi m.php <2php Smemcache = new Memcache; Smemcache~>connect ('127.0.0.1", 11211) or die ("Could not connect"); Sversion = $memcache->getVersion(); echo “Server's version: ".$version."\n"; 42, # yond & MM 126 Web ARS ADH SIME Gs he, Jove, eI 50 at Stmp_object = new stdClass; Stmp_object->str_attr = 'test'; Stmp_object->int_attr = 123; Smemcache->set ("key', Stmp_object, false, 100) or die ("Failed to save data the server"); echo "Store data in the cache (data will expire in 100 seconds) \n"; Sget_result = Smemcache->get ("key"); echo “bata from the cache: \n"s var_dump ($get_result) + 2 ict, Ae FS ray =KD x or Gan hosem fen wana] “3 AEST: Serves’ version: 1.4.5 Stare dste in the cache ( fram the cachet chjoct(etdclare)Rs @) ( [ete atte in | id telnet ij] Memcached Jk % @, HIF] key (fits (root@web1 lib]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to web2 (127.0.0.1). Escape character is **]'. get key VALUE key 1 66 0:8: "stdclass" END #& Memcached H ii" 22 47 AA FA Fs 40: going from conn_read to conn_parse_cmd <40 get key > FOUND KEY key >40 sending key key >40 END. 40: going from conn_parse_cmd to conn_mwrite "str_attr"7s:4:"test";s:8:"int_attr";1:123;) 40: going from conn _mwrite to conn_new_cmd 40: going from conn_new_cmd to conn_waiting 40: going from conn_waiting to conn_read ANH, TER BUA TA IN. FLAT AIE memcached = PHP Ti] Nercaches igbinary support no HF README Sc¢Hi“ fait. WAAR Didi. Wl eT igbinary. ik keen F ML: http://opensource.dynamoid.com/, 4 — F igbinary 44 (u"}(] README fF, felt CHES A ME AT TAT SAS 7. eli A FEISS “> php BUR. Ain HF ME AE memcached. fy HIE AMA, AE HM MAE Ae memcached MY is b+ --enable-memcached-igbinary #M (StI AVIA AMAL. SWART 224% igbinary THE! > SaiF eRe EM) Apache wel LF CAPRA — FF oL LAA) Nginx, fH At XX (ail Ae a 2K Apache, FR {WAMU AP EK, {HAL Apache J& JE Nginx S3{U8E SF, MSEALS nT hb PY waue, fe iam Tt). aes Ese SET. INT. AL PAE HS CAL. MER MAT SAME! YEA HAE, AAT AE Ee, AGED WEE #=725 EAT, ERAT ROR. ANTES, Nginx ZORA TT. BOR ALL 4i rewrite #JRAl memcached BK. 2.2.1. 5 Memcached ft} Nginx ae 1. RMeee A FWA: server { listen 80; server_name 192.168.3.139; root html; location ~* \. (gif|jpgiipegipng|bmp|swf|jsicss)$ { set Smemcached_key Suri; default_type text/html; memcached_pass 192.168.3.139:11211; error_page 404 = @gotod04; ) location @goto404 { fastcgi_pass 127.0.0.1:90007 fastegi_index index.php; include fastegi.conf; rewrite *(.*)? /goto-php?q=S1 break; 51 uaa a s MR Sta Web RA MAMBS EME ay ow. dove. ase ery 52 ARCHERS, ik: PHP ASS, EL PHP (L/S fastegi vst, Ji4b PHP by ‘48 T memcache fit, “Bit! 4 Memcached MY)", MALICK Memeached "3 8dN 144 Nginx ff] memcached fi ACESS Hee. TANCE hfe te PRAT. swe, js Al css SCE, “REO DRE IE, ERE Uk Uj fal 2 Jes UE A-E Memeached JR % #r'l'. FLSUREIS ECE. BURA IAG. WT BOM CE IIT), Ae ARG ee AAI Ti] 2. #5 PHP xt Fil At goto.php HIGHS, ‘EAL memeache ff)! <2php define ( "BASE_DIR", '/www/pic' ); $file = $_GET ('£'l; /fecho "$file"; if (file exists ( BASE_DIR . $file )) { Smemcache_ob} = memcache_connect ( "192.168.3.76", 11211 ); $value = file get_contents ( BASE_DIR . $file); memcache_add ( $memcache_obj, $file, $value, true, 86400 )+ header ("Location: {$£ile)"); } else{ header ("Status: 404 Not Found"); ) > AEE BUCH, FRAMED Fei E/www/pic HARP. Hie BRE 1 Ke ERAEH-AA, HTRLH php WR, RAME KAPHA Memcached P, ABA MRARA hol HFT. ‘fil ia: [root@pic html]# pwd /usr/local/nginx0.8.53/html [root@pic html] # vi tm,htmL PHP 15 Nencaches 2.2 MRR ART SUF tomeat gif f7i1E/www/pic HX, vil i% tm.html Fifi: 1. RGA http://192.168.3.76/tmhtml, ik 2-H. Oxe- O WAG Pax yrear @ ¢ Ps > | set //semmmmmemanay ‘iM #47 Nginx All Memcached ff) Hii. Nginx Vili Hide 192,168.3.248 - - (13/May/2011:16:42:52 +0800] “GET /tm.html HTTP/1.1" 200 91 "-" “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1,1.4322; .NBT CLR 2.0.50727; .NET CLR 3,0.04506.30; CIBA)" 192.168.3.248 - - [13/May/2011:16:42:52 +0800] “GET /tomcat.gif HTTP/1.1" 302 23 “http://192.168.3.139/tm.html" “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CTBA)™ 192.168.3.248 - - [13/May/2011:16:42:52 +0800] "GET /tomcat.gif HTTP/1.1" 200 2066 “http: //192.168.3.139/tm.htm1" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.5072' 3.0.04506.30; CIBA)” ERA A}, TERE. ES, Bil tmahtml, RASA 200, Hi fale Thi AWS, WVTial tomcargif, ARAL 302, CE Nginx (WACO aE Ly: ngx_http_special_response.c:"302 Found" CRLF

302 Found

" CRLF ngx_http_special_response. Sie Ree, LL FAS): error_page 404 = @goto404; DBP MK la, ARASH 200, Wii RIH. Memcached H ii: [root@cache bin]# <40 new auto-negotiating client connection 40: going from conn_new_cmd to conn_waiting 40: going from conn_waiting to conn_read 40: going from conn_read to conn_parse_omd 40: Client using the ascii protocol 53 MN SEE Hob SAB SIEM roe san. oer) <40 get /tomcat.git > NOT FOUND /tomcat.gif >40 END 40: going from 40: going from 40: going from 40: going from 40: going from <40 connection conn_parse_cmd to conn_mwrite conn_mwrite to conn_new_cmd conn_new_cmd to conn_waiting conn_waiting to conn_read conn_read to conn_closing closed. <40 new auto-negotiating client connection 40: going from 40: going from 40: going from conn_new_omd to conn_waiting conn_waiting to conn_read conn_read to conn_parse_cmd 40: Client using the ascii protocol <40 add /tomcat.gif 1 300 2066 40: going from conn_parse_cmd to conn_nread > NOT FOUND /tomeat.gif >40 STORED 40: going from 40: going from 40: going from 40: going from 40: going from <40 connection conn_nread to conn_write conn_write to conn_new_cmd conn_new_cmd to conn_waiting conn_waiting to conn_read conn_read to conn_closing closed. <40 new auto-negotiating client connection going from 40: going from 40: going from conn_new_emd to conn waiting conn_waiting to conn_read conn_read to conn_parse_omd 40: Client using the ascii protocol <40 get /tomcat.gif > FOUND KEY /tomeat.gif >40 sending key /tomcat.gif >40 END : going from : going from going from : going from : going from <40 connection conn_pars. conn_mwrite to conn_new_cmd conn_new_cmd to conn_waiting conn_waiting to conn_read conn_read to conn_closing closed. ema to conn_mwrite FRR, BANDA MY, ABBA UE A, AE, i TE MA EA F and CR AAT. aE A ABS. Beet Nginx LPC CE memcached_pass 192.168.3,139:11211; PHP Yi] Nencached ix —f)95/de5 A, BH Nginx ff) memcached fii: Memcached Sie 9a}! #EIL tomeat gif XP. ARIA TEAREUICINE ME. PATH. UGB of OAS} ak PO a Fir: ocation @goto404 ( fastogi_pass 127.0. fastegi_index index.php; include fastegi.conf; rewrite *(.*)? /goto.php?q-$1 break; 1 Ai goto.php XP ARTE. WLM — Ab} HE Ha memcached pass 192.168.3.139:11211; KEM, LIX Memcached KikiT £ UK + HLH) F tomcat gif Cf} 2. BoRHA HET Ui. PERC Ue ial P BOS AEE Linux ce RSET IH tomcat gif SCHEME. IF AL HSU ER EA Ae tomcatgif Xt: [root@pic pic]¥ mv tomcat.gif deltomeat.gif HLS CARR TMAHAE ED EAE. EUSA A GLIA http://192.168.3.76/tm.html RNAP MERIT, TOR FT RS. Nginx iii] F 192.168.3.248 ~ - [13/May/2011:16:46:51 +0800] “GET /tm.html HTT2/1.1" 200 91 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.43227 .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CIBA)" 192.168.3.248 - - [13/May/2011:16:46:51 +0800] "GET /tomcat.gif HTTP/1.1" 200 2066 “http: //192.168.3.139/tm.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NE 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CIBA)" 46 Neinx MUA. B—TE A tmcheml isles, WAR 200, eMEeRIl WM: Bo7MEH AL tomcatgif Mi AAS, PARTIE Linux HH RY CEA ER, (FUE APT DLs 8), TEAR, “PFKELEM Memcached JR 8%? aK. ZH Memcached Jedngionth A Ae 56. THERE Web AR SS SAADEH SIBME care re. ava. ase nev Ui ted Aa EAT A A. Memeached H di: [root@cache bin]# <40 new auto-negotiating client connection 40: going from conn_new_cmd to conn_waiting 40: going from conn waiting to conn_read 40: going from conn_read to conn_parse_cnd 40: Client using the ascii protocol <40 get /tomeat.gif > FOUND KEY /tomeat.gif >40 sending key /tomcat.gif >40 END 40: going from conn_parse_cmd to conn_mwrite 40: going from 40: going from conn_new_cmd to conn waiting 40: going from conn_waiting to conn_read 40: going from conn_read to conn_closing <40 connection closed. AER EH, Neinx AVM memcached ff WF F's MIE ML EHR tomeagif x4} “ger /tomeat.gif” . }f-{1Hi Idk 71% L1} “FOUND KEY /tomeat gif”, Abii L(+ RIL “sending key /tomcat.gif” #i%Hitk. th Nginx (f) memcached {3k *t Memcached 4X4 732K fl, Bl set HRP, Pie bent AK: SEP RAE rewrite MMSE, HERAT £ PHP #4/%%5 A Memcached fi 42. “SUN E19 SAL AT Java eee. APES A Memcached, ¢f Neginx fA) fy Jyh EEO T—-4S HttpMemcModule ffi #5 = Hit. En =Fahie Memcached 4 AY Memcached 2 (FMR, ASMA MI: — illite iy XK, WI telnet #1) Memcached [it % AeHUSt; — Abi IVT 2.3.1 BFire{TAXiah Memcached Bi IWF Memcached #2 (t FATSHRC. LL. RAN MPLLUL telnet Mr See e ANTAL AGE FTINRRRAE. tr PMU LABEL. [Alit, SATA Memeached Piihah SES, BE AMMHIBR— MEMS, BL FMW telnet 5] Memcached [BI 8, WTA delete MHL Tf {root@mail ~]# telnet 192.168.3.139 11211 Trying 192.168.3.139... Connected to mail.tt.com (192.168.3.139). Escape character is '*]'. delete logo.jpg DELETED PHP Hid Mencache JMIGHY DELETED Ay i (12 R » Aa ONAEIN HL. AHR AEA Memeached ft [ds 22-47 Uk Fatal: >38 DELETED 38: going from conn_parse_cmd to conn_write 38: going from conn_write to conn_new_cmd 38: going from conn_new_cmd to conn_waiting 38: going from conn_waiting to conn_read Jick flush_all tir ol CHEAT A MEE TER, CRB OK, ft: [root@mail ~]# telnet 192.168.3.139 11211 Trying 192.168.3.139 Connected to mail.tt.com (192.168.3.139). Escape character is '*]'. flush_all oK ‘WR tt Memcached MH asZ24i A PARI 38: going from conn_read to conn_parse_cmd <38 flush_all 338 OK going from conn_parse_cmd to conn_write going from conn_write to conn_new_cmd going from conn_new_cmd to conn_waiting going from conn_waiting to conn_rea ERE RWILA, 41 —-TRR, CERALA] Memcached (fit? BEATA, i ARTE: APITAPA IE, DAG, URC AEBE AY be: ARMA TR, RAH oP YE Memcached WH, Gila: (root@mail ~1# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). (wl, iii telnet itr tit 4 ¢ Hocape| character ia‘), get l0g0.3pg END edd toge-srai20 0. 5 12345 STORED get logo.jpg VALUE logo.ipa 20 5 12345 END erm oRetRAS [root@nail seripts]# ./memcached-tool 127.0.0,1:11211 display 4 Item Size Max_age Pages Count Full? Evicted Evict_Time OOM 1 80B 3085s 1 1 no000 SL DAN gins tA 58. BSTEHE Neb ARB BABB SISHE cas mw. cava, ase ner) TELA EI Max_age it{fi%y 3085s. BLAEB ABUT — MARE FIN ir flush_all, fF tu: [root@mail ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to mail.tt.com (127.0.0.1). Escape character is '?]". flush_all OK HOLE AR PARAS {root@mail scripts]# ./memcached-tool 127.0.0.1:11211 display # Item Size Max_age Pages Count Full? Evicted Evict_Time OOM 1 80B 3085s 1 1 no000 i AT PEIE! Max_age Mf My 3085s! HI. HATE PA: (root@mail ~]# telnet 127.0.0.1 11211 trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1)- Escape character is '*]'. get logo. jpg END FE, ACT ATA, BNR LOPE FF. UEASIRAT HAG Memcached ft) 7FR AS: {root@mail scripts]# ./memcached-tool 127.0.0.1:11211 display # Ttem Size Max_agePages Count Full? Evicted Evict_Time OOM 1 8080s 1 0 no 00 0 ROREBIT ! Max_age WH OT, iX#P “ALEC” AT Memcached FR BSH REA HERE PER INTARK! 2.3.2 ZTRARBSHAXKAKR Memcached #7 SH Memcached WHAT PHS, PHP. Java. Python, Perl, #44, GATUAAS. KiCW— FF Ps A Memcached 2247, SUA Pai FP REIEASIOMNIR, ARE. BG, ATX Java WK) memcached client MAHI TF. ZEWTIMI KIT Memeached MIF. FAME T PHP ff%/"#% memcache, #82, Feat L417 ORIN GREE FF. 1. H5—T PHP SCHR RRITE AUR EH R PE MAE ARS F GRATE A RE BEF APD [oot@webl htdocs}# vi p2-php <2pap $mem = new Memcache; Smem -> connect ("127.0.0.1", 11211) Smem->delete($_GETI'£"1)7 PHP ii] Mencached val = gmem->get ($_GET['£"]); echo "Deleted: " . § GET['E'] ; $mem->close () ; od Vii: [seg (1103. simaprecaees Datetes ogo ine logo.jpg M2E1F AUR, AT LUT REM ATE, fun: (root @web1 htdocs]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to webl (127.0.0.1). Escape character is '*]'. get logo. jpg END WiKi Ae. TAPERS SCARCE EEE RF He fie BALE AEM A AY SED <2php $mem = new Memcache; $mem => connect ("127,0.0.1", 11211); ‘Smem->flush () 7 echo “OVER! "7 Smem=>close () ; > pias BF ney ee QB ¢ X @ Ske fememeemis 46 Ae bee RATT DP ORE, 59 BN ott he M5 GE Web MB MASS HE org mw te, a wer) 60, (root@webi htdoce}# telnet 127.0.0.1 11212 trying 127.0.0.1... Connected to webl (127.0.0.1). Escape character is '*]'. get 1090.39 exo WBE. FIRSTS AR, CULAR S BT PB Me eed & php-fpmconf 7 “/status” , SRA FACHAS, RRA? A Mika, 2B LH php-fpm.conf #, 4X T do F Hee H: root@mail 1ibl# more pm = dynamic n.status_path = /status path = /p: ping. response = pong Ate Ries it http://192.168,3.130/status #191? [2e#% 2 —X AA pingpath 4 pingresponse 2. RRA AL Neinx $ HH EPR YH, EE anuz 4¢ nginx.conf #45 Jnl FA: ib]# more /usr/local/nginx0.8.53/con£/nginx. cont “/(status|ping) § include fastegi_params: 168.3.130:9001; CRIPT_FILENAME $fastcgi_script_name; gi_pass 19: fastegi_param S 27.0.0.1 allow 192.168.3.0/24; deny all; ) ABNgos AE TRIERE Neb ARS ARABS SBME cae eve, seve, as7. ner $) BRT FART. RSA TA AA ASK. html He AERTAM PRA. EEZE waa 1. MURAD MR Jit http://192.168,3.130/status vil it mms =o rm pool: "3 process manager: static. accepted cor listen queue 1 fax listen queue len: -1 idle processes active process total processes: max children reached: 0 2. HA him BARTAA BAM sdhiah http://192.168.3.130/status?html i fl ~Or? uk aR ST mm Dhet: pool 3 process manager static accepted conn 240249 listen queue len 0 | jmax listen queue len-i idle processes 3 active processes 2 total processes 5 Imax children reached 0 3. HFRS SAR HMR ict http://192.168.3.130/status ; Ge) Ca Ce) phe-fon ks ¢£02 # Xf} php-fpm.conf ', ping.path 4! ping.response #447 f( 2 (FA? ATER AB, RNAI TRC: pm.status_path ~ /status ping.path = /ping ping.response = pong ‘AURHES pingpath fl ping.response FEA, AA “/status” HASEUII, iM “MEH EE Db BR Sy 1) ito /aremmmemarora 2 RLU e] hetp://192.168.3.130/ping MAK, CE EMMA, 14 pingresponse ity (fl DME ET MACH, Ht, Hd pingresponse M{McK# “1 am Spool!” CER, WMA STAWAE IS. MLE “1”, LIGAEN pingresponse MHS] HHikt, AU BASU SUH)» ARIGALALREAY php-fpm, Aki) a] http://192.168.3.130/ping: [5 rete //192.100.3 139/00 Lmsn ———— Tay! Wik, Mt AT AE. PLAYS SRE US ER, CAT ARS BB TAR AS 5 ACH} BEAR GH Nginx Xt Python fi FUNG uwsei BR, TE a Di TA TRS REAL ER, AEA AGI DAE, Lt AR, TiS Ae AE hE ee Pitt. % Ee Rm el bg UWSG] R—MAIO. MAH. HARA PARE LEA MBPS, RCI SHAABBS. AEWRELH, uWSG RAH A—+* WSGIMFS, CARMA AMMA, CREE RAEI ASS. RAE Web AIRES. THAME. et RHI. IRA. RPC Aeitt CRM MMA uwsgi GEE, MACH FAMAB, tks CA Nginx fo Cherokee 4% ATPRALPE LS). PRAT IMSS A ith fo) 18 4 48 uwsgi tid. UWSGI T1428 4748 TH fork RA. MARA, AAAS, IfH AA green threads. coroutines SHA, (ldo uGreen, Greenlet. Stackless 4 Fiber. at ARAL, UWS MF BRAT SHR ADA: SAT. HRA. XML. ini. yaml, json. sqlite3 4H 4 LDAP. Ht ERC, RVRH, TARA KE AH RARE ABA UWSGI [R28 FAME uwsgi Prix, CLAS EB, HES HPL lA fis. uwsgi AE ALU AF ASTD Pa es A. te 4S uwsgi HARB 4-7 uwsgi IFFY, SHAE, Web Hid ab abet ht FINO AL, 8 uwsgi Rea fey 4a A HTTP OZ. uwsegi PRK ESET PEPE TCP OF AUK. (248 master UEFE AT 96 5E A] UDP PR SO. J SNMP RARER. HBR JR, SCF SCTP Dik 4.1.1 uwsgi BGA struct uwsgi_packet_header t modifierl; t16_t datasize; uint®_t modifier2; M WRAPS) A, datasize fy 1.2 uwsgi Rie modifier ffi (fi uwsgi 19 itil fa tk AY FS i fy Bd ABN init AA 66 FSTERE Web ARIS BABB SIME cas pw. dove, A MET) # F# modifierl = m1,_modifier2 = 31 32 33 2 73 74 datasize SERRI) WSGI te Re HEC | (AAG HTTP HRY SERRE) PSG Se AKAs Ra HTTP RAED ‘Schat) LUA WSAPI Jie A/S AEE HTTP. BERRIK) RACK SRE Ata4% HTTP ERIE) See jwsgi SRM As Atad# HTTP ERED Hea Ay Spooler 38 fit Als (VERA HAAS 0 ‘Sela WSGI JRE HK dy Rds HTTP HRI) Se MK A ERE RAIKAN ARABIA A snmp chr (TT) MBB KD HE mia) AR EAB DD PE et a) m2 0 0~255 o~255 0~255 0~255 0~255 0~255 0-255 snmp chr (P) GRAN Ok me) o RAR PabE HTTP SRAM ERHE WSGI fk Re HTTP FR HEIR PSGL if >R EL JRUBE HTTP if oR (Et Smee LUA WSAPI iit PRE HTTP if RAM bE RACK OR SABE HTTP ini At bi LUA WSAPI if RA Hh modifier ARIZ bek, ALL he” BBS) fe Python ia] ft it we iti 3¢ |L¥E(6M-1 spooler WHJIl. modifier2 #22m% RUE LP RAS RETR. REE modifier2 iH, 0 27% Python, 1&7 Perl. WHT fastfunc, i t2ksHi# modifier? Sb HTTP AAA CRONERAE WSGI ARE, (EE PATH_INFO #24 1 54450%, SCRIPT_NAME th, BBR. Cmodifier2 (iff 0 MUTI: ALTE LT BREMEN hI 24. LER Ai Web SPREE PanME. > ALP AAU ei. modifier? fi 38 PMH FH He modifier? ff =P Mitta Python 19% (CLE) 1638. modifier2 ff: y 98 — 4+ Bettiah SNMP i 2R. WIRERR ta, RET UDP AEST “HTTP” ATM, KALA HTTP LT fas aA #79980., uwsgimulticast. manager THN 6 SA e4% SS! Rs BR 95 MBE Tha ate SALEEE I BBR. ET. SETAE AE action FILLE: iM, 1= BR A, 3 = 4A SRMNAN HED ERE 3 PIAL ALS. SuhkAl worker 96 aA A 0 ROLE Cm Bh. AUD 97 0 BLBRERRAWR (0 WR, 1 MUD 98 0 IERRATPER (0 WR. 1 IAD 99 AT BRA CRN O~1 Muwsei 5 CHR B48) RACE BE Ho 100 0 o~1 PING-PONG MUR modifier2=0, 43-7 PING ii SR modifier2=1, M4 Jk--4 PONG ifPR. JY SARA 101 erly 0 ECHO Hit 4 110 ABA KS O~255 —uwsgi signal #549 (41 CARAT AE ELE) 111 faites 0~3 ete. 0: i; 1: 5. Me Tia RE 173 tats ont DEAL ARATT, BAR ELIE —tS uwsgl PE. PEA) eA ts 7 RP IE Lt PREG SH (MM modifier2=1, ALA RPC HHA AL SCARS ELT 4 fm a Ft Fe, AUABIE 2 tae uwsgi 3k) 255 0 O~255 —ARLIKIOFIN, eM FHAER Ain, AIF —AAICAY spool it, HI% spooler WHE Se BIA Os HNRSNN spool HARI Jt 1 4.1.3 uwsgi HZ cuwsgi DR RUNGE LR MASEL, AMA A struct uwsgi_var ( uintl6_t key_size; uinté_t key[key_sizel; uint16_t val_sizey uinté_t val [val_sizel; , 6 ABN ER Ae M512 FE Web RH ABB SASH cas re. Java, aso ners) WES wwsci as8 FIRM RUGS UWSGI HRS 8, “CME PRE, 4.2.1 UWSGI ARS eH hE WGA, SOBER HI Hy UAT RA, HM UL TRAN ZH A RHEE ASA FA TET EIR TURE FEL BEAT BIR A AISNAIE. hi uWSGI tie EAR SEMEN, VS» ARIE TBE MA ARGH AS GR AS AS PL ASE Dn TAS, a A A BAST HE MTT: = UWSGI IR #1 4 ACG FA C SEH. = 5 Web Ik4# (fal Apache2. Nginx. cherokee fil lighttpd (UBUHE) Hea HIE EL ai PAPA Hi = (GATED. = fell ae a F S PI S = master EAT 90 7F 11 2 ae ave EE ROE ELA BLE BARS = SNL Cuwsgi. http. fasteg! Al mongrel2) . © SR MYIF ESCH forking Bist. = HULLASTE AD rss (RHR. = RIA RSE. + illlot sendfile ©) Biftapassctt. = BP RSHLTE CURLEY FF 47 Linux 2.6, Solaris/OpenSolaris/Opentndiana, OpenBSD. NetBSD. DragonflyBSD, FreeBSD >= 8.0, MacOSX. Nexenta Al Haiku) . = SCHPIMMIOSIEY, falln SPARC64 2k % ARM. * SHAR. = AVITAL DAE AA REI Web Hit aie 0 £ CGI Hat. = WAMU Harakiri Hl. = WEY 1/0 fideo ti Ft FA. = wii Cabds) BENE + DSUARSA, = HAUSE GPL2 F. = OARS EKA, FPGA FE ABER LEY © Bp aE UWSGI CHP LA AT PERE AS he BEIM BE) = PREM worker HRI. = Rt —4> worker (it BCH = GEARTT SERS. iB Se1B* worker. = AP HEE iA AY modifier. = CHP UNIX Al TCP SER. 3 BARRA 3 + worker ite. 32%: harakiri Byles VACHE harakcird RELL. ANATOLE TMH, UTI fil, BARE FE, WALA worker HEHE BANE. Sf: --harakiri 60 ABR HA hi BA. BE: harakiri-verbose Shits “4-7 TANT MAR, AA SHE uWSGL EHR BATA. WRIT AIA BI, MATA SPH ACRES BE CONG, Linux ARS STR RAE HH syscall). 28 GA: -charakiri-verbose MARIS EMA ICR. SH: xmlconfig a4 xml Shite: BOAAESE AY xml BOBS. WREST RAAT, ABA BT CATS Tesh x. FERC PE OY LL & A . RAMA — FIRE: /tmp/tg.sock /tmp/django. sock> TERRE F, FRICTOT DUARTE. REE IOT HACE STALIN xml SCPE PIM uwsgi deh SAF IRIEL Em SE. A PIB MA Jusr/bin/uwsgi /ete/myapp. xml WA ASCH Jetc/myapp.xml A BAREVIELA, (AMR. @I1%F5: daemonize BUA OUT HL ds OPP RAE UDP ARS BBE a ee ATA --daemonize /var/log/uwsgi-log VBE PEG 2 (EAE UWSGI NR ABH SE He 5 A /var/log/uwsgi.log CF» (ewsail] daemonize = 192.168.0.100:4000 RRL UWSGI HR BEECH a ACE MTL Ay 192,168.0.100 FL UDP SHH 4000 HIRI 28 |. WE Sk — Ft H IR A HELE: listen BU LEHE SE IT ABA PU ISHE. EEE BATS ZAI, TRE APE. PS, ADT. DAR ink eee]. aise HA RAHAT Bit: 100 Appl: 20 a AN gins HAL FBIERE Neb ARAB ABB SEH cae mr, save. ase ners) 4H: max-vars Sif: Va TR RATE, WEL Pei UWSGI HR ABA HH CNginx Web fit Hi) WE, KE PEMEI. TNA AAI HAA: buffer-size Thfle: CRA ABR A), FLY uwsgi BGR ELE MT. FT aT A NAG ATE AT ATER BOREL, MA oP DUK zfs EI 64KB.. SUA: 4KB 2G: --butfer-size 32768 BETIS 2 tir UWSGI IRS BEB PF 32KB AYA, A PR HE aA IHL: memory-report Shi: TEA AAR. ASHls RBS Sei R A PGR AK RSS AULT ULM: cgi-mode Sythe: TEI cgi Bist. FRI APML A KSB IBM: abstract-socket Tie: TERR th AREF COUNT Linux AA) » 3IBEK: chmod-socket #2 chmod DyRE: UNIX SEH SHE SCR Se, PA EE UNIX AB SS. RRA Web: FRG BS HE TAL Nginx IRI) SOLVIT I uWSGI HRS. A of Pit PRAIRIE FCP LI «IT RLACDE FC 2 i A Dy 666, PiU iA BEE AL AB fry AHL: IVAEAS HAE ATAU HTTP i TE cgi HANY.( Status: LAE T ICPEAP UR EY 6660 AS: 644 BALA TT EF CPP LLY 644, 2 ss TT VkI% Mk: map-socket Ife: 4 uWwSG SETLIST ERE, CART REM HEH ENN worker 4 ie if ey DAE Ath SIR QoS. SIREN] 4+ uWwSGI PHBA, HB Ai SH TUT AR AE Ss LAE — PE TPC EMR. ERE PAT EK. Al: [uwsgil socket = /tmp/uwsgi0. sock socket = /tmp/uwsgil.sock workers ~ 5 map-socket = 0:1,2,3 map-socket = 1:4,5 BRAG 1, 2-13 K+ worker MRI A — TET tlh 4 BIS IAA ERE TE BUN BIS MET. 4%: enable-threads Th: TERRES. ROM SCVECEAL PIERS MURA MS ar EM, A AE A-T 4STER 340%: single-interpreter Syl: SME UWSGI SAINTE Cal MgR AiR Hit ie AY Python) 4-4 “RAE” HOS. LUE IU ERB MIB: master Shi: HFA master wbAt. 6B true HLA BLALHE SS A master it. *404%%: emperor Tf: 612) UWSGI ff) Emperor BLL. ABUSE AA 0.9.7-dev REALTF OEE i 34047: emperor-amqp-vhost Shi: 4E emperor UNF, fi: AMQP #1" 340144: emperor-amgp-username Tlie: 2 emperor HEF. Ze AMQP HLF He MEST. 14%: emperor-amqp-password Jhf: 4 emperor HECK, di AMQP {BURA . 380148: reload-mercy THRE: EBT RAO POEAT, HES graceful) MBAMAM, FAY —+ worker UE PCCM, HL 73 AN gins HALE TERE Web ARIS ARABS IEE cart ov. dave. ase ner) --reload-mercy 8 GREASE RR AMIN 8 PAZ UEN— ER, MAE TUE A Mi. LBM: exit-on-reload Sh: BU UE TEE CAR A SRE RIEL UWSGI SERRA Che aT HEIR NA, FATIH. HDAKA: help WL usage Tif: Sak as PHB ek LH BL 5 GUM: reaper Dyfié: VW reaper Bist. ASE AHR Z Jay MR BESSA] wainpid (1) VLEs AARP EAE. URIS TPES, By DIRT Ae GK a a eH TP HELA: max-requests Shit: BEA —4P worker KEIRA AHER. “4-47 worker iAH iH RABEL WG worker He HICH AL» BRAC AY WLR HA RS SARE TEE CAD {& reload-on-as fil reload-on-rss (7X — AAG pw ATL) « fuwsgil max-requests = 1000 RB worker Z:AbE FE 1000 HR Reel a ALT. i&TZAK: socket-timeout RRM 4 The: ARANETA A MEI, SE. Asal: --socket-timeout 10 FLARE BAS eI HEHEHE 10 BP A. 354%: sharedarea Dyfés JAF] SharedAreas iX5E—MEBRAIIEE A LF. MURA BE AE SEH REAR Bi 4 Ay LL 4% CachingFramework. Kal: --sharedarea 10 PRE REY 10 HOE FFE. $M AK: cache Thi: ASL ee¢e. 2% CachingFramework. 3&TZAS: cache-blocksize Thies WARM RKy. HETIL AK: cache-store Dyfi: %y uWSGI RFF AF ATE BE 74 #SAZAK: cache-store-syne Die: AGHA TEIN, BER msyne © ASR. WRB: queue AEE. HAW: queue-blocksize AAPA. IIA: queue-store ASPET. 32H“: queue-store-sync TNH? AU. BZ FR: spooler SHAE: PEASE MY Hae FU Spooler. Bion: [uwsgil spooler = /home/foo/spooler so 5 iAH #¢/home/foo/spooler [KF spooler Xl. “EAN ET MOMEATTT EDDL/ HITE DA SIBLE. MLA: disable-logging Tifie: RAPRA gS. TERAUR HSA FOU eR UWSGI A ADIN. UTZ AR: pidfile Dhl: TERRI TAR ALZ AE pid SATEEN HE. MBA: pidfile2 Dies CEM DGE AT RL a pid “5 ATE. BML AR: chroot THE: chroot © BRN. RZ: gid Site: WHIT UWSGI HI BSN) gid. HELA M: wid yf: “BELIEF UWSGI JR %-AR/H uid. RBH: ini Die: WE ini ACHE. WRT, HAR: 75. HN gett AE FBTERE Web BRS 85 SRE 5 IRHE CaF pwr, Jove, ASP.NET we2A8: yaml Bez yml CME RHENH. UTZ A: Idap Thies M LDAP Med 2 ARE CEE. HEZ FS: Idap-schema This Fh LDAP Ht (ARH AIK). RELA: Idap-schema-ldif Dyfi: Petit LDAP % LDIF #30 CHF{t) openldap Hrs) . IRB: no-server Thies Ibi, UWSGL MGS 8, (RAIN SERCH, ATSC CAT HAZE: no-defer-accept yi: BRUNI F CURA SO + UWSGI SRS BBA Ze HEN BREME Pit GEA CREAN) «OR Jeo MOAB: limit-as Shi: ALAL POSIX/UNIX setrlimit (KAR MIAE 4+ uWSGI BERL CHa Ti FA. bi PDAS ERE AT LAU [el ALA TE ESE PEATE al: a-Limit-as 256 WLR iB Me UWSGI ERE 256MB 11 Lf bik FA). 4H: reload-on-as Die: 4—-7S worker (AL IUUHE EI) COLE RMR ATE AS) iL TE MAIK worker #522 8A HH 6 =-reload-on-as 128 META, M+ worker FERIA (FM 128MB, A84i% worker 45251 HMMA. 4H: reload-on-rss Dyié: (2% reload-on-as {i/il. (Hk -as Hil reload-on-rss. et: uwsgi: reload-on-as: 128 accept ©) , AH) HECHT PERCHA, MA nT De Patital, PEMA SEEPS 4 5 AY LATIN (#1) reload-on reload-on-rss: 96 MLAB, “44S worker (HH (ysis) AT 128MB wk A ae rss AYIA Y 96MB, ait 45% worker is Ais 2408 FIC TA FB. oe as i HU Mf: touch-reload hits ASCE RSI, Hee eS RRA, UWSGI HERR. Sale uwsgi: touch-reload: /tmp/reload.txt UR BAT LB ts touch /tmp/reload.txt 2, uWSGI IRI BG 2 RS EAA ETE M: limit-post SNKE: TE HTTP RP ITP ER Avs ifLiot GER uwsgi 2E ft CONTENT_LENGTH 3% 8132 Ais fil: --Limit-post 65536 SOLE, HPRIDACE 64Ke WHR SRL. YLZM: no-orphans The: WAT master HEFL, AA A ahhh AM worker BEF. MRAM: prio She: WASTAGE. BRR, BURA MIDE RMP ROI Bel: 20 TRUE WAG 48 BEAL UWSGI HE iE PE FE 20 HAHA I MELB PK: cpu-affinity hie: Be cPu MARA CQ Linux) . AEA: ~-cpu-agfinity RIL PY m BEAL WE > worker ub REREOLUIH CPU MYC. fain: (4 cpu, 4 workers, affinity 2 worker 1 cpu 0 worker 2 cpu 1 worker 3 cpu 2 worker 4 cpu 3 z AatNgmtt hE PB tERE Web ARIS SEARS HEME Cae MP. Jove, ASP. ETS) (2 cpu, 4 workers, affinity 1 worker 1 cpu 0 worker 2 cpu 1 worker 3 cpu 0 worker 4 cpu 1 (4 cpu, 4 workers, affinity 2) worker 1 cpu 01 worker 2 cpu 23 worker 3 cpu 01 worker 4 cpu 23 (4 cpu, 8 workers, affinity 3) worker 1 cpu 012 worker 2 cpu 301 worker 3 cpu 2 3 0 worker 4 cpu 1 23 worker 5 cpu 012 worker 6 cpu 301 worker 7 cpu 230 Worker 8 cpu 1 23 34H: post-buffering Tyfle: FFA http HE (body) 424#. uWSGI lH BRAS STE A TiO HM http 4k Cbody) fakitt. AF Rack SURE, UR tom. % {uwsgi] post-buffering = 8192 SHLAA EE AF BKB ff hetp fh (body) (RF FIRE L. 341%: post-buffering-bufsize Dyfi: BURR AEE BE Ae WT NE FER KR, BREST INR SE FR ALK. DE AEM ACER TH. ASA: post~buffering-bufsize 65536 GS PAL 64KB SEF recy © Hse. MT —+ 128KB ff http HE Ck Le EGR) HES PERM HAI. 23 uss! 5 3k 1% M&K: upload-progress Dyfi: FAR ARS GREE. BT LG AL Pete iB) UWSGI HRS ASHE AY LAT SURES ARP MPR EER ISON UT. ERAGE, IFS LARA. TUL (UA Ajax KER, PTLIBENC TRASHY Web MRIs 28 sci iy IAA a. AE fi: --upload-progress /var/www/progress FAP bf S081 FA URL: http: //uwsgi. it /upload?X-Progress-ID=550e8400-e29b-41d4-a716-4466554400 UWSGI Ze AF HUF 7 HEIR X-Progress-ID 3411 @)ak 4h Bi % 9 55028400-e29b-41d4—a716~446655440000. 5s 4£/var/www/progress "41 UF R71 A as { "state" : "uploading", "received" : 170000, "size" : 300000 ) 46 Web HG 2e'h, (WE /progress Bt 8 /var/www/progress, Hay LLiaat Ajax KAR MLi#E json Bed /progress/550e8400-e29b-41d4-2716-446655440000. js AYA Web HRA Rete TK PEM SNHE. (ARTA EASA 47 RN A RLS OE NAA ‘H, MMBICH uWwsGl RS BS RMS. HAH: no-default-app Thies ZERRUANIBE F. “USGI ZEHSEAOAEM SCRIPT_NAME H4RAEIALISAY app IN. HF SWNT app. ASMA FIX app MERI /. UATE, IBA dn Rapp AM, MAR iB —MAR. 3394 %K: manage-script-name Dyfi: LCP RCARRIAL Webb IA 8845 ENE-PESH SCRIPT_NAME, Ji el Ld uWSGI A 3) RE PATH_INFO. A: udp Thies ish —> UDP ARS AE. ERT SNMP ASE E QZ: multicast hie: ARB, SP. MAM: cluster Dif: MATE AIA Cluster) . XEMKK: cluster-nodes Dye: BOAT INAAAE, (ARS AT LL TIL A NAE. EIAER uWSGI LALA api TRA BIIO PB: 79 RBNgoxtt AS 20 BitERE Web ARS RRABB SIEM ws eve. save, ase mers) a7 --cluster-nodes 225. ii RHE So RU BF 225.1.1.1:1717 Lf Hi rs 334M: cluster-reload SRE: ETE ACRAR A F 780s luster 225.1.1.1:1717 --cluster-reload BAG 2 MC AA MEA 225.1.1.1:1717 PMA IR» WAZA: cluster-log Thies Seb BTA ROS AA, HF A ica de WT aE 286i: cluster 225.1.1.1:1717 --cluster-log "Hello World" ‘iG isk 2 BE BE, UWSGI IR 5 RAS Se Ur EAE 225.1.1.1:1717 PAVIA 15 Ae I — 2K" Hello World” iia. i548: subscribe-to it: PHVB, ALS ARM. TURRET MER. Ail luwsgil subscribe-to = 192.168.0.1:2626:unbit it subscribe-to = 192.168.0.2:2626:uwsgi.it HELLAS: shared-socket HERE. BZA: snmp hfs AFH SNMP JR 28 . 391488: snmp-community Thies BLE snmp 14 community “7:7. ii A: check-interval hii: EMEREAE Rb SMT A BE Sa ds 3012F4: binary-path She: WUC RSEN path PRAT UWSGL, ASA eT LASHED Ti A YA Emperor fe 78 YMA SI SC HAMA = BERR: asyne Dyfte: Vi async ist. oe os ELLA: logto Dh: iS A PER A AE UDP IRIS ELAS: logfile-chown BOE UIA. CRTC TATE. BIAS: log-syslog This WAH PEM. 322 FR: log-master hfe: HES FRR HEST master MERE CRAG SS ETAT AR a9 1/0 MIRAE T AE BED. ARAL AF SIG 1/0 USE RH HB US HH A. IAM: logdate ShfEs TER — AH A XB: log-zero Dyfi: SE VAG. EAM: log-slow Die: ater SP MAR. WR mS, MEHY--log-slow Hest. WIZ PK: log-4XX SYRE: RAAT CA 4XX BN HEIR: log-5XX Dye: RAR AT A SXX (HER MAK: log-big Dyfe: WRK Tene WAR. he SAT Hat A--log-big . 3434 9K: log-sendfile DHE: iar sendfile O i. SRNL Pk: log: She: HFT RR SM TR CER AED) 240/44: master-as-root DE: LL root 4 Gris uWSGI HR #8) master vt. TMAH: chdir Thies EM (PRICKLY Ziv chdir (> SHE Aa. MELAME: chdir2 Tif: EMEZ hi chdir O BARE. icros Rabanne A 2 6E Nob ME RBS SSH xe mr. save. asp mers) X44 ¥s: mount SyGE: Sev ele] ARE HR & 4 app. dr 24740. -mount MOUNTPOINT=app. ASG. s-mount /pinax=/var/www/pinax/deploy/pinax.wsgi iB TE MOUNTPOINT Fish —S 3A app. le: grunt vhf: SOF grunt bE. BMS: threads Jif: TERR PEREBER. TES worker Hk se MURINE RE. 28: --threads 40 --workers 2 Jit ABE PEG SRE HH 2 4> worker, #—4* worker 40 (REE (M4 3t BO PRED © MBAR: vhost thie: Fea MEA ABLBE. #EI%8f: vhost-host Tif: SRUAA BLP. Mea DLAC GE] SERVERNAME 42 fit (Ey T:L% Gn ASAE FT HTTP_HOST, 4 “4FH5)h] Host: header, 92 jhj BAS Mn Hie IH. WIN, AK: check-static Thies PREMIERE Oe PE Z AT, UWSGL HE 240 MTGEAY AR. UWSGI HF Hftifk i) PATHINFO 'P, OR — TS RE A EE, FEL UE HEARAA SIT. aS: --check-static /var/www/example.com Sa PIER 7 foo.png Xs THAR CF BE IEA HCLE /var / www /example.com/foo.png #1, HBA UWSGL HE HEAR TE CRU TTALIE sendfile ©) FLERE OE HEULEAs: static-map Thies HET ARY GE BN BURP AS SCTE 6 8B: fuwsgil static-map = /media~/var/www/django/contrib/admin/media static-map = /images=/var/www/example.com/images JHE ENOL. IRAN IR, VERA TEVERFE ARI PATH_INFO, uWSG! 42:48 Fria PETIA CRU ATER sendfile O ) FURR E. eM %: file-serve-mode Dyfi: PesTUE a Be BP AS PRE. 82 e4a vise! As x-sendfile: #¢2{£/H X-Sendfile 3: (/ 1 Apache, Cherokee. lighttpd) . x-accel-redirect: #2: (#/l] X-Accel-Redirect J: (HT Nginx) . BRUM: sendfile ) Ast. AEB --file-serve-mode x-sendfile BLE SAH x-sendfile yA. HRA: check-cache AHL. HEIL FR: close-on-exec Thies 1E uWSGI £7 | BEE close-on-exec bids. IHF LEI He HEAR PAE MI Sh RE PEE FEREF SR. GAM: mode Thi: MALAI, app Heseidl it uwsgimode LEIRIR. XTRA: env Siti: HPAES efi: [uwsgil env = DJANGO SETTINGS MODULE=mysite.settings iA HE 2 A} DJANGO_SETTINGS MODULE 4 mysite.settings. iH: vacuum SDhiie: F ayes BR UNIX SHEE pid SCC, FF ALI. IZA: loop ThE: BH LoopEngine, AE —PMMIAI. IBA: worker-exec Dyes REAL, A ace ks 4 rH) BT dh AT SCS) UWSGI worker. 8p Jusr/bin/uwsgi --workers 4 --worker-exec /usr/bin/phpS3-cgi ME, KLE AT LLig tT + php fastegi HRI 2. 36% Fs: attach-daemon The: CE uWSGI HRS AeA) master VERE LIM —‘P Shai RE. FCF master PSHM / Mi FE / A BURA TULL. 794 ALY ORT 2B —4> memcached 9: fil. AEB: {uwsgi) master = true 83 AsNeinclt AE MI St fe Web ARS ABB SIEHE cay rie, sve, ase ner) attach-daemom = memcached SOIREE 2 DIE MOEDY memcached Pif Ze uWSGI fit BK) master iE Fi | *E% FS: plugins Shite: BAGH Mf. 760i: --plugins psgi,greenlet HIKE BH AA psgi Al greenlet Hitt. 369%, ¥§: allowed-modifiers Ties BAIS PIRI. KLATLL; fal modifier {7 F-5K- 38: ~vallowed-modifiers 0,111 ie FEAR FF Ui Fl WSGI Sb SPE FFA cache Abi REF. i431 %: emap-modifier hfe: TLRWL modifier. AHER (EN. 24%: dump-options Thi: OUTTA RI, ARB. HELA: show-config Shi: AY MTAIRL ESCA ini Hest Bea. ZH: print Dili: BATA, “eee CER TIC CPT hea SH: (uwsgil print = foo TALI SIRS 28 SIN Ab “foo” IZM: version She: Sas uWSGI MRA, Pa aR. MBE: wsgi-file LH file [Python Hi /t- 7522] Dye: RAEI WSGI Sf CAL Graham ff) mod_wsgi ARF HSC) » UHH: eval [Python Hif+ 2] Thies AAC. Hl: def application(e, sr): 4 1 ss pass PALS 7 EER EA WSGT A Ao iAN% HK: module [Python Hit?) Dyes MAAHEIY Python WSGI HL CBZi¢E PYTHONPATH 'f1) « HSM: callable [Python $F 722] JYHE: WE callable LAGE HEH WSGI BU CRAY “application” ) JEL PK: test [Python Hittite FE] yi: WEL AMS AE TH fe ab WEA TARA. AJA: home AF virtualeny KA venv LF pyhome [Python Hi} FZ] Jf: 4 Python IV) PEE a # virtualenv. al --virtualeny /apps/env001 JEL AFH 1H /apps/env001 ff: % virtualenv. 343 Z%K: pythonpath 3% python-path 8% pp [Python ffi 7532] Dyfi: 4E PYTHONPATH "4581-4 Ha. ETI HY LAAT 64 UK. 78 (uwsgil pp = myapp/1ib Pp = trac.egg it iAU PLASM myapp/lib Mi tracegg HI Hak. 404%: pymodule-alias [Python $i} 72] She: MALI ICYE python BULA RMRg. MELA: pyargy [Python Hitt A HE] fi: YLE Python ff sys.argv. ABs --pyargv “one two three" BLT sysargv 3% ( “one”. “two”. “three” ) . SESAME: optimize Dif: BME Python MIP few) 5 MAM: paste JHfE: {Hl paste.deploy KARA WSGI N/T AUF. Ae: ABN dnc AE FB TERE eb HBSS RABE SIEME Cs me. Java, ase ners) uwsgi --paste config:/foo/development..ini HEU, Ff: ini-paste Thités BiAMLE—ini Al—paste MN tEAM HE. NCE WERE AS Se AT ed EIA ef 1% paste.deploy (Me HX tt. i&JH2 86: catch-exceptions Thies FERIA PAT EWS. MAES A aCe, TEA RE AS EEE] age AD J 22 EAR» 349K: ignore-script-name shies 4844 uWSGI fi) SCRIPT_NAME 434. 4H: pep3333-input ASHEAE AL. MOAB: reload-os-env Wpties TAR ABATE EK TE He me Bat. HULA AE: no-site [Python #8 ft G2] IHGE: HAERMA Python ff sitepy Htk. HLA: ping [Python Hitt $2] Jie: BA LEGA. FLT ping uWSGI R528. MUA ping MIURILLE BTA. AZ MEM RES TACO HE 0, PT MUI HH (CME PAF 0 Bie ASB: /usr/bin/uwsgi --ping 192.168.0.100:1717 iAH SA ping WEA ping Mit T° 192.168.0.100:1717 ff) uWSGI Jk % 2. 34%: ping-timeout [Python #4} 75H] BLA ping RUIN CRU 3 BP). MEME A WB i UWSGI HRS BS SCI. 7TH. 3H AS /usr/bin/uwsgi --ping 192.168.0.100:1717 --ping-timeout 10 44 ping HLA 10 MR: nagios Jie: Wnagios Krill. RHEE. HEM: fastrouter hfe: (edie MHL bJzetT fastrouter CRA] uWSGI RIOR / PRI). Sb [uwsgil fastrouter = 127.0.0.1:3017 i4ML ALE fF fastrouter {) IP Hah 4 127.0.0.1 Si 86 os 34540: fastrouter-use-cache Dyes FOE UWSGI ERE AEALS IP HL RAN HJ ¥5: fastrouter-use-pattern ThE: ASCE RACH ELA +P HLA 434%: fastrouter-use-base 7TH. 440%": fastrouter-events ThE: fastrouter 7E—7S PAI, BLA] asyne FETE MH A. 345% Ff: fastrouter-subscription-server Dye: AT AL AEBLY: IP HULA, E fastrouter 'fi48)N—7* SubscriptionServer. 44%: fastrouter-timeout Shite: WE fastrouter (Hi Py ABREIN KR: hep Dyfi: SCH KALI http server/router/gateway/loadbalancer/proxy. IRB AS: http-var Shits KAR HTTP HH ARS AEE KEY. tir 24TH, HEALER: http-to hfe: VeA htep WR BEE it) uWSGI 3H). OFF Ast %—-http-to . --http-var KEY[=VALUE]. 3400485: http-modifier1, http-use-cache, http-use-pattern, http-use-base, http-use- cluster, http-events UA bes HE AE (LAT. 3&4: http-subscription-server Df: Ay SRA ALAC HLA We FOL ELM A LS) ORT ek FLT 9 8 HTBAK: http-timeout Diité: BRAM http Ses. TETRA: ugreen [Ugreen Hitt 2) Thi: MA uGreen fF 9 2i*F/1KAL Cuspend/resume) 4|%. 34K: ugreen-stacksize [Ugreen Hitt BB) hie: % uGreen WHER Ads. 87 RANginxtt £ A S12 Web MBBS SHE case me, toe, asp ners 4.2.3 uWSGI ARS aR ANE (ey uWSGI HRS RE, “EMULE ASCE A. CERIN] i EMSA OmEH, ABUT SORE SCAM ICH. (UE TES RS AAS. PRL, CaS AS Ba SPIRE SC PER ED HEIL AE SCPE Th NS SIN BG BEE RE. PUTT A SCHL BCE 1. BSTSR UU BIR AREAS. “EA TTI, MRE Lin socket, MA¢imS47 TE t A “--socket” (RA. 1B AL, FURIE EAT MEI IE te a --socket /tmp/uwagi.sock 2. FRE H FRE, MAA CE, RRR ak A aE A TAT BRAS, JE IAEzL TAI 4+ “UWSGL” NUTS. PLLA TTT METS: "Cy PRER “AL” 6 GAM, AER max-vars fH AAG EH: ‘UWSGI_MAX_VARS="" 3. xm (RFORP Hie SUE SESE Rk cuwsgi>, FE ELDTAT AS DESI AZ mk TE SCA UH ob, TAPE PEM I, GW master, BT LACE a Ai AA: 127.0.0.1:3031 4. ini RACE PERL, BRE + uwsgi 15, EE Ey “true” BRE 1" 5 601, Asi xem HA SHE Se (uwsgil socket = 127.0.0.1:3031 master = true 5. yaml PEA AAO CE ih HERLTGH BERL uwsgi fe bas YE i IL YH A “true” BATE “1” . GAN. bill ini MURR Ey: uwegi: socket: 127.0.0.1 master: 1 6. Idap ARCS AY, SELB) LDAP WRG ae. UE WP LAT. A 88 #4% uss ss AAR AEM AIS BAT UL. FRAUD AR AE TSM Idap Ayal, CER is SH, MUR A CIR GE MEAT ACAI uWSGI HS BEBE. 2A By Nt A BE: FRHASRMP, RAR. fA UWSGI Mik 2 SE LDAP. 1K uWSGI 9% 2A IE 0.9.6 LLL. AFM ASHE HE HU LDAP RCI. 959s. i478 libldap, HU PTs HAF uwsgiconfig py ¢£ LDAP JR 8E 1 SFA uWsSGIConfig Bit. Hp DT Ah AL i -/awsgi --ldap-schema iit SHG 2047 CH HE GEAR A) LDAP Hi AEH bat: LDAP BEAK. tu SR eb fe ALAM LDIF PL BEA LDAP J 2% (iM OpenLDAP) . AAMT LAAT: ./uwsgi ~-Ldap-schema-1di£ Fae -4 LDIF ffi9) &, 1X -4hillLict uWSGIConfig 4 H M OpenLDAP 4 2 LARA: dn: desprojects, desunbit, dewit objectclass: uMsGiconfig objectclass: domain de: projects uWSGIsocket: /var/run/uwsgi/projects.unbit.it.sock uWsGrhome: /accounts/unbit/tracvenv uWSGImodule: trac.web.main:dispatch_request uWSGImaster: TRUE uWSGIprocesses: 4 UWSGIenv: TRAC_ENV=/accounts/unbit/trac/uwsgi (8H LDAP {i535 4+ LDAP url (M-Idap 38. HERR. MHS URINATE RCE. pio: -/owsgi ~-ldap 1dap://ldap-unbit .it/de=projects,de=unbit, de=it ee CLARA) -/uwsgi --ldap 1dap://1dap-unbit .it/de=projects,de=unbit,de=it?sub?0u munbit 324$ 127] ARH de=projects, de=unbit, de=it, ou=Unbit Fi -eidak. Hob, SW RHA 4.2.4 (UDP FARLE uwsGl HAS BETA pAULSE UWSGI IRS AHL. AEH 0.9.5 LLEMUR, INREF 0.9.5 WALTER SC ARPT HEAD SR A HE HCE ee SI PRU 1 ET “SR” PEASE AT, 9b Bee YS Hs SUAS AEC OS MEMES FSCO A AA HE T 1/0 BEAR LTA ROE AEE, SURRBIACTNEL) PAIR. IBA uWSGI IAEA daemonize i, 38/5 Aon AE RT LL ict --daemonize i459] id (42d UDP IRI a8 PP Sta Ae AS, a ./owsgi -s 13031 -w simple app --daemonize 192.168.0.100:1717 39 RHNgm ARE FSTERE Web ARS BABB SBE cat or, Jove. a8. NET) SAAS CEA 2 HAE a HAN / a GE IC eB BEEF 29 192,168.0.100: 1717 ft) UDP ABE SCE BAG SS REGGAE UDP 12 SAMY UDP HR ME. PLAT AEH netcat: ne -u =p 1717 -s 192.168.0.100 -1 Be EAH uWSGI: -fawsgi --udp 192.168.0.100:1717 BoM HELAN—, CRT M BR AA CP hbk: WS). ALLL UWSGI IR #8 A&B] 4S UDP HRS ABO Ee As OK PAS BS FART) De SRO BE Re L/L PATEL) UDP ARG aU BE. OE UWSGI {1:29 UDP fied. UB 2 Bete 8 HY WL a {81843 Python ff callable: 717 -w my_super_logger -/uwsgi --udp 192.168.0.100: HF my_super_logger thy #: import uwsgi def print_logs(ip, port, message): print (message) uwsgi-udp callable = print_logs RAT ALA MASE uwsgiudp callable, 4 udp 444 4.2.5 AFiZR ASH Zeroma BNET 0.9.8-dev MABEL. GRIT UDP A 20KKESE uwsGl fH) A i ZeroMP K#F AGI. AL. LRA 2ZMQ PULL HEF KOI: import zmq Fes iM se uWSGI ATEN HK. WBA BRA 5 ctx = 2mq.Context () puller = ctx.socket (zmq. PULL) puller.bind("tep://192.168.173.18:9191") while True: message = puller. recv() print message, JWLAEIG4T UWSGI Hit 9 88 uwsgi --log-zeromg tcp://192.168.173.18:9191 --socket :3031 --module werkzeug.testapp:test_app 4.2.6 Emperor 3% RAW, 0.9.7-dev MEA FERRE TE. WR ART ae BEE A BEE LF PE BR UWSGI ARS a, WBAIG 4K Emperor Hit. IXAPBLUL HIRI UWSGI SCI, 7 RENE HL RPA AE. lo HARE BOR HEME IR AE 90 e4e vss! 5 PIL, RRA Teh. 1. Rt 1 HEH). ARERR EAMER FAAS AC PEEP at F. “sath uWSGI emperor 4if/4]i% A at. Emperor ¥ BEIT Wests + RIE LAGE GM PR AA OEY CS Zo OR AEH) USGI 4H]. tll emperor IRE) uWSGI SBIR EAE “vassal” . UBB B BU AS Cs werkzeug.xml werkzeug.testapp:test_app 4 127.0.0.1:3031 trac.ini (wwsgil master = true processes = 2 module = trec.web.main:dispatch_request env ~ TRAC_ENV=/opt/project001 socket = 127.0.0.1:3032 rails.ym uwsgit plugins: rack rack: config.ru master: 1 processes: 8 socket: 127.0.0.1:3033 post-buffering: 4096 chdir: /opt/railsapp001 django ini (awsai) socket = 127.0.0.1:3034 threads = 40 master = 1 env = DJANGO_SETTINGS MODULE-myapp. settings module = django.core.handlers.wsgi:WSGIHandler () chdir = /opt/djangoapp001 PHS 4 MCRAE 7 ER, fei RAE A /etc/uwsgi/vassals HR, Wa Emperor fi) /7 13) uwsGl: uwsgi --emperor /etc/uwsai/vassals 9 AM Nginxth AE MS 6 Neb HRS BAMB SIEM cas re, save, ase ere) S&H emperor H§ 22 ay ATM LA Kiet AM WME /touch GEE touch fr PAAR CAME AAW) ALTE, SEY DALES we AA, FLIRT AI IRAE AE CE, AB Hs AGI E AINTO MINCE, AZ BTA UWSGT CBU EIR. WE emperor WM, Ab% vassals ARSE T . W—4> vassal FEM, IBA emperor #4 SiR EC. 2. RZ (RAM) . HE—+ shell OAL SRI SOR PBSC TAI, BE AER EA EL AEE ASR BEE (ULF) BR AS CEI GRE — TAR AA CR HED), Bin: uwsgi --emperor /etc/vassals/domains/*/conf/uwsgi «xml TSMR T, RAE, EMT LRARTHATINAR. uwsgi --emperor /etc/vassals/*. ini TERME, Be Afb NTal AAR RATT imi UE. 3. Hast 3 CAMOP feist) : EAI RabbitMOQ (aS I HhAdiM AMOP ARS) SABIE M9 TF RabbitMQ A AMQP: RabbitMQ & Lshift 24% —/+ AMQP ( Advanced Message Queuing Protocol ) 497% % Ry Ger Bibhe, AAA AT Pst 4 45 Erlang Bk, Ate ART RES, AMQP 2 ££LiLA nH: Exchange # Queue ( 4 AMQP1.0 BRSA RA). 4 FH A, REM X MA Exchange, 1M RX Queue, iKMA ATA Server #, RAK Broker, ik af 5 XX RabbitMQ Ie, oe iQ A_Producer 4° Consumer 4 KAY, Clionts | Server ues water 5 Clients — AaTaRA SET. FART RabbitMQ, MARAE. fe uWSGI Hie RF iWLit-emperor i 191K LH RabbitMQ Hh % 2: -/uwsgi --emperor 192.168.0.1:5672 FAB. emperor #5225 FTI IEIR CGAL FEY ee, CE oS BE ALT ED RR) WAM MINER, CLR TARY UWSGI BORIC PEA A E FIGRUBIT PAT pika BR CPIKA ALOT AMQP Hs iSGULINMY Python SH, HT LLAD 75H EPS A a. EAD RabbitMQ ff) server HEFT), (Fate Hy LESTE fat AMQP BHR ASE MER eae ass! 3 import pika # connect to Rabbitg server connection = pika.BlockingConnection (pika-ConnectionParameters ('192.168. 0.1")) # get the channel channel = connection. channel () create the exchange (if not already available) channel .exchange_declare (exchange='uwsgi.emperor', type="'fanout") # publish a new config file channel..basic_publish (exchange='uwsgi.emperor', routing key="', body="/ etc/vassals/mydjangoapp. xml") URAC AEAT, —UARATIAK TIAS, emperor 442i in —-HS. MALCEPah, A URAC RA TEL, RAE TARA, SANTEE TA HEI, eM HE BAR. BTA CE HANH 2s VT BEAT BY emperors RET OVE AAE |b TARA AEM 4. 485k 4 (amqp http xt) : {EAI RabbitMQ + HTTP pat SRARAC MC UWSGI AC BCH PAT LLAA http FRR A. AA HEMI LMG HA ay as AC HE PI yA id. BRAEHA, AHRREAHN-RABVARHT RS, MELHEELAB web HAR 2. E AMQP fHGP fa bE AEA ME PEAY http url, FER, LRAT RT A, (PLEA, AY Et Web Bi 4sj* 4. channel -basic_publish(exchange="uwsgi.emperor', routing _key='', body= ‘http://example.com/confs/trac.ini') FDBESR 3 PE, BANE TH ALL, HUI AA. UR http url AD ARAARET!= 200, ALA ATI A SAA Ze AS BR 5. #83 5 (amgp one-man-band mode) : {i RabbitMQ A WH AHR M Fit Bete HE he y RabbitMQ FIs {ei MC UT RU, routing key (4c FIR MCS) Rema . Lp A ACE aN: channel .basic_publish (exchange="uwsgi-emperor', routing_key="mydomain_trac_config.ini', body=""" [uwseil 93. FRTERE Web ARS Re ABR SIZE CT pum. Jove. Aap. ner oF) socket=:3031 eny = TRAC_ENV=/accounts/unbit/trac/uwsgi module = trac.web.main:dispatch_request processes = 4 weny FLEE RTARA BASE 3 AVES 4 MAINE AT RA, RATA RAS A PS 4818) body itt: channel basic_publish (exchange="uwsgi.emperor', routing_key='mydomain_trac_config.ini', body='") 6. ERA ATE UWSGI ROBE PEAT DMAP ACRE, CEAEAEIANIOTITAT 7 96" TA. lin: funnyapp.xml fi 7 #4 F: lurseil socket - /tmp/tn.sock module = werkzeug. testapp:test_app processes = 4 master = 1 3% HEA EH AK luwagi] RATE WEG «RPE SR: socket = /tmp/funnyapp. sock module = werkzeug. testapp:test_app processes = 4 naster = 1 SS UA A bse oF + %v: vassals Ht. 8 Yoo: Ae fir SAT AAR DU AINE BE PE PE AT ESC + op: RERLCP EMER. 5 Ys: HUEICPEM ICE. + Yds CARRE RIN BES +e: ELIT IE # Yon: REST. AMT MEL WA. fai, °% emperor Zi HIRE LE FA RHHRAACTE PHN» LUNAS AACA FS: fopt f/opt/apps oss i /opt/apps/app1 /opt/apps/app1/app1 . xml /opt/apps/appi/...al1 the app files... /opt/apps/app2 /opt /apps/app2/app2. ini /opt/apps/app2/...all the app files MARTELL Fer: uwsgi --emperor /opt/apps/app*/app*.* SUA ERC BE PEP ABA HE HZ FRACTAL UAE {LWNE/opt/apps Hak FLAT django KiJHFEF. M64 si X/opt/apps/appskel (Hit %.skel AVRCLAEW emperor Bkict, Ll emperor ZH) = [uwsgi) chdir = /opt/apps/tn master = true threads = 20 socket = /tmp/sockets/#n.sock env = DJANGO_SETTINGS_MODULE-tn. settings module = django.core.handlers.wsgi:WSGIHandler() MART Weis in -s /opt/apps/app.skel /opt/apps/app1.ini In -s /opt/apps/app.skel /opt/apps/app2.ini 7. ERE PEM A EWE AT emperor TC FFA ATR, AP MOL, EAE RAAB. URE THR: [uwsei) 7 this is a placeholder my_funny_domain = uwsgi-it max_customer_address_space = 64 customers_base_dir = /var/www socket = /tmp/sockets/#(my_funny_domain) .sock chdir ~ §(customers_base_dir) /*(my_funny_domain) Limit-as = §(max_customer_address_space) PETRIE AT LEE ARR UWS GOR i Tel: 95 ARNO RE TERE Neb AES ABB SIME as mir, sve, ase wer wy import uwsgi uwsgi.opt ‘customers base dir!) ART RE FE ED VA PB ESC 8. AATAH vassal FRESH SULTS HR, ATLL emperor Hifi| y uWSGI SEA HETN. eR RIE 1 UWSGI_VASSAL ff AriWET SA). “CAS Bi 3 BABIN UWSGI xxx i. alan: UWSGI_VASSAL_SOCKET=/tmp/%n.sock uwsgi --emperor /opt/apps FMLA PAS SE TERI CPE YR “socket” isi. 4.2.7 Eworker ZMRSRE: AFAR FEAT ELDER CE worker 2 fil tM CHM i. Heed, PAR). i RL-A TIT, “A JX HL (Ncn> Re SACS HE PCA TN FT PEERAGE BKB NITRA CHUNAR EM RRL A DA AKB) » MA oP DMO F SABE AMC ne She JRF, MB SEE DORE 278 RRC, BBO TREE JMLARA “uwsgi” BUR CABO WA CE uWSGI Mid asf). Re ay hig Pe. FEEL AY BAA Se fe 288 0 Es import uwsgi uwagi-sharedarea_read (100, 10) uwsgi.sharedarea_readbyte (130) uwsgi.sharedarea_writebyte (130, 17) uwsgi.sharedarea_readlong(130) uwsgi.sharedarea_writelong(117, 999999) uwsgi.sharedarea_inclong(117) WPS R ESE MP LBM GET) . PBT AIRE pthread 367 (1) mutex PFsEia, Aidt, RAAT SMP 764224 pthread R—Hid MMAR, Ese ayok BAP UNIX MAH. eer POSIX Rik ay. AI, CAA ROT mutex ] TAHA EAR, —4 mutex R-SAKFRE, NTRP BREEN G. CA matey locked 4 unlocked. ‘& FHF) MAR 1 ALATA — RATERA 33/2 EH mmap SHE: 4 “<2 sharedarea = mmap(NULL, getpagesize() * sharedareasize, PROT_READ|PROT_ WRITE , MAP_SHARED|MAP_ANONYMOUS , -1, 0); be MRSA Python 3.x. 4.2.8 uWSGI #72249 ALY MINI webapp AL, BEF kk—-TPABLALTT. UWSGI NRG 8 Le TRE AT BIBS CEPI 4E. SMP Se4e, HE ELIE AST EI eR ee A, rid uwsgi ff api (RAGE, F 4 eee: = cache_get (key[,cache_server]) cache_set (key,value[,expire,cache_server] ) = cache del (key[,cache_server] ) + cache exists (key[,cache server] Dae, “43 Python 2 LUA [iy SEES ABE, HT DR SLAF (ie A uwegi.cache_set ("foo_key", "foo_value") 4M, WW Nes uwagi.cache_get ("foo_key") i n/iMIUE cache server, ‘Efi(fik: 4 TCP/UNIX S42 ibhh. MURR. ABZ te BE F--cache i&3ii: «/awsgi --socket 127.0.0.1:3031 --module mysimpleapp --master --processes 4 --cache 1000 LATE. WY DLEE HY UWSGI 92 A E08 7 KF IAPR, TRAP il ThA tl De 1. tat WT NCR ERE OLE, AZ Zt eR MR) CA AERA eo (BEALE ACO 2048 FW. PMA ATP. RAMU TEAK AT WRIT, CARA IRONS, MMPI A ANOS CREO eb (oP RAS TALI ea) GER, Pe ay LARC Do 2. HAT RRO B ete ik hei. EL, SMP See AUT he SEH LD. UF See ny Lhe ie, AHH] modifier 111, Pvt, PGR EL Fis fy diel ie PER data = uwsgi.send_message("host", 111, 0, "foo_key") Re data = unsgi.send_nessage (*host", 111, 3, ("key":"foo_key")] RAE CHE MA Webs IRR 4% 2 i fal: location / { owsgi_pass 127.0.0.1:3031; owsgi_modifiert 111; 44 1000 MEERA uwsgi_modifier2 3; 97 AMNaiote RA MM St Web ARS BS HAE eee, ove, ae very uwsgi_param key $request_uri; Jit) A LAr ia AY EEA Nginx Acc AE uwsgi BPI I I A AAAS ALT, ASAT IAL, Ay RE LERCH Mir TA, I Ey AE RAE, PRE RAT eR AT ST TSK, Halo: location / { uwsgi_pass 192,168.173,3:3032; uwsgi_modifierl 111; wwsgi_modifier2 3; uwegi_param key Srequest_uri; uwsgi_pass_request_headers off; error_page 502 504 = @real; ) location @real { uwsgi_pass 192.168.173.3:30327 unsgi_modifierl 0; uwsgi_modifier2 0; include uwsgi_params; BUF FES ITD LAR Wk. 3. A RMA CERES F. UWSGL RIS ABAY master BERLE HEE ASTRO ALEIEAE “EZORE RENE A REN SALUT. ENOTES. (OSU AIOE. 4, —#MEF django RAM TERIATE WAPI AHHH django, ALIKE —AP django S842 15 CTALBLAL ULAR OLE. HUA A) ACA. Bri da% Ih uwsgicachepy, HIF PEACREGSES app, MZ aC PTAA BAL: “uWSGI cache backend” from django.core.cache.backends.base import BaseCache, Invalidcache BackendError from django.utils.encoding import smart_unicode, smart_str try: import cPickle as pickle except ImportError: import pickle try: import uwsgi \ ase except: raise InvalidCacheBackendError("uWSGI cache backend requires you are running under it to have the 'uwagi' module available") class CacheClass (BaseCache) : def init__(self, server, params): BaseCache.__init__(self, params) self._cache = uwsgi self. server = server def exists(self, key): return self. cache.cache_exists(smart_str(key), self. server) def add(self, key, value, timeout=| if self.exists (key): return False return self.set (key, value, timeout, self. server) def get (self, key, default=None): val = self. cache.cache_get (smart_str(key), self._server) if val is None: return default val = smart_str(val) return pickle.loads (val) def set (self, key, value, timeout=| self._cache.cache_set(smart_str(key), pickle.dumps(value), timeout, sele. erver) def delete(self, key): self._cache.cache_del (smart_str(key), self._server) def close(self, **kwargs): pass def clear (self): pass BRERA YP RAR MAIR, HYKERAASAM, RAZRARAAA ARM¥, PRPAWHARGHD, ARZANLRMT A. CORLL CHP settings.py “P42 5!) MIDDLEWARE_CLASSES #5}, (4:18 fH 57 04) JOLHSI68 LN: "django.middleware.cache .UpdateCacheMiddleware' 99 Death AA FB TERE Web ARS RABE SIEHE ca mr, dove, scr ner Pia te Ne SI *django.middleware.cache.FetchFromCacheMiddleware', SUMS FAAS, HELGE EAS MYPROJECTNAME fir % # @ unix or tep socket address, leave empty to use local uwsgi CACHE_BACKEND = "uwsgicache://* CACHE_MIDDLEWARE SECONDS = 60 CACHE_MIDDLEWARE_KEY_PREFIX = 'MYPROJECTNAME' 5. REA TMT OT EOE TRIE TERA TE SCPE, PAGE SCLEEA CEI (ENG AP TER iF --cache-store FE AP ANE / BR AEE HR HEHE ZHENG AST BE A A SHR A «A YB Af] A WG eh: =-cache-store-syne KILI m JLAE msyne ©) Zi master MERE AI CORANTOLE, NUL 1 BD. 4.2.9 uWSGI KIER Spooler kt —-TB STH R. “ENN TE ADF HT E/E RSE. FUE Ei, PR MEAT A, PEG Pa EERE. PLE Python callable (#3. “4 callable iii i. SC PPHR A MEER. PAA. EMEA AROBA ST AE AEE ACES TA: EPG AE, ERTS. 4 ABSENT CEI PRET AEST. GULLAH uWSGI M9 BB RHA Me MBE, Ae PUREE HT CLAS vi RH A OR ARH A} LE Fe AY UWSGI HR % 2 SMITA TTA, BUNA Ce i Str Pas I-Q MR, TRL aR RK HARSH — aR: -/uwsgi26 -@ myspool -s /tmp/uwsgi.sock -b 8192 -w testapp -A 10 AEST, OUR AMER — TAIL, BUR IAT LS. WY LLiLet-b GK. SNH BCA] wsgi BLAS def myspooler (env): print env for i in range(1,100): time.sleep(1) return uwsgi .SPOOL_OK mp as uwsgi.spooler = myspooler {#9 uwsgi.spooler [tte i122 BE callable SAAT AE L/D / TA LCE DURA AT RTHEDA, ABZ BRCE RT OL LEN UT ia uwsgi.send_to_spooler({'Name':'Serena’, ‘System': Linux', 'Tizio':" 100 4 uWSGI BEA: EARP I RATTLE 4 nodel 192.168.173.100 node2 192.168.173.101 node3 192.168.173.102 node4 192.168.173.103 46 nodel [i123 uWSGI, (ALAR “SR”. SERENA Bee Ae AMS, ASHE 2s MIR PRA TAT IRE Eo CER PR TAPE 225.1.1.1:3333 HOHE, RAP HLL IY DAB ERE. IHUITRRE AR PEN PRAIA A a LAS Lf GR NAR TEBE nodel EMT) + -/uwegi -w werkzeug.testapp:test_app -s 192.168.173.*:3032 -M -p 4 --cluster 225.1.1.1:3333 HET. RASRRE TUR ROR AT me? INBULETEGE. SME BA MIATA BG Tt AHERN, DAL, node2. node3 Al noded |: 103, ARNeinsit AE Mt Web ARS ARAB RSIEME cas we, Jove, ase ner) SiG im HUIS TOL Fee: «/awegi -~cluster 225.1.1.1:3333 EP ATH SABE ee Eta — A I CH ABLE node) . DACRE DAA AEM IELTS. WR nodel FERPA MME? BHR, HUGE model FHL, TIAL We, Hed node3 EMF, ‘ERAT node2 ot nodes [:3kIK AR. “Fi ANE: -cluster-reload fil--cluster-log. MORACEAE AS EMAC TE SCE, BRA ALA MOE, MBA ERI SABER AE PAE 4 uWSGL SEIU T aR ah? AAA. HEIR AE PP MIAT ELF tr ATLL Ts -/awsgi -~cluster-reload 225.1.1.1:3333 FEA AT eas ATR YT AAS 22 HN. LE --cluster-reload (MJHfE AAMT AMR —cluster-log, WA vaze si oT DL mR AUT ATS IA RELL, FLLT AW SBA RAVE AE ‘fp tl: echo "i love uWSGI" | ./uwsgi --cluster-log 225.1.1.1:3333 PERE, BATE HE IAA HR I echo sir SHE F FEAL TFA IBAA UWSGI. BEARAR TIA. uWSGI {2 UWSGI HR AEA — AEG EAD 1 / A/T RT. FMW CRS BRITT CSG. RECENT —7P--cluster EH, MAS Aa LER A pla: -/uwsgi --proxy 127.0.0.1:3031 --cluster 225.1.1.1:3333 BAPE, ene, MASE 127,0.0.1:3031 FHI) T AH AE Uwsei KEPPAE, JF HLS Shige i LS SIR Bh RS TA EE 4.2.12 uWSGI iTMRH UWSGI fi 4 28 894i MA PEG 9-48 “key:value” J “EA” BUNS RSC. fail, fastrouter fj EADIE UWSGI 8 — MENIAL © TETAS, MUR SE NCAR, A a AS HAART. Ault, ATLL UWSGI RMB—-BHHA RK. CGP MRR, A—T BRS EAT PREP “PHS OR”, HEEL PHI Ss BARE SoH He EMILE — Hid. APT: uwsgi --fastrouter :1717 --fastrouter-subscription-server 192.168.0.100: 2626 UMR-MCH, 245 uWSGI fastrouter ¢FZE 1717 HL, HARE AEA aL. Acta) EBLE BRIE key CED , ili UWSGI M5 a5 MH Y value (fF) SEG Dh A EIA hI, ORT Kid I, MEA HT LUA 192.168.0.100:2626 Shit, HEMT WL, IX DEE GRR AEN IP HELE 6 RH HAk se ATE key ALU E CET HHMI, aye IB Hh AR 4 9 hi oT Bhai 48 —-subscribe-to EK 6 4i'E In A SN —4F i TBAT: uwsgi -s 192.168.0.10:3031 -w myapp -M --subscribe-to 192.168.0.100:2626: uwsgi.it JMk “TAH. RYE fastrouter HFfs -4+Xt uwsgi.it Mi AURA #) 192.168.0.10:3031. URS uwsgiit BM A. ABS MY CMLL F oir: uwsgi -s 192.168.0.11:3031 -w myapp -M --subscribe-to 192.168.0.100:2626: uwsgi.it JL iB ML Fr Be BB So HN HR BE AY a PARRA CON 2/1 Hit GMM). fastrouter, http router #641. FRAN eT LLaLL Fri fh a AYRE“ ee 8 Bhi = uwsgi --http :80 --http-subscription-server 192.168.0.100:2626 Mia WUT LT LAS http PME a 4.2.13 uWSGI MH ( async ) #st UWSGI J 0.9.5 ATTRA OLP HE, RAAB, Oy CRAP RR RUOE A, Bs) A FL BD AIP ARE Pb BOA ARIUS Ae BER ASHES Be Ge PO FA, Bebe {HD WWSGI We ae FEAR AS FRI POST Mei. MPH ERIKA TR Ml, ALIS Web HRS abe RN et TF POST HARRAH, MA be - RAM PrN. CE PEE Lib. UWSGI ALLURE ROI BE (IIE “Yeni A async BEEF, 21a a AHN Pf Rea fy Amieitt. E418) uWSGI Mt async BEL, BEEHR 7 “async” WLI. Ft LIEBER “async AK” ff Bot. adn: -/uwsgi --socket :3031 -w tests.cpubound_async --asyne 10 SOLA MR AS 2 OLA UWSGI [AIR 9-38 SE 10 async Vy He, EAS BET DE BL PR PRU, MLA AC BZ EE APT A DAS 10 SiR. Fi —-* tests.cpubound_async MY JURE (cpubound_asynepy FE) » i import time def application(env, start_response) start_response( ‘200 OK', [ ('Content-Type', 'text/html') 1) for i in range(1,1000): yield "“chl>%s at %s" % (i, str(time.time())) CPHL PP test/ Hk Fe AiGAT ZI UWSGI HRS BSN yield, “Mer ALVA RET, SF EARS AT ATER BA AEB — PE TTP NHR» DLE. asyme PA #8 FAD ic Hak i A TE 0 Re HE BA Be SE HAE OR NT Be. HOR ee AF 105, RNR AB aaa 4106 FOTERE Web ARSS READ RE SIME caer rum. Jove, ash. ner) tests.cpubound_asyne #E4# asyne (IRI 8 L.A CAFS ALLATATIIERE, SRE AC RESEIR. ELBA NICHI ERE SEEPS UR. IAT RE. ALPE. FI AE ARI, FLARE ALAS RCE, che EIEN TEA. WAL asyne IRI 8 LiF —AACA AUFIN) async IEDR. MZ SIP MERA, RE, SEABIT 21FAK async BOUL A A Pr HE, uWSGL IBOLT cH “UPR” Zeb SPREE Kiel AINA BIH yield CBA E suspendQ ft!) » “async FARE” ZOE. EOP APRATR, NPM ABIG SBE AGP IEEE ORAL BA AAS RAINES, TEI SAT EH Ye AL fork yield GRHARR—AE RB, SABLA og, CEL ALR et RP MEE. AEM ARK (SUE nA) AAS RAR Tl, ALAA TAT a REM, — #A aK BUR “async FRU” Le PO, AT BRE PPK, Fi, AGRE OTE” GAY. MUR TRR TE PERE od, IZ ak AS EGET PA BER ARAL FASE AASK, MZ 45 Pe A EAE DR LT 1/0 Fe DOSER fa Ee 2b MBSE fork HUTTE PUTS, DARE TAPE. RUF SLT OT. 1. VO Be et Pout de WSGL ERE 10, AST ILM, LTR T TY, Pt SULA FRAP. HRW LAB% http://wsgi.org/wsgi/Specifications/fdevent XT iK). EI HY BUN, ET ALAC WSC AU PEPE BSS, TE BA Ta eA IRAE RAE. SPRAY Caka SESE) URS ASI te REMIT 1/0 Bey, CdR MLAR IA) ANAS GS, ABBE HAR BASES ATI © AEF AUT WSG HUI Ge, SCION ie A A RO Oa AT OT FR. PRI. WSGT SUSE BEAT EF EEE EE RARE 1/0 ARAL SECT. aE ZU BUT LEAR A ACEI “ALBEE” >, UL SOU EEE PFE PAT, LEI —MERRAISC ARAMA TE COMM, — SESE RAT PURSES a Mt Ur TR ALS ABE, PRU HEAREITT . PRIL PI. BOHRA THAD AB HE PEGE AMAL HEH. UWSGI IRS AB IEF LEE TE, (EARL APL ALE SAO IN. fa uwsgi.wait_fd_read(fd[,timeout]) unsgi.wait_fd_write(fd{, timeout]) SCAMS IAC HE FEL — FA UE PEG PAA FF PIC RT uwsgi.wait_fd_read (£40) uwsgi.wait_fd_read(fd1) uwsgi.wait_fd_read(fd2) yield " print "fd td is ready” % env[‘uwsgi-ready_fd"] a4 us? 2. RAR AIR TRICVAR ALE COaLM, Ce FBR Ns FB GEE PE ARI. BA VIE async SEP RATA AEM timesleep (N> BR. AYA FBGA. MTT AE A DOTA ET 4H uwsgiasynesleep (N) Pat, XML MY N ALARA PRL. TA F tests/sleeping asynepy ft: [root@nas tests]# cat sleeping_async.py Sretets Event sleepvalue = 5 def application(env, start_response) : start_response('200 Ok', [('Content-type', ‘text/html')]) yield uwsgi.async_sleep(sleepvalue) #print "TIMEOUT: ", env{'x-wsgiorg.fdevent.timeout") yield "shl>Hello World after 4d seconds" % sleepvalue 3. ARSC sendfile © a 7 uWSGI HUT SUEBRPHEIRE ACK. ts, Ja gc SE HACHEM Python “CURE” MUABARSCEY. IZ async Bist He -MAAEI IH. UBT F tests/fileserve_asynepy Xft: [roct@nas tests]# cat fileserve_async.py import sys import mimetypes basedir = sys.argv(1] mimetypes.init () def application(environ, start_response): filename = basedir + environ{'PATH_INFO'} {content _type, encoding) = mimetypes.guess_type( filename) if not content_type: content_type = ‘text/plain’ start_response('200 OK", {(‘Content-Type', content_type) 1) fa = open (filename, 'r') yield environ['wsgi.file wrapper'] (fd, 32*1024) BL — AP) asyne BLAUWIH. 4. comet FA JHE MNO MH, GN UWSGI HG BB AT AE async Esl, WT LR AES IHL comet Mz/tl< 407, wNgontt #8 ono BStERE Web AHS BABB SIME ar rer. deve, ase ners) Comet A—# aii) Web ARH. ATRARMARM AMP, MERE ARH BROEP WARFMEMG, ABEL P BRM HAR. Comet RHAEKES HHH 64 Web AM, AAA RRA TO RL RAL HY ALIA, HOMER BATH. WORT Ao Web BEL AGRE, — AATERA 5. RAMA ARR Fi PEDIGREE MEP BER FS. RRA MIR ES uWSGI SA, 4278 MBER, MPH ERB FRG fl: TT) WAL HE TAL fork Fak. MAL HB, FBIM: Web AMNESIA, #524 —4P uri/mountpoint FIs MAT MINE TR TLAT« 6. Site (AT MORN CH APSHEAVAAT'E: FI CLAY async PY Ei 7. harakiri #3040 async #5 harakiri #{5UE uWSGI Ik a XI NEE, ¢e async HEL RE Kiel Ait async WHA ASR, harakiri METH. AL. aii async #4. MAH harakiri ERK. Wik, MAE async Bist, AHL FEIT harakiri #5 8. PSE HT uWSGI callable (it Bar BEA ALE, SICH FASE PRE ECR GER, ‘ENT 4R A ISe ST EAE UWSGI async ESC AT REE CS HY, HY EA AF Ba PLY DR PFS ER EAL A PAS R GALA TERE. itn: uwsgi-wait_fd_read(£d0) iM eLUN-p (ALF f--processes) RBM) LUE. fe — TEE, CWT ATK RT uwsgi. suspend () JX 4164 uwsgisuspend ©) HF 2M 4 SAT MIAER. PRATT OT LETH AREA SIR TINT APR BEA Sn SHEN DG AT -/owsgi --async --ugreen 34 Kk UWSGI [RH 28 ALE PP ATK python uwegiconfig.py --plugin plugins/greenlet «/uwsgi --plugin greenlet --async --greenlet TEXTACE'T, greenlet kt —‘+4fift, Python /) greenlet HR 2'E . python uwsgiconfig.py --plugin plugins/stackless «/uwsgi ~-plugin stackless --asyne --stackless UNSGI ARSE (GRAIL, GEA stackless dif, Python ft) stackless Mish iti#E TM—F Stackless Python, HXERA Python H—+ sh HIM A, CsWitat Python # WPL, Sho TMA ARH RAE. HA RAR? LS SAAR AE AE CR SAMIR ALY), Ai, Teka Mae Re a HE — RATERA 4.2.14 uWSGI BWSR BRU F, ERT ATLEAST) SCRIPT_NAME 4¢-5t 8% uwsgi PM AAA TE KALA. Ki 0.9.6 MATE, (AY DEF SERVER NAME 282K ASV LT JMC EPUB, tee ar SAT AP fe A vhost II AN CR th Ay PERLE SCE RING Se Rae PS HOTA] Me ER ICI ELROD. fall: -/awsgi -s :3031 -M -p 4 --vhost 1. DAMA Jed UWSGI HR eas OL. AEA AC AC EI TOE Fish uWSGI ARS 8, BY LL¢E uwsgi PAAR, MIRA RTA. fidn: vwser_ScRIPT AMER TEE —P woei WATE, HEA CT PTA TE Be OWSGI_MODULE Al UWSGT_CALLABLE RUIN wsgi BR ADL I 5 ANS DONA PRI IE Sth EY cherokee, nginx Al cgidynamic, Jf Ht (7 BHO) tomcat fil twisted £bs2 FEN. PUTT Ey ASSHOLE MEA EAL. ltl: server { listen 8080; server_name localhost; location / { uwsgi_pass 192.168.173.5:3031; include uwsgi_params; uwsgi_param UWSGI_SCRIPT mymako; uwsgi_paran UWSGI_PYHOME /Users/roberto/uwsai/VENVL; ) ) server { listen 8080; server_name mrspurr.local; location / { uwsgi_pass 192.168.173.5:3031; RAK jo PRB gins AE BTERE Neb ARS ABM SBME cs mm. ove. se eT) include uwsgi_params; uwsgi_param UWSGI_SCRIPT mytrac; uwsgi_param UWSGI_PYHOME /Users/roberto/uwsgi/VENV2; ) location /arm { uwsgi_pass 192.168.173,14:3031; include uwsgi params; , d SPRATAMEN] VirtualEny (YI. ABE uWSGI IRI aeHS UN-no-site Ls: -/uwsgi -s :3031 -M -p 4 --vhost --no-site 2. AMSA VirtualEnv UWSGI fF VirtualEny (thik st Han F . BH, G38 VirtualEnv: $ virtualeny myenv New python executable in myenv/bin/python Installing setuptools ROL, RRA AGNEW, f/m pylons: * ./myenv/bin/easy_install pylons A, SAM weg BURL TAKE Cin ACRE PYTHONPATH, 844 lib/python2x «© CEW13) UWSGI IRI Se AIN-H HITT. ld $ ./uwegi26 -H myeny -s 127.0.0.1:3031 -M -w envapp *** Starting uWSGI on [Thu Dec 17 11:07:00 2009] *+* your process address space limit is 4294967295 bytes (4095 MB) Setting Pythoniiome to myenv... binding on TCP port: 3031 F SAA AN-H Bea. -Hj--home : #£/% Python ff) home 15% / Med Hak -H|--virtualenv : i Python ff) home [1 3%/H#i1 Hak. -H|-venv : ii Python (f) home Fl ak/HEWL SK. -H|--pyhome : #218! Python fit) home ]] ak/HEi0 Ha. VirtualEnv J4tF Py_SetPythonHome () C MMM, S447 Pytnitialize () Z Aisi SRD ABA SAR PA, ab ASN Re ROE AS AEH). TA, Feira Asis HE VirtualEny 218 —f WRITE PEE. RTA UE Python SIAL A site HUE, IX BURCAE python Hit HENT A RAD ASME sys.path, UNL Aa. SEBEL VirtualEnv, $41¢F subinterpreter M)Mith ii H&A site HE. 110 4% Ss! i Beit: FHA: PyImport_ImportModule ("site"); APSHA MOT PIRATE site BURA, [KUL site BLD HERA PyImport_ReloadModule(site_module) ; JWLZE, BEAT] Lhahas eH UWSGLPYHOME 2 fit fi Sth #2 VirtualEnv: location / { uwsgi_pass 192,168.173.5:3031; include uwsgi_params; uwagi_param UWSGI_SCRIPT mytracs uwsgi_param UWSGI_PYHOME /Users/roberto/uwsgi/VENV2; ) 3. ATRIA FRATAT ELA uwsgi ff entrypoint BEEK MEAL Bs import uwsgi 4s import site, HRANJAL DLAs WAH ARA L: A AURLELRE sys.prefix #l sys.exec prefix def appl (env, start_response): def app2 (env, start_response): uwsgi-applications = (‘unbit.it|': appl, ‘localhost |/ciao': app2} The syntax is the same as SCRIPT_NAME only configuration, you have to simply add the domain name to the dictionary key (using pipe to split it from the SCRIPT_NAME ) 4.2.15 RZ AA 4 Python G1. URSA AL ICAEAT SMA LAN THs ILI, BASS] PYTHONPATH SUE] VirtualEny 2A TRIX APTA WIA & PAST ARE EAR) BIR. FE BA Ah, WE TN RB. ESCUELA FRB) ARB. --pymodule-alias idi Jit Se Hy LAA i552 ME (1, UWSGI iF 0.9.6.6 RAE T ik PEI. Fim — Fe eS. 1. BARTER, BRITE) AC FH MAIR RAM—* funnymodulepy ft, KRHA TTLAM AM, KPI FA (import) SURAT Cproject) 41 Casi A MTHS ALA Python Xft) FARR MERGE TE. LAE MASALA GIN CT. BLLEFT experimentalfunnymodule. py. PA, BRAT AT AS Abit TEI (1) He eR RTA ES ARG, FF AAD experimentalfunnymodule [iii 44 funnymodule ( 41 14 AAstNemat AE MRSA Neb MASE 2s m0. to avers) RERRAWT, MHREMT ID . C2) FUL RUFF SIA KE BAF import experimentalfunnymodule as funnymodule SEPP ATAU FARE (EATS Hee TD BE a EL RAAB AAP INI AS BABB NIFERT CAE, BRATS a BETA) Atk igs FT wWSGI fe AT LAT. fod: -/awsgi -s 13031 -w myproject --pymodule-alias funnymodule=experimental funnymodule 359, FeAl] A] WOKE experimentalfunnymodule.py 1 8 4 A SEHI4E fo] — sth Ay AS CEE PYTHONPATH ‘PRAT LRU, SOARES: «/awsgi -5 13031 -w myproject -~pymodule-alias funnymodule-/opt/foo/experi mental funnymodule .py We CHEAT LLL herp IRS. fA ./awsgi -s :3031 -w myproject --pymodule-alias funnymodule-http://uwsai. it/modules/exper imental funnymodule. py SAG KARAT I a] LB & 4+—-pymodule-alias 4% CHIERRIAW 64 4) + “SPR AT LATER ESCPE CALE SC fen Le xml, ini sk yam) EH], ake LDAP. {94 sample.yml: uwsgit socket: :3032 module: myproject pymodule-alias: funnynodule=/opt/foo/experimental funnynodule.py pymodule-alias: uglymodule=/opt/foo/experimentaluglymodule. py 2. PIAA, BRET EI Maee AR {RUORATAT—7> django JH, Ff HARING — FATEH fH 1 django-trunk FE, Pd: svn co http://code.djangoproject..com/svn/django/trunk/ django-trunk -/uwsgi -s :3031 -« django_uwsgi --pymodule-alias django=django-trunk/ django CER TAA, BUTI T Virtual, (11 hay DUD ih BOS BH SE Ph He Se. 3. BSR. WRF MRT —+ werkzeug SH. PL PAA PER RE HY HH, PAAR AT AHF test_app. BBO 4, BA MPAA PSS Pe: ./uwsgi ~s :3031 -w werkzeug.testapp:test_app () --pymodule-alias werkzeug. testapp=mytestapp WSLREM: django (t views WE? fH nRAi14i 4 app/views.py PEE AA FREY views. FRAT Ly WS AZ HL 5 MULE 1A Mn /opt/alternativeviews/newappviews.py) If | Leck. PGMA Pte: -/awsgi ~¢ :3031 -w django_wegi -~pymodule-alias app. views=/opt/alternati veviews/newappviews-py 112 4 nse! es .16 uGreen Mit uGreen ft -4*¥E uWSGl async “ft Lf green threads M7, iii6JH¢F 0.9.5 LA bth Het. dh AF Python ff Greenlet, (lJ 242 Wi: POSIX swapcontext () PA#LZ EM. 201 uGreen, 252i 02H asyne HEAT ZC at 145 2 HEN 4) green threads. Ml, WRAUE'E 30 4 green threads, M4 4 F itil ar -/uwsgi -w tests.cpubound_green ~s :3031 --asyne 30 --ugreen eli-ugreen bas I ¢F async Hit F IH uGreen. Bade HRA OT ACEI AD a uwsgi..suspend() PY ah ol BL) #5} 4 green thread. 1. RBA BE UEAIAY HORA M4) green threads (iyi —-7 HEFL BEARS". BEEK: “guard pages” {R4". ff fof URAL green thread HERED< 2 Shit) "SHR (M5 2s SUL MUN Ah ER ENE. UR TER &, Mba RR EAE, AAA AKAMA. PIC: ws => on switch 1) save the Python Frame pointer 2) save the recursion depth of the python environment (it is simply an int) 4. 3) switch to the main stack -> on return 1) re-set the uGreen stack 2) re-set the recursion depth 3) re-set the frame pointer 2. VO REPRE Ae 1/0, ZARA AT VAL (ATT Se a ee RK uwsgi.wait_fd_read(fd, timeout) uwsgi.wait_fd_write(fd, timeout) 3. HERBS AY FRA) HT LAVEFE WEE uGreen MERA, iW fk —-ugreen-stacksize K7e Mk. YER, iSTLHT SEL Cpage) » 4. uGreen 2 tt Greenlet sk Stackless python sF4£ uGreen HRS CHARA BUL) » HEE SNE, Bly aay ‘PHERLI, fle Stackless python 4 -HSRAHY Python, [Aste “dT FAM % #h J HY Python. ALE AR — BP, GRAS AY a ATI AN, RS RE 5. 4 comet BFR H{ FI uGreen AERA RAAT FREE) , RATATLURE ugreenchatpy WAKE, ME ZAMNaontt AA S12: Web MMS SAE ae mw, dove, aw ner) fA AMT TL, UE -7P eR A8e AL comet LAREN. ‘falda: [root@nas uwsgi-0.9.8-re4]# more ugreenchat-py #1. /uwsgi import uwsgi from bottle import route, default_app, request, response, redirect @route(*/") def chat (): " return """ Groute(*/sender") def sender ( return """

""" @route('/recv'} def reev(): response header ['Transfer-Encoding"] = ‘chunked’ # this will flush headers yield ™ running = True while running: # this will put the core in pause (for max 10 seconds) and remove it from the sched queue, so the /send can write to its soc ket if not uwsgi-green_pause (10): running = False # this will maintain the connection opened if no data arrives yield "" Groute('/send") def send(}: # this will write to all the core in PAUSED state uwsgi.green_write_all(request.GET('message'] + "
") 4¥ this will unpause all the paused cores, so they will be re-inserted in 114 4 F vs 5 the sched queue uwsgi.green_unpause_all() redirect ('/sender") application = default_app() RMA TAYE, MAW Liste. pia: «/awsgi -3 13031 -w ugreenchat --async 30 --ugreen AER MAF HBAS BBD BE 30. 4.2.17 uwsgi PHL FEL AHR HL, BATE CL) Ath AIAG A UWSGL RS AAT th, ALE Web IRS 2 (UE uwsegi HERE, PERCE AE BLAITAY Nginx HRS HE) ASHE UE HLS UWSGL ARB SARI, it CAE Nginx FATACH = location / { include uwsgi_params; uwsgi_paxam UWSGI_SCHEME https; uwagi_pass 127.0.0.1:3031; - EHL2 HK: UWSGISCHEME Dyfi: “Be url (f) scheme. ‘Bio uwsgi_param UWSGI_SCHEME https; 2e4R% Ps: UWSGISCRIPT Shits AAENINAR, LUIZ UBER Rss IPABICAE Jy “PB HI WEA) SCRIPT_NAME CHR, EAL AUP OLAE PTAC TIN A BIR). ‘fot: uwegi_param UWSGI_SCRIPT werkzeug.testapp:test app; uwsgi_param SCRIPT_NAME /testapp; 82%: UWSGIMODULE #1 UWSGI_CALLABLE thi: 4 SCRIPT_NAME 44%. - 1M CE module:callable si! X) ‘on: uwsgi_param UWSGI_MODULE werkzeug. testapp; uwsgi_param UWSGI_CALLABLE test_app; uwsgi_param SCRIPT_NAME /testapp; EHF: UWSGLPYHOME Shh: APR E, yah: fala uwsgi_param UWSGI_PYHOME /Users/roberto/uwsgi/VENV1; ‘BCE Python ff) VirtualEny hy. 115 ABN nS BTERE Web ARSE HR ABB SIBHE ca poe. ava, ase nev ZEHL4 EK: UWSGICHDIR The: USAR He, CERT ‘pital: uwsgi_param UWSGI_CHDIR /home/shel1/workspace/hg? ERB: UWSGLFILE Thies BOGE MIC. HBO Para EHD. 22%: UWSGITOUCH_RELOAD hikes MAGE SCP AICI Tl MEI, Nena PPR BT IGE So TAR A UWSGI (SEHR. fat: location / { Zi chdir ATEN Aa. include uwsgi_params; uwsgi_param UWSGI_TOUCH_RELOAD /tmp/touchne. £00; uwegi_pass /tmp/uwsgi.sock; ) SeHRZ#k: UWSGI_CACHE_GET Dyfi: Keil UWSGI BAe AARAIEA key. HORUR A, WZ Yep! (eae Ps MAT RAL, APIA Uy RAT. i: location / { Sei) beep Me. HF AI include uwsgi_params; uwsgi_param UWSGI_CACHE GET Srequest_uri; uwegi_pass 127.0.0.1:3031; ) E20: UWSGLSETENV Shits a aay ASI LL (RE HSLSE NE Cf Python FHP Litho %y uWSGI Me 3 Est Mj-reload-os-env iii) . AMV IERLIE AMR] wogi (PMB 6A django WWF. ‘fl a: location / { include uwsgi_parans; uwagi_param U#SGI_SCRIPT django. core.handlers.wagi :WSGIHandler ()7 uwagi_parem UWSGI_CHDIR /mydjangoapp_path; ‘uwsgi_param UWSGI_SETENV DJANGO SETTINGS_MODULE=nyapp. settings; , 4.218 BERS AE AE UWSGI MRS AALAND F. FRAO Lee AeA USGL HERE ANTT I. HF uwsgi AY DUR AL, SSF, BURA wae. WAT MPA HAUL AR 32 MAHL CALC Hid VPP) . NPCS Ra. OR 116 a se is BEATE LA GPA F(R AGE uwsgi 3), BAM RHEE ey AIR. Fil ie 4 es aks Ces A th 0 Togging TAL PRRAT Lae 1 maxrequests | if + worker #FLAE ATE RM 2 socket timeout | #$c% iW ABASHE Ate! 3 memory debug | Ki/H/28HIH 46Mik. $8 4 master_interval | i master Zt PE403 (ol 5 harakiri Hee 4G harakiri Ay 6 egimode SARI cgi HL - threads 8 reaper 9 log-zero 10 log-slow u log 4xx APLAR ic aR AS Hy x YR 12 log-Sxx Ej RARE ic aRMUNLAR AS Hy Sx (HR 1B log-big RUE OPIN AHA 14 log-senatfile i HWRIRGT id. 3t sondfile backlog-status 5 TARDE I SUNN) Als A S2AF Linux BY TCP BHR) backlog-errors | #i# (-BUNKI IH i4H RIC CACICHE Linux if) TCP BNid > AP AM Ms, foe Tce -/owsgi --no-server -w myadmin --pyargy "192.168.173.17:3031 0 0" JX HRS RAL MEE UP SHE y 192.168.173.17. Sey 3031 UWSGI RS BEY HEHE. WR > -/uwsgi --no-server -w myadmin --pyargy "192.168.173.17:3031 0 1" HEART He. AVRIL, UATE a -/uwsgi --no-server -w myadmin --pyargy "192.168.173.17:3031 15" 4.2.19 i2{77 Nginx Rit) uWSGI fe UWSGI AC Ai Ht DS i fa, A ATE EA BEL et Nginx Hi SHY uwsgi KORRES FA F 0.7.63 WRACNS Nginx C4 0.8.40 Js ABR ABEE SE Nginx ) , JELLMIK, RIGAAATL FS: -/eonfigure --add-module=.. /uwagi /nginx/ iiLit th l-add-module i438], #§ uwsgi ALLA IN FI Nginx Hk ME. YER, 0.8.40 LGM Nginx AKA ML CLES MRE OE Neginx (UES . #RaaRALDT make. make install #4 1. SURGE OULD, AZ RATA AT ALE Negi HLS BS PARC (LeABAY UWS He ET HAC TES I uwsgi_params Xf}, IAM CPE Nginx 241 cont/ AR, HAI Ime nginx.conf 3C¢HV A location 44H uwsgi_pass unix: ///tmp/uwsgi-socks includeuwsgi_params; aa i] TCP Hk 7: 17 ABN gmt AB 118 FLERE Web ARS REARS SIEME cae ovr, Java. 57. NET SD uwsgi_pass 127.0.0.1:3031; includeuwsgi_params; in BBA Neinx WAT LBD lS. 1. SRREAE Nginx 4i—-7MRSRFERI HATH, “EEA AT AT LPI Oe SSE RAL OT ii —+> upstream H# ORE LHS SMALE, (EY server HO seme. TAM Fm NA! upstream uwsgicluster ( :///tmp/uwsgi.sock; server 192.168.1.235:30317 server 10.0.0.17:3017; + {kM F PRINCE T = 6 RS OS, AT S% server d+, BEILALT UNIX tie thik T TCP 4487. a (EX uwsgi_pass 1H#4 4: uwsgi_pass uwsgicluster; AEDT EA AS SAR ER ATER LID Ga SY TP Be AS YY) WSL IH 2 2. ASSAM UWSGI fi $5 ick $8 i085 PAE BE A RA PT BRAD oh) APA HEA UWSGI HS BB: ./uwsgi26 -s /tmp/uwsgi.sock -C -M 4 -A 4 -m RAR GRABLE PMI Nginx 7?°¢E NIHR) BERET UWSGLSCRIPT at, WARS B45 So BU Hie NBER: location / { root html; uwsgi_pass uwsgicluster; uwsgi_param UWSGI_SCRIPT testapp; includeuwsgi_params; ) HAT URRS TVA: location / { root html; uwsgi_pass uwsgicluster; uwsgi_param UWSGI_SCRIPT testapp; includeuwsgi_params; } location /django { 4% WSS! 2 uwegi pass uwsgicluster; includeuwsgi_params; uwsgi_param SCRIPT_NAME /django; uwsgi_param UWSGI_SCRIPT django_ws¢i; uwsgi_modifierl 30; } WSGI félbaifE Bt SCRIPT_NAME J2 VFA) Sua. GEL AY “uwsgimodifier1 30” tE0ii/I] FBR! UWSGIMODIFIER MANAGE_PATH_INFO, ix“Sfili# RASHES UWSGI HL 3 PATHINFO iif. 110 4°74 08/1] SCRIPT_NAME if)(H1. 3. OK HI Ay 0 ARIE OEE, EBERLE, HRM Rit ASIC i fll. FRAT AY DS media/ iit 4k SM 24 /media: location /media { BSL Neinx HPAI ll. alias /var/1ib/python-support/python2.6/django/contrib/admin/media ; } UWSGI itr RA LF, EERO AS SUE, (RWLAT Nginx HR RL. HUGE, MUR TR MICE AEE, — MEN FALE ACHE Re BAY UWSGI IRS: if (!-£ Srequest filename) { uwsgi_pass uwsgicluster; ) SURF AS TE, ABZ 225 | ike he 4, Pan A CER BZ FR. 4. RERWEM BOAT FE DA, BOAT PY AA ALE. (EE RIT — AS “AMEE” Web IVI. xt PREAMP TAL, RATT AE PIB ART A AE SE OD, LLP Se 9 id 47 uWSGL server ( listen 80; server_name customersitel.com www.customersitel.com: access_log /var/log/customersitel/access_log: location / { root /var/www/customersitel uwsgi_pass 127.0.0.1:3031; includeuwsgi_params; 119 ABN sind AA M5 1A: Web MR AMM HIEHE caer me, save, sp ners) 120 server ( listen 80; server_name custonersite2.com www. customersite2.com; access_log /var/log/customersite2/access_logi location / ( root /var/www/custonersite2 uwsgi_pass 127.0.0.1:3032; includeuwsgi_ params; server ( listen 80; server_name pippo.com: access_log /var/log/pippe/access_logi location / { root /var/www/pippohome uwsgi_pass 127.0.0.1:3033; includeuwsgi_params; } ) BLE DBT SARE 7, AEA TASER) wid, 3¢ Bont 7 B AS Ta eR Sl fd uwsgi ~-wid 1001 -w customerlapp --limit-as 128 -p 3 -M -s 127.0.0. 23032 uwsgi -~-vid 1002 -w customer2app --limit-as 128 -p 3 -M -s 127.0.0.1:3032 033 uwagi --uid 1003 -w django3app --limit-as 96 -p 6 -M -s 127.0.0. BTAHPEMTS A relocal fF. LLG TE HB tah RAEI AE Ha 6 5. {8A FastFuncs BU AT VL EE uwsgi () modifiers K4#/H FastFuncs, JF XARA A. EF HBF. AF /xml AY url dled. KFSi# oR FastFune 11: location /xmi ( uwsgi_pass 127,0.0.1:3031; uwsgi_modifierl 26; vwsgi_modifier? 11; uwegi_pass_request_headers off; uwsgi_pass_request_body off; , 6. {8 modifier 22 #E 0.9.5.1 WRATH, {R. uwsgi_pass 127.0.0.1:3031; uwsgi_pass_request_headers off; uwsgi_pass_request_body off; _string import uwsgi #4 as! 6 MT ARMAS 22, EISAT IA) UWSGI ARG Be AL feiB Python uwsgi.start_response('200 OK', [(‘Content-type', 'text/plain')]) total = 30+22 uwsgi.send("30 + 22 = $4" & total) uwsgi_modifierl 22; uwsgi_modifier2 0; 2X Gay (Lae Vloesete wait owen teer UPSTREAM Error Resource temporarily wavai able on Asse /niki Eepersr MEAL AF: http://en.wikipedia.org/wiki/Virtual memory 324 = Nginx BY) uwsgi IR EAA HE BAR A Nginx 4 uWSGI it 4 AtF uwsgi Hk 4o uWSGI RGB. UWSGI RF BAA uwsgi tix 4) —4 TER EAH SILAE Nginx-0.8.40 EAC, ELS, to RAR NAHE, A US Bik NE EMAIL. EEE sare location / { 45 ib > UWSGI i 42 44 Bak, FS include uwsgi_params; uwsgi_pass unix: /var/run/example.com. sock; ) A EO Ts http ( uwsgi_cache_path /path/to/cache levels=1:2 {AME 10m inactive=5m: keys_zone: server { location / { uwsgi_passunix:/var/run/example.com.sock; uwsgi_cache NAME; uwagi_cache valid 200 302. 1h; uwagi_cache valid 301 1d; uwsgi_cache valid any 1m uwsai_cache_min uwsgi_cache use stale error timeout invalid header http_500; uses 1; ) S24 XL fF Cache-Control, Expires HA XM, i) Vary Wh Se OY. MEM xe HAS: uwsgi_bind Wik: uws| BCU: none d addr Nein £9 use 2 UHEEM: http, server. location ThE: WEE ALIS A A MHONE. WR aE BL Ca HUI) AE Nginx BT4ERY EBL) HETME/MS Cinterface/aliase) . BA kal LA aS Hi NEE AE IP Siu | fii HH 2: ERE. faim: uwsgi_bind 192.168.1.1 tS: uwsgi_buffer_size iv: uwsgi_buffer_size the size BRU: uwsgi buffer size 4k/8k AWHEPSE: http. server, location Dyes ASST tk RAE ls MW WSGI JI 9 14 A 0 A AE SS BB WBA, i AEA WIDE AP Se BRUTE BEER EE fe4h> uwsgi_buffers HEE — buffer A, PATER RNAs. MR SDL fr A DL AS eR A AE. SXX SIN ASHES AE Ae HSH: uwsgi_buffers divi: uwsgi_buffers the number is size BUA: uwsgi_buffers 8 4k/8k (HHH: http, server, location Shh: BAR SAT MATE A RR, BRU EF, 4S buffer 4S 4 UM hb, ROBT RGCPEAE, OY GEL 4KB, 8KB ok #4 16KB. 442k: uwsgi_busy_buffers_size if3K: uwsgi_busy_buffers size size SLU: uwsgi_busy_buffers size ["#uwsgi_buffer_size"] * 2 (EE: http. server. loc: if Bytes FEIcH. 482298: uwsgi_cache iFiJ:: uwsgi_cache zone|off BRU: off (RHA: herp. server. location SHAE: BH AAP Hi — Pee SR Pe Be De aT DLE & Wb EAL. 482%: uwsgi_cache_bypass it: uwsgi_cache_bypass variablet variable2... MiMi: none (2/68: http. server. location Dyfi: WARS de 0.8.46 WRAITHLEE. “EAHA TET AL BEAMS SETTLE MME, TDA TE RES LISS. A PMT: Sebi La — PP A os OSE AE 2 IAL 123, IRN genx tt RA MEE eb AS ABB SIEM acre. ssn, ase ers) uwogi_cache bypass Scookie nocache $arg_nocacheSarg_comment; uwsgi_cache_bypass Shttp_pragma $http_authorization; WRAL SO". BARONE. bea. te mE, MOREE HERA cookie AEA “nocache” . MA AHA LATE, “CH SIE MCE AL Le EE, RERRERRAAT RNG GHB HERAT ERA RRA. FR, TAMTRR—FARLMA, Ho “My-SecretHeader: 1” AMMA FH — MER, KER BPUAT EA: uwsgi_no_cache Shttp_my secret_header; Oe Hid: uwsgi_cache key line BRUM: none (KDABE: beep. server. location DURE: RRS NT RR TTL key. ‘aia: uwsgi_cache_key localhost :9000Srequest_uri; 98242 9R: uwsgi_cache_methods iii: uwsgicache methods [GET HEAD POST] CUM: uwsgi_cache_methods GET HEAD (EFL: http. server. location Dye: Bai AP RAR Ae HTTP it tds. 424%: uwsgi_cache_min_uses Wid: uwsgi_cache_min_uses the number SRUMEL: uwsgl_cache_min_uses 1 (HUANG: http. server. location Dhl: BES AP BIDE 4+ URL BRIAR & “eT HY WEE AF PK 484 29K: uwsgi_cache path ifi2d:: uwsgi_cache_path path [levels=m:n] keys_2one=name:size [inactive=time] + uwsgi_cache key [max size=size] IMI: none ATA: http es BARE FE TARR BEAL PEI ALA APE Se TTDI I SRUESC TE, SEEN key RISES SCOR 27-2 MCSE URL DL MDS if S7ITU I BR level BPMN MORALLE HARE AYRE, 1H RAPES SC fA TT DL 1: vwsgi_cache path /data/nginx/cache levele=1:2 keys_zone=one:10m: RETR APY SCHR HULA RE ALL, FSC [data /nginx/cache /c/29/b7t54b24£77737224382f4808465029¢ 124 Neins unsei 2 BARE TAS AM SCEE, WERE BURP ME Ae Hak. M 0.8.9 ARATE, BEBE FE MOET PA SINISE SC PAM AE CHE APL FAST SCH RHE ELAR EAB Wl ASIC AR %, ld uwsgi_temp_path il uwsgi_cache_path iZB HW [al — CF RAE. BM key_zone (INE: HATER key MAP RTELESOF zone Pity (ra BAM TEHETE Hie SB AEM zone A, INAS ROEM T IK zone fH KS. BB inactive fey yfies LR —- wesw EAL GCA HAI STAN TS AE, IB ea SS AGES ER. inactive HIEKUMAL 10 444. BH max size (Me: FATE RENAL, AT AER eR SD EMBASE CE PMR LEAMA» 484%: uwsgi_cache_use stale ifi?d;: uwsgi_cache_use stale updating|error|timeout|invalid_header|http_500 BRUM: uwsgi_cache_use stale off 48MM: hep, server. location Dif: BATS MDAC Te ICR EIR, RAL, Negi HE EL IN BEB. 382% MK: uwsgi_cache_valid iff: uwsgi_cache valid [http_return_code [..]] time BRIM: none {UA http. server, location Dyits PAS FP A ASA UR ee A Ne Fe TA ld uwegi_cache valid 200 302 10m; uwagi_cache valid 404 Im; AERP RAH, HRLGG A 200 302 HIME EEA 10 SPPRs th 404 iLL F HHS OPE UN Be FL 1 eh. BULA Pi — uwsgi_cache valid Sm; FERPA, BATT IBIIROY, MA BRA SETA {Ry 200, 301 AI 302. Ad, UAT LR any KEN. Alte uwsegi_cache_valid 200 302 10m; uwsgi_cache valid 301 1ny awsgi_cache valid any Im; 382278: uwsgi_connect_timeout #2: uwsgi_connect_timeout time SXUMH: uwsgicomnect_timeout 60 (WHERE: http, server. location Byte: VARS TR a UWSGI IR ASAI. BEAL 75 Bb. W422%5: uwsgi_hide_header iti: uwsgi_hide_header name 125 DRaNginett hE FRERE Web ARR ABB SIEHE cas me. seve. ase. ner #) (QUEM: http, server. location Dhtie: RUA, Nginx A2zM uWwSGI lk a4F “X-Accel-. ea BA Pah. AHS fie a GK A. MIR “ X-Accel 3k Ws Bi WE BEDE. WS 45h BE HE uwsgi_pass_header $4 aki ([1i8 P1HY Phi 48229: uwsgi_ignore_client_abort ifiv: uwsgi_ignore_client_abort onjoff Riel HEREGE: http. server. location Thi: WARP T AUR ARR, WARE AA WTS] uWSGI IRIS AHR RE, HORRY, MURRAY on, MAMET, MRED off WAIT. 382%: uwsgi_ignore_headers WYK: uwsgiignore headers name [name..] {HTEHE: http. server. location Thité: VEOH PSR Lbs th UWSGI RS BIA ar HI. WYRE AT “X-Accel-Redirect” . “X-Accel-Expires” . “Expires” ®& “Cache-Control” ix ~2K/ 482%%: uwsgi_intercept_errors iv: uwsgi intercept errors onloff uwsgi_ignore client abort off uwsgi_intercept errors off : http. server. location Sites WAHT RATE 4K AT SH HEUER SUR, ACE AtiY gine Lid error_page 4 2-Kif/V. BE: FEM WMA error_page, AMPLE ALMA MO HR, Ete Igor MBL, “se RBA AWARE | RLM, ABZ Nginx REEMA, LRFSLTE RAYA RK. AURM Aik IEF I RINE IR,” 32%: uwsgimax_temp_file_size wsgi_max temp file size 0 0 4EAHR: server. location Tht: VAI SARA KT] umsei 245. W278: uwsgimodifiert Wik: uwsgimodifiert value BRUM: 0 WHERE: server. location Shh: 4 uwsgi RE MEM CRUE WSGL 2X) 42%: uwsgimodifier2 ifiié: uwsgi_modifier2 value Neinx tse 3 Af: 0 (EHIME: server, location Sh fis Ya uwsgi TEAR BL IES Mi i. 4427s: uwsgi_next_upstream Wik: uwsgi next_upstream error|timeout|invalid_header|http_500|http_503|http_404|off RIMM: uwsginext_upstream error timeout (HALHME: http, server, location WAR ERT CENT AF WR HE 2 EB) FS UWSGI ARS 28. HEREC © error: (EMEA IR% BML FED CE THR, TARAS T RG AR A ALI TR Be Sib EPINE DS SKA Ae = timeout: /EXEAHR Ss BUM AE ARE TABI, THOR EARS TAS Bk AE I THR a8 IAL Fo = invalid_header: /R% 2iG15) T “th CAMILA. = http_500: JIR% aiBIFl T 500 Wa)\. = hetp_503: JIRA &iBIAl F503 Waly. = hetp_404: mamery 404 Hay. = offs HEM AE AFAR ERE BAR a RS A BEGG IPLSV 78 SR IAL TB LAL OT AAD» Fe ALA RR A A A I RE RRP ZC AI To RAAB LOT. 442.85: uwsgi_no_cache ite: MRIA(li: none (8AM: http, server, location hfe Wed FAL PABST AA F AM NER A 2s AH. Pi: uwsgi_no_cache $cookie_nocache $arg_nocacheSarg_comment; uwsgi_no_cache variable [..] uwagi_no cache Shttp_pragma Shttp_ authorization; WW RAGA EEE IE “0” , ABA AGAIN SE “false” pin, AERA TH, WRC LRT cookie "nocache", Jb Zui NVH§ AS 2 RTE. dR&2%s: uwsgi_param ii: uwsgi_param parameter value KIM: none (EHVASH: http, server, location Ite: WARSAT RES, ASM eee ME) uWSG RGR. SMUTEL TEE. AE io BETA IMMVSIL A» eat Bi BS 4 IIE EAR Ss SRA, ATA AS LAH a 5 EMNgoxit A 128 FSTERE Web BASS ABB SIS Ca me. Jove, ASP NET aE HOLE: uwspi_pass FE: uwsgi_pass uwsgi-server SKiMA: none {iH12E8E: location, if in location Dhfte: WAS Fae UWSGI NR OH ti OR RE. TORR. ATUL HAS, ep UAL EP Hh lela. altar: uwsgi_pass localhost:9000; they DARHT Unix 5488 uwsgi_pass unix: /tmp/uwsgi-sockets 46 upstream [x P2*}. BEAT ELIT] UNIX HR. Wey DUE TCP eee: upstream backend { server 127.0.0.1:1234; server unix: /var/run/example.com.sock; ) uwsgi_pass backend; 4#4%%: uwsgi_pass_header iid: uwsgi_pass header name {EH EE: http. server, location Sybies A HO ON FOU HT LA iB BL A Pit tH 3k» 4842%: uwsgi_pass_request_body iirid: uwsgi_pass_request_body on|off UML: uwsgi_pass_request_body on AJR: Http. server, location hf: SOE TASER P16 DF) uWSGI. i 42427: uwsgi_pass_request_headers idhidis uwsgi_pass_request_headers on|off VARA one *QUCIL: uwsgi_pass_request_headers on AEJHRSE: http. server location Shits 5 SUL SAGER IACBA) uWSGL. 482%: uwsgi_read timeout ifitd:: uwsgi_read_timeout time HAMIL: uwsgi_read timeout 60 4K/EPHE: http. server. location Dyes es > WERE TP Lie uWSGH HRS REALE ROSA AHA AI a). HR a RATAN AANA, AZ, BEI IM nia A. 482448: uwsgi_send_timeout i#fid: uwsgi_send timeout time “MARRY on. Nix Hose i SKUs uwsgi_send timeout 60 (AAG: http, server, location Sythe: BARS NLP BEE EM LY UWSGT FIR Beak Pe I REE PET). Wf) uWSGE ib ds SEASON files Fm AL A ie ree A GE, Ay hk BIA MES UM. WER AEP BB) PMR RRS TER, IBZ AL EGE Ae AE. EE SAE CP ZU, TER UR CE TD BLT BAE UE A, AB HIS OAs 228 PAE HHO ZAK: uwsgi_store itd: uwsgi_store on|offlpath DMI: uwsgi store off AEH: http. servers location Shits ane wea TNR aS CE CHEAT] Nginx) (HHH IIEATE. RURBLE® “on” , ALAM alias SK root Mr SORE: MURR “oft” IBZ 248k FFAs URAL RTS TELE — Pt E,W, OT Ea eA A a: uwsgi_store /data/wwwSoriginal_uri, SC EET AG SCENE “Last-Modified” Sk BLM. CKD ELS. WT MEME IP GAR AER BE AB 1 AU BS) SCA TEBE, IL SC PHBH AB AY BE TEE HT uwsgi_temp_path STEM sal: location /images/ ( root/data/wwws error_page 404 = /feteh$uri; } location /fetch { internal; uwsgi_pass backend; uwsgi_store on; uwsgi_store_access user:rw group:rw all:r; uwsgi_temp_path /data/temp; alias /data/www: ) CEMA TE, LLGRIA uwsgi store 4 fa rR Ss a8 AERA Uy tad mC PE TA IZ, itl, FA Tas Asin HS 49K: uwsgi store access if + uwsgi_ store access users:permissions [users:permission ..] RUHL: uwsgi_store_access user:rw AEN ASK: http, server. location 29 MANeinnle AA 430 TERE Web ARS BRAD S IEHE cas roe. Jove, ase ners) Sf: PREVA LE OLAS AT LARA. G0 FON groups ake all Hse TATA. WS AARBAT LH user HBL T lAts uwsgi_store access group:rw allirs ASB: usgi store access user:rw group:rw allic; HABA: uws iis uwsgi string string AML: none AU FEGSH: server. location Shh: Jy uWSGI is ARIA EAE asta: location / { i string uwsgi_pass unix: /var/run/example.com. sock; uwsgi_pass_request_headers off; uwsgi_pass_request_body off; uwsgi_string " import uwsgi uwsgi.start_response('200 OK", [('Content-type', 'text/plain')]) total = 30+22 uwsgi-send("30 + 22 = $d" $ total) uwsgi_modifierl 22; uwsgi_modifier2 07 HES 27K: uwsgi_temp_file write size iB: uwsgitemp_file_write size size SKU: uwsgi_temp_file_write_size ["#uwsgi_buffer_size"] * 2 JHE: http, server, location. if Nites VARA ALP REECE TD uwseltemp_path FERC FF ll" Ba) ENS ARIS Ra Ht, Arise EEF BEL AP fe RAE TT i PH TH RAT EID 38446: uwsgi.temp_path itis: uwsgi_temp_path path [level1 [level2 {level3]]] "RUC: uwsgi_temp_path uwsgi_temp (MAME: http. server. location MBO AR, ik He Sp aE we iE AY) Me HTTP_USER_AGENT 2 80K (218, BR [HTTP i-R3L2 9b, MOAT A REIL uwsgi_param Hi Nein once Diss BAS ALT iE MA SA A BASEN SG CPE Ae ESO He SB ef aK TMA TE Hi Pt uwsgi_temp path /spool/nginx/uwsgi_temp 1 2 NR SPEAR HG RRs /spool/nginx/wwagi_temp/7/45/00000123457 EEER #22 uwscimsansn Wet MY uWSGI He BIER IL DL SELES, IK WSL IR BIE FF NEIL HEA MMA. BEAN. “User-agent” 4% 45 iat te PERS R. Fit —T OER AF Neinx HO. FEL MF. RR IN tA AS). EAE UWSGI Jes £t HR 8 AEE AS BL HE ES TLL & AIF The AU, Re-PSeHA bee 1. RMR AGF Neinx HINURE CHE: upstream uwagi_host { server 127.0.0.1:10887 ) include uwsgi_params; uwsgi_param SCRIPT_NAME Sapp; uwsgi_param UWSGI_MODULE Sapp; uwsgi_param UWSGI_CALLABLE"$(app}_handler"; uwsgi_param UWSGI_PYHOME Sdocument_root: uwsgi_param UWSGI_CHDIR $document_root; uwsgi_modifierl 30; #properly sets PATH_INFO variable ‘ server_name £007 root /var/wuw/ foo; location /app1/ { 131 AR Nsinctt RA TERE Web ARS RR AB BS IBHE cae our. Jove, ase. ner $) set Sapp apply uwsgi_pass 127.0.0,1:1088; , location /app2/ 1 set $app app2; uwsgi_pass 127,0.0,1:1088; ) ) { server_name bar; root /var/www/bar; location /app1/ set Sapp appl; uwsgi_pass uwsgi_host; } location /app3/ c set Sapp app3z uwsgi_pass uwsgi_host; , ) AAPL CEH, BET TRG, Ol foo Al bar, iit Pak % Fa SAL, SCH appt TEP, FAT, RUE MRR, TMI MERI ATI. MRA ai. Lede index.py- CHET ALE, (UT uwsgi bsicitiwi+ He: SCRIPT_NAME Al SERVER_NAME, ‘i 4I J+ iH WAL ME, SERVER_NAME 41: uwsgi_params Xf'}*|' (BRA, Ii] SCRIPT_NAME #é (i829) 0) (A FY Jer 67 RS BN UWSGI SR 9% 25 » 3X AE 29 UWSGI (19 vhost ZF % i) KF SaEH BLA 25 host|script” Hk. SLAF HAF) ALAA Fd EP DAS BR, APA ATT] hE TAT TAR PAL, RAT heep://bar/app1/. http://foo/appi/, WM app1 Sz4e—PE. ARH SHME, BRAT ce AE, ELE MAGE. TURAL ODA AP, USA RSS 2, Sb SE Uy TA A Pe See DA. 8 a: EDU: WSGI application 2 (SCRIPT NAME-=barlapp3) ready on interpreter 0x8272860 Nix tose 2 pid: 21532 bar (pid: 21532/app: 2/req: 1/10] 192.168.3.248 () (50 vars in 770 bytes) {Thu Jul 21 19:12:03 2011) Ge? /app3/ => generated 4 bytes in 20 msecs (HTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0) BRL UCU il: bar {pid 21527|app: 2/req: 2/11] 192.168.3.248 () {50 vars in 770 bytes) (Thu Jul 21 19:12:07 2011] GET /app3/ => generated 4 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0) 4% 9+, iz UWSGLMODULE 4 UWSGICALLABLE RAMA KE, H—h RS OP UWSGI_MODULE 42) f+ fe WSGI R42 ( 5. 9)424-24 UWSGI_PYHOME RAR, RAIKM FHA Python HE) RA-TAT A; PORE, YW UWSGILCALLABLE, © Fitts RRR ARKH ZH. 2. UB Python #t8 DL PES* app, BOCHIR, INIA —-+ def TINH eM“: ” appLpy: def appl_handler (environ, start_response) : start_response('200 OK', [('Content-Type', 'text/plain')]) return btappl’ app2.py: def app2_handler (environ, start_response): start_response (‘200 OK", [(*Content-Type', 'text/plain')]) return b'app2* app3.py: def app3_handler (environ, start_response): start_response('200 OK", {('Content-type’, 'text/plain')1) return b'app3* CERT RE, UWSG HATA AY appl Sh) (—7 3k F /var/www/foo/app1.py WHY foo FAL%, 5h ALAE TF /var/www/bar/applLpy Wit) bar EBLA) » 9b, IATA PLZ % foo i) app2 (3£ ¥ /var/www/foo/app2.py AW) . EBLY A foo f app3 (MEY Jvar/www/foo/app3.py V2) « 3. JR UWSGI ARSE DAB itn he ie Dt a et uwsgi -s 127.0.0.1:1088 -M --no-site --vhost 133 Ee ae es ae TAT Neinx #4 uwsgi BER, UWSGI AR 43 eA 7 ngx_cache_purge SRRREER AVET ARS Django RAY TAF. ARB AUER — ADA TERA, BASH Python Fis, EGG Rots, HAV T Python 64 2.43 MA, KA Red Hat ARAB, Mabe ARI 2.7.2 BR, ARH HUE 8 C0 SE eh ae, Kzu #% Nginx HIF uwsgi BURBREN), Pet AL/H-without-http uwsgi_ module S¥CM 1-04, BIvkee ONE A IR, CE NEAR TAS “Se ngx_cache_purge (HHUK 1.1 Pa ngx_cache_purge Mik [root@mail ~]# wget http://labs.frickle.com/files/ngx_cache_purge -1.3.tar.gz a-14 6-- http: //labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz Resolving labs.frickle.com... 94.23.90.117 Connecting to labs.frickle.com|94.23,90.117|:80... connected HTTP request sent, awaiting response... 200 OK Length: 6434 (6.3K) [application/octet-stream! Saving to: 'ngx_cache_purge-1.3.tar.gz 1008 [=: ==>] 6,434 15.4K/s in 0.45 14:01:15 (15.4 KB/s) - 'ngx_cache_purge-1.3.tar.gz' saved [6434/6434 WSR AR EL: [root@mail ~]# cd ngx_cache_purge-1.3 34 1.3]# tree [oot@mail ngx_cache_purge-: [root@mail ngx_cache_purg CHANGES LICENSE README, config ngx_cache_purge_module.c t proxy.t 6% et 1 directory, 6 files 47 README Xf}: status This module is production-ready and it's compatible with following nginx releases: = 0.7.x (tested with 0.7.60 to 0.7.68), - 0.8.x (tested with 0.8.0 to 0.8.54), - 0.9.x (tested with 0.9.0 to 0.9.7), = 1.0.x (tested with 1.0.0 to 1.0.1). JAR AY Nginx (AC SH Ae aM HY 6.1.2 3 Nginx 2 ngx_cache_purge #i® (root@mail nginx-0.8.53]# ./contigure -~prefix-/usr/local/nginx0 8.53 --add-module- [root@mail nginx-0.8.53]# make /ngx_cache_purge-1.3 {root@mail nginx-0.8.53]# make install Kz 23 Python HEA Nie FR Python (sth AEE SY, FLILMA http://www.python.org/ftp/python/ Fa A, SRE — FLAT. (root@mail ~]# wget http: //www.python.org/ftp/python/2.7.2/Python-2.7.2. tar.bz2 (root@mail ~]# tar -jxvf P Python-2.7.2.tar.bz2 [root@mail ~]# cd Python-2.7.2 [root@mail Python-2.7.21# ./configure [root@mail Python-2.7.2]#make [oot@mail Python-2.7.2]#make install 1, @% django 244) XP ORI RMN REA, TT LEA AEE MA TAH. fi ZOPE. [root@mail ~]# wget http: //media.djangoproject .com/releases/1.3/Django- 1.3. tar.gz {root@mail ~]# tar -zxvf Django-1.3.tar.gz [root@mail ~]4 cd Django-1.3 [root@mail Django-1.3]# python setup.py install 135 ARANg tt RE BBTERE Web ARSS BABB S iwHE cant our. Jove. asr.ner > 2. BH uWSG! HB UWSGI HI 4 #5 4) SEARS AL SL HL CAD eRe Ty KAA AF [root@mail -]# wget http: //projects.unbit.it/downloads/uwsgi-0.9.8 nred.tar.gz (root@mail ~]# tar -zxvf uwsgi-0.9.8-re4.tar.gz (rootemail ~]#ed uwsgi-0.9.8-rc4 [root@nas uwsgi-0.9.8-re4]# make -f Makefile. Py27 “+s uWSGI is ready, launch it with ./uwegi *** i BUM FF IR A AE AE APRA LH Be REF UWSGI IRS BE. EAE he uwsgi, HORE AUMY Hat, JG AUR TSE, FREE Fab ee {root@nas wwsgi-0.9.8-re4]#mkdir /usr/local/uwsgi-0.9.8-rc4 [root@nas uwsgi-0.9.8-rc4]#mkdir /usr/local/uwsgi-0.9.8-rc4/logs [roct@nas uwsgi-0.9,8-rc4]#cp uwsgi /usr/local/unsgi-0.9.8-rc4/uwsgi -0.9.8-re4 [root@nas uwsgi-0.9.8-re4) tcp uwsgi.xml /usr/local/uwagi-0.9.8-re4 3. ana URE UWSGI HR BERIT Ae REE RS AN MAS — HCH SCPE Ca HT ET #!/bin/bash ' NTR ALIS PACH chkconfig: - 15 85 ' ' # processname: uwsgi-0.9.8-rc4 # config: /app/my_django/uwsgi.xm1 # source function library + /ete/re.d/init.d/functions # uWSGI config CONFIG-/app/my_django/uwsgi. xml PID=/var/run/uswgi.pid OWSGI=/usr/local/uwsgi-0.9.8-rc4/uwsgi-0.9.8-re4 RETVAL=0 prog="uwsgi-0.9,8-rca" case "$1" in 136, 6 3 ae start) # check that networking is up. [ "${NETWORKING)" = "no" ] G& exit 1 # The process must be configured first. -£ SCONFIG ] || exit 6 echo =n $"Starting Sprog. SUWSGI SCONFIG RETVAL™$? [ $RETVAL -eq 0 1 && touch /var/lock/subsys/uwsgi echo stop) echo -n $"Shutting down $prog: kill -9 ‘cat $PID' >/dev/null 2>41 RETVAL=$? [ SRETVAL -eq 0 ] && rm -£ /var/lock/subsys/uwsgi echo restart | reload) $0 stop $0 start RETVAL=$? oh echo $"Usage: $0 (start |stop|restart|reload}" exit 2 esac exit SRETVAL 4. MMAARA [root@nas init.d]# chmod 755 uWSGI [roct@nas init.d]# chkconfig --level 35 uWSGI on 137, Ee ee a FRRMBLRAMAARHE. AT OMARP HAE B ETE H L1, BHFRBSS SANS BLE SNA ETT J& Django A ELI Web IRs 8 7.1.1 to B [root@s26 ~]# mkdir /app [root@s26 ~]#ed /app PAA SUP Mik. AREER REP eA [root@s26 app] #django-admin.py startproject my_dijango [root@s26 my django] tree my django my_django 1 __init__.py manage. py settings.py urls.py 0 directories, 4files ABT RIS a: [root@s26 my _django]#chmod u+x manage.py [root@s26 my django]# ./manage.py runserver 192.168.3.34:8000 Validating models... 0 errors found django. settings’ 192.168.3.34:8000/ Django version 1.3, using set Development server is ru: Quit the server with CONTROL-c. Us eA, Pe Xx @ emma a It worked! ‘Congratuations on your frst Django-powered page. i Wma: [19/Ju1/2011 06:51:30] "GET / HTTP/1.1" 200 2057 iA as eet OAT ARI. EE, RAMAREMT MR, BEATE ARR. 7.1.2 RHA Fit $e A115 —-4* fi} 2.647 hello_world LR: [root@s26 my _django]# more hello_world.py from django.http import HttpResponse def helle_world(request) : return HttpResponse ("iiello world") Ani [root@s26 my_django]# cat urls.py from django.conf-urls.defaults import patterns, include, url from django.conf.urls.defauits import * from my_django.hello world import hello world 4 Uncomment the next two lines to enable the admin: # from django.contrib import admin 4 admin. autodiscover() urlpatterns = patterns(' + Example: # url(c'*$", ‘my _django.views.home', name='home'), # url(r!*my_django/', include('my django. foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r!*admin/doc/", include ('django.contrib.admindocs-urls")), # Uncomment the next line to enable the admin: # url(r'*admin/*, include (admin. site-urls)), (*helle_world/$', hello_world), ) VERE Uy iad wMik: FHS) RE BOA BES I A Fo 139 Astana tt 8 MN St Ge Neb AGAR SSH ae me. save, ase ner in be taey bel Te (Sntep femmes sertay | = Hello world Wels Ui fed ass [19/3u1/2011 20:10:43] "GET /hello_world/ BTTP/1.1" 200 11 FARE 200, HAUj ie MI). 2: WL uWSGI HIT CE Sel 1 MOSER, BEAT PTT BE. RPL UARH A UWSGI AR 2eeF IT Python 3X fF CHEM 7.2.1 45 helloworld #i& [root@s26 app] #cat /app/helloworld.py def application (environ, start_response): start_response(‘200 OK', [(‘Content-Type', ‘text/plain') ]) yield ‘Hello World ! \n’ yield 'This is uWsgi application. \n' 7.2.2 (6 Nginx REX 140 [root@s26 app]# vi /usr/local/nginx-0.8.53/conf /nginx-python.cont worker processes 1; events { worker_connections 1024; ) http include mime.types; default type application/octet-stream; sendfileon: keepalive_timeout 65; server { i listen 0.0.0.0:80; server_name www.xxx.com; location / include uwsgi params; uwsgi_pass 127.0.0.1:9001; 3 ) ) 7.2.3 AR) uWSGI RS ATHY MR, CRP RIMET their. (root@s26 uwsgi-0.9.8-rc41#./uwsgi-0.9.8-re4 -s 127.0.0.1:9001 -w /app/ helloworld =p 8 -M -t 20 --limit-as 512 -m -T +** Starting uWSGI 0.9.8-dev (32bit) on [Tue Jul 19 14:56:13 2011] *#* compiled with version: 4.1.2 20080704 (Red Hat 4.1.2-44) on 30 June 2011 17:49:45, UWSGI running as root, you can use --uid/--gid/--chroot options **# WARNING: you are running uNSGI as root !!! (use the --uid flag) *** limiting address space of processes... your process address space limit is 268435456 bytes (512 MB) your memory page size is 4096 bytes ‘*** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers *** uwsgi socket 0 bound to TCP address 127.0.0.1:9001 fa 3 Python version: 2.4.3 (#1, Sep 17 2008, 16:04:01) (GCC 4.1.2 20071124 (Red Hat 4.1.2-41)] Python main interpreter initialized at 0x9f703e0 threads support enabled your server socket listen backlog is limited to 100 connections *** Operational MODE: preforking *** WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0x9£703e0 pid: 14556 (default app) ‘++ uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 14556) spawned uWSGI worker 1 (pid: 14557, cores: 1) spawned uWSGI worker 2 (pid: 14558, cores: 1) spawned uWSGI worker 3 (pid: 14559, cores: 1) spawned uWSGI worker 4 (pid: 14560, cores: 1) spawned uNSGI worker 1 (pid: 14561, cores: 1) 141 ABNg AE 142 FB TERE Web ARS REARS S IBHE cet ove. Java, use ver) spawned uWSGI worker 2 (pid: 14562, cores: 1) spawned uWSGI worker 3 (pid: 14563, cores: 1) spawned uWSGI worker 4 (pid: 14564, cores: 1) Ui: et Wier iter oles IQIe cx & ke moe ka ie (alist #24 Nginx ff) fo) F254 uWSGI AEs, Nginx ij fel Aids 192.168.3.248 ~~ (19/du1/2011:15:05:34 +0800) “GET / HFTP/1.1" 200 51 * "Mozilla/5.0 (Windows; 0; Windows NT 5.17 en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" uWSGI Flas: (address space usage: 12271616 bytes/11MB) (rss usage: 2568192 bytes/2MB} [pid: 14665|app: Olreq: 1/1] 192.168.3.248 () (42 vars in 701 bytes} [Tue Jul 19 15:05:34 2011] GET / => generated 40 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 45 bytes (2 switches on core 0) ALG, DylRA 200, Aamir. EEZD 2013: 88 Django 2% FESCIM 1 OME ETT. 7.3.1 #35 wsgi.py #! (xoot@s26 my django] # more wsgi.py #!/usr/bin/python import os, sys import django.core-handlers.wsgi sys.path. append ("/app/my_django") sys.path.append( ‘/app ) Vi 0s-environ{'DJANGO_ SETTINGS MODULE'] ~ ‘my django.settings' application = django.core.handlers.wsgi.WSGIHandler () 3.2 i SiTHiT uWSGI BSB [root@s26 my djangol# /usr/local/uxsgi-0.9.8-re4/uwsgi-0.9.8-re4 = 0-0.0.0:9001 -M --pythonpath='pwd' --module=wsgi *** Starting uWSGI 0.9.8-dev (32bit) on [Tue Jul 19 1 compiled with versio: 17:89:45, #34 2011) *** 4.1.2 20080704 (Red Hat 4.1.2-44) on 30 June 2011 UNSGI running as root, you can use ~-uid/--gid/--chroot options *#* WARNING: you are running uWSGI as root !!! (use the -~uid flag) *** your memory page size is 4096 bytes uwsgi socket 0 bound to TCP address 0.0.0.0:9001 f4 3 Python version: 2.4.3 (#1, Sep 17 2008, 16:04:01) [GCC 4.1.2 20071124 (Red Hat 4.1.2-41)] Python main interpreter initialized at 0x92743b0 your server socket listen backlog is limited to 100 connections *** operational MODE: single process *** added /app/my_django/ to pythonpath. WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0x92743b0 pid: 15343 (default app) *** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 15343) spawned uWSGI worker 1 (pid: 15344, cores: 1) TERA IE 7B PER 1, MAB Nginx REX server { listen 80; server_name www.xxx.com; location / { include uwsgi_params; uwagi pass 127.0.0.1:90017 143, jaxtk RH MMSE eb RSG ARAB ALSIZHE css ne, sos ase wr) 2. JAM Noinx Rid TV Mit, Cony atlatons on your fst Diango-powered page una a cee one 08: = Tanya teenage ny a Ge Fr PEA Aa tt iE Nginx AY fe Ha: 192.168.3.248 - - [19/Ju1/2011:10:00:22 +0800] "Gar / HETP/1.1" 200 2069 -" “wozilla/5.0. (Windows; U; Windows NI 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" REEMA tir 247 ath fA uWSGI ii fil Ha {address space usage: 16808832 bytes/17MB} {res usage: 9154560 bytes/8MB) (pid: 12980|app: O|req: 11/11] 192.168.3.248 () {44 vars in 988 bytes) [Mon Jul 19 10:00:26 2011] GET / => generated 2057 bytes in 2 maeca (HTFP/1.1 200) 1 headers in 44 bytes (1 switches on core 0) WYETH. Ui AARAI Ay 200, Fea EA. 3. RHA REO Ge aS ASAI PE. BAG: [root @s26 my django]# vi uwsgi-xml 20 true uwsgi uwsgi 1 wsgi /app/my_django true true t rue true 6048 /usr/lecal/uwsai-0.9.8-rc4/1og/django. log PANT: 444 Reet [root@s26 uwsgi-0.9.8-rc4]#./uwsgi-0.8.8-red -x /app/my_django Juwsgi xml [uWSGI) parsing config file /app/my_django/uwsgi.xm) JEN DEM TUR AGA, APES AY LUI service tir ait) init tf. FEA SYN IRIN AeA HIPs [xo0t@s26 m]#tail -f /usr/local/uwsgi-0.9.8-rc4/log/django.log ‘Tue Jul 19 18:42:15 2011 ~ *** Starting uWSGI 0.9.8-dev (32bit) on [Tue Jul 19 18:42:15 2011) *** Tue Jul 19 18:42:15 2011 - compiled with version: 4.1.2 20080704 (Red Hat 4.1.2-44) on 30 June 2011 17:49:45 Tue Jul 19 18:42:15 2011 ~ setgid() to 506 Tue Jul 19 18:42:15 2011 ~ setuid() to 506 Tue Jul 19 18:42:15 2011 - limiting address apace of processes... Tue Jul 19 18:42:15 2011 - your process address space limit is 2046820352 bytes (1952 MB) Tue Jul 19 18:42:15 2011 - your memory page size is 4096 bytes ‘Tue Jul 19 18:42:15 2011 - uwsgi socket 0 bound to TCP address 127.0.0. fd 4 Tue Jul 19 18:42:15 2011 - Python version: 2.4.3 (#1, Sep 17 2008, 16:04:01) [Gcc 4.1.2 20071124 (Red Hat 4.1.2-41)] ‘Tue Jul 19 18:42:15 2011 ~ Python main interpreter initialized at 0x9d58138 Tue Jul 19 18:42: Tue Jul 19 18:42:15 2011 - your server socket listen backlog is limited to 20 connections Tue Jul 19 18:42:15 2011 - *** Operational MODE: preforking *** Tue gul 19 18:42:15 2011 - added /app/my_django/ to pythonpath. Tue Jul 19 18:42:15 2011 - WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0x9d58138 pid: 15640 (default app) Tue Jul 19 18:42:15 2011 - *** uNSGI is running in multiple interpreter mode 9001 5 2011 - threads support enabled Tue Jul 19 1 5 2011 ~ spawned uWSGI master process (pid: 15640) Tue Jul 19 18:42:15 2011 - spawned uWSGI worker 1 (pid: 15641, cores: 1) Tue Jul 19 18:42:15 2011 - spawned uWSGI worker 15642, cores: 1) Tue gul 19 1 5 2011 - spawned uWSGI worker 15643, cores: 1) Tue Jul 19 18:42:15 2011 ~ spawned uWSGI worker 15644, cores: 1) Tue Jul 19 1 5 2011 - spawned uWSGI worker 15645, cores: 1) Tue Jul 19 18:42:15 2011 - spawned uWSGI worker 19646, cores: 1) Tue Jul 19 18:42:15 2011 ~ spawned uWSGI worker 1 18647, cores: 1) Tue Jul 19 18:42:15 2011 ~ spawned uWSGI worker 18648, cores: 1) einuveun 1) 8 DNB FEAR Ay MK c+ dE Sif Ht GR MLS /app/my_django) i JiI—7P view.py ser Ct 145 Ngosth M26 Web AR MB SIEM cat me, sore sr ners) 146 RZ SEE, BA RESIN FAA) [root@s26 my_django]# cat views.py from django.http import HttpResponse def hello(request) : return HttpResponse ("Hello world") (2) ising [root@s26 my djangol# vi urls.py from django.conf.urls.defaults import patterns, include, url from django.conf.urls.defaults import * from my_django.views import hello from my_django.hello world import hello world # Uncomment the next two lines to enable the admin: 4 from django.contrib import admin # admin. autodiscover () urlpatterns = patterns('", # Examples: # url(x!*$", 'my_django.views.home’, name="home"), # url(r'*my_django/*, include('my django. foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url (x'*admin/doc/", include ('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # url(x'*admin/', include (admin.site-urls)), ("*hello world/$', hello world), (‘*hello/$', hello), d 3) HMR mi Hello world (4) eA A (address space usage: 18350080 bytes/17MB) (rss usage: 8691712 bytes/BMa} (pid: 204441app: Olreq: 2/2) 192.168.3.248 () (42 vars in 713 bytes} (Tue Jul 19 20:33:00 2011] GET /hello/ => generated 11 bytes in 1 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0) TERMS, 200 Aas iiTHl WEIN. Ll 4; —4 uUWSGI HMA Sh aH ALANIS Me. 7.4.1 FREE setuptools 1A FRAT SEA F RIF 2 setuptools T SL. F8 setuptools T/L: (zo0t@s26 ~]# wget http://peak.teleconmunity.com/dist/ez_setup.py --16:59:55-- http: //peak. telecommunity.com/dist/ez_setup.py TEMMTEBL peak.telecommunity.com... 209.190.5.234 Connecting to peak.telecommunity.com|209.190.5.234|:80... Citi GR TTP WR, EBA... 200 oK ME: 10240 (10K) [text/plain] Saving to: ‘ez setup.py? 1008 [== >] 10,240 18.6K/s in 0.55 17:00:08 (18.6 KB/s) - ‘ez setup.py’ saved [10240/10240 ‘AK setuptools ISL [root@s26 my_django]# python ez setup.py Downloading http: //pypi.python-org/packages/2.7/s/setuptools/setup tools-0. 6cli-py2.7.e09 Processing setuptools-0.6cl1-py2.7.e99 147, ARN gion HA atthe Neb ARS ABS S SHE act pum. Jove, as MET) Copying setuptools-0.6cl1-py2.7.egg to /usr/local/1ib/python2.7/site -packages Adding setuptools 0.6cl1 to easy-install.pth file Installing easy install script to /usr/local/bin Installing easy install-2.7 script to /usr/local/bin Installed /usr/local/lib/python2.7/site-packages/setuptools-0.6cl1 ~py2. 7.099 Processing dependencies for setuptcols==0.6c11 Finished processing dependencies for setuptools=-0.éc11 DPR TLAEP RATE LLEH. easy install dr FMLA setuptools 1AM, WALIL BL. ¢E4MT easy install frit dbx ELIMI T setuptools (1. fir easy_install (CALLER. MALU T. iWhist easy install -help fH aJ bh S141 KA Hi Ste. 7.4.2 2% VirtualEnv [root@s26 my_django]# easy install virtualenv Searching for virtualeny Reading http: //pypi.python.org/simple/virtualenv/ Reading http: //www.virtualenv.org Reading htt Best match: virtualenv 1.6.3 //virtualeny.openplans.org Downloading http: //pypi.python.org/packages/source/v/virtualenv/ virtualenv-1.6,3.tar.gz4md5-73a69184e35£1e202£9016c889c4d26a, Processing virtualenv-1.6.3.tar.gz Running virtualenv-1.6.3/setup.py -q bdist_egg --dist-dir /tmp/easy _instal1-v5£QED/virtualenv-1.6.3/egg-dist-tmp-MV732z warning: no previously-included files matching '*.*' found under directory ‘docs/_templates' Adding virtualenv 1.6.3 to easy-install.pth file Installing virtualenv script to /usr/local/bin Installed /usr/local/lib/python2.7/site-packages/virtualenv-1.6.3 ~py2.7.e99 Processing dependencies for virtualenv Finished processing dependencies for virtualenv VirtualEny 494f 4a 8 F Sandbox, Eihit ha ® ©. Rt AAMAS RA TLS Maa RS BRS, TR tS AG = RA HAR ae TL.) YE aS SER TOP TTR, HAKART ARAME. — #AF ERA 148 2 1. RR TRSE [root@s26 my_django]# virtualeny /var/www/myenv . New python executable in /var/www/myenv/bin/python Installing setuptools............done. Installing pip...............done, 2. ERMA SRR [root@s26 myenv)]# 1s bin include 1ib [root@s26 myenv]# source /var/www/myenv/bin/activate (myenv) [root @s26 myenv]# (myenv) (root@s26 myenv]# pip install django Requirement already satisfied (use --upgrade to upgrade): django in /usr/local/1ib/python2.7/site-packages Cleaning up (myeny) (root@s26 myenv]# pip install django --upgrade Downloading/unpacking django Downloading Django-1.3.tar.gz (6.5Mb): 6.5Mb downloaded Running setup.py egg_info for package django Installing collected packages: django Found existing installation: Django 1.3 Not uninstalling Django at /usr/local/lib/python2.7/site-packages, outside environment /var/wwa/myenv Running setup.py install for django changing mode of build/scripts-2.7/django-admin.py from 644 to 755 changing mode of /var/www/myenv/bin/django-admin.py to 755 Successfully installed django Cleaning up... (myeny) (root@s26 myenv)# pip install mako Downloading/unpacking mako Downloading Mako-0.4.1.tar.gz (317Kb): 317Kb downloaded Running setup.py egg_info for package mako no files found matching '*.xml' under directory ‘examples' no files found matching '*.mako' under directory ‘examples! warning: no files found matching ‘ez_setup.py' no previously-included directories found matching 'doc/build/output! Downloading/unpacking MarkupSafe>=0.9.2 (from mako) Downloading MarkupSafe-0.12.tar.gz Running setup.py egg_info for package MarkupSafe 149, Aten it TR TERE Web ARS RR ABB SIBHE cat rw. Java. ase vers) Installing collected packages: mako, MarkupSafe Running setup.py install for mako changing mode of build/scripts-2.7/mako-render from 644 to 755 warning: no files found matching '*.xm1' under directory ‘examples’ warning: no files found matching '*.mako' under directory ‘examples! warning: no files found matching ‘ez_setup.py' no previously-included directories found matching ‘doc/build/output' changing mode of /var/www/myenv/bin/mako-render to 755 Running setup.py install for MarkupSafe building 'markupsafe. speedups' extension gcc ~pthread -fno-strict-aliasing -g -02 -DNDEBUG -g -fwrapy -03 -Wall -Nstrict-prototypes -f£PIC -I/usr/local/include/python2.7 -c markupsafe/_ speedups.c -o build/temp. linux-i686-2.7/markupsafe/_speedups.o gec -pthread -shared build/temp. 1inux-i686-2.7/markupsafe/_speedups.o -o build/1ib.1inux-i686-2.7/markupsafe/_speedups.so Successfully installed mako MarkupSafe Cleaning up... (myenv) [root@s26 myenv) # EB, EMRE RRMA ETI FA. 3. AA QE —-H myappdirl: [root@s26 www]# django-admin.py startproject myappdirl [root@s26 www)]# tree myappdirl myappdird I-- __init__-py |-- manage.py I-- settings.py urls.py 0 directories, 4files 9% — MHA myappdir2: (root@s26 www] django-admin.py startproject myappdir2 [root@s26 www) # tree myappdir2 myappdirl |-- init__.py |-- manage.py |-- settings.py 150 urls.py 0 directories, 4files 4. SR 4653-4950, 1498 MN hello_world.py: [root@s26 myappdiri]# vi hello_world.py from django.http import HttpResponse def hello _world (request) : return HttpResponse ("Hello world--app1") 4595 — “Mi A 48 hello world2.py: [root@s26 myappdir2]# vi hello world2.py from django.http import HttpResponse def hello world? (request): return HttpResponse (“Hello world-—app2") 5. RERA 265870719 urls py IHL EARS: troot@s26 myappdiri]# more urle.py from django.conf.urls.defaults import patterns, include, from myappdiri.hello_world import hello_world # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin. autodiscover () urlpatterns = patterns('", # Examples: f# url(r'°S', ‘myappdirl.views.home', name='home'), # url(r!*myappdiri/', include (*myappdirl.foo.urls')), 7 url # Uncomment the admin/doc line below to enable admin documentation: # url (r'*admin/doc/', include (*django.contrib.admindocs.urls")), # Uncomment the next line to enable the admin: # url(r'*admin/', include (admin.site.urls)),i ("*helle_world/$', helle_world) , d 498 751.11 M8 urls.py RIVAL ASE: 151 eHiNainntt BTERE Web ARS RAPS SIME at me. dove. ase ner [ro0t@s26 myappdir2]# cat urls.py from django.conf.urls.defaults import patterns, include, url from myappdir2.hello_world2 import hello_world2 # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin. autodiscover () urlpatterns = patterns('', # Examples: # url(r'*$', 'myappdir2.views.home', name='home’), # url(x'*myappdir2/', include('myappdir2.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url (x'*admin/doc/', include ('django.contrib.admindocs.uris')), # Uncomment the next line to enable the admin: # url(x'*admin/', include(admin.site.urls)), (‘*hello_world2/$', hello_world2), ) 6. HS wsgi XH BALE wg CPI ARE: {root@s26 myappdirl]# vi wsgi.py import django.core.handlers.wsgi import os, sys sys-path.append( '/var/www' ) sys.path.append ('/var/www/myappdirl') os-environ['DJANGO_SETTINGS MODULE'] = ‘myappdirl.settings* application = django.core.handlers.wsgi..WSGIHandler () THLELSP wsgi SCPERYIN Zs [root@s26 myappdir2]# vi wagi-py import django.core.handlers.wsgi import. 08, sys sys.path.append( ‘/var/wew' ) sys.path. append ('/var/www/myappdir2") 152 os-environ["DJANGO_SETTINGS MODULE'] = 'myappdir2.settings' application = django.core. handlers .wsgi.WSGIHandler () 7. Sat& Noinx ABO C4 CARE PEC EH GMT UA HESLABL: appl.xx.com Hl! app2.xx.com. mt [root#s26 myappdirl]# vi /usr/local/nginx0.8.53/conf/nginx-python.conf 11568 SY server ( listen 807 server_name appl.xx.com; root /var/www/myappdirl; location / { include uwsgi_parans; uwsgi_pass 127.0.0.1:9000; uwsgi_param UWSGI_PYHOME /var/www/myenv; uwsgi_param UWSGI_CRDIR /var/www/myappdirl; uwsgi_param UWSGI_SCRIPT wsgi; } } server ( listen 80; server_name app2.xx.com; root /var/www/myappdir2; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9000; uwsgi_param UWSGI_PYHOME /var/www/myenv; uwsgi_param UWSGI_CHDIR /var/wnw/myappdir?; uxsgi_param UWSGI_SCRIPT wsgi z ) KA A (6 Nginx “Pats 76 SUNG As SRE AT I a 8. uWSGI Aa) [root@s26 uwsgi-0.9.8-rc4]# ./uwsgi-0.9.8-red --uid uwsgi --gid uwsgi -s :9000 -M -p 4 -t 30 --limit-as 512 -R 10000 --vhost *** starting uWSGI 0.9.8-dev (32bit) on (Wed dul 20 19:17:57 2011] *** compiled with version: 4.1.2 20070626 (Red Hat 4.1.2-14) on 19 July 2011 153 AiNemit A TIER Web ARS RABE S IEHE cart pre. Jove. Ase ner 5 07:43:54 setgid() to 10322 setuid{) to 10322 limiting address space of processes: your process address space limit is 268435456 bytes (512 MB) your memory page size is 4096 bytes *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers *** VirtualHosting mode enabled. uwsgi socket 0 bound to TCP address :9000 fd 3 Python version; 2.7.2 (default, Jul 12011, 02:02:39) [Gcc 4.1.2 20070626 (Red Hat 4.1,2-14)] python main interpreter initialized at 0x81f¢838 your server socket listen backlog is limited to 100 connections *** Operational MODE: preforking *** *#* uWSGI is cunning in multiple interpreter mode *** spawned uWSGI master process (pid: 15496) spawned wWSGI worker 1 (pid: 15500, cores: 1) spawned uWSGI worker 2 (pid: 15501, cores: 1) spawned uWSGI worker 3 (pid: 15502, cores: 1) 4 (pid: 19503, cores: 1) spawned uWSGI worker FERRARA ABay. BRIS nT RUB. DE OT AE xml AE ini AREA HES AB), WRASSE He OTP 154 9. HME Uf appLaoccom: Hc x @ Ne Hor mets vores Hello world—eppl Veadiey U5 a 8 as: 192.168.3.248 - - (20/Jul/2011:18:58:11 +0800] "GET /hello world/ HTTP/1.1" 200 28 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rvil.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" EE Nginx (NVI ES, WlARA 200, deardj fal sy. appl.xx.com [pid: 12793|app: 1]req: 4/6] 192.168.3.248 () (48 vars in 796 bytes) [Wed Jul 20 05:58:11 2011] GET /hello_world/ => generated 17 bytes in 1 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0) mi Xe UWSGI Mi A, VTIRAS As 200, Ae asidi lol ETA. ii fel app2.xx.c (beta dap? any hel Hello warld—app2 Weed ad Ss 192.168.3.248 - - [20/gu1/2011:19:09:36 +0800) “GET /hello_world2/ HITP/1.1" 200 28 "=" "Mozilla/5.0 (Windows: U; Windows NT 5.1; en-US; 9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" SAE Nginx MUI), VIKA 200, Aaj i MI). app2.xx-com (pid: 12793|app: 2/req: 1/7] 192.168.3.248 () (46 vars in 767 bytes) [Wed Jul 20 06:09:36 2011) GET /hello_world2/ => generated 17 bytes in 297 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0) JRE uWSG! AE, WRAY 200, avi MIA. TAS: PMMA O LANA UWSG! SB fei Peo, RAL TAN uwsGl seth, Asi de Aine, eS Nginx 44> Wt, ASTANA TDA) Nginx M2 SOL 9 BRST 1. S208 [root@mail myappdirl]# mkdir s (root@mail myappdiri]# mkdir /3w [root@mail 3w]# django-admin.py startproject app_xx [root@mail 3w]# tree "a= app_xx __init__.py manage.py 1 1 |-- settings.py urls.py 1 directory, 4 files {root@mail 3w]# cd /3w/ 155, ARAN gost Sf: Nod MEA BS SA or me. ooo, sce ncrs) 156 [root@mail 3w] django-admin.py startproject app_yy [root@mail 3w]# tree app_yy _init_.py manage-py settings.py urls.py 1 directory, 4 files 2. GIR wsgi 30H [root@mail app_xx]# vi wsgi-py import django.core.handlers.wsgi import os, sys sys.path.append( '/var/3w' ) sys.path. append ('/var/3w/app_xx") 05.environ{'DJANGO_SETTINGS MODULE'] = ‘app_xx.settings* application = django.core.handlers.wsgi .WSGIHandler () [reot@mail app_yy]# vi wsgi.py import django.core.handlers.wegi import os, sys sys-path.append( */3w' ) sys.path.append( */3/app_yy' ) 0s.environ[*DJANGO_SETTINGS MODULE'] = ‘app_yy-settings’ application = django.core.handlers.wsgi.wsGiHandler () 3. ea [root@mail app_xx]# vi index.py from django.http import HttpResponse mi def index (request) + return HttpResponse Hello world -- this is www.xx.com !") [root@mail app_xx]# vi index.py from django.http import HttpResponse def index (request) : return HttpResponse ("Hello world -- this is www.yy.com ! 4. iM url Hie) [root@mail app_xx]# vi urls.py from django.conf.uris.defaults import patterns, include, url from app_xx.index import index # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin. autodiscover () urlpatterns = patterns('', # Examples: # url(r!*5', ‘app_xx.views.home', name='home'), # url (r'*app_xx/'; include ("app_xx.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r!*admin/doc/', include (*django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # url(r'*admin/*, include (admin.site.uris)), ('9§", index) , ) [root@mail app_yyl# vi urle.py from django.conf.uris.defaults import patterns, include, url from app_yy-index import index # Uncomment the next two lines to enable the admin: # from django.contrib import admin + admin.autodiscover() urlpatterns = patterns(* # Example: # url(r'*$', ‘app_xx.views.home', name='home'), # url(s'*app_xx/', include ("app_xx.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r!*admin/doc/', include ('django.contrib.admindocs.urls')), 157, Aa SUNginx tA MN Sth ae Web AR ABBE ar rw, so ss. eT) ¥ Uncomment the next line to enable the admin: # url(r'*admin/', include (admin. site.urls)), *§', index), ) 5. BREE Nginx [root@mail conf]# vi nginx-python.cont LAR BSY server ( listen 80; server_name www.xx.com; root /var/3w/app_xx; Jocation / { include uwsgi_params; uwsgi_pass 127.0.0.1:9001; } } server { listen 80; server_name www.yy.com: root /3/myappdir2; location / ( include uwsgi_parans; uwsgi_pass 127.0.0.1:9002; d ) 6. zh uWSGI HOW #E 9001 3 1A UWSGI SEP, VERE worker MY PID. [root@mail app_xx]# /usr/local/uwsgi-0.9.8-rc4/uwsgi-0.9.8-re4 -s 0.0. 0. gid uwsgi -p 4 -t 30 --limit-as 128 -R 10000 --pythonpath="pwd'--module=ws¢i *** Starting uWSGI 0.9.8-dev (32bit) on [Thu dul 21 10:41:20 2011) *** compiled with version: 4.1.2 20070626 (Red Hat 4.1.2-14) on 19 duly 2011 07:43:54 setgid() to 10322 9001 -M --uid uwsgi 158 i setuid() to 10322 limiting address space of processes... your process address space limit is 134217728 bytes (128 MB) your memory page size is 4096 bytes uwsgi socket 0 bound to TCP address 0.0.0.0:9001 fd 3 Python version: 2.7.2 (default, Jul 12011, 02:02:39) [¢cc 4.1.2 20070626 (Red Hat 4.1,2-14)) Python main interpreter initialized at 0xs1fds98 your server socket listen backlog is limited to 100 connections *** operational MODE: preforking *** added /var/3w/app_xx/ to pythonpath. WSGI application 0 (SCRIPT_NAME=) ready on interpreter Ox81£d898 pid: 9548 (default app) *** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 9548) spawned uWlSGI worker 1 (pid: 9549, cores: 1) spawned uWSGI worker 2 (pid: 9550, cores: 1) spawned uWSGI worker 3 (pid: 9551, cores: 1) spawned uWSGI worker 4 (pid: 9552, cores: 1) HAWFHE 9002 2 1N9 UWSGI 31H], HERE worker fy PID. [root@mail app_yy]# /usr/local/uwsgi-0.9.8-re4/uwsgi-0.9,8-re4 -s 0.0. 0.0:9002 -M --vid uwsgi --gid uwsgi -p 4 -t 30 --limit-as 128 -R 10000 --pythonpath='pwa’ --module=wagi *4* Starting uWSGI 0.9.8-dev (32bit) on [Thu Jul 21 10:41:46 2011] *** compiled with version: 4.1.2 20070626 (Red Hat 4.1.2-14) on 19 July 2011 07:43:54 setgid() to 10322 setuid() to 10322 limiting address space of processes... your process address space limit is 134217728 bytes (128 MB) your memory page size is 4096 bytes uwsgi socket 0 bound to TCP address 0.0.0.0:9002 fa 3 Python version: 2.7.2 (default, Jul 12011, 02:02:39) [GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] Python main interpreter initialized at 0x81fd890 your server socket listen backlog is limited to 100 connections *** Operational MODE: preforking *** added /3w/app_yy/ to pythonpath. WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0x81f4890 pid: 9555 (default app) ‘** udSGI is running in multiple interpreter mode *** spawned uNSGI master process (pid: 9555) 159 MANeincl AB. TERE Web AR 95 28 ABH EAE cats mr. dove. ase ner se) (pid: 9556, cores: 1) (pid: 9557, cores: 1) (pid: 9558, cores: 1) (pid: 9559, cores: 1) spawned uWSGI worker spawned uWSGI worker spawned uWSGI worker spawned uWSGI worker 7. Piel Mit wy iif hetp:/ /www.xx.com: Qe ¢ x @ Divine TS Hello world — thie ie mm. xe. com { Paling Wide ds iNT: 9001 S501 1. ff) wWSGI Bf ds (pid: 9549|app: Olreq: 1/1] 192.168.3.248 () {44 vars in 703 bytes} [Wed Jul 20 21:45:21 2011] GET / => generated 35 bytes in 139 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0) Nginx i fel 192.168.3.248 - - [21/Ju1/2011:10:45:21 +0800) “GET / BTTP/1.1" 200 46 "=" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; £v:1.9.2,12) Gecko/20101026 Firefox/3.6.12 GTB7.1" aYeRiA TA ttp://Amwweyy.coms Qe- ¢ & & Mier ea Dnteasere rr coal [Hello warld — this is was.yy.com | NiO 4 9002 SH 1 LAY UWSGI Se fA dis (pid: 9556|app: Olreq: 1/1] 192.168.3.248 () {42 vars in 671 bytes} [Wed Jul 20 21:50:37 2011) GET / => generated 35 bytes in 138 msece (HETP/1.1 200) 1 headers in 59 bytes (1 switches on core 0) Nginx Uj fe) Ak: 192.168.3.248 - ~ (21/3u1/2011:10:50:37 +0800) “GET / BFFP/1.1" 200 46 "-" *Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1 160 tT SOG: $tRt Nginx uwsgi RRM AHO — TAS Hs V9) EEL AY Nginx uwsgi Hie FAH) django % 44). 1. GRE LT [root@mail www] # pwd WAPI HINT ALY CA TARR, (ELLY /var/waw [root@mail www)# virtualenv foo New python executable in foo/bin/python Installing setuptools............done. Installing pip.... done [root@mail www]# virtualenv bar New python executable in bar/bin/python Installing setuptools.. + -done. Installing pip.. -done. 2. ta fi/var/www/foo Hak Fae. FATE. [root@mail foo]# more appl.py app2.py appl.py def appl_handler (environ, start_response) : start_response('200 OK', [('Content-Type', 'text/plain')]) return b'appl--this is foo_appl' app2.py def app2_handler (environ, start_response) : start_response('200 OK', [('Content-Type', 'text/plain') 1) return b'app2" ¢£/var/www/bar [13k FaIRE EL PAPC TE [root@mail bar]# more appl-py app3.py appl-py andler (environ, start_response! def appl} start_response('200 OK", [('Content-Type', ‘text/plain')]) return b'appl--this is bar_appi' 161 DENG AA M1 GE Wo FRSA ABR SIRE act me. ove, ASP MTD app3 Py def app3_handler(environ, start_response) : start_response('200 OK*, [('Content-Type', 'text/plain')]) return b!app3! 3. B25 Nginx upstream uwsgi_host t server 127.0.0.1:1088; ) include uwsgi_params; uwsgi_param SCRIPT_NAMESapp; uwsgi_param UWSGI_MODULE Sapp; uwsgi_param UWSGI_CALLABLE "${app}_handler"; uwsgi_param UWSGI_PYHOME $document_root; uwsgi_param UWSGI_CHDIRSdocument_root; uwsgi_modifier130; #properly sets PATH INFO variable fe server name £00; root /var/wwu/foo; location /appl/ { set Sapp appl; uwsgi_pass 127.0.0.1:9008; ) location /app2/ ‘ set Sapp app2; uwegi pass 127.0.0.1:9008; ) server 4 server_name bar; root /var/wwx/bar: 162 ne location /appl/ fi set Sapp appl: uwsgi_pass uwsgi_host; ) location /app3/ i set Sapp app3; uwsgi_pass uwsgi_host; , , 4. faeh UWSG! ARS 8 [root@mail app_yy]# /usr/local/uwsqi-0.9.8-rc4/uwsgi-0.9.8-rc4 -s 127.0. 0.1:1088 --uid usgi --gid usgi -M -p 4 -t 30 --limit-as 512 -R 10000 no-site --vhost *** starting uWSGI 0.9.8-dev (32bit) on [Thu Jul 21 17:27:06 2011) *** compiled with version: 4.1.2 20070626 (Red Hat 4.1.2-14) on 19 July 2011 07:43:54 setgid() to 10322 setuid() to 10322 Limiting address space of processes. your process address space limit is 536870912 bytes (512 MB) your memory page size is 4096 bytes VirtualHosting mode enabled. uwsgi socket 0 bound to TCP address 127.0.0.1:1088 fa 3 Python version: 2.7.2 (default, Jul 12011, 02:02:38) [Gcc 4.1.2 20070626 (Red Hat 4.1.2-14)] Python main interpreter initialized at 0x81fd860 your server socket listen backlog is limited to 100 connections *** Operational MODE: preforking *** %** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 21525) spawned uWSGI worker 1 (pid: 21526, cores: 1) spawned uWSGZ worker 2 (pid: 21527, cores: 1) spawned uWSGI worker 3 (pid: 21531, cores: 1) spawned uWSGI worker 4 (pid: 21532, cores: 1) 5. Welk Fade FFs fe BE TA (1) Uy fA WMIK foo BRA. 163, ake Ngmn tt MSE ob AOS AS SIME tae. soe. seers 164 ‘Hist foo bk% Fi app1 Al app2. EX we Qreiien’ SRST " (2) PrN as Has. ULF Re uWSGI fs fin th EL HAE WSGI application 1 (SCRIPT_NAME=foo|appl) ready on interpreter 0x8211728 pid: 21527 foo (pid: 21527|app: 1/req: 1/2] 192.168.3.248 () {50 vars in 770 bytes) (Thu Jul 21 17:43:39 2011) GET /app1/ => generated 22 bytes in 20 msecs (RTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0) WSGI application 1 (SCRIPT_NAMB=foo|app2) ready on interpreter 0x8211728 pid: 21526 foo [pid: 21526|app: 1ireq: 1/3] 192.168.3.248 () (50 vars in 770 bytes} [Thu Jul 21 17:43:47 2011] GBT /app2/ -> generated 4 bytes in 20 msecs (HTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0) VA PAE Neginx MMHG, FEROS: 192.168.3.248 - - [21/Jul/2011:17:43:39 +0800] "GET /appl/ HTTP/1.1" 200 33 "Mozilla/5.0 (Windows; U; Windows NI 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" 192.168.3.248 - - [21/Jul/2011:17:43:47 +0800] "GET /app2/ HTTP/1.1" 200 14 "=" "Mozilla/S.0 (Windows; U; Windows NT 5.1; en-US; xv:l.9.2.12) Gecko/20101026 Firefox/3.6.12 GT37.1" ALE ES dC 6. Wil M ix bar whe Wik bar 14 Ftd app1 Hl app3. eat Ee rey ene Das oan Qir ¢ XK @ Ge meion GIF ¢ xo ier Ghee ST Waly Wid Hat CAP kt uWSGI fO4iT HH Ea CECH abo WSGI application 1 (SCRIPT_NAME=bar|app1) ready on interpreter 0x8211728 pid: 21532 tt bar (pid: 21532/app: 1lreq: 1/5] 192.168.3.248 () (50 vars in 770 bytes (Thu Jul 21 17:54:13 2011] GBT /appl/ -> generated 22 bytes in 20 msecs (HTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0 WSGI application 2 (SCRIPT_NAME=bar|app3) ready on interpreter 0x8272860 pid: 21527 bar [pid: 21527|app: 2|req: 1/6) 192.168.3.248 () (50 vars in 770 bytes. [Thu Jul 21 17:55:13 2011] GET /app3/ => generated 4 bytes in 21 msecs (HTTP/1.1 200) 1 headers in 45 bytes (0 switches on core 0 CL BAS Nginx (99H Hd, FERAL TBSP: 192.168.3.248 - - [21/Jul/2011:17:54:13 +0800] “GET /app1/ HTTP/1.1" 200 33. "-" "Mozilla/S.0 (Windows; U; Windows NP 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" 192.168.3.248 - - (21/Jul/2011:17:55:13 +0800] "GET /app3/ HFTP/1.1" 200 14 "-" "Mozilla/5.0 (Windows; U; Windows NT §.1; en-US; rv:1.9.2.12) Gecko/20101026 Pirefox/3.6.12 GTB7.1" SA EG TE BH Ta) RL SAT: REALM EP SERRE. BBR TB (ELAN GT UWSGI HR 4-8 IP SEALS Hy 192.168.3.139 Al 192.168.3.34, Mina 39 J 9001. “EA IM SALT HR NPS HERESEDLIY. IEE AL IP 192.168.3.139 FAIL a JBAE IP 192.168.3.34 BiH AY ALS 1:9) UWSGI FR 25 46 AA IK a NES TEAR A ok LHR. StH AU 192.168.3.139, fi SAAT AF A M48 A Ha HW RLESMRM— BA, uWSGI Hah RBA MA AVA ie RHA HAM OR Bl, UWSGI ARS) RAR TREE LHGA, AMBP MIRE. FRAT FUSER. iG > UWS (HY SFE AP FSS EHH. /app/my_django SCF uwsgixml (12 (root@mail my_django]# more uwsgi.xnl 20 true uwsgi uwsgi 1 wsgi /app/my_django true 165, St 6: Wo MASA SHEE can Fer, Java, ASP.NET true true tre 48 /usr/local/uwsgi-0.9.8-re4/1og/django.1og
BEERRELHPRALETM PAROS, 1. GRAN Nginx Bee CERI EY Nginx MI ae ERS DRC hetp { include mime.types: default_type application/octet-stream; sendfileon; keepalive timeout 65; upstream uwsgicluster ( server 192,168.3.139:9001; server 192.168.3.34:9001; ) server { listen 0.0.0.0:80; location / { include uwagi_params; uwsgi_pase uwsgicluster; ) ) 46 192.168.3139 HL LAkty: [root@mail uwsgi-0.9.8-re4]# ./uwsgi-0.9.8-red -x /app/my_django/uwsgi xml 5 192,168.3.*:9001 --cluster 225.1.1.1:3333 generate_socket_name(192.168.3.*:9001) asterisk found found 192.168.3.139:9001 for 192.168.3.*:9001 on interface eth0 {uWSGT] parsing config file /app/my_django/uwsgi.xm1 [rootémail Django] # ¢é 192,168.3.34 LAR EAT: (rooté@nas uwsgi-0.9.8-rc4)# . /uwsgi-0.9.8-re4 --cluster 225.1.1.1:3333 (uWSGI] joining multicast group: 225.1.1.1:333 166, JOINED CLUSTER: 225.1.1.1:3333 asking "225.1.1,.1:3333" uWSGI cluster for configuration data: recevied request from 192.168.3.34 RLEN: 15 invalid uwsgi dictionary received, modifierl: 73 modifier2: 0 recevied request from 192.168.3.34 RLEN: 4 invalid uwsgi dictionary recevied request from 192.168.3..139 RLEN: 340 Oxbffe0d64 Oxbffedeb4 336 xmlconfig = /app/my_django/uwsgi. xml socket = 192.168.3.*:9001 cluster = 225,1.1.1:3333 Listen = 20 master = true vid = uwsgi gid = uvsgi 1 module = wsgi processes pythonpath = /app/my_django profiler = true memory-report - true enable-threads = true logdate = true Limit-as = 48 daemonize = /ust/local/uwsgi-0.9.8-re4/log/django.10g generate_socket_name(192.168.3.*:9001| asterisk found found 192.168.3.34:9001 for 192.168.3.*:9001 on interface etho BOE EBLE EACH a FL EM ACSC BE WE, UWS SEH E22 LL dik 225.1.1.1:3333, Jf HARM TALE. fi 192.168.3.34 ite WLae Toc Mae, SAE 192.168.3.139 Ete Has: Thu Jul 28 1 4 2011 ~ recevied request from 192.168.3.34 ‘Thu gul 28 16:06:04 2011 - request received 73 0 Thu Jul 28 16:06:04 2011 ~ [uWSGI cluster 225.1.1.1:3333] new node available: ‘Thu Jul 28 16:06:04 2011 - recevied request from 192,168.3..34 ‘Thu Jul 28 1 4 2011 - request received 99 0 ‘Thu Jul 28 16:06:04 2011 ~ requested configuration data, sending 340 bytes ‘Thu Jul 28 1 Thu Jul 28 1 104 2011 ~ recevied request from 192.168.3..139 :04 2011 ~ request received 99 1 167 MN ginsit RA 168 FB TERE Web ARS RAAB IEHE ca rw. Jove, ase ner a Thu Jul 28 16:06:04 2011 - recevied request from 192.168.3..34 Thu Jul 28 16:06:04 2011 - request received 95 0 Thu Jul 26 16:06:04 2011 ~ hostname = nas Phu Jul 28 16:06:04 2011 - address = 192.168.3.34:9002 Thu Jul 28 16:06:04 2011 ~ workers = 1 Thu Jul 28 16:06:04 2011 - requests = 0 Thu Jul 28 16:06:04 2011 - adding node Thu Jul 28 16:06:04 2011 - 192.168.3.34 Thu Jul 28 16:06:04 2011 ~ [uWSGI cluster] added node 192.168.3.34:9001 FLAS APA AACR EE BEE ZBL KE) 192.168.3.34 AVHAR. JELLY TE ‘8UdS INE UWSGI cluster 225.1.1.1:3333 SRF Bee TEM AIP HBA, CANT 2. WlMik Ui lel hetp://www.xx.com/hello/, Fifty Mit ZR AE Heal Ce AU RMT Me ETA. RATT AS FADES LAR, fA¢E ARE UWSGI SRF AS BEI A DOF SEBL AE Nginx (HAC EIR AMR, a Fa Habe SLAF 6 EEZ xeis: see Bis eM SM sh, ARLE Ae, ALLL Memcached JRA 2877 fit. BA ZA AE A ACE eA Memcached 4F KAIF. PATRAS SH EH E WIR settings RUBLE FFE U, PRCA AE CHUIREL IAT AMS)) MIDDLEWARE CLASSES = ( *django.middleware common .CommonMiddieware', ‘django. contrib. sessions.middleware. Se: (A UWSGI ARS AS ACA, ERAT) SEA SKN A HE A: a onMiddlewar "django middleware. csrf.CsrfViewMiddleware', "django. contrib.auth.middleware AuthenticationMiddleware', ‘django. contrib.messages.middleware .MessageMiddleware', ) INSTALLED APPS = ( 2 ‘ajango.contrib.auth', ‘ajango.contrib.contenttypes", ‘django. contrib. sessions’, *django.contrib.sites", ‘django-contrib.messages', tajango.contrib. staticfiles', ) 1 S-WGR: CABTRREHAK 1. RDG DATABASES = { ‘default! ( "ENGINE": ‘django.db.backends.sqlite3', 'NAME': '/tmp/cache_session.db’, ) ) 2. ESE [root@mail my_django]# ./manage-py syncdb Creating tables ... Creating table auth permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_user_permissions Creating table auth_user_groups Creating table auth_user Creating table auth_message Creating table django_content_type Creating table django_session Creating table django_site You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): y Please enter either “yes” or " o": yes Username (Leave blank to use ‘root"): E-mail address Brror: That e-mail address is invalid. E-mail address: m1@xx.com Password: Password (again): Superuser created successfully. Installing custom SQL . 169, Nest Ai MES (2A Web ALE AAD SIME cas me, Love. 97 IH) Installing indexes .. No fixtures found 4epRIM3R + /tmp/cache sessiondb, SCHIP ER. Fe tier th ASCH. IA. AP DUEL strings 4. ti: [root @mail tmp]# strings 3. admin fF WT WiX cookie MH, BUM KILAL~F admin. 7E settings SOPH NEL FAC, FEST SP cache_session.db |more LANGUAGE_CODE = 'zh-CN' INSTALLED_APPS = ( ‘django.contrib.auth', "django.contrib.contenttypes’, "django.contrib. sessions’, *django.contrib.sites', ‘django. contrib.messages", ‘django.contrib.staticfiles', *django.contrib.admin', "django_memcached", ) urls PEP AIM, PAC, TERT AS: from django.contrib import admin from django.conf.urls.defaults import * admin. autodiscover() urlpatterns = patterns(*', # Uncomment the next line to enable the admin: url (x'*admin/', include(admin.site.urls)), ('*hel10/$', hello), AEROBIE [root@mail my django]# ./manage.py syncdb Creating tables Creating table django_admin_log 170 i Installing custom SQb ... Installing indexes ... No fixtures found. 4. BR sqlite3 MEARE AT Bheshiis hel sqlite Beale. FAT FBI RHEE AI Pe [roctamail ~]# wget http://www. sqlite.org/sqlite-shell-1inux-x86-3070701.zip [root@mail ~]# unzip eqlite-shell-linux-x86-3070701.zip Archive: sqlite-shell-1inux-x86-3070701.zip inflating: sqlite3 COMEAR ATT, FREE SEMEN MAT RD ET. fda: [root@mail ~]# ./sqlite3 /tmp/cache_session.db SQbite version 3.7.7.1 2011-06-28 17:39:05 Enter "-help" for instructions Enter SQL statements terminated with a "; eqlite> sqlite> ee em Zo PH BRIE PAT Ade: sqlite> .tables auth_group auth_user_user_permissions auth group _pérmissions django_admin_log auth_messagedjango_content_type auth_permission django_session auth_user django_site auth_user_groups sqlite> AERO: sqlite? schema django_session CREATE TABLE "django_session” ( "session _key" varchar (40) NOT NULL PRIMARY KEY, "session data” text NOP NULL, "expire _date" datetime NoT NULL ” CREATE INDEX "django_session_3da3d3d8" ON "django_session" ("expire date"); #% auth_user #'} (Mica: sglite> select * from auth_user ; 1|xoot ||| ml@xx.com | shal$a616£Sa2bea4c£31633£80e9e6138ae3ca956635643F 15 11}11212011-07-30 16:45:57. 927539} 2011-07-29 21:03:35. 348291 471

You might also like