Jeg ønskede at vide, overarbejde, hvor mange cache miss og hits mit eksempel var ved at blive. Søgte en masse og til sidst fandt dette perl script:

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

Skik er meget enkel. Gem filen, giver det udførelse tilladelser, så bare kør:

. / Memcache-top.pl-kommandoer-kumulativ

Her er et eksempel output:

memcache-top.pl output example

Synes lige jeg gør fint, caching de rigtige dele! Hit over 80%, og kun halvdelen af min allokerede hukommelse memcached Være Brugt ... (det er fordi jeg for nylig havde genstartet den, så det som regel; Holder fyldte).

Jeg har skrevet hvordan man konfigurerer Apache, mod_python og Django , og hvordan at sætte lighttpd bag Apache .

For nylig besluttede jeg at være vært for mine mest besøgte website på en anden VPS udbyder [1], og begyndte kampen for at opdatere min viden om Django indsættelsen. Jeg gjorde tingene anderledes denne gang, ved hjælp af mod_wsgi (den anbefalede måde at indsætte Apache og Django ), konfiguration Apache og lighttpd står bag dynamisk indhold (med andre ord, lighttpd Vil betjener statisk medier).

Jeg gjorde alt under de sidste par dage, og ikke skrev de ting jeg gjorde det, fordi det involverede en masse eksperimenter (trial and error) for mig. Den sådan, jeg skriver denne artikel baseret på hukommelse og kontrol min config filer. Hvis du støder på problemer, kan du efterlade en kommentar, og jeg vil afklare eventuelle udeladelser.

Sådan gør du:

Installer de sædvanlige mistænkte

Jeg vælger mine Ubuntu Linux distro, og installation af alt er en brise på det. sudo apt-get install package-name . Denne del er godt dækket rundt omkring på nettet, så jeg vil ikke kommentere i detaljer, hvordan det gøres. Tilstrækkeligt at sige, nogle af de pakker jeg har installeret Var apache2 , libapache2-mod-wsgi , og lighttpd .

Konfigurer Apache og mod_wsgi at indlæse dit projekt

Da den retsakt lighttpd Vil den primære server for mit domæne, besluttede jeg at flytte Apache til havn 81:

sudo vi / etc/apache2/ports.conf

Overskriv eksisterende ip: port linjer med Speciale:

NameVirtualHost 127.0.0.1:81
Lyt 81

Hvor du sætter din egen Python-moduler på nyere Ubuntu installationer har skiftet til /usr/local/lib/python2.6/dist-packages/ . Derfor har jeg uploadet Django, mit projekt og andre nødvendige moduler (som ikke var installeret af apt-get ) til denne mappe og efterlader mig 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 dokumentation Har en glimrende artikel om Django integration , men det er temmelig lang. Du bør læse det alligevel, da der er masser af muligheder, som du måske ønsker at bruge. Her er en Snydeskema:

Opret dokumentet roden til dit domænenavn:

sudo mkdir / var / www / example.com

Som vil skabe den fil skal indlæses ved mod_wsgi med dit projekt konfiguration:

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 disse indhold:

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 ansøgning = ()

Opret en domæne opsætningsfil til Apache:

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

Med disse indhold:

<VirtualHost 127.0.0.1:81>
ServerName 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
Bestil benægte, at
Tillad 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
Bestil benægte, at
Tillad 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>
Bestil benægte, at
Tillad fra alle
</ Directory>
</ VirtualHost>

Aktivere den:

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

Konfigurer lighttpd til proxy ikke-statisk medier anmodninger til Apache

Jeg brugte MySQL Performance Blog's "reverse proxy til Lighttpd" artikel som grundlag for min egen konfiguration. Derfor vil vi have en url http://example.com/server-status , hvilket vil kræve godkendelse, så vi kan se Apache server status.

Opret en mappe for fejl logfiler:

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

Opret en domæne konfigurationsfil for lighttpd:

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

Med disse indhold:

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"
fortælle listing.activate = "deaktiver"

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/ server-status" => (
"Metode" => "grundlæggende",
"Realm" => "status",
"Kræv" => "gyldigt bruger"
)
)
)

Der er linjer værd at nævne i ovenstående konfiguration:

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

Dette vil WRAP inde direktiverne gælder kun for anmodninger 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 alle anmodninger om dokumenter, der ikke slutter i den angivne extensions til ip 127.0.0.1, port 81, Apache WHERE liv. Væsentlige, alt det, der er statisk indhold (eller mere præcist, angivet af | separeret regulære udtryk), vil blive serveret ved lighttpd.

cd / etc / lighttpd / conf-aktiveret /
sudo ln-s .. / conf tilgængeligt / example.com.conf

Fortæl filsystemet, hvor du projekt og Django's admin statisk indhold er placeret:

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 /

Endelig, genstart alt så de nyeste konfiguration kan anvendes

sudo / etc/init.d/apache2 restart
sudo / etc / init.d / lighttpd restart

SÃ¥ hvad sker der egentlig?

Når en besøgende går til dit website (example.com), anmodning lighttpd Vil rammes først. Hvis dokumentet stien ikke ender med strengen på vores liste af statisk indhold extensions, anmodningen vil blive bruges proxygodkendelse til Apache på port 81, lighttpd Ellers Will tjener sig selv.

Og det er det, hvis min hukommelse er korrekt. Har jeg glip af noget? Kommentar efter behag.

[1] linodivas, hvis du er nysgerrig. Hovedsageligt fordi båndbredde er billigere. Hvis du leder efter en henvisning linodivas, linodivas linodivas rabat kode eller ophjælpning kode, tilmelde dig via dette link til kredit mig henvisningen. Tak :)

SÃ¥ .... sindssyg

Faldskærm Boituva 2009/06/06

Kommentarer

I, sprang Sergio og Mi :)

Erstat flere linjer med kun én i PHP

Kommentarer

Jeg har slået hovedet lidt for at finde de regulære udtryk, men her går:

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

Quick tip Linux i kommandovej. Bare sætte citationstegn og enkle. Her går:

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

Referrer test

Kommentarer

Jeg har lavet en test side for at se, hvordan henvisere (både server-side og Javascript) Vil arbejde, hvis Google ændringer STI url søgestrengen på søgeresultatsider:

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

Webcrawling tjenester

Kommentarer

Antallet af web apps er nødt til at gennemsøge internettet i en eller anden form er så enorm, og det bliver større hver eneste dag, at enten jeg er den dummeste person på Jorden og Google ikke kan eller der er ingen enquiry.c sælger webcrawling tjenester.

Folkens, nogen til at behovene for denne. Den målte service (ligesom S3) WHERE forespørgsel kunder Kan du app gennemgår resultaterne.

Jeg vil give Dem to grunde hvorfor jeg skulle i denne mig selv.

Årsag nummer ét:
Det er billigere og ikke nogen andens kernekompetence. Hvordan Friendfeed indeks Alle disse websider? Hvem bekymrer sig? De bør ikke b gøre dette. At skrive en god web crawler er hårdt. De har brug for data * * Når det er er * ny *.

Ã…rsag nummer to:
Jeg har så mange ideer, men jeg vil gerne fokusere på prototyper dem i stedet for at skrive crawler. Det ville virkelig hjælpe devs omkring verden, hvis de bare kunne bruge nogle API til at gennemgå websider.

Sagde jeg API? Ja, det er det punkt. Nogen må skrive en crawler med en API:

POST / api / i = http://www.example.com/file.html
user = navn
pass = ord
NÃ¥r = 00 00,12 * * 1-5
udløber = 2592000

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

"Udløber" er antallet af sekunder (siden nu), at dette ikke vil kravle længere for nødvendig.

Denne anmodning ville vende tilbage en "id", der skal anvendes senere, når kunden er klar til at hente websiden fra os.

Der er selvfølgelig også:

POST / api / i = regex
format = rss
content_regex some_string = (.*) stinker?

Så du vide, når nogen siger dit produkt stinker. Og:

POST / api / i = regex
name = (jpg, gif)
bredde = LT200
højde = LT200
type = image

LT er mindre end, ville der være Også BT og EQ.

Så / api / i = s anmodning om at indsætte en gennemgang. Du kan anmode af websider / api / g =

POST / api / g = http://www.example.com/file.html
kun = # some_node_id. some_node_class

XPath på "kun".

Da kunden ville betale for overførte dato, vil det suge for at få kunden til at søge / api / g = gang han har brug for noget. Og det er ikke meget anderledes end at skrive din egen crawler, er ikke? Faktisk er det på grund af robots.txt parsing html, server belastning, og meget mere. Men en masse mennesker tror, at webcrawlere skriftligt er let og skalerbar.

Anyway! The Magic sker, når du gennemgår webside og tilføje det passer reglen af en af dine kunder. Nu skal du blot fortælle dem en liste over ids tidligere sidde ved / api / i = der er klar. De oprette forbindelse til din server og hente filer.

Og hvis du har ids:

POST / api / g = 111.112.113
komprimere = True

Hvilket ville vende tilbage indsætte hits med ids 111 og 112 og 113 i zip-filen.

Endnu en god ting: stordriftsfordele. Alle har brug den nyeste RSS feeds. Du kan få masser af kunder anmoder om de samme foder, men du bliver nødt til kun at hente det én gang.

Denne tjeneste ville ikke have noget at gøre med søgning, Google, dybe web, semantisk web, uanset hvad. Bare sørg for folk vil vide, hvornår en webside er opdateret.

Wikipedia med blot links

Kommentarer

Så jeg har lige læst, hvordan Britannica har planer om et nyt websted version, for det meste til "konkurrere" med Wikipedia. Også Britannica's CEO taler om forholdet mellem Googles søgeresultatsider og Wikipedia's.

Anyway, en kritik er gyldig, Wikipedia-artikler ikke altid den bedste kilde til information om emnet. Og det er skrevet af være en, der søger dagligt på Google efter vilkår efterfulgt af ordet "wikipedia", da normalt; Wikipedia Har at resultaterne er gode nok.

Så her er min idé, dump database med Wikipedia's artikel titler, og lad folk indsende links til disse titler. Og lad brugerne stemme Reddit-Digg stil. Find en måde at behandle spammer bot og du er klar til.

For eksempel Wikipedia artiklen for "Design_pattern_ (computer_science)" (Hvilket jeg har åbent i et faneblad lige nu) ville b bare en bunke af links til brugerne andre sider, kan-gøre hvad du vil til dem, så du kan sortere i de links af relevans.

The've sagde på min tidligere post, jeg har været følelse doven sidst, ellers ville jeg gå ud og gennemføre denne.

Du kan spørge, hvorfor ikke bare tilføje brugerne ville upvote, der linker til Wikipedia? Nå, sjældne er de artikler på Wikipedia, der accepterer "fuld" links på henvisningerne sektion. De fleste links er sat for citater, og disse anvendes til at retfærdiggøre netop små text / sætninger Tekstuddrag / fakta og ikke på hele websider. Og "eksterne links" i Wikipedia-artikler aren'ta sorteret, og det er hele meningen med min idé: p

Gå nu og bygge det, og husk at købe mig en øl, hvis du laver en sorteper.

HTFITIP er hjemmesiden, hvor du kan se, hvad en funktion kaldes fra et sprog i et andet (eller en gennemførelse).

Ideen cam til mig efter det ellevte gang, jeg stillede mig selv, hvordan fanden er trim i Python? Det hedder strip ved den måde.

Hjemmesiden er meget enkel. PÃ¥ forsiden er der denne form:

Hvordan fanden er _____'s _____ i _____?

Det første rum er "source" programmeringssprog navn, men den anden vil vi sætte funktion / metode navn, og den tredje, "target" programmeringssprog. Kildesproget er valgfrit.

En god kilde til de ... source programmeringssprog er PHP's (massive) liste funktioner . Først og fremmest synes at have PHP's funktion er at alt, og der er ingen namespace, så det er lettere for os at opbygge et indeks over det. For det andet er det en velkendt sprog. For det tredje er det første sprog af en masse mennesker, så det er meget muligt, at en masse mennesker gerne vil vide, hvad den tilsvarende for PHP's funktion X i det nye sprog, de er ved at lære, så hvis vi skal starte et sted Kunne være godt på denne måde.

Når brugeren vælger den kilde programmeringssprog fra dropdown, en Ajax opkald automatisk får alle navnene på funktionerne så når brugeren typer navnet på det andet felt, det auto-fuldfører. Så han vælger "target" sprog på det tredje felt.

Hvordan fanden er PHP's trim i Python? (Klik anfører)

Hvis forholdet er allerede blevet Oprettet i den database, vi præsenterer svaret til brugeren:

PHP's trim bånd i Python kaldes. (Link til håndbogen side på Python's bånd ville være rart)

Hvis ikke, kan vi lade brugeren gøre dette forhold. Hvis det ikke er muligt, siger, Python har ikke en array_intersect_uassoc funktion på hvert modul, vi lader brugeren skrive en gennemførelse, wiki-stil.

Web 2,0 baby, der giver brugerne alt det indhold, vi gør alle de penge.

Og hjemmesiden backend er enkel. Listen af programmeringssprog og dens funktioner, og forholdet mellem funktioner / metoder, og somekind af wiki ting at lade folk indsende implementeringer.

Jeg har været følelse doven sidst så gå videre og gennemføre det, hvis du ønsker det. Skal være en nyttigt redskab.


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 rabat på hosting Dreamhost!
Brug "PROMO CODE" inerti. LAMP med 20GB plads og 1 TB for overførsel.

Kategorier