Instalacja Apache

Transkrypt

Instalacja Apache
Instalacja Apache
Robert Jackowski
(c) Polski Portal Amigowy (www.ppa.pl)
WSTĘP
ŹRÓDŁO PLIKÓW
l
Apache jest serwerem udostępniającym strony www. Dzięki serwerom www możliwe korzystanie jest z najbardziej
popularnej usługi w Internecie, czyli stron World Wide Web. Oczywiście nie jest to jedyny serwer www dostępny dla
Amigi. Dodatkowo dzięki PHP będziemy mogli tworzyć dynamiczne generowane strony www. Zakładając, że
zainstalowaliśmy także bazę danych MySQL staniemy się posiadaczami wyrafinowanych narzędzi, które pozwolą nam
na tworzenie złożonych aplikacji. Wtedy ani interfejs graficzny, ani złożone zapytania do bazy danych nie będą nam
straszne. Osobiście stworzyłem aplikacje do prowadzenia księgowości, z której korzystam na codzień. Apache, MySQL i
PHP możemy używać nieodpłatnie!
WYMAGANIA
.p
Apache dla Amigi znajduje się na Aminecie. Istnieją osobne wersje Apache dla AmigaOS 4.0 i MorphOS-a. Tekst
powstał w oparciu o wersję 1.3.6.
w
.p
pa
Uruchomiony stos TCP/IP, np. AmiTCP czy Miami. Środowisko Geek Gadgets. 32 MB RAM. Jeśli chcemy używać
także MySQL, to potrzebne będzie 64MB RAM. Zalecany procesor co najmniej 68040.
Opis instalacji Geek Gadgets i MySQL znaleźć można w odrębnych artykułach na łamach PPA.
INSTALACJA
w
Swojego Apache zainstalowałem pod AmigaOS 3.1 na Amidze 1200 z procesorem 68040 40MHz i 64MB RAM-u.
Informacja dla lubiących procesory taktowane w GHz: stwierdzam, że mój zestaw Apache+PHP+MySQL działa szybko.
Serwował strony dla pc, który specjalnie sprowadziłem do testu. Moje aplikacje otwierały się z poziomu pc szybko i
sprawnie, czyli normalnie. Również na samej Amidze strony serwowane przez Apacha otwierały się normalnie.
Zakładamy katalog, do którego rozpakujemy Apache. Ja założyłem na woluminie Work katalog Apache.
Rozpakowałem następnie do niego archiwum z Apachem. Teraz w katalogu Work:Apache/bin/ zmieniamy nazwy
programów, biorąc pod uwagę wersję naszego procesora. Dla procesora 68040 nazwy programów zmieniamy
następująco: ab.040.php na ab, htdigest.040.php na htdigest. Analogicznie postąpiłem z nazwami programów htpasswd,
httpd oraz suexec. Zatem z wszystkimi programami, które miały w nazwie wersję interesującego mnie procesora.
Dlaczego dodatkowo wziąłem nazwy z końcówką php? Łatwo stwierdzić, że akurat te wersje będzie potrzebował
interpreter języka PHP. Następnie, zgodnie ze wskazówkami autorów amigowej wersji Apache, ustawiłem bit protekcji s
zbiorom starthttpd, stophttpd i FixDynamic. Natomiast plikowi httpd ustawiłem flagę p.
w
Przejdźmy do katalogu Work:Apache/conf/. Znowu zmieniłem nazwy plikom: http.conf-amiga-dist na http.conf.
Podobnie uczyniłem z pozostałymi plikami w tym katalogu, obcinając końcówkę -amiga-dist.
Jeszcze jedna zmiana nazwy tym razem w katalogu Work:Apache/lib/. Nazwa php.ini-dist została zmodyfikowana na
php.ini. Teraz należy dokonać zmian w stosie TCP/IP. Wypróbowałem AmiTCP i Miami. Obydwa działały bez
problemów. Na codzień korzystam z AmiTCP. Konfiguracja stosu TCP/IP na potrzeby Apache wygląda w sposób
podany w poniższych punktach. W nawiasach podaje odpowiednik czynności dla stosu Miami.
W przypadku AmiTCP dopisujemy w pliku AmiTCP:db/services następujący wiersz (jeśli nie istnieje) (W Miami
zakładka database i z gadżetu cyklicznego wybieramy services):
http 80/tcp
W pliku AmiTCP:db/group dopisujemy wiersz (W Miami zakładka database i z gadżetu cyklicznego wybieramy groups):
www|*|45|www W pliku AmiTCP:db/passwd dopisujemy (W Miami zakładka database i z gadżetu cyklicznego
wybieramy users):
Strona 1
Instalacja Apache
Robert Jackowski
(c) Polski Portal Amigowy (www.ppa.pl)
www|*|1001|45|Apache WWW
serwer|Apache:|cli
Na koniec do s:user-startup dopisujemy nowy przypis: assign Apache: Work:Apache add.
URUCHOMIENIE APACHE
SPRAWDZENIE DZIAŁANIA APACHE
.p
l
Restartujemy stos TCP/IP, aby uwzględnił wprowadzone przez nas zmiany w plikach konfiguracyjnych. Dla AmiTCP
uruchamiamy kolejno skrypty stopnet i startnet. W wersji dla Miami wciskamy gadżety Offline, a następnie Online.
Wydajemy też polecenie assign Apache: Work:Apache add.
Cały powyższy akapit można załatwić metodą siłową, czyli zrestartować maszynę. Jednak serwerów (nasza Amiga
właśnie awansowała do miana serwera) nie powinno się w tak dramatyczny sposób pobudzać do życia.
Podnieśmy wreszcie nasz świeżo zainstalowany serwer przez polecenie shella: run sh -c "/work/apache/bin/apachectl
start"
w
.p
pa
Uruchamiamy naszą ulubioną przeglądarkę stron www. Wpisujemy jako adres strony localhost, dokładniej
http://localhost i powinna pokazać się strona domyślna (powitalna) serwera Apacha. Dokładniej został wyświetlony plik
Apache:htdocs/index.html.en.
Strona startowa serwera Apache.
Jeśli pokazała się powyższa strona, to możemy sobie gratulować poprawnej instalacji serwera www!
ZATRZYMANIE APACHE
Wiemy jak startować Apache, ale jak zatrzymać serwis stron www? Zatrzymujemy go poleceniem z poziomu shella sh:
/work/apache/bin/apachectl stop Działa po uruchomieniu Apache przez /work/apache/bin/apachectl start także z
poziomu shella sh. Natomiast po uruchomieniu Apacha przez: sh -c "/work/apache/bin/apachectl start" z poziomu
ToolsDaemona zastopowałem Apache przez /work/apache/bin/apachectl stop z poziomu shella sh i ponadto
wykonałem skrypt stopnet (przeciwieństwo skryptu startnet - patrz opis instalacji AmiTCP) wyłaczający stos TCP/IP. Po
zatrzymaniu pracy stosu TCP/IP trzeba go naturalnie przywrócić do życia zanim uruchomimy ponownie serwis www
Apache. Aby sprawdzić czy faktycznie zatrzymaliśmy Apache, wydajmy w shellu polecenie status. Nie powinno być
procesów httpd.
w
Procesy httpd świadczą o tym, że serwer Apache jest aktywny.
Widać także na belce Workbencha przyrost zwróconej pamięci RAM. U mnie z 35 MB wolnego RAM przy
uruchomionym Apache i MySQL, po ich zabiciu ilość wolnego RAM-u wzrasta do 55 MB, a po wydaniu polecenia avail
flush przybywa kolejny MB. Polecenie systemu AmigaOS avail flush oczyszcza pamięć RAM z np. niezamkniętych
bibliotek czy innych niewykorzystywanych już w systemie struktur.
w
TEST INSTALACJI APACHE, PHP i MYSQL
Wypróbujmy interpreter PHP. Stwórzymy systemowym Ed-em (lub innym edytorem tekstu) plik index.php: ed
work:apache/htdocs/index.php o następującej zawartości: <?PHP phpinfo(); ?> Zapisujemy ów plik. Teraz w
przeglądarce wpiszmy adres: http://localhost/index.php. Powinna pokazać nam się strona z ustawieniami dla PHP.
Wyświetlenie konfiguracji PHP.
Możemy podejrzeć tutaj wiele istotnych ustawień PHP. Przydadzą się one w miarę zagłębiania się w świat PHP.
Na stronach startowych serwisów www nie podaje się adresów typu www.strona.pl/index.html, ale po prostu
www.strona.pl. Nauczmy więc nasz serwer www by potrafił domyślnie rozpoznać plik index.php jako domyślny plik w
katalogu. W tym celu otwieramy tekstowy plik konfiguracyjny Apache Work:Apache/conf/httpd.conf i szukamy wiersza
DirectoryIndex index.shtml index.html i zmieniamy go na DirectoryIndex index.php index.shtml index.html. Zapisujemy
plik httpd.conf. Restartujemy Apache, czyli zatrzymujemy i startujemy go. Teraz w przeglądarce wystarczy wpisać:
Strona 2
Instalacja Apache
Robert Jackowski
(c) Polski Portal Amigowy (www.ppa.pl)
http://localhost albo po prostu localhost, aby otworzyć plik index.php. Ponadto istotna jest kolejność wskazanych plików
domyślnych po dyrektywie DirectoryIndex. Oznacza to, że jeśli w katalogu z plikiem index.php znajdzie się także plik
index.html to tylko index.php zostanie wyświetlony, czyli zgodnie z kolejnością ustaloną po DirectoryIndex.
WZMIANKA O BEZPIECZEŃSTWIE
Jedna z dyrektyw naszego PHP, a mianowicie "register_globals", ustawiona jest domyślnie na wartość "On".
Wyłączmy ją ze względów bezpieczeństwa. W pliku Apache:lib/php.ini register_globals ustawiamy na Off. Restartujemy
serwer www by zauważył zmianę. Możemy uruchomić wcześniej opisywany plik z funkcją phpinfo() by sprawdzić czy
faktycznie zmiana została dokonana.
w
.p
pa
.p
l
Modyfikacja domyślnego portu Apache również może się przydać. Na portach nasłuchują różne usługi sieciowe. W
naszym przypadku na porcie 80 serwer www przyjmuje żądania z przeglądaki internetowej. Zmieńmy domyślny port
Apache z nr 80 na np. 8090. Należy w tym celu dokonać dwóch zmian. W pliku http.conf po dyrektywie Port oraz zapis
w services stosu TCP/IP. O services była mowa w podpunkcie dotyczącym instalacji. Tym razem oprócz Apache
restartujemy także stos TCP/IP, aby zmiany zostały uwzględnione.
Pamietajmy! Uruchamiając usługę na naszej maszynie wpiętej w sieć należy pamiętać, że do serwowanych zasobów
mogą mieć dostęp osoby postronne. Należy więc się odpowiednio zabezpieczyć! Ustawienia firewalla na naszym
domowym routerze są kluczową sprawą. Zadbajmy o to! Temat bezpieczeństwa danych jest przeogromny. Nie oznacza
to, że sami nie mamy szans na dobre zabezpieczenie własnych zasobów. Polecam lekturę. Na początek może być
Internet, aby się oswoić z tematem.
W naszym konkretnym przypadku (mam na myśli stworzenie bazy danych w PHP i MySQL) należy zadbać przede
wszystkim o nadanie odpowiednich praw do tabel bazy danych oraz zabezpieczenie hasła przez jego zaszyfrowanie.
Nie będę o tym pisał. Wykracza to poza ramy tego tekstu, który skupia się na instalacji Apache + PHP + MySQL i
sprawdzeniu poprawności ich funkcjonowania w środowisku systemu operacyjnego AmigaOS.
TEST DZIAŁANIA APACHE Z PHP I MYSQL
w
w
Startujemy demona MySQL przez uruchomienie skryptu startmysqld (patrz artykuł Instalacja MySQL pod AmigaOS).
Stwórzmy bazę danych "ludzie". Możemy tego dokonać np. przez program mysqladmin, a więc: mysql:bin/mysqladmin
-u root -p create ludzie Jako hasło naciskamy enter. Otwieramy klienta bazy, czyli mysql:bin/mysql -u root Wybieramy
bazę: use ludzie; Prawidłową odpowiedzią MySQL jest: Database changed. Tworzymy następnie tabelę o nazwie
"czlowiek" bazy danych "ludzie". Niech tabela składa się z dwóch pól: "imie" i "nazwisko": CREATE TABLE czlowiek
(imie VARCHAR(15), nazwisko VARCHAR(30)); Tutaj prawidłową odpowiedzią serwera jest: Query OK. 0 rows
affected (czas tej operacji). Słów kluczowych: CREATE TABLE, VARCHAR nie musimy pisać dużymi literami, to tylko
przyjęty zwyczaj. Uwaga ogólna: nie należy stosować polskich znaków w nazwach zmiennych i plików. Nawet jeśli dane
języki programowania czy systemy plików umożliwiają stosowanie narodowych znaków w zmiennych. Przyczyną tych
obostrzeń jest ewentualne przenoszenie plików do innego systemu. Zapewne pojawiłyby się w tej materii problemy. Co
jakiś czas jesteśmy zaskakiwani przez co raz to nowsze "standardy" znaków narodowych: Amiga-pl, ISO, utf8, utfx. To
zapewne nie koniec, więc darujmy sobie polskie znaki. Warto od razu przestawić się na angielskie nazewnictwo, bo to
jedyny uniwersalny język. Szczególnie w informatyce.
Jednak jeśli aplikacja ma obsługiwać język narodowy, to należy go stosować w całym jego pięknie, czyli również ze
specyficznymi dla niego znakami. MySQL, którego zainstalowaliśmy pod AmigaOS umożliwia stosowanie znaków
narodowch w konkretnych wartościach pól bazy. Dodajmy zatem pierwszy wiersz danych do naszej bazy "ludzie":
INSERT INTO czlowiek (imie, nazwisko) VALUES ('Piotr', 'Kowalski');
Zakładanie bazy i wprowadzanie danych.
Dopisaliśmy dane do tabeli. Sprawdzmy czy faktycznie tam są: SELECT * FROM ludzie; Powinna wyświetlić się
tabelka z wpisanymi przez nas danymi. Niestety ręczne wpisywanie danych z wiersza poleceń MySQL nie jest wygodne
ani efektywne. Od tego mamy PHP i formularze HTML dostępne z poziomu przeglądarki internetowej. Wróćmy do pliku
index.php. Wpiszmy do niego następujące wiersze: <HTML> <BODY> <H3>Hello!</h3> <?PHP
Strona 3
Instalacja Apache
Robert Jackowski
(c) Polski Portal Amigowy (www.ppa.pl)
.p
l
$db = mysql_connect ("localhost", "root", ""); // łączenie się z serwerem mysql mysql_select_db ("ludzie"); $q =
"SELECT * FROM czlowiek"; $r = mysql_query($q); if ($row = mysql_fetch_array($r)) { $imie1=$row['imie']; } echo
$imie; mysql_close ($db); ?> </body> </html>
Oto trywialny przykład obsługi naszej bazy danych "ludzie" przez PHP. W miarę zdobywania doświadczenia zdziwicie
się ile rzeczy można zrobić za pomocą dwóch, trzech tabel bazy danych (związanych odpowiednimi relacjami) oraz kilku
prostych skryptów. Napisanie własnego forum nie jest specjalnie trudnym wyzwaniem jeśli dysponujemy MySQL i PHP.
Kluczem do zrozumienia SQL w ogólności jest uświadomienie sobie, że to RELACYJNA BAZA DANYCH, a więc
kolejność w bazach tego typu nie jest istotna. W internecie znajdziecie podstawowe i bardziej zaawansowane artykuły
traktujące o MySQL i PHP.
Wspomnę tylko, że funkcja mysql_fetch_array odczytuje z tabeli wiersz danych i zapisuje go w tablicy $row. Dzięki
$imie1 = $row['imie']; odczytujemy z wiersza pole o danej nazwie - tutaj "imie". echo $imie; drukuje daną zmienną, którą
możemy już obejrzeć w przeglądarce:
Wynik działania skryptu index.php.
Zazwyczaj funkcję mysql_fetch_array zawiera się w pętli, aby odczytać wszystkie wiersze z tabeli.
w
.p
pa
ZAKOŃCZENIE
w
w
Apache z PHP i MySQL daje jedno z najbardziej konfigurowalnych narzędzi. Mamy możliwość w łatwy sposób
tworzenia dowolnej bazy danych. Interfejs z poziomu przeglądaki, dopasowany do utworzonej bazy, możemy szybko
ukształtować, według własnych potrzeb. Co więcej? Naszą aplikację możemy kojarzyć z innymi elementami systemu
AmigaOS, chociażby z systemem składu dokumentów TeX. Dzięki temu mamy możliwość obejrzenia danych z bazy w
formie przejrzystych i ładnie sformatowanych dokumentów. Zastosowania baz danych są rozmaite. Podam chociażby
następujące: zbiór artykułów, zestaw dokumentów księgowych, zestaw postów z forum. Ze zbioru artykułów tworzymy
książkę. Źródłowe dokumenty księgowe stanowią podstawę do wszelkiego rodzaju rozliczeń: księga przychodów i
rozchodów, różnej maści rejestry, znane rozliczenia pit. Wszystko odbywa się według prostej zasady. Po pierwsze
relacyjna baza danych. Po drugie przetwarzanie rekordów bazy według określonych reguł, np. przepisów prawnych.
Ostatni etap, to produkcja wyników i publikowanie ich w formie dokumentów. Wystarczy uważnie popatrzeć, a
znajdziemy zastosowania, które ułatwią nam codzienne zadania. Wtedy docenimy jeszcze bardziej nasz komputer.
Strona 4

Podobne dokumenty