Hva er sammenhengen mellom HipHop og PHP?
Etter at jeg la om det tekniske bak byeskille.no har en del vanlige programvaresnutter for servere blitt byttet ut med andre og kanskje mer effektive. I dag stiftet jeg bekjentskap med et serverprogram som døper nye versjoner etter kjente rappere. Akkurat nå kjører byeskille.no HHVM versjon Kanye West.
Dette er nok ikke interessant for så veldig mange, men en del av lenkene kan være greie for andre som tenker å sette opp samme type programvare.
HHVM er serverprogramvare for behandling av dynamisk innhold og scripts, eller som de selv kaller det server-side scripting.
For nettsidebruk er PHP et svært vanlig slikt script-språk. Plattformen WordPress som driver denne nettsiden er basert på PHP, og vanligvis drives slik sider av programvare med samme navn: PHP (eller PHP-FPM).
HHVM som har det fulle navnet HipHop Virtual Machine er serverprogramvare laget av Facebook for å drive ulike deler av nettsider og tjenester som de tilbyr sine brukere. HHVM er laget for å kunne behandle PHP, og er til dels mye raskere enn f.eks. PHP5-FPM (se eksempler her og her).
Dermed kan HHVM i mange tilfeller helt erstatte PHP-programvaren og gi bedre ytelse og opplevelse for brukeren. Litt spesielt at en slik modul som brukes av svært mange nettsider kan byttes ut med noe Facebook har laget.
Her er siste annonsering av ny versjon slik Facebook formidlet den (på Facebook så klart):
Litt om annen programvare som nå kjører byeskille.no:
- Apache er byttet ut med Nginx
- MySQL er byttet ut med MariaDB
- + serveren kjører Varnish cache for å øke hastighet og tåle mer trafikk (ikke det at det er så veldig mye trafikk på denne siden ;)
Det kan nevnes at jeg kjører et slikt oppsett for webserver og caching for å få https-levering av sidene:
nginx TLS/SSL frontend proxy -> Varnish cache (lokalt på samme maskin) -> Nginx backend (lokalt på samme maskin) med kobling mot HHVM for PHP og MariaDB for database
Det å kjøre Varnish med TLS-kryptering og https-adresser virker det ikke som det er veldig mange som gjør, og dermed slet jeg litt med å finne perfekte instruksjoner. Ved å lese disse sidene fikk jeg det likevel til:
Varnish as reverse proxy with nginx as web server and SSL terminator @ mikkel.hoegh.org
Nginx + Varnish : Cache even in HTTPS by offloading SSL @ wiki.deimos.fr
WordPress-oppsett med Varnish: 10 Million hits a day with WordPress using a $15 server
Alt sammen kjører på en server i et datasenter i Nederland leid hos DigitalOcean.
For å få satt opp grunnoppsettet for webservern har jeg hatt mye glede av serien «Web served» hos Ars Technica – anbefales virkelig selv om det er litt tid siden det ble publisert nå.
Og det måtte litt god gammeldags IRC til for å finne ut hvor HipHop-en hos Facebook kom fra:
[8:40pm] Byeskille: stupid question, but here it comes: Why is HHVM named HipHop Virtual Machine?
[8:40pm] Scyks: facebooks first prove of concept was named by HipHop
[8:44pm] Scyks: Byeskille: the initiatin person at facebook is named by Haiping Zhao and he startet «HipHop for PHP»
[8:45pm] Scyks: Byeskille: this was just a codename by starting prove of conept in 2008
[8:46pm] Byeskille: ok, thanks for a detailed look back in time at Facebook
[8:47pm] Scyks: when you live in Germany, you can buy a magzin called PHPMagazin – there are 5 articles about hhvm and hack inside
[8:47pm] Scyks: Sebastian Bergman (PHPUnit) wrote the article about the history and how it works
[8:55pm] fred: Scyks: Byeskille: not quite right – it was originally hphp
[8:55pm] fred: it was renamed to HipHop when we released it externally, as the PHP license wouldn’t let us call it hphp
[8:55pm] Scyks: fred: HPHPc and HPHPi?
[8:55pm] fred: originally just hphp
[8:56pm] fred: then hphp + hphpi – then when hhvm came along, hphp got renamed to hphpc
[8:56pm] fred: (I think, not so sure there)
[9:05pm] Byeskille: fred: so the story about it being named partly after it’s lead developer is not so straight forward?
[9:06pm] fred: Byeskille: it doesn’t really change anything – just change the question to ‘Why was it called hphp?’ ;)
[9:07pm] Byeskille: :)
(fra irc-kanalen #hhvm på freenode-nettverket – brukeren fred er en av utviklerne på hhvm-prosjektet i Facebook)