-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der Erfindung.
-
Diese
Erfindung betrifft Computersysteme zum High-Performance-Shared-Webhosting. Insbesondere betrifft
diese Erfindung Webserver, die multiple Websites wirksam hosten
können,
während
auf den Servern die Datensicherheit aufrechterhalten wird.
-
Das
Internet und World Wide Web (Web) bilden eine Gruppe miteinander
verbundener Computernetzwerke, die zum Zugriff auf eine wachsende
Informationsmenge und -vielfalt verwendet werden können. Das Web
ist ein dezentrales System und funktioniert als ein Client-Server-gestütztes Informationspräsentationssystem.
Informationen, die zum Zugriff über
das Web gedacht sind, werden in Form von „Seiten" auf als Server oder Webserver bekannten
Computern gespeichert. User können
auf eine Web-Seite unter Verwendung von Universalcomputern, nachstehend
als Clients bezeichnet, zugreifen durch Angabe des Uniform Resource
Locators (URL) der Seite.
-
Wenn
ein Client einen bzw. eine URL angibt, welche sich in einer Website
befindet, wird ein Teil der URL, bekannt als der Domain-Name, an
einen Domain-Server weitergegeben zur Übersetzung in eine Netzwerkadresse.
Die Netzwerkadresse gibt die Internet-Protokoll(IP)-Adresse des
gewünschten
Servers an. Die Client-Anfrage wird an den Server, der die Netzwerkadresse
aufweist, weitergeleitet. Der Server verwendet den Pfadnamen in
der URL, um die durch den Clienten angeforderte Webseite ausfindig
zu machen. Eine Kopie der Webseite wird dann an den Clienten gesandt
zur Betrachtung durch den User.
-
In
modernen Web-gestützten
Computersystemen ist ein Webserver in der Lage, mehrere Websites
zu hosten. Jedoch treten unter starker Belastung Website-Service-Verzögerungen
auf. Tatsächlich
können
von aktuellen Usern Unterbrechungen beobachtet werden, und neue
User der Site können
abgewiesen werden.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß offenbarten
Ausführungsformen
der Erfindung ist ein Webserver imstande, wirksam mehrere Websites
zu hosten. Der Aufwand, insbesondere der Steuerungsaufwand, wird
merklich vermindert, wodurch der Server in die Lage versetzt wird,
sogar unter starken Belastungsbedingungen eine große Anzahl
gleichzeitiger User ohne Serviceverzögerungen oder Unterbrechungen
zu versorgen.
-
Die
Erfindung stellt ein Verfahren zum Hosten mehrerer Clients auf einem
mit einem Datennetzwerk verbundenen Server bereit, wobei das Verfahren
ausgeführt
wird durch Einrichten eines ständigen
Controller-Prozesses auf dem Server, und, ansprechend auf eine Browser-Anfrage
von einem User nach Zugriff auf eine Ressource von einem der Clients,
Erzeugen eines Child-Prozesses von dem Controller-Prozess, und Bediener
der Browser-Anfrage mittels des Child-Prozesses.
-
Ein
Aspekt des Verfahrens beinhaltet das Verknüpfen einer User-Kennung des
Child-Prozesses mit dem einen Clienten, und die Begrenzung des Zugriffs
des Child-Prozesses auf einen vorbestimmten Speicherbereich des
einen Clienten.
-
Gemäß einem
anderen Aspekt des Verfahrens weist der Controller-Prozess Überwachungsberechtigungen
auf.
-
Die
Erfindung stellt ein Computersoftwareprodukt bereit, welches ein
computerlesbares Medium beinhaltet, in dem Computerprogrammbefehle
gespeichert sind, wobei die Befehle, wenn sie durch einen Computer
gelesen werden, den Computer dazu veranlassen, ein Verfahren zum
Hosten mehrerer Clients auf einem Server, der mit einem Datennetzwerk
verbunden ist, durchzuführen,
was ausgeführt
wird durch Einrichten eines ständigen
Controller-Prozesses auf dem Server und, ansprechend auf eine Browser-Anfrage
eines Users nach Zugriff auf eine Ressource von einem der Clienten,
Erzeugen eines Child-Prozesses
des Controller-Prozesses, und Bedienen der Browser-Anfrage mittels
des Child-Prozesses.
-
Die
Erfindung stellt ein Datenverarbeitungssystem zum Hosten mehrerer
Clients auf einem mit einem Datennetzwerk verbundenen Server bereit.
Der Server weist für
jeden der Clients reservierte Ressourcen auf und ist betriebsfähig bzw.
dazu in der Lage, einen ständigen
Controller-Prozess einzurichten. Als Reaktion auf eine Browser-Anfrage
eines Users nach Zugriff auf eine Ressource von einem der Clients,
ist der Server dazu in der Lage, einen Child-Prozess von dem Controller-Prozess zu
erzeugen und die Browser-Anfrage mittels des Child-Prozesses zu
bedienen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Zum
besseren Verständnis
der vorliegenden Erfindung wird beispielhalber auf die detaillierte
Beschreibung der Erfindung Bezug genommen, wobei die Beschreibung
zusammen mit den folgenden Zeichnungen zu lesen ist, wobei gleiche
Elemente mit gleichen Bezugszeichen versehen sind, und wobei:
-
1 ein
Blockdiagramm ist, das eine typische Konfiguration für einen
Hosting-Webserver, gemäß einer
offenbarten Ausführungsform
der Erfindung zeigt;
-
2 ein
Blockdiagramm einer anderen Anordnung ist, in der ein Host-Site-Provider
Hardware mit vielen im Netzwerk befindlichen Webservern und Speichereinrichtungen
gemeinsam nutzt gemäß einer
offenbarten Ausführungsform
der Erfindung; und
-
3 ein
Flussdiagramm ist, das ein Verfahren des sicheren Webhostings gemäß einer
offenbarten Ausführungsform
der Erfindung zeigt.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
In
der folgenden Beschreibung werden zahlreiche spezifische Details
dargelegt, um für
ein gründliches Verständnis der
vorliegenden Erfindung zu sorgen. Für den Fachmann ist jedoch ersichtlich,
dass die vorliegende Erfindung ohne diese spezifischen Details umgesetzt
werden kann. In anderen Beispielen sind wohlbekannte Schaltkreise,
Steuerungslogik, und die Details von Computerprogrammbefehlen für konventionelle
Algorithmen und Prozesse nicht im Detail gezeigt, um die vorliegende
Erfindung nicht unnötig
unklar zu offenbaren.
-
Ein
Softwareprogrammiercode, der Aspekte der vorliegenden Erfindung
umfasst, wird typischerweise in einem Permanentspeicher, beispielsweise
einem computerlesbaren Medium, aufbewahrt. In einer Client/Server-Umgebung
kann ein solcher Softwareprogrammiercode auf einem Client oder einem
Server gespeichert sein. Der Softwareprogrammiercode kann verkörpert sein
auf jedem aus einer Vielzahl bekannter Medien zur Verwendung mit
einem Datenverarbeitungssystem. Dies beinhaltet – ist jedoch nicht darauf beschränkt – magnetische
und optische Speichereinrichtungen, so wie Plattenlaufwerke, Magnetband,
Compactdisks (CD's),
digitale Videodisks (DVD's),
und Computerbefehlsignale, welche in einem Übertragungsmedium mit oder
ohne einer Trägerwelle,
auf der die Signale moduliert werden, verkörpert sind. Zum Beispiel kann
das Übertragungsmedium
ein Kommunikationsnetzwerk beinhalten, so wie das Internet. Zudem
können,
obwohl die Erfindung in Computersoftware verkörpert sein kann, die zum Ausführen der
Erfindung nötigen
Funktionen alternativ zum Teil oder als Ganzes verkörpert sein
mittels Hardwarekomponenten, so wie anwendungsspezifisch integrierte
Schaltkreise oder anderer Hardware, oder irgendeiner Kombination
aus Hardwarekomponenten und Software.
-
Hinsichtlich
der Zeichnungen wird zunächst
auf 1 Bezug genommen, die ein Blockdiagramm darstellt,
das eine typische Konfiguration 10 für einen Hosting-Webserver 12 gemäß einer
offenbarten Ausführungsform
der Erfindung zeigt. Der Server 12 weist einen Speicher 14 auf,
welcher Zuteilungen für
eine Vielzahl von Clients 16 aufweist. Auf den Server 12 wird über ein
Datennetzwerk, so wie das Internet, zugegriffen durch mehrere Customer
oder User 18, aufeinanderfolgend oder gleichzeitig in verschiedenen
Kombinationen. Die User 18 können wünschen, auf die Speicherbereiche
von denselben oder unterschiedlichen Clients 16 in verschiedenen
Kombinationen zuzugreifen. Zum Zweck der Datensicherheit ist es
erforderlich, dass keinem Customer eines Clienten Zugriff auf Daten
gestattet wird, die in einem Speicher abgelegt sind, der für einen anderen
Clienten reserviert ist. Außerdem
kann kein Client ohne Berechtigung auf den Speicher eines anderen Clienten
zugreifen.
-
Nun
wird auf 2 Bezug genommen, die ein Blockdiagramm
einer anderen Anordnung darstellt, in der ein Host-Site-Provider 20 Hardware
mit vielen im Netzwerk befindlichen Webservern 22 und Speichereinrichtungen 24 gemeinsam nutzt
gemäß einer
offenbarten Ausführungsform
der Erfindung. Die Anordnung, obwohl sie komplexer als die in 1 gezeigte
ist, ist für
eine Vielzahl von Usern 26 transparent. Allerdings ist ihre
Handhabung komplizierter und schließt mehr detaillierte Betrachtungen
bezüglich
Load Balancing zusätzlich
zur Bereitstellung schnellen und sicheren Zugriffs ein. Einer oder
mehr Speicher (nicht gezeigt) innerhalb der Webserver und Speichereinrichtungen
sind für
bestimmte Clients reserviert, wie vorstehend beschrieben.
-
Typischerweise
wird in den Webservern 22 Software verwendet wie der Apache
web server, erhältlich von
Red Hat, Inc., 2600 Meridian Parkway, Durham, NC 27713 USA, in Kombination
mit Scripten, die auf einem PHP:Hypertext Preprocessor (PHP) laufen.
Die Zend Engine, erhältlich
von Zend Technologies Ltd., P.O. Box 3619, Ramat Gan, Israel, 52136,
ist zur Verwendung als der Vorprozessor geeignet.
-
In
der Vergangenheit hat die Sicherstellung sicheren Zugriffs durch
User der in 1 und 2 gezeigten
Anordnungen Aufwand bzw. Steuerungsaufwand mit sich gebracht, was
zu relativ schlechter Leistung geführt hat. Beispielsweise erzeugt
das Commnon Gateway Interface (CGI)-Protokoll einen externen Prozess für jeden
User, der auf eine gehostete Seite eines Clienten zugreift. Dies
ist typischerweise verbunden mit Rufen nach Verfahren wie chroot()
und setuid(). Der Ansatz ist sicher, da er die Sicherheitsmerkmale
des Betriebssystems ausnutzt. Eine typische CGI-Sequenz ist in Auflistung 1 gezeigt.
Der Steuerungsaufwand ist hoch, teilweise aufgrund der Notwendigkeit,
Kernelfunktionen wie exec() aufzurufen.
-
Nun
wird auf 3 Bezug genommen, die ein Flussdiagramm
zeigt, das ein Verfahren zum sicheren Webhosting gemäß einer
offenbarten Ausführungsform
der Erfindung zeigt. Dieses Verfahren ist nicht nur schneller als
die konventionelle, in Ausdruck 1 gezeigte Sequenz, sondern
lässt außerdem einen
höheren Grad
an Ressourcen-Aufteilung
unter Usern zu, ein Ziel, welches mittels standardmäßiger Apache-Software schwierig
zu erreichen ist.
-
Das
Verfahren beginnt beim Anfangsschritt 30, bei dem ein Webserver
initiiert und erforderliche Steuerungssoftware geladen wird, beispielsweise
eine PHP-Script-Engine.
-
Die
Steuerung geht sofort zu Schritt 32 über. Ein ständiger Prozess wird durch den
Webserver erzeugt, der ein PHP-Controller ist, mit Root- oder Überwachungs-Zugriffsrechten.
Wie nachstehend erläutert,
werden Child-Prozesse
des ständigen
Prozesses verwendet, um Browser-Anfragen
von Usern zu bedienen. Dieser Prozess ruht typischerweise bis signalisiert
wird, dass eine User-Anfrage
ansteht.
-
Als
Nächstes
wird bei Schritt 34 eine Browser-Anfrage empfangen von
einem User. Der ständige
Prozess spricht in Schritt 36 durch Selbstduplikation mittels
eines fork()-Aufrufs
an. Dieser Aufruf ist in Bezug auf Computerressourcen relativ sparsam,
verglichen mit Aufrufen wie exec(). Wie für den Fachmann ersichtlich, ist
es einfach, die Parent- und Child-Prozesse zu identifizieren, die
im Anschluss an den Return von dem fork()-Aufruf existieren. Aus
Präsentationsgründen sind
in der folgenden Erläuterung
die von den beiden Prozessen ausgeführten Aktionen in dem Flussdiagramm
als separate Aktionen gezeigt, wobei es sich versteht, dass sie
sich tatsächlich
gleichzeitig in Ausführung
befinden.
-
Als
Nächstes
wird bei Schritt 38 ermittelt, welcher der aus dem fork()-Aufruf
resultitirenden Prozesse der Parent- und welcher der Child-Prozess ist.
Hinsichtlich des Parent-Prozesses kehrt die Steuerung zu Schritt 34 zurück, um auf
eine weitere Browser-Anfrage zu warten.
-
Der
Child-Prozess geht zu Schritt 40 über, wo seine User-Kennung festgelegt
wird hinsichtlich des Clienten, für welchen um Zugriff auf einen
reservierten space bzw. Speicherplatz nachgesucht wird. Dann wird
in Schritt 42 der Zugriff auf den Speicher auf den space
des Clienten durch einen chroot()-Aufruf begrenzt. Der Child-Prozess übernimmt
die Fähigkeit
des Parent-Prozesses, auf gemeinsame Ressourcen auf dem Server zuzugreifen
und nicht auf reservierten Speicher.
-
Als
Nächstes
fährt beim
Schlussschritt 44 der Child-Prozess mit der Ausführung fort, um die Browser-Anfrage
zu bedienen.
-
Eine
High-Level-Beschreibung des vorstehend offenbarten Verfahrens unter
Bezug auf 3 ist in Ausdruck 2 wiedergegeben.
Eine detailliertere Beschreibung ist in Ausdruck 3 dargestellt.
-
Es
versteht sich für
den Fachmann, dass die vorliegende Erfindung nicht auf das, was
hierin im Besonderen gezeigt und beschrieben wurde, beschränkt ist.
Vielmehr schließt
der Umfang der vorliegenden Erfindung sowohl Kombinationen und Unterkombinationen
der verschiedenen, hierin beschriebenen Merkmale, sowie Variationen
und Modifikationen derselben mit ein, die nicht zum Stand der Technik
zählen,
die sich dem Fachmann beim Studium der vorstehenden Beschreibung
erschließen.
-
COMPUTER-PROGRAMMAUSDRUCKE
-
-
-