Roxen Challenger HTTP-webbservern är ett under före sin tid. Det är ett djärvt uttalande som är svårt att bevisa för en webbserver jämfört med Apache HTTP-serverns fantastiska framgång. Innan du slutar läsa så bör du tänka på att det inte är något fel med att ha två subtilt olika men ändå väldigt bra verktyg.
Apache är designad från grunden för att vara en enkel, öppen, säker, högpresterande HTTP-server, och det är den verkligen. Apache är det naturliga valet för nästan alla webbadministratörer. Apache är dock inte direkt intuitiv att konfigurera, konfigurationen i fråga är tre platta textfiler. Apache lider också av en monolitisk struktur (även om plug-in modularitet är ett nytt alternativ om du kompilerar det) som kräver omkompilering av källkoden när du gör ändringar eller lägger till moduler (som proxy, databasåtkomst, etc.).
Roxen tar ett helt annat förhållningssätt till HTTP-serverdesign. Roxen är lätt att installera och konfigurera. Användaren behöver bara göra den normala ./configure och skapa sekvenser efter att ha packat upp tar-filen och läst README-filen. Detta har fungerat felfritt ett dussin gånger för mig på Intel Red Hat 4.2- och 5.0-maskiner. Efter att ha kompilerat Pike-tolken (vi kommer till det), säger installationsskriptet till dig att peka din webbläsare till http://localhost:x/, x är en slumpmässig tilldelad port där konfigurationsgränssnittsservern lyssnar efter din webbläsare.
Om du pekar en webbläsare på den URL:en så får du upp det online, webbcentrerade konfigurationsgränssnittet. Den första skärmen ställer in information om konfiguration, användare och lösenord för efterföljande konfigurationssessioner. Omedelbart kan virtuella servrar läggas till, och att lägga till en virtuell server går på ett kick. Min vanliga sekvens är att hitta en ledig IP och binda hostname.domain till den. Därefter skapar jag det aliaserade Ethernet-gränssnittet med netcfg som anger den valda IP-adressen. Jag byter till Roxens konfigurationsgränssnitt och använder enkla peka-och-klick-menyer och lägger till en ny server som binder den till gränssnittet som just skapats. Roxen upptäcker detta automatiskt och gör en omvänd sökning åt mig. Voilá – jag har en omedelbar virtuell server. Hela processen tog mindre tid än att fixa till en kopp kaffe.
När du skapar servern ställer Roxen frågor om vilken typ av server som önskas. Valen består av Bare Bones, Standard, IPP (Internet Presence Provider), Proxy eller en kopia av konfigurationerna för eventuella aktuella servrar i systemet. Detta ger mycket flexibilitet när du arbetar med mer än bara några virtuella servrar.
Vart och ett av de fyra valen är en viss uppsättning laddade moduler för varje server. Moduler kan blandas och matchas för att skapa anpassade servrar. Moduler, även skrivna i Pike, kan laddas och användas i farten, och alla moduler har ett standardkonfigurationsgränssnitt som ansluts till serverkonfigurationsgränssnittet. Moduler inkluderar filsystemet, autentisering, databasåtkomst, CGI- och FCGI-körning, manipulering av grafik i farten och mer.
Så hur sätts denna fantastiska server ihop? Roxen är skriven på Pikespråket. Pike är ett tolkat, C-liknande språk baserat på ett äldre programmeringsspråk för MUD-system. Pike är fullt utvecklad och har en graciös, ren stil som är så lik C att vilken C-programmerare som helst kan lära sig det på några minuter. Detta gör det enkelt att skriva anpassade Roxen-moduler. Pikes hemsida har utmärkt, intelligent skriven dokumentation som är helt komplett och inkluderar ett praktiskt funktionsindex där många gamla bekanta kompisar från ANSI C-biblioteken kan hittas.
Nackdelen är att Pike, som är ett bytekodtolkat språk, är långsammare än kompilerat och optimerat C med en märkbar marginal. Roxen 1.1 är också lite buggigt, och Roxen 1.2 är fortfarande i beta. Efter att ha pysslat med 1.2 (som installerades lika rent som 1.1) tyckte jag att det var väldigt coolt med många nya moduler, av vilka några inte är tillgängliga för Apache, såsom on-the-fly wizardgeneratorer och automatisk tabellformatering av SQL-hämtade data. En ny uppdateringsmodul kontaktar Roxens centralserver och uppgraderar servern och alla moduler till de senaste felsökta versionerna samt erbjuder att ladda ner eventuella nya moduler som Idonex har skapat också. 1.2 använder också den nya gängningen som är inbyggd i den senaste versionen av Pike, vilket ökar dess prestanda för system med hög eller excentrisk belastning och gör att den kan dra fördel av multiprocessorsystem.
Den mest kraftfulla modulen i Roxen-setet är Roxen Markup Language (RXML). RXML ser ut som HTML, och det skrivs direkt in i HTML-koden. När en klient hämtar ett dokument från servern, analyserar servern först dokumentet för RXML-taggar, och ändrar HTML-utdata baserat på de taggar som används. Detta är i princip server-side scripting med server-side som inkluderar Apache-språk, men renare.