Serwer WWW Abashe. Przemysław Sowa

Podobne dokumenty
REFERAT O PRACY DYPLOMOWEJ

System zarządzający grami programistycznymi Meridius

World Wide Web? rkijanka

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

Tworzenie i obsługa wirtualnego laboratorium komputerowego

PRZEWODNIK PO PRZEDMIOCIE

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

omnia.pl, ul. Kraszewskiego 62A, Jarosław, tel

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Programowanie Komponentowe WebAPI

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

egroupware czy phpgroupware jest też mniej stabilny.

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

Referat pracy dyplomowej

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Jednolite zarządzanie użytkownikami systemów Windows i Linux

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

System Kancelaris. Zdalny dostęp do danych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Aplikacje internetowe - opis przedmiotu

REFERAT PRACY DYPLOMOWEJ

System Zarządzania Treścią

KARTA KURSU. Administracja serwerami WWW

PROGRAM MICROSOFT DEVELOPER NETWORK ACADEMIC ALLIANCE MSDN AA

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Bazy danych i strony WWW

Program szkolenia KURS SPD i PD Administrator szkolnej pracowni internetowej Kurs MD1 Kurs MD2 Kurs MD3 (dla szkół ponadgimnazjalnych)

Win Admin Replikator Instrukcja Obsługi

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania języka AutoLISP i środowiska VisualLISP w systemie CAx

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

IBM SPSS Statistics Version 22. Windows - Instrukcja instalacji (licencja wielokrotna)

Bezpieczeństwo systemów i lokalnej sieci komputerowej

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: - zna rodzaje sieci - zna topologie sieciowe sieci

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL

InPro BMS InPro BMS SIEMENS

Opis administracji terminali ABA-X3 v.1.5.0

Aplikacja webowa do zarządzania maszynami wirtualnymi

OpenLaszlo. OpenLaszlo

Programowanie współbieżne i rozproszone

Tomasz Greszata - Koszalin

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

UNIWERSYTET KAZIMIERZA WIELKIEGO WYDZIAŁ MATEMATYKI, FIZYKI I TECHNIKI INSTYTUT TECHNIKI

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

WPROWADZENIE. Użycie PHP

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Wstęp do Informatyki. Klasyfikacja oprogramowania

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Budowanie interfejsów do baz danych

Samokontrola postępów w nauce z wykorzystaniem Internetu. Wprowadzenie

REFERAT PRACY DYPLOMOWEJ

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

PHP, ASP i CGI jako skrypty wykonywane po stronie serwera. Budowa dynamicznych stron WWW w technologii PHP

ActiveXperts SMS Messaging Server

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Architektura systemu e-schola

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

PRZEWODNIK PO PRZEDMIOCIE

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Statistics dla systemu Mac OS. Instrukcje dotyczące instalacji (licencja sieciowa)

Tworzenie oprogramowania

Audyt oprogramowania. Artur Sierszeń

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Systemy obiegu informacji i Protokół SWAP "CC"

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

IBM SPSS Statistics dla systemu Windows Instrukcje instalacji (licencja sieciowa)

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Bezpieczeństwo systemów komputerowych

REFERAT PRACY DYPLOMOWEJ

Transkrypt:

Serwer WWW Abashe Przemysław Sowa Wydział Inżynierii Mechanicznej i Informatyki Kierunek Informatyka, Rok II przemyslaw_sowa@o2.pl Streszczenie Abashe to serwer WWW napisany w języku powłoki Bash. Charakteryzuje się on prostotą instalacji oraz użytkowania. Nie stawia żadnych specjalnych wymagań co do środowiska uruchomieniowego, a ponadto jest uniwersalny oraz łatwy w rozbudowie. Dzięki obsłudze interfejsu CGI/1.1 może serwować dynamiczne strony internetowe: posiada wbudowane wsparcie dla języków PHP oraz Active Bash Pages. 1 Wstęp W dzisiejszych czasach nikt z nas nie wyobraża sobie życia bez Internetu. Stał on się czymś tak oczywistym jak telefon czy telewizja. Natomiast najpopularniejszą usługą internetową jest bez wątpienia World Wide Web [1]. Każdy z nas rozpoczynał poznawanie światowej pajęczyny od przeglądania stron WWW. Witryny internetowe są proste w obsłudze a każdy współczesny system operacyjny posiada oprogramowanie pozwalające na ich eksplorację. Oznacza to, że World Wide Web jest najprostszą i najbardziej intuicyjną metodą publikowania informacji. Dzięki uniwersalnemu językowi opisu stron - HyperText Markup Language[2], udostępniane przez nas zasoby mogą być z powodzeniem użytkowane przez wiele osób, bez względu na wykorzystywane przez nie systemy czy urządzenia informatyczne. Coraz więcej osób podłączonych jest do małych sieci domowych lub osiedlowych. Charakterystyczną dla użytkowników takich sieci cechą jest chęć dzielenia się posiadanymi zasobami. Należy jednak zwrócić uwagę na fakt, iż osoby te, to zwykli użytkownicy, nie koniecznie zaznajomieni z technologiami sieciowymi. Nie muszą znać sieciowych systemów plików, a już na pewno nie mają ochoty na skomplikowaną instalację i konfigurację serwerowego oprogramowania. W takich przypadkach interesującą alternatywą może być wykorzystanie protokołu HTTP [3] do wymiany danych. Jego uniwersalność oraz prostota użytkowania stwarzają szanse na szerokie zastosowanie go przez mniej doświadczonych użytkowników. Poważnym problemem okazuje się jednak brak łatwych w obsłudze serwerów World Wide Web. Istniejące na rynku oprogramowanie [4] stworzone jest do zastosowań profesjonalnych, wymaga doświadczenia przy konfigurowaniu oraz zajmuje sporo przestrzeni dyskowej. Niszę spowodowaną brakiem małych i prostych w obsłudze serwerów WWW stara się wypełnić przedstawiony w poniższej pracy program Abashe. Zaprojektowano go tak, aby jego użytkowanie było maksymalnie uproszczone, a instalacja i konfiguracja nie 1

nastręczały problemów. Jego wielką zaletą jest to, że działa "out of box", co oznacza, że nie ma potrzeby instalowania i konfigurowania megabajtów zbędnych bibliotek oraz oprogramowania towarzyszącego. Praca zorganizowana jest w następujący sposób: w Rozdziale 2 przedstawiono projekt serwera, jego założenia oraz genezę powstania. Kolejny rozdział poświęcony jest architekturze systemu Abashe, zaś w Rozdziale 4 omówiono jego możliwości. Pracę zamyka prezentacja potencjalnych zastosowań serwera wraz z krótkim podsumowaniem. 2 Projekt serwera Abashe Język programowania powłoki Bash [5] został zaprojektowany jako narzędzie do tworzenia skryptów ułatwiających i automatyzujących codzienne zadania wykonywane w systemach uniksowych. W zamyśle twórców nie miała to być platforma do tworzenia aplikacji i wielu ludzi nie wyobraża sobie takiego wykorzystania tej popularnej powłoki. Z tego powodu pomysł użycia Basha do napisania w pełni funkcjonalnego serwera WWW stanowił interesujące wyzwanie. Początkowo Abashe miał być jedynie dowodem na uniwersalność i potęgę najpopularniejszej linuksowej powłoki. Z czasem zaskoczył on jednak swoimi możliwościami nawet autora i przekształcił się w pełnoprawny projekt programistyczny. Już na samym początku obok koncepcji stworzenia serwera World Wide Web istniała idea opracowania języka do opisu dynamicznych stron WWW o zastosowaniu podobnym do PHP. Pomysł ten został z powodzeniem zrealizowany, a nowy język nazwano Active Bash Pages, w skrócie ABP. Zostanie on bliżej przedstawiony w dalszej części pracy jako że stanowi integralną część serwera. 3 Architektura serwera Przy projektowaniu i implementowaniu serwera należało przede wszystkim uwzględnić ograniczenia wynikające z użytej platformy. Skrypty powłoki mają dużo mniejsze możliwości niż te pisane w takich językach jak Perl [6] lub Python [7] i różnią się znacząco od programów pisanych w językach C/C++. Największym problemem okazał się brak obsługi gniazd sieciowych. Bash pozwala co prawda na otwieranie połączeń sieciowych TCP i UDP oraz łączenie z nimi deskryptorów gniazd, jednak nie ma możliwości utworzenia gniazda nasłuchującego, co jest absolutnie wymagane w każdym serwerze TCP. Dla większości czytelników może być to wielkim zaskoczeniem, w końcu jak można bez tego napisać serwer WWW? Odpowiedź brzmi: nie można. Problem ten rozwiązano poprzez wykorzystanie programu netcat [8], który jest standardowo dostępny w większości dystrybucji Linuksa oraz w Uniksach. netcat nie jest bardzo wydajnym rozwiązaniem, dlatego alternatywnie można użyć programu hpnc rozprowadzanego wraz z serwerem. Serwer posiada budowę modułową, co ułatwia jego rozszerzanie oraz pozwala wyodrębnić logiczne fragmenty, które mogą być rozwijane niezależnie. Elementy te zostały schematycznie zaprezentowane na Rysunku 1. Rdzeń aplikacji składa się z dwóch skryptów: abashe.sh oraz obsluga_zadania.sh. Pierwszy z nich inicjuje serwer, drugi natomiast zajmuje się obsługa każdego napływają- 2

Rys. 1: Modularna budowa serwera. cego żądania HTTP. Pokrótce odbywa się to w następujący sposób: proces uruchamiania Abashe a kończy się wywołaniem programu netcat, który to rozpoczyna nasłuchiwanie na gnieździe TCP. W momencie, kiedy klient łączy się z serwerem, program netcat akceptuje połączenie, duplikuje deskryptor gniazda sieciowego przypisując go do standardowego wejścia oraz wyjścia, a następnie zastępuje swój proces skryptem obsługi żądania. Skrypt ten ponownie uruchamia aplikację netcat, aby umożliwić przyjmowanie następnych połączeń, a sam zajmuje się obsługą bieżącego żądania operując jedynie na deskryptorach standardowego wejścia/wyjścia. Dzięki temu komunikacja sieciowa jest zaimplementowana w sposób zupełnie przezroczysty. Dodatkowym plusem tego rozwiązania jest otrzymanie serwera wieloprocesowego, który może obsługiwać równocześnie kilku klientów. Zostało to zilustrowane na Rysunku 2. Powyższe rozwiązanie jest wymuszone przez zasadę działania programu netcat. Nie jest ono jednak optymalne, ponieważ przez krótką chwilę czasu, pomiędzy uruchomieniem skryptu obsługi żądania i ponownym startem procesu netcat, serwer nie może przyjąć nowych połączeń. Z tego powodu wraz z serwerem Abashe rozpowszechniany jest niewielki program hpnc, który działa analogicznie jak netcat jednak nie zastępuje swojego procesu uruchamianym skryptem, tylko dokonuje tak zwanego rozwidlenia. Dzięki temu ciągłość pracy serwera zostaje zachowana. Przetwarzanie poszczególnych połączeń sprowadza się do wysłania żądanego pliku lub do przygotowania środowiska i uruchomienia jednego ze standardowo wspieranych interpreterów stron dynamicznych: ABP lub PHP, a następnie zwrócenia wyników. 3

4 Możliwości serwera Rys. 2: Wieloprocesowa obsługa połączeń. To co stanowi o sile serwera Abashe jest elastyczność i prostota. Nie wymaga on instalacji ani konfiguracji (nie oznacza to jednak, że nie jest konfigurowalny). Wykorzystuje jedynie standardowe uniksowe programy, dzięki czemu jest w stanie działać w każdym systemie operacyjnym zaraz po skopiowaniu na dysk. Serwer obsługuje protokół HTTP w wersji 1.0. Jego wielką zaletą jest wsparcie dla standardu CGI/1.1 [9], dzięki czemu może współpracować z wszelkiego rodzaju aplikacjami internetowymi i serwować dynamiczne strony WWW. Wiele osób ucieszy fakt, że Abashe standardowo rozpoznaje strony napisane w PHP [10] i wykonuje je, o ile tylko w systemie znajduje się interpreter tego języka. W rezultacie omawiany program jest wyjątkowo przydatny dla webmasterów, ponieważ mogą oni testować wyniki swojej pracy w rzeczywistym środowisku, a jednocześnie nie muszą posiadać uprawnień, aby zainstalować i administrować pełnym serwerem World Wide Web. Jeszcze bardziej interesująca jest obsługa Active Bash Pages - języka zasługującego na bliższe omówienie. Jak już wcześniej wspomniano, Active Bash Pages to język do tworzenia dynamicznych stron internetowych, rozwijany wraz z projektem Abashe. Jest on zgodny ze specyfikacją CGI/1.1, co czyni go uniwersalnym i niezależnym od użytego serwera WWW. Moduł jego obsługi jest dołączony do programu Abashe. Cechą charakterystyczną dla tego języka jest fakt, że tak naprawdę jego interpreterem jest powłoka Bash. Oznacza to, że składnia jest taka sama jak składnia shella. Stanowi to bardzo dużą zaletę, ponieważ każdy, kto zna standardową powłokę Linuksa, może od razu pisać strony w ABP. Przed stronami Active Bash Pages nie są stawiane żadne wymagania, nie muszą one posiadać nagłówka charakterystycznego dla skryptów ani atrybutu wykonywalnego. Język ten daje pełen dostęp do informacji o środowisku w jakim dana strona ABP jest wykonywana. Ponadto automatycznie dekoduje dane z formularzy HTML oraz tworzy zmienne o odpowiednich nazwach i wartościach, co czyni używanie tego narzędzia wyjątkowo łatwym i szybkim. 4

Należy wspomnieć, że język ten opcjonalnie współpracuje z prostym systemem bazodanowym BashQL. System ten również napisany jest w Bashu i zachowuje zgodność z SQL [11]. 5 Rozwój serwera Projekt pomimo wczesnego stadium rozwoju jest już w pełni funkcjonalny. W przyszłości rozważa się rozbudowę jego możliwości poprzez np. zaimplementowanie protokołu HTTP w wersji 1.1. Kolejnym wymogiem jest poprawa wydajności, jednak ze względu na oparcie serwera na powłoce Bash nigdy nie zbliży się on w tej kwestii do profesjonalnego oprogramowania. Należy jednak zwrócić uwagę, że wydajność nie była nigdy głównym celem tego projektu. Całość kodu udostępniana jest na licencji GPL [12], a projekt został niedawno umieszczony w portalu Sourceforge.net pod adresem: http://abashe.sourceforge.net. Autor liczy na odzew ze strony społeczności Open Source, co na pewno zaprocentuje dużą liczbą nowych pomysłów i dynamiczniejszym rozwojem projektu. Serwer Abashe stara się dopasować do wymogów zwykłych użytkowników i znaleźć zastosowanie głównie w małych sieciach intranetowych. Ciekawą perspektywą byłoby wykorzystanie go przez administratorów systemów uniksowych. Znają oni doskonale powłokę Bash, dlatego mogliby swobodnie tworzyć strony ABP, a przeniesienie skryptów administracyjnych z surowych okien terminali do przeglądarek internetowych otwiera nowe możliwości automatyzowania zadań związanych z zarządzaniem sieciami komputerowymi. 6 Zakończenie Przedstawiony projekt serwera jest nietypowy z kilku powodów: został zaimplementowany w języku powłoki i jest praktycznie bezobsługowy. Nietypowe jest również jego przeznaczenie, ponieważ nie stara się konkurować z poważnymi, rozbudowanymi programami tego typu. Zamiast tego adresowany jest do odbiorców używających serwera na prywatny użytek do serwowania niewielkich ilości danych. Autor starał się zniwelować jego słabe strony oraz rozwinąć zalety. Z pomysłu, który był wielkim eksperymentem wyrosło narzędzie, które ma szanse znaleźć swoje miejsce wśród typowych narzędzi uniksowych. To jednak zależy od tego, czy Abashe spotka się z zainteresowaniem ze strony użytkowników i czy znajdą się osoby chętne do jego rozwoju. Bez względu na to, omawiany projekt jest z całą pewnością jednym z ciekawszych skryptów powłoki systemu Linux, niepozbawionym wielu walorów edukacyjnych. Literatura [1] The World Wide Web Consortium - http://www.w3.org [2] HTML 4.01 Specification - http://www.w3.org/tr/html4/ [3] Hypertext Transfer Protocol - RFC 2616 5

[4] The Apache HTTP Server Project - http://httpd.apache.org [5] Bash - http://www.gnu.org/software/bash/ [6] Perl Programming Language - http://www.perl.com [7] Python Programming Language - http://www.python.org [8] Netcat - http://netcat.sourceforge.net [9] The Common Gateway Interface (CGI) Version 1.1 - RFC 3875 [10] PHP: Hypertext Preprocessor - http://www.php.net [11] The SQL Language - ISO/IEC 9075-1:2003 [12] GNU General Public License - http://www.gnu.org/copyleft/gpl.html 6