Halusin tietää, ylityöt, kuinka monta cache osumaa ja piti oli menossa minun tapauksessa. Haettiin paljon ja lopulta löytyi tämä perl script:
http://code.google.com/p/memcache-top/
Käyttö on hyvin yksinkertaista. Tallenna tiedosto, anna sille täytäntöönpano oikeudet, sitten vain komennolla:
. / Memcache-top.pl-komentoja, kumulatiivinen
Tässä on esimerkki tuotanto:
Tuntuu Teen hyvin, välimuistin oikeat osat! Hit yli 80% ja vain puolet minun jaettu muisti memcached olla käytössä ... (että koska minulla oli äskettäin uudelleen, joten se yleensä; Pitää täynnä).
Olen kirjoittanut siitä, miten määrittää Apache, mod_python ja Django ja miten toteuttaa lighttpd taakse Apache .
Viime aikoina olen päättänyt isäntä minun eniten vierailtu sivusto eri VPS tarjoajaa [1], ja alkoi etsiä jotta ajantasaistaa minun tietoa Django käyttöönottoa. Tein asioita toisin tällä kertaa käyttäen mod_wsgi ( suositeltava tapa käyttöönottokustannukset Apache ja Django ), configuring Apache ja lighttpd takana dynaamista sisältöä (toisin sanoen lighttpd toimii staattinen media).
Tein kaiken alle parin viime päivän aikana ja ei kirjoitti asioita olen tehnyt, koska se liittyi paljon kokeilua (ja erehdyksen) minulle. Kuten olen kirjallisesti tämän artikkelin perusteella muisti ja tarkkailun minun uskottu arkistoida. Jos sinulla on ongelmia, jätä kommentti, ja aion selvittää mahdolliset puutteet.
Voit tehdä sen:
Voin valita Ubuntu Linux distro, ja asennus jotain on helppoa sitä. sudo apt-get install package-name . Tämä osa on kattavasti ympäri www, joten en aio kommentoida yksityiskohtaisesti miten se tehdään. Riittävää todeta, joitakin paketteja Olen asentanut Olivatko apache2 , libapache2-mod-wsgi ja lighttpd .
Koska säädös lighttpd Onko ensisijainen palvelin oman verkkotunnuksen, päätin siirtyä Apachen porttiin 81:
sudo vi / etc/apache2/ports.conf
Korvaa nykyinen ip: portti yhteyksien tutkielma:
NameVirtualHost 127.0.0.1:81
Kuuntele 81
Jos laitat oman Python-moduuleille on uudempi Ubuntu laitosten on muuttunut /usr/local/lib/python2.6/dist-packages/ . Siksi olen ladannut Django, minun projekti ja muut tarvittavat moduulit (joita ei asenneta apt-get ) tähän hakemistoon ja jättää minut rakenne jälkeen:
/ Usr/local/lib/python2.6/dist-packages/django /
/ Usr/local/lib/python2.6/dist-packages/my_project_name /
Mod_wsgi asiakirjat on erinomainen artikkeli Django yhdentymistä , mutta se on melko pitkä. Kannattaa lukea sen silti, koska siellä on paljon vaihtoehtoja, että voit halutessasi käyttää. Seuraavassa cheatsheet.xml:
Luo asiakirja juurruttaa verkkotunnuksesi nimi:
sudo mkdir / var / www / example.com
Joka luo tiedoston ladata mod_wsgi projektillasi kokoonpano:
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
Näiden sisältö:
tuonti sys
tuonti ossys.path.append (/ usr/local/lib/python2.6/dist-packages)
os.environ ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings "tuonti django.core.handlers.wsgi
django.core.handlers.wsgi.WSGIHandler hakemus = ()
Luo verkkotunnuksen asetustiedostosta Apache:
sudo vi / etc/apache2/sites-available/example.com
Näiden sisältö:
<VirtualHost 127.0.0.1:81>
ServerName example.com
ServerAdmin username@example.comDocumentRoot / 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>
Valinnat-indeksien
Tilaa kieltää, sallia
Salli kaikkien
</ 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>
Valinnat-indeksien
Tilaa kieltää, sallia
Salli kaikkien
</ 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>
Tilaa kieltää, sallia
Salli kaikkien
</ Directory>
</ VirtualHost>
Ota se:
cd / etc/apache2/sites-enabled /
sudo ln-s .. / sites-available / example.com
Käytin MySQL Performance Blogi "käänteinen proxy lighttpd artikla pohjana oman kokoonpanon. Siksi meillä on url http://example.com/server-status , mikä edellyttää todennusta, jotta voimme nähdä Apachen-palvelimen tila.
Luo hakemisto virhelokit:
sudo mkdir / var / log / lighttpd / example.com
Luo verkkotunnuksen kokoonpano tiedoston lighttpd:
sudo vi / etc/lighttpd/conf-available/20-example.com.conf
Näiden sisältö:
server.modules + = ("mod_auth"
"Mod_status"
"Mod_proxy"
)$ HTTP ["host"] = ~ "(^ | \.) Esimerkki \. Com $" (
$ HTTP ["url"]! ~ "\. (Js | CSS | gif | jpg | png | ico | txt | swf | html | htm) $ '(
proxy.server = ("" => (
("Host" => "127.0.0.1", "portti" => 81)
))
)server.document-root = "/ var / www / example.com /"
server.errorlog = "/ var / log / lighttpd / example.com / error.log"
Kerro listing.activate = "poista"auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/ server-status" => (
"Menetelmä" => "perus"
"Valtakunta" => "status",
"Vaadi" => "valid-user"
)
)
)
On linjat syytä mainita edellä kokoonpano:
$ HTTP ["host"] = ~ "(^ | \.) Esimerkki \. Com $" (
Tämä huivi sisällä direktiivejä sovelletaan vain pyyntöihin example.com.
$ HTTP ["url"]! ~ "\. (Js | CSS | gif | jpg | png | ico | txt | swf | html | htm) $ '(
proxy.server = ("" => (
("Host" => "127.0.0.1", "portti" => 81)
))
)
Nämä lähettää kaikki pyynnöt asiakirjoja ei pääty määritettyyn laajennukset ip 127.0.0.1, portti 81, Apache MISSÄ asuu. Pohjimmiltaan kaikki mikä on staattista sisältöä (tai oikeammin määritelty | erotettu säännöllinen lauseke), Will Be palvelisi lighttpd.
cd / etc / lighttpd / conf-käytössä /
sudo ln-s .. / conf-käytettävissä / example.com.conf
Kerro tiedostojärjestelmä jossa projektin ja Django's admin staattinen sisältö sijaitsevat:
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 /
Lopuksi käynnistä kaikki niin uusin kokoonpano voidaan soveltaa
sudo / etc/init.d/apache2 uudelleen
sudo / etc / init.d / lighttpd uudelleen
Kun kävijä menee sivuston (example.com), pyyntö lighttpd osuu ensin. Jos asiakirja polku ei pääty merkkijonoa Listamme staattisen sisällön pidennyksiä pyyntö välityspalvelimella Apache portista 81, lighttpd Muuten Will palvelee itse.
Ja siinä se, jos muistan oikein. Did I miss jotakin? Kommentti mieleisekseen.
[1] linodivas, jos olet kiinnostunut. Lähinnä siksi, kaistanleveys on halvempaa. Jos etsit asian linodivas, linodivas linodivas alennus koodi tai edistäminen koodi, allekirjoittaa tämän linkin hyvitettävä minulle asian. Kiitos ![]()
Joten .... hullu
I, Sergio ja hyppäsi Mi ![]()
Löin hänen päänsä hieman löytää säännöllinen lauseke, mutta tässä menee:
Vihje ja Linux komentorivin. Laita lainausmerkit ja yksinkertainen. Täällä menee:
scp username@192.168.0.1:"'tem espacos aqui'"
Olen tehnyt testisivu miten viitteet (sekä server-side ja Javascript) toimii jos Google muutoksia STI url Kyselymerkkijonon hakutulossivuilla:
Määrä verkkosovelluksia, jotka on indeksoida Web jossain muodossa tai toisessa on niin valtava, ja se on tulossa suurempi päivittäin, että joko olen tyhmin ihminen maan päällä, ja Google voi tai siellä mitään enquiry.c myy Web-indeksoinnin palvelut.
Folks, joku tarpeisiin tämän. Mitattu palvelu (kuten S3) Jos kysely puvuista Voitko app on indeksoinnin tulokset.
Aion antaa teille kaksi syytä, miksi minun pitäisi tämän itse.
Syy numero yksi:
Se on halvempaa eikä jonkun muun ydinosaamista. Miten Friendfeed indeksi Kaikki näiden sivujen? Ketä kiinnostaa? Niiden ei pitäisi b näin. Kirjoittaminen hyvä web crawler on kova. Ne tarvitsevat tiedot * * When It's * uusi *.
Syy numero kaksi:
Olen niin paljon ideoita, mutta haluan keskittyä prototyyppien Them kirjoittamisen sijaan indeksoija. Se todella auttaisi devs maailmalla jos he vain saisivat käyttää joitakin API indeksoida sivuja.
Sanoinko API? Kyllä, se on kohta. Joku tarvitsee kirjoittaa indeksoijalle API:
POST / api / i = http://www.example.com/file.html
user = nimi
siirrä = sana
Kun = 00 00,12 * * 1-5
päättyy = 2592000
Joo, crontab syntaksi. "Kun" myös hyväksyvänsä "kerran" ja "onchange".
"Vanhene" on monta sekuntia (koska nyt), että tämä ei indeksoi enää tarvita.
Tämä pyyntö palauttaa "id", jota käytetään myöhemmin, kun asiakastuki on valmis ladata verkkosivun meiltä.
Tietenkin on olemassa myös:
POST / api / i = regex
format = rss
content_regex some_string = (.*) perseestä?
Joten tiedät Kun joku sanoo, tuotteen perseestä. Ja:
POST / api / i = regex
nimi = (jpg, gif)
leveys = LT200
height = LT200
type = image
LT alle, siellä olisi myös GT ja EQ.
Joten, / api / i = s pyytää lisää indeksoida. Voit pyytää vuoteen kotisivut / api / g =
POST / api / g = http://www.example.com/file.html
vain = # some_node_id. some_node_class
XPath on "vain".
Koska costumer maksaisi siirtää päivämäärää, se imee saada costumer kysely / api / g = kerta hän tarvitsee jotain. Ja se ei ole kovin erilainen kuin kirjallisesti oman crawler, ei? Oikeastaan se johtuu robots.txt jäsentämiseen html, palvelimen kuormitus, ja paljon enemmän. Mutta monet ihmiset ajattelevat, että indeksoijat kirjoittaminen on helppoa ja skaalautuva.
Ainakin! Magic tapahtuu, kun indeksoida sivun ja lisää se vastaa sääntöä, jonka joku puvuista. Nyt sinun tarvitsee vain kertoa heille luettelo tunnukset aiemmin istua / api / i = jotka ovat valmiita. Ne ottavat yhteyttä palvelimeen ja ladata tiedostoja.
Ja jos sinulla on tunnukset:
POST / api / g = 111112113
puristaa = True
Joka palauttaa lisätä pyyntöjä tunnukset 111 ja 112 ja 113 zip-tiedosto.
Vielä yksi hyvä asia: mittakaavaetuja. Jokainen tarvitsee uusin RSS-syötteet. Sinulla voi olla kymmeniä puvuista pyynnön samaa rehua, mutta sinun täytyy vain napata se kerran.
Tämä palvelu ei olisi mitään tekemistä etsiä, Google, syvä web, semanttinen web riippumatta. Varmista vain ihmiset tietävät, milloin verkkosivu päivitetään.
Joten olen vain lukenut miten Britannica suunnittelee uutta website, enimmäkseen "kilpailla" Wikipedian kanssa. Myös Britannica toimitusjohtaja puhuu suhdetta Googlen hakutulosten ja Wikipedian.
Ainakin yksi kritiikki on voimassa, Wikipedia-artikkeleita ovat joskus ole paras tietolähde aiheesta. Ja tämä on kirjoittanut lasketaan henkilö joka etsii päivittäin Google termejä ja sana "wikipedia", koska yleensä, Wikipedia on siitä, että tulokset ovat riittävän hyviä.
Joten tässä on minun ajatus, dump tietokanta Wikipedian artikkelin otsikot, ja antaa ihmisten tehdä linkit näihin osastoihin. Ja antaa käyttäjille äänestys punertava-Digg-tyyliin. Etsi tapa käsitellä roskapostittajan bot ja olet valmis.
Esimerkiksi Wikipedia-artikkelin "Design_pattern_ (Tietojenkäsittelytieteet)" (jonka olen auki välilehdellä juuri nyt) olisi b vain joukko linkkejä käyttäjien muita sivustoja, jotka voi-tehdä mitä haluat heidän kanssaan, jotta voit lajitella ja linkit niiden merkityksellisyyden.
The've sanoi minun edellinen postitse, olen ollut tunne laiska viime aikoina, muuten menisin ja toteuttaa.
Saatat kysyä, miksi ei vain lisätä käyttäjät upvote Tämä linkki Wikipedia? No, harvoin on Wikipedia-artikkelissa, jotka hyväksyvät "täyttä" linkit sen viitetiedot jakso. Useimmat linkit ovat järjestetään sitaattien ja niitä käytetään perustelemaan vain pieni teksti / lauseita otteita / tosiasioihin eikä koko kotisivut. Ja "ulkopuolisten linkkien" osa Wikipedia-artikkeleita aren'ta lajitellaan, ja se idea minun idea: p
Nyt mene ja rakentaa sitä ja muistaa ostaa minulle oluen, jos teet pukittaa.
HTFITIP on sivusto, jossa voit nähdä, mitä toiminto on nimeltään kielestä toiseen (tai täytäntöönpanoa).
Ajatus cam minulle jälkeen yhdennentoista kerran kysyin itseltäni, miten hitossa viippauksen Pythonilla? Sitä kutsutaan nauhat muuten.
Sivusto on hyvin yksinkertainen. On etusivulla, siellä tämä lomake:
Miten vitussa on _____ n _____ in _____?
Ensimmäinen tila on "lähde" ohjelmointikieli nimi, toinen me laitetaan toiminto / menetelmän nimi ja kolmas, "tavoite" ohjelmointikieltä. Lähde kieli on valinnainen.
Hyvä lähde ... lähde ohjelmointikieli on PHP: n (massiivinen) luettelo toiminnoista . Ensinnäkin näyttää PHP: n tehtävänä on kaikkea, ja ei ole namespace joten se helpottaa meitä rakentamaan indeksi sitä. Toiseksi, se on laajalti tunnettu kieli. Kolmanneksi, se on ensimmäinen kieli paljon ihmisiä, joten on täysin mahdollista, että monet ihmiset haluavat tietää, mitä vastaavat PHP: n toiminta X uutta kieltä he oppimista, joten jos meidän on aloitettava jostakin Might hyvin tällä tavalla.
Kun käyttäjä valitsee lähteen ohjelmointi kielen avattavasta, Ajax puheluun automaattisesti saa kaikkien toimintojen nimet silloin, kun käyttäjä nimeä toisessa kentässä, se auto-täydentää. Sitten hän valitsee "tavoite" kieltä kolmas kenttä.
Miten vitussa on PHP viippaus Pythonilla? (Klikkaa toimittaa)
Jos suhde on jo saavista tietokantaan, esittelemme vastaus käyttäjälle:
PHP viippaus-sarjakuvaa Python kutsutaan. (Linkki käsikirjan sivu Python's nauhat olisi kiva)
Jos ei, voimme antaa käyttäjän tehdä tätä suhdetta. Jos se ei ole mahdollista sanoa, Python ei ole array_intersect_uassoc toiminto kaikki moduulit, annamme käyttäjäryhmä Täytäntöönpano, wiki-tyylillä.
Web 2.0 vauva, toimittaa käyttäjille kaikki sisältö, teemme kaikki rahat.
Ja sivusto backend on yksinkertainen. Luettelo ohjelmointikieli ja sen toiminnoista, ja suhde toimii / menetelmiä, ja vastava wiki tavaraa antaa ihmisten tehdä toteutuksia.
Olen tuntenut laiska tapahtumat niin mene eteenpäin ja toteuttaa tämä, jos haluat. Olisi hyödyllinen työkalu.