Jeg ønsket å vite, overtid, hvor mange cache treff og bommer Var få min forekomsten. Søkte mye og til slutt fant dette perl skriptet:

http://code.google.com/p/memcache-top/

Bruk er svært enkel. Lagre filen, gir det henrettelse tillatelser, så bare å kjøre:

. / Memcache-top.pl-kommandoer-kumulative

Her er et eksempel produksjon:

memcache-top.pl output example

Virker som jeg gjør bra, caching de riktige delene! Hit over 80% og bare halvparten av mine tildelte minnet memcached som brukes ... (det er fordi jeg hadde nylig startet den, så det som regel; Holder fylt).

Jeg har skrevet hvordan du konfigurerer Apache, mod_python og Django , og hvordan du kan sette lighttpd bak Apache .

Nylig bestemte jeg meg for å være vert for min mest besøkte nettside på en annen VPS-leverandør [1], og startet forsøk på å oppdatere mine kunnskaper om Django distribusjon. Jeg gjorde ting annerledes denne gangen, med mod_wsgi (den anbefalte måten å implementere Apache og Django ), konfigurering Apache og Lighttpd er bak dynamisk innhold (med andre ord, lighttpd Vil tjene statiske medier).

Jeg gjorde alt under de siste par dagene, og ikke skrev de tingene jeg gjorde det, fordi det innebar mye eksperimentering (prøving og feiling) for meg. I slike, jeg skriver denne artikkelen er basert på minne og sjekker min config filer. Hvis det oppstår problemer, kan du legge igjen en kommentar og jeg vil avklare eventuelle utelatelser.

Slik gjør du det:

Installer de vanlige mistenkte

Jeg velger meg Ubuntu Linux distro, og installasjon av alt er en lek på den. sudo apt-get install package-name . Denne delen er godt dekket rundt på nettet, så jeg vil ikke kommentere i detalj hvordan det gjøres. Tilstrekkelig til å si, noen av pakkene jeg har installert Var apache2 , libapache2-mod-wsgi , og lighttpd .

Konfigurer Apache og mod_wsgi å laste prosjektet

Siden loven lighttpd Vil den primære serveren for domenet mitt, bestemte jeg meg for å flytte Apache til port 81:

sudo vi / etc/apache2/ports.conf

Overskriv eksisterende ip: port linjer med Hovedoppgave:

NameVirtualHost 127.0.0.1:81
Lytt 81

Hvor du setter dine egne Python moduler på nyere Ubuntu installasjoner har byttet til /usr/local/lib/python2.6/dist-packages/ . Derfor har jeg lastet Django, mitt prosjekt og andre nødvendige moduler (som ikke var installert av apt-get ) til denne katalogen, og etterlot meg med struktur følgende:

/ Usr/local/lib/python2.6/dist-packages/django /
/ Usr/local/lib/python2.6/dist-packages/my_project_name /

Den mod_wsgi dokumentasjonen Har en utmerket artikkel om Django integrering , men det er ganske lang. Du bør lese den allikevel, siden det er mange alternativer som du kanskje vil bruke. Her er en cheatsheet:

Lag dokumentet roten til ditt domenenavn:

sudo mkdir / var / www / example.com

Som vil danne filen lastes av mod_wsgi med prosjektet konfigurasjon:

sudo mkdir / usr/local/lib/python2.6/dist-packages/project_name/apache /
sudo vi / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi

Med dette innholdet:

import sys
import os

sys.path.append ('/ usr/local/lib/python2.6/dist-packages')
os.environ ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'

import django.core.handlers.wsgi

django.core.handlers.wsgi.WSGIHandler program = ()

Opprette et domene konfigurasjonsfil for Apache:

sudo vi / etc/apache2/sites-available/example.com

Med dette innholdet:

<VirtualHost 127.0.0.1:81>
Servernavn example.com
ServerAdmin username@example.com

DocumentRoot / var / www / example.com

Alias / media / / usr/local/lib/python2.6/dist-packages/django/contrib/admin/media /
<directory /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media>
Valg-Indekser
Bestill nekte, tillate
Tillat fra alle
</ Directory>

Alias / project_media_dir / usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir /
<directory /usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir>
Valg-Indekser
Bestill nekte, tillate
Tillat fra alle
</ Directory>

WSGIScriptAlias / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi
WSGIDaemonProcess example.com
WSGIProcessGroup example.com

<directory /usr/local/lib/python2.6/dist-packages/project_name/apache>
Bestill nekte, tillate
Tillat fra alle
</ Directory>
</ VirtualHost>

Aktivere den:

cd / etc/apache2/sites-enabled /
sudo ln-s .. / sites-tilgjengelig / example.com

Konfigurer lighttpd til proxy ikke-statiske medier forespørsler til Apache

Jeg Brukte MySQL Performance Blogg er "reverse proxy å Lighttpd" artikkel som grunnlag for min egen konfigurasjon. Derfor vil vi ha en url http://example.com/server-status som krever autentisering, slik at vi kan se Apache's server status.

Opprett en katalog for feilmeldingsloggene:

sudo mkdir / var / log / lighttpd / example.com

Opprette et domene konfigurasjonsfil for Lighttpd:

sudo vi / etc/lighttpd/conf-available/20-example.com.conf

Med dette innholdet:

server.modules + = ("mod_auth",
"Mod_status",
"Mod_proxy",
)

$ HTTP ["host"] = ~ "(^ | \.) Eksempel \. Com $" (
$ HTTP ["url"]! ~ "\. (Js | css | gif | jpg | png | ico | txt | swf | html | htm) $" (
proxy.server = ("" => (
("Host" => "127.0.0.1", "port" => 81)
))
)

server.document-root = "/ var / www / example.com /"
server.errorlog = "/ var / log / lighttpd / example.com / error.log"
fortelle listing.activate = "arbeidsudyktig"

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/ server-status" => (
"Metode" => "basic",
"Realm" => "status",
"Krev" => "valid-user"
)
)
)

Det er linjer verdt å nevne i ovennevnte konfigurasjon:

$ HTTP ["host"] = ~ "(^ | \.) Eksempel \. Com $" (

Dette vil brytes inne i direktivene gjelder bare forespørsler om example.com.

$ HTTP ["url"]! ~ "\. (Js | css | gif | jpg | png | ico | txt | swf | html | htm) $" (
proxy.server = ("" => (
("Host" => "127.0.0.1", "port" => 81)
))
)

Disse Vil sende noen forespørsler om dokumenter som ikke ender i den angitte utvidelser til ip 127.0.0.1, port 81, bor Apache WHERE. I hovedsak, alt som er statisk innhold (eller mer nøyaktig, spesifisert av | separert regulære uttrykk), vil bli betjent av lighttpd.

cd / etc / lighttpd / conf-aktivert /
sudo ln-s .. / conf-tilgjengelig / example.com.conf

Fortell filsystemet der du prosjektet og Django's admin statisk innhold er lokalisert:

sudo ln-s / usr/local/lib/python2.6/dist-packages/django/contrib/admin/media / var / www / example.com / media
sudo ln-s / usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir / var / www / example.com / project_media_dir /

Til slutt, starter alt så på de nyeste konfigurasjonen kan brukes

sudo / etc/init.d/apache2 hvile
sudo / etc / init.d / Lighttpd hvile

SÃ¥, hva som faktisk skjer?

Når en besøkende går til nettstedet ditt (example.com), anmodning lighttpd Vil truffet først. Hvis dokumentet banen ikke slutter med strengen i vår liste over statisk innhold utvidelser, anmodningen skal proxy til Apache på port 81, lighttpd Ellers Vil serverer seg selv.

Og det er det, hvis min hukommelse er riktig. Hadde jeg savner noe? Kommentar på vilje.

[1] linodivas, hvis du er nysgjerrig. Hovedsakelig fordi båndbredden er billigere. Hvis du leter etter en henvisning linodivas, linodivas linodivas rabatt kode eller forfremmelse koden, registrere deg via denne koblingen til å kreditere meg henvisningen. Takk :)

SÃ¥ .... sinnsyk

Parachute Boituva 06/06/2009

Kommentarer

Jeg hoppet Sergio og Mi :)

Bytt ut flere linjer med bare en i PHP

Kommentarer

Jeg slo hodet litt for å finne det vanlige uttrykket, men her går:

PHP:
  1. ( "/( \r \n | \n | \r )+/" , " \n " , $string ) ; $ String = preg_replace ("/ (\ r \ n | \ n | \ r) + /", "\ n", $ streng);

Quick tips Linux kommandolinjen. Bare la doble anførselstegn og enkel. Her går:

scp username@192.168.0.1:"'tem espacos aqui'"

Referrer test

Kommentarer

Jeg har laget en testside for å se hvordan referansene (både server-side og Javascript) vil fungere dersom Google endrer STI url søkestrengen på søkeresultatsider:

http://www.inerciasensorial.com.br/referrer-test/index.php

Web gjennomgang tjenester

Kommentarer

Antallet web apps som trenger å gjennomgå Internett i en eller annen form er så stor, og det blir stadig større hver dag, at enten jeg er den dummeste personen på jorden, og Google kan ikke eller det er ingen enquiry.c selger webgjennomgang tjenester.

Folkens, noen til behov av dette. Den måles tjenesten (som S3) WHERE søket kunder Kan du app gjennomgår resultater.

Jeg skal gi deg to grunner til at jeg skulle på dette selv.

Grunn nummer en:
Det er billigere og ikke noen andres kjernekompetanse. Hvordan Friendfeed indeks Alle disse websidene? Hvem bryr seg? De bør ikke b gjøre dette. Skrive en god robotsøkeprogrammet er vanskelig. De trenger data * * Når Det er * ny *.

Grunn nummer to:
Jeg har så mange ideer, men jeg vil fokusere på prototyping dem i stedet for å skrive robotsøkeprogrammet. Det ville virkelig hjelpe utviklere rundt i verden hvis de bare kunne bruke noen API til å gjennomgå nettsider.

Sa jeg API? Ja, det er poenget. Noen trenger for å skrive en gjennomgang med en API:

POST / API / i = http://www.example.com/file.html
user = navn
pass = ordet
Da = 00 00,12 * * 1-5
utløper = 2592000

Ja, det er crontab syntaks. "Når" Også ville akseptere en gang "og" onchange ".

"Utløper" er antall sekunder (siden nå) at dette ikke vil gjennomsøke være behov lenger.

Denne forespørselen vil returnere en "id", som skal brukes senere, når kunden er klar til å laste ned nettside fra oss.

Selvfølgelig er det også:

POST / API / i = regex
format = rss
content_regex some_string = (.*) suger?

SÃ¥ du vet NÃ¥r noen sier produktet suger. Og:

POST / API / i = regex
navn = (jpg, gif)
width = LT200
height = LT200
type = image

LT Er mindre enn, ville det være Også GT og EQ.

Så / API / i = s anmodning om å sette inn en gjennomgang. Du kan be om av websider / API / g =

POST / API / g = http://www.example.com/file.html
Bare = # some_node_id. some_node_class

XPath på "bare".

Siden kunden vil betale for overført dato, ville det suger å ha kunden til å spørre / API / g = alt han trenger noe. Og det er ikke mye annerledes enn å skrive din egen beltegående, er ikke det? Egentlig det er på grunn av robots.txt tolking html, server last, og mye mer. Men mange mennesker tror at robotene skriving er enkelt og skalerbar.

Uansett! The Magic skjer når man gjennomgå nettsiden og legger den matcher regelsett av en av dine kunder. Nå du trenger bare å fortelle dem på listen over IDer tidligere sitte / API / i = Det er klare. De kobler deg til serveren og laste ned filene.

Og hvis du har IDer:

POST / API / g = 111 112 113
komprimere = True

Hvilken ville returnere sette inn forespørsler med IDS 111 og 112 og 113 i zip-filen.

En mer god ting: økonomi skala. Alle trenger de nyeste RSS-feeds. Du kan ha mange kunder om de samme mate, men du må bare ta den en gang.

Denne tjenesten ville ha noe å gjøre med søk, Google, dype web, semantisk web, uansett. Bare sørg for at folk vil vite når en webside er oppdatert.

Så jeg har nettopp lest hvordan Britannica planlegger et nytt nettsted versjon, hovedsakelig for å "konkurrere" med Wikipedia. Også Britannica's CEO snakker om forholdet mellom Googles resultatsider og Wikipedias.

Uansett, er en kritikk gyldig, Wikipedia-artikler er ofte ikke den beste kilden til informasjon om emnet. Og dette er skrevet av å være en som søker daglig på Google etter ord etterfulgt av ordet «Wikipedia», ettersom; Wikipedia har som resultatene er gode nok.

Så her er min idé, dump database over Wikipedias artikkel titler, og la folk sende inn lenker til disse titlene. Og la brukere stemme Reddit Digg-stil. Finn en måte å håndtere spammer's bot, og er du klar til.

For eksempel, Wikipedia artikkel for "Design_pattern_ (Informatikk)" (som jeg har åpen i en fane akkurat nå) ville b bare en masse linker for brukere andre sider som kan-gjøre hva du vil til dem slik at du kan sortere av koblingene av relevans.

The've sa på mitt forrige innlegg, har jeg følt lat i det siste, ellers ville jeg gå og gjennomføre dette.

Du kan spørre, hvorfor ikke bare legge til brukerne vil upvote som lenker til Wikipedia? Vel, sjelden er artiklene på Wikipedia som godtar "full" lenker på ITS referanser del. De fleste lenker er satt for henvisninger, og disse brukes til å rettferdiggjøre bare små tekst / setninger utdrag / fakta, ikke hele websider. Og "eksterne linker"-delen av Wikipedia-artikler aren'ta sortert, og det er hele poenget med min ide: p

Nå går og bygge den og huske å kjøpe meg en øl hvis du gjør en bukk.

HTFITIP er nettstedet der du kan se hva en funksjon kalles fra ett språk i en annen (eller en implementering).

Ideen cam til meg etter den ellevte gang spurte jeg meg selv, hvordan i helvete er trim i Python? Det kalles stripen ved veien.

Nettstedet er svært enkel. På forsiden er det dette skjemaet:

Hvor i helvete er _____'s _____ i _____?

Det første rommet er "source" programmeringsspråk navn, den andre så setter vi den funksjonen / metoden navn, og den tredje, den "target" programmeringsspråk. Kilden språket er valgfritt.

En god kilde til den ... kilde programmeringsspråk er PHP's (massive) liste funksjoner . Først av alt, synes å ha PHP's funksjon er til alt, og det er ingen namespace slik at det er lettere for oss å bygge en indeks av det. For det andre er dette et allment kjent språk. For det tredje er det første språket i mange mennesker, så det er fullt mulig at mange mennesker vil ønske å vite hva som er tilsvarende for PHP funksjon X i det nye språket de er lærer, så hvis vi må begynne et sted kan det være godt på denne måten.

Når brukeren velger kilden programmeringsspråket fra nedtrekksmenyen, en Ajax anrop blir automatisk alle funksjonsnavnene så når brukeren skriver inn navnet på det andre feltet, den automatisk fullfører. Deretter velger han det "målet" språk på det tredje feltet.

Hvor i helvete er PHP's trim i Python? (Klikk på Send)

Hvis forholdet allerede er stablished på databasen, presenterer vi svaret til brukeren:

PHP's Trim i Python kalles stripen. (Lenke til manuelle siden på Python's strip ville være hyggelig)

Hvis ikke, kan vi la brukeren gjør dette forholdet. Hvis det ikke er mulig, si, Python har ikke en array_intersect_uassoc funksjonen på en modul, lar vi brukeren skriver inn en implementering, wiki-stil.

Web 2.0 baby, gir brukerne alt innhold, gjør vi alle pengene.

Og nettsiden backend er enkel. Listen over programmeringsspråk og dets funksjoner, og forholdet mellom funksjoner / metoder, og somekind av wiki ting å la folk sende implementeringer.

Jeg har følt lat i det siste så gå videre og gjennomføre dette hvis du vil. Bør være et nyttig redskap.


Português flagItaliano flagCoreano flagChinês (simplificado) flagEnglish flagAlemâo flagFrancês flagEspanhol flag
Japonês flagÁrabe flagRusso flagHolandês flagBúlgaro flagTcheco flagCroata flagDinamarquês flag
Finlandês flagHindu flagPolonês flagRomeno flagSueco flagGrego flagNorueguês flag 
By N2H
Dolet 96 rabatt på hosting Dreamhost!
Bruk "Fremme Koden" treghet. LAMP med 20GB plass og 1TB av overføringen.

Kategorier