server www: apache + php + mysql + phpmyadmin

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
dame
Moderator w st. spocz.
Posty: 985
Rejestracja: 2004-09-25, 17:37
Lokalizacja: wawa

server www: apache + php + mysql + phpmyadmin

Post autor: dame »

Pytanie: Chciałbym założyć stronę www, na własnym serwerze. Czy to jest możliwe i jeśli tak, to jak się do tego zabrać?

Odpowiedź: Tak, bez problemu można założyć swój serwer www oraz umieścić tam dowolną stronę www .

Zakładanie własnego serwera www powinniśmy zacząć od zebrania informacji o swoim połączeniu z internetem. Jeśli planujemy umieścić tylko wizytówkę www, to da się to zrobić nawet na łączu o przepustowości 128/128 kilobitów/sekundę (download/upload). Jednak jeśli chcemy postawić jakiś poważny serwer, to należałoby zadbać o lepsze połączenie.
Kolejną sprawą jest to, czy dysponujemy adresem IP stałym czy też dynamicznym, oraz wewnętrznym czy zewnętrznym. Stałe adresy zewnętrzne charakteryzują się tym, że kiedykolwiek się łączymy z siecią, zawsze uzyskujemy ten sam adres IP. To jest najprostszy wariant, wystarczy zarejestrować jakąś domenę do tego adresu i możemy od razu zabrać się za stawianie serwera.
Jeśli posiadamy dynamiczny adres zewnętrzny, to sprawa także jest dość prosta - wystarczy znaleźć jakiś dynamiczny DNS (np. www.no-ip.com lub www.dyndns.org) i zainstalować oprogramowanie do podtrzymywania informacji o naszym aktualnym IP. Ten przypadek dotyczy np. użytkowników neostrady.
Troszkę trudniejszą sytuację mają użytkownicy bez zewnętrznego adresu IP. Wtedy, przed postawieniem serwera www, należy skontaktować się z dostawcą internetu i poprosić o udostępnienie usługi virtualhost lub jeśli jest taka możliwość, ustawić przekierowanie portu 80 z routera na nasz docelowy komputer. Jest to dość obszerny temat, dlatego po więcej informacji odsyłam na www.google.pl
Jeśli nie znasz wszystkich w/w parametrów swojego połączenia, skontaktuj się z dostawcą internetu -powinien udzielić Ci takich informacji.

Ja łączę się z internetem za pomocą neostrady, jednak używam modemu, który jest routerem (rozdziela sygnał na 4 komputery), stąd mam stały wewnętrzny adres IP. Zacząłem więc od przekierowania portu 80 na swój komputer. Potem zarejestrowałem domenę na www.dyndns.org i zabrałem się do instalacji serwera www.

1) Instalacja

Aby uruchomić przyzwoity serwer www, będziemy musieli zainstalować trzy paczki:

apache
php
mysql


Apache, to najpopularniejszy darmowy serwer www, bez niego nic nie udostępnimy.
php, to rozszerzenie do serwera apache, które dodaje obsługę języka skryptowego php. Na dzień dzisiejszy nie ma chyba strony internetowej, która by z tego nie korzystała.
mysql, to serwer baz danych - nie jest konieczny, ale czasem może się przydać, zwłaszcza przy bardziej rozbudowanych stronach, czy popularnych dziś CMS-ach (content menagement system).

w/w paczki możemy uzyskać na kilka sposobów, np:

$ swaret --install nazwa_paczki

lub po prostu wchodząc na stronę www.slackware.com/pb wyszukujemy po nazwie paczki, ściągamy na dysk (np do /tmp) i wystarczy już tylko:

$ installpkg nazwa_paczki

W momencie pisania tego FAQ, dostępne były paczki w wersjach:
apache-1.3.33-i486-1
php-4.3.10-i486-1
mysql-4.0.23a-i486-1


I to na nich oparłem to FAQ.

2) Konfiguracja

Zakładam, że w/w paczki są już zainstalowane, pora na trudniejszą cześć zabawy, czyli konfigurację

Swoim ulubionym edytorem tekstowym (ja używam vim) edytujemy (jako root):

$ vim /etc/apache/httpd.conf

W którym nanosimy następujące poprawki:

a) w linii nr 180, gdzie wyhashowane (# na początku linii) jest polecenie Listen poniżej wpisujemy:

Listen $IP

Gdzie $IP zamieniamy na nasz wewnętrzny adres IP. Jeśli mamy wyłącznie zewnętrzny, to wpisujemy tylko ten. To polecenie definiuje adres na jakim nasz serwer będzie nasłuchiwał wywołań.
b) przejeżdżamy do linii nr 313, jeśli jest wyhashowana, to odhaszujmy ją. Powinna wyglądać tak:

Port 80

Jeśli port jest ustawiony na inny niż 80, to powinniśmy to zmienić albo zadbać o odpowiednie przekierowania. Z kolei to polecenie definiuje port, na którym apache będzie nasłuchiwał.
c) w linii 335 definiujemy adres email administratora (nasz)
d) przeskakujemy do linii 354 i tu ustawiamy nazwę domeny, której będziemy używać (np franek.isageek.net)
e) kolejnej modyfikacji dokonujemy w linii nr 441 - na końcu tej linii dopisujemy (po odstępie):

index.html.var index.php

To sprawi, ze nasz serwer będzie domyślnie podawał kolejno: index.html index.html.var index.php, ten na który trafi pierwszy zostanie wyświetlony. Kolejność tych plików można zmieniać dowolnie, w zależności od preferencji.

f) ostatnią sprawą będzie odhashowanie linii 1040, co sprawi że apache domyślnie będzie się spodziewał istnienia rozszerzenia php.

Zanim przejdziemy do włączenia serwera www, trzeba jeszcze zmodyfikować ustawienia reguł firewall. W tym celu przechodzimy do katalogu /etc/rc.d i swoim ulubionym edytorem tekstu modyfikujemy plik rc.firewall . W nim, najlepiej na końcu, musimy dopisać jedną linijkę:

Kod: Zaznacz cały

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
W ten sam sposób modyfikujemy plik /etc/hosts.allow w którym (znowu najlepiej na końcu) należy dopisać linijkę:

Kod: Zaznacz cały

httpd: ALL: ALLOW
Na tym etapie najłatwiej będzie zrestartować komputer, aby zmiany odniosły skutek. Jest bardzo dużo metod na zaktualizowanie reguł firewall bez restartu, ale to oddzielny temat.

Gdy już wykonamy w/w instrukcje, przechodzimy do katalogu /etc/rc.d i tam jako root wydajemy polecenie:

$ chmod +x rc.httpd

To sprawi że przy każdym starcie systemu, serwer apache zostanie uruchomiony automatycznie.

$ ./rc.httpd start&

lub alternatywnie:

$ apachectl start

Serwer apache powinien pięknie się uruchomić. Po wpisaniu naszego adresu IP w przeglądarkę, powinna się nam wyświetlić strona testowa apache. Strony www są przechowywane w katalogu /var/www/htdocs . Pora sprawdzić czy działa nasze php. W tym celu przechodzimy do /var/www/htdocs i tam zakładamy plik phpinfo.php o następującej treści:

Kod: Zaznacz cały

<? phpinfo() ?>
Zapisujemy, otwieramy przeglądarkę, w jej adres wpisujemy: http://nasz.adres.ip/phpinfo.php . Jeśli wyświetli się biało-granatowa strona z licznymi tabelami i mnóstwem informacji, to znaczy że jesteśmy w domu i php nam działa :).

3) MySQL

Przyszła kolej na serwer mysql - Ci, którzy nie potrzebują baz danych mogą swobodnie opuścić ten krok.

Jako root wydajemy następujące polecenia:
$ mysql_install_db

tu instalujemy domyślne bazy danych

$ chown -R mysql:mysql /var/lib/mysql/mysql

nadajemy odpowiednia prawa katalogowi, w którym przechowywane są bazy

$ chmod +x /etc/rc.d/rc.mysqld

nadajemy bit wykonywalności skryptowi odpowiedzialnemu za automatycznie włączenie serwera mysql wraz ze startem systemu.

$ /etc/rc.d/rc.mysqld start&

włączamy serwer mysql

$ ps -A |grep sql[/i]
Po wydaniu ostatniego polecenia, powinniśmy uzyskać mniej więcej coś takiego:

Kod: Zaznacz cały

  961 ?        00:00:00 mysqld_safe
  980 ?        00:00:07 mysqld
  981 ?        00:00:00 mysqld
  982 ?        00:00:00 mysqld
  983 ?        00:00:00 mysqld
  984 ?        00:00:00 mysqld
  985 ?        00:00:00 mysqld
  986 ?        00:00:00 mysqld
  987 ?        00:00:00 mysqld
  988 ?        00:00:00 mysqld
  989 ?        00:00:00 mysqld
Jest to przefiltrowana lista procesów - polecenie ps -A|grep sql wyświetla tylko te linijki listy, które zawierają sekwencję znaków sql. To polecenie jest odpowiednikiem windowsowego menadżera programów. Pierwsza liczba to numer porządkowy procesu, znak ? świadczy o tym że dany program jest uruchomiony 'w tle'. ostatnia informacja to nazwa procesu.

mysqladmin -u root password hasło

Gdzie hasło zastępujemy hasłem do bazy danych. Jeśli będziemy trzymali w niej jakieś poufne dane (np osobowe) to powinniśmy założyć względnie mocne hasło (min 8 znaków, składające się z małych i wielkich liter oraz cyfr, bez wyrazów słownikowych). Teraz pora na test naszego serwera mysql, w tym celu wydajemy polecenie(jako root):

mysql -p

Wpisujemy hasło i powinniśmy dostać coś takiego:

Kod: Zaznacz cały

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.20

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
To oznacza że serwer baz danych działa poprawnie i jest gotowy do pracy :). Teoretycznie właśnie nastąpił koniec instalacji. Jednak dla wygody zarządzania bazami, wielu administratorów decyduje się na zainstalowanie skryptu phpMyAdmin.

4) phpMyAdmin

Jest to menedżer, który umożliwia łatwe i wygodne zarządzanie bazami danych poprzez www. Można go pobrać za darmo ze strony http://www.phpmyadmin.net . W chwili pisania tego FAQ, dostępna była wersja phpMyAdmin-2.6.1-pl3.tar.bz2 .
Ściągamy paczkę do katalogu np /tmp . Tam wydajemy polecenia:

tar -xvjf phpMyAdmin-wersja.tar.bz2

tym sposobem właśnie rozpakowaliśmy archiwum

mv phpMyAdmin-wersja phpmyadmin

zmiana nazwy

mv phpmyadmin /var/www/htdocs/

przenosimy katalog w miejsce, w którym przechowywane są strony www.

Następnym krokiem będzie edycja pliku /var/www/htdocs/phpmyadmin/config.inc.php , używamy do tego, tradycyjnie, swojego ulubionego edytora i wprowadzamy następujące zmiany:
a) w linii 39 powinniśmy mieć coś takiego:

Kod: Zaznacz cały

$cfg['PmaAbsoluteUri'] = 'http://nasz.adres.ip/phpmyadmin/';
dzięki temu odnośniki w samym menedżerze będą działać (menadżer odwołuje się do własnych zasobów poprzez ten link)

b) w linii 65 powinniśmy mieć coś takiego:

Kod: Zaznacz cały

$i = 1;
to numer konfiguracji, z której będziemy korzystać. Konfiguracja o numerze 0 to ustawienia przykładowe, z załączonymi opisami zmiennych. Na dobrą sprawę można korzystać nawet z 0.

c) w liniach 125-149 znajduje się właściwa konfiguracja, ten obszar powinien przypominać coś takiego:

Kod: Zaznacz cały

$cfg['Servers'][$i]['host']            = 'localhost';
$cfg['Servers'][$i]['port']            = '';
$cfg['Servers'][$i]['socket']          = '';
$cfg['Servers'][$i]['connect_type']    = 'tcp';
$cfg['Servers'][$i]['compress']        = FALSE;
$cfg['Servers'][$i]['controluser']     = '';
$cfg['Servers'][$i]['controlpass']     = '';
$cfg['Servers'][$i]['auth_type']       = 'http';
$cfg['Servers'][$i]['user']            = 'root';
$cfg['Servers'][$i]['password']        = '';
$cfg['Servers'][$i]['only_db']         = '';
$cfg['Servers'][$i]['verbose']         = '';
$cfg['Servers'][$i]['pmadb']           = ''; // 'phpmyadmin' - see scripts/create_tables.sql
$cfg['Servers'][$i]['bookmarktable']   = ''; // 'PMA_bookmark'
$cfg['Servers'][$i]['relation']        = ''; // 'PMA_relation'
$cfg['Servers'][$i]['table_info']      = ''; // 'PMA_table_info'
$cfg['Servers'][$i]['table_coords']    = ''; // 'PMA_table_coords'
$cfg['Servers'][$i]['pdf_pages']       = ''; // 'PMA_pdf_pages'
$cfg['Servers'][$i]['column_info']     = ''; // 'PMA_column_info'
$cfg['Servers'][$i]['history']         = ''; // 'PMA_history'
$cfg['Servers'][$i]['verbose_check']   = TRUE;
$cfg['Servers'][$i]['AllowDeny']['order']
                                       = '';
$cfg['Servers'][$i]['AllowDeny']['rules']
                                       = array();
Od teraz po wpisaniu w przeglądarce http://nasz.adres.ip/phpmyadmin powinno się pojawić okno logowania i wszystko powinno hulać :).

Uwagi:
Kilka procedur w tym FAQ można było skrócić, jednak chciałem aby ten tekst był jak najprostszy dla początkujących, a także chciałem pokazać jak działają niektóre komendy.
Ponadto, należy pamiętać, że to co opisałem powyżej to absolutne minimum wymagane do uruchomienia serwera. Tym, którzy chcą mieć większą kontrolę nad swoim komputerem polecam dokładne przestudiowanie pliku /etc/apache/httpd.conf a także pozostałych plików z katalogu /etc/apache.

Autorzy: dame
Osoby, które użyczyły mi swojej wiedzy na ten temat: Sad, tomekk i inni
Ostatnio zmieniony 2005-03-25, 08:31 przez dame, łącznie zmieniany 16 razy.
aktualnie windows xp
Awatar użytkownika
PaST
Użytkownik
Posty: 521
Rejestracja: 2004-09-09, 20:19
Lokalizacja: Siedlce

Re: server www: apache + php + mysql + phpmyadmin

Post autor: PaST »

Good work guyz... tylko chyba bardziej pasowała by nazwa "server www - apache + php + mysql

Ale to tylko moje zdanie :)~
"Lepiej być ambitnym, a nie tylko tak sądzić" @ NumerRaz
Awatar użytkownika
Skyscraper
Administrator
Posty: 753
Rejestracja: 2004-05-22, 10:46
Lokalizacja: Wrocław
Kontakt:

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Skyscraper »

LOadiNg_ pisze:Good work guyz... tylko chyba bardziej pasowała by nazwa "server www - apache + php + mysql
Dokladnie, tytul jest do zmiany. Do tego trzeba jeszcze porpawic ortografy. I dobrze by bylo popracowac nad struktura dokumentu (zasady sa tu http://forum.slackware.pl/viewtopic.php?t=10)
Ale tekst jest fajny :)
Awatar użytkownika
dame
Moderator w st. spocz.
Posty: 985
Rejestracja: 2004-09-25, 17:37
Lokalizacja: wawa

Re: server www: apache + php + mysql + phpmyadmin

Post autor: dame »

Wlasnie bardzo bym prosil o poprawienie bledow ortograficznych -zrobilem co moglem, ale wiem ze mam z tym duzy problem :oops:
Natomiast co do ukladu - to juz nie mialem sily sie nad tym zastanawiac ;) jak juz odpoczne to poprawie :)
aktualnie windows xp
Awatar użytkownika
Hannibal
Moderator w st. spocz.
Posty: 1644
Rejestracja: 2004-06-08, 16:03
Lokalizacja: Łódź

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Hannibal »

Konqueror + aspell błędów nie stwierdził, no może poza tym że chciał zamieniać www na WWW ;)
[size=75]Hannibal@current@2.6.X[/size]
Awatar użytkownika
Skyscraper
Administrator
Posty: 753
Rejestracja: 2004-05-22, 10:46
Lokalizacja: Wrocław
Kontakt:

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Skyscraper »

Hannibal pisze:Konqueror + aspell błędów nie stwierdził, no może poza tym że chciał zamieniać www na WWW ;)
To proponuje zaczac uzywac czegos normalnego (patrz: slownik ortograficzny w wersji drukowanej) a nie szajsu komputerowego.
jesli wg tego programu co napisales:
- koŻystał
- poprostu
- brak polskich liter
- itp
sa poprawne to powodzenia :) a to tylko przyklady :)
Awatar użytkownika
Corvin
Administrator
Posty: 1143
Rejestracja: 2004-05-21, 15:04
Lokalizacja: Gdańsk

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Corvin »

f) ostanią sprawą bedzię odhashowanie linii 1040.
tak to nie może być u mnie to jest komentarz i pisze się reguł.

Poza tym dawaj wędkę a nie rybę i informatyka nie polega na nauczeniu się tego gdzie trzeba wpisać/ kliknąć tylko często na rozumieniu pewnych procesów.
Autorzy: dame, Sad, Corvin, tomekk i inni
edit: proszę mnie wypisać z tej listy ;) dopóki to nie nabierze jakiegoś kształtu.
"Spróbuj zapalić maleńką świeczkę zamiast przeklinać ciemność."
Konfucjusz
Kahir
Użytkownik
Posty: 10
Rejestracja: 2004-11-04, 22:20

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Kahir »

To sprawi, ze nasz serwer będzie domyślnie podawał kolejno: index.html index.html.var index.php
Nie lepiej w kolejnosci index.php index.html ? Wówczas najpierw serwer sprawdźi, czy jest plik php i czy interpreter działa, a jeżeli nie to wyświetli html...
Wszędzie dobrze, ale w /home najlepiej.
Awatar użytkownika
Corvin
Administrator
Posty: 1143
Rejestracja: 2004-05-21, 15:04
Lokalizacja: Gdańsk

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Corvin »

$ ./rc.httpd start&


ehhhh nie tak

Kod: Zaznacz cały

apachectl start
starczy
"Spróbuj zapalić maleńką świeczkę zamiast przeklinać ciemność."
Konfucjusz
Awatar użytkownika
Hannibal
Moderator w st. spocz.
Posty: 1644
Rejestracja: 2004-06-08, 16:03
Lokalizacja: Łódź

Re: server www: apache + php + mysql + phpmyadmin

Post autor: Hannibal »

Skyscraper pisze:To proponuje zaczac uzywac czegos normalnego (patrz: slownik ortograficzny w wersji drukowanej) a nie szajsu komputerowego.
jesli wg tego programu co napisales:
- koŻystał
:wstyd:
Namieszali w 3.4.0 w 3.3.2 działało ładnie... Automatyczne wykrywanie błędów znajduje tylko pierwszy, ale już odpalenie ręczne pozwoliło mi parę zonków wykryć. Mam nadzieję że w 3.4.1 to poprawią bo przydatne było :/
[size=75]Hannibal@current@2.6.X[/size]
Awatar użytkownika
loop0
Moderator w st. spocz.
Posty: 931
Rejestracja: 2004-09-26, 09:59
Lokalizacja: Białystok

Re: server www: apache + php + mysql + phpmyadmin

Post autor: loop0 »

Dame mam male pytanko. Czy bedziesz zabieral sie za tumacznie konfinga apache ? Moduly itp. Bo jak nie to ja cos o tym skrobne bo akurat beda swięta czyli bede mial wolny czas.
----------------------------------------------------------------------------------------
[b]Jeśli nie wiadomo o co chodzi to chodzi o roota ![/b]
Awatar użytkownika
dame
Moderator w st. spocz.
Posty: 985
Rejestracja: 2004-09-25, 17:37
Lokalizacja: wawa

Re: server www: apache + php + mysql + phpmyadmin

Post autor: dame »

neo182: narazie nie planuje - z tym faq musze jeszcze porzadek zrobic, a sam musialbym pozadnie poczytac zeby sie zabrac za tak duza sprawe... ale sluze pomoca :]
aktualnie windows xp
Awatar użytkownika
dame
Moderator w st. spocz.
Posty: 985
Rejestracja: 2004-09-25, 17:37
Lokalizacja: wawa

Re: server www: apache + php + mysql + phpmyadmin

Post autor: dame »

ok nałożyłem kilka zmian, głównie merytorycznych, choć teraz powinno to bardziej przypominać polszczyzne ;). niestety błędów ortograficznych zwyczajnie nie widzę - jeśli ktoś byłby tak uprzejmy i poprawił, byłbym wdzięczny :)

Acha, to jest cytat z man ps (dotyczy kolumny TIME z wydruku):
It displays [...] the cumulated CPU time in [dd-]hh:mm:ss format (TIME)
czy moglby mi ktos to przetlumaczyc? ni w ząb nie wiem co to jest skumulowany czas procesora, zwlaszcza w odniesieniu do procesu :P

Corvin: na twoje wlasne zyczenie
aktualnie windows xp
Awatar użytkownika
dame
Moderator w st. spocz.
Posty: 985
Rejestracja: 2004-09-25, 17:37
Lokalizacja: wawa

Re: server www: apache + php + mysql + phpmyadmin

Post autor: dame »

ortografia poprawiona, czy macie jeszcze jakies uwagi?
aktualnie windows xp
matchil
Użytkownik
Posty: 115
Rejestracja: 2004-09-19, 11:55
Lokalizacja: Pojebanice
Kontakt:

Re: server www: apache + php + mysql + phpmyadmin

Post autor: matchil »

Hmm taki maly request: moze ktos sie pokusi zeby napisac jak to (apach +php +mysql ...) wsadzic w jail'a (chroot'a). To by bylo juz w ogole full wypas ;>

Peace & keep up the good work :)

BTW Merry Easter to all ;)
I have your life for nothing just like you had mine ...
See for yourself how it is to live with a corrupted mind ...
ODPOWIEDZ