May 1, 2025, Thursday, 120

SK Zadanie 7

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Apache 2)
(Ankiety)
 
(47 intermediate revisions not shown)
Line 4: Line 4:
==Zadania==
==Zadania==
 +
=== Zadanie 1 ===
 +
Zainstalować serwer Apache 2 i stworzyć przykładową stronę uruchamiającą się pod adresem: http://localhost.
 +
=== Zadanie 2 ===
 +
Należy stworzyć własnego wirtualnego hosta (Virtual Host) o nazwie <code>Kowalski.net</code> (podstawiając własne nazwisko) i zmodyfikować plik <code>/etc/hosts</code> tak, by po wpisaniu: http://Kowalski.net uruchomiła się odpowiednia strona.
-
==LAMP==
+
=== Zadanie 3 ===
 +
Instalujemy serwer MySQL, tworzymy nową bazę <code>MojaBaza</code> oraz użytkownika <code>admin</code>, któremu nadajemy wszelkie uprawnienia do tej bazy danych.
 +
=== Zadanie 4 ===
 +
Instalujemy PHP oraz tworzymy plik <code>info.php</code> w folderze utworzonej uprzednio strony (wirtualnego hosta), z zawartością:
 +
<?php
 +
  echo "Ala ma kota";
 +
  phpinfo();
 +
?>
 +
I sprawdzamy, czy wszystko działa po wpisaniu: http://Kowalski.net/info.php.
 +
=== Zadanie 5 ===
 +
Instalujemy system CMS Wordpress, ściągając paczkę ze strony:  https://wordpress.org/download/.
 +
Instalujemy go w folderze naszego wirtualnego hosta i sprawdzamy, czy umiemy dostawić post w naszej stronie.
 +
=== Zadanie 6 ===
 +
Na maszynie wirtualnej uruchamiamy serwer SAMBA i udostępniamy anonimowo folder <code>/samba/anonymous</code>. Próbujemy się zalogować z poziomu Windows na innym komputerze w tej samej sieci.
 +
=== Zadanie 7 ===
 +
Na maszynie wirtualnej uruchamiamy serwer SAMBA i udostępniamy bezpiecznie (z logowaniem) folder <code>/samba/secured</code>, tworząc nowego użytkownika i ustawiając mu hasło w SAMBIE. Próbujemy się zalogować z poziomu Windows na innym komputerze w tej samej sieci.
 +
 
 +
==Platforma LAMP==
LAMP jest to zestaw oprogramowania typu open source stanowiący popularną platformę serwerową dynamicznych stron WWW. Na LAMP składają się (zgodnie ze skrótem):
LAMP jest to zestaw oprogramowania typu open source stanowiący popularną platformę serwerową dynamicznych stron WWW. Na LAMP składają się (zgodnie ze skrótem):
Line 17: Line 38:
Celem zajęć będzie zainstalowanie i skonfigurowanie platformy LAMP w wersji Apache+MySQL+PHP. Następnie, w ramach przetestowania konfiguracji, postawimy prostą stronę internetową opartą na systemie zarządzania treścią Wordpress.
Celem zajęć będzie zainstalowanie i skonfigurowanie platformy LAMP w wersji Apache+MySQL+PHP. Następnie, w ramach przetestowania konfiguracji, postawimy prostą stronę internetową opartą na systemie zarządzania treścią Wordpress.
-
==Apache 2==
+
==Serwer Apache 2==
'''Apache''' to wieloplatformowy serwer WWW na licencji wolnego oprogramowania. Jest najszerzej stosowanym serwerem HTTP w Internecie.
'''Apache''' to wieloplatformowy serwer WWW na licencji wolnego oprogramowania. Jest najszerzej stosowanym serwerem HTTP w Internecie.
Drugim bardzo popularnym serwerem HTTP na rynku jest '''nginx'''. Decyzja, który z serwerów wykorzystać w konkretnym przypadku wymaga zawsze dokładnej oceny. Serwerem ''nginx'' nie będziemy się zajmować na zajęciach, jednakże instrukcje do jego instalacji można znaleźć tutaj: [http://www.if.pw.edu.pl/~lgraczyk/sk/html/zaj6/nginx.html Instalacja serwera nginx].
Drugim bardzo popularnym serwerem HTTP na rynku jest '''nginx'''. Decyzja, który z serwerów wykorzystać w konkretnym przypadku wymaga zawsze dokładnej oceny. Serwerem ''nginx'' nie będziemy się zajmować na zajęciach, jednakże instrukcje do jego instalacji można znaleźć tutaj: [http://www.if.pw.edu.pl/~lgraczyk/sk/html/zaj6/nginx.html Instalacja serwera nginx].
-
===Zanim zaczniesz===
+
===Zanim zaczniesz instalację LAMP===
Zanim zaczniesz cokolwiek instalować:
Zanim zaczniesz cokolwiek instalować:
-
  apt-get update
+
  sudo apt-get update
-
oraz ewentualnie
+
oraz ewentualnie:
-
  apt-get upgrade
+
  sudo apt-get dist-upgrade
===Zadanie 1: instalacja Apache2===
===Zadanie 1: instalacja Apache2===
-
Włączyć przeglądarkę i przejść do adresu http://localhost/ . Nie powinno się nic wyświetlić.
+
Włączyć przeglądarkę i przejść do adresu http://localhost/ - nie powinno się nic wyświetlić.
-
Następnie należy zainstalować paczkę apache2 i przetestować czy działa: odświerzyć stronę. Powinna pojawić się strona Apache2 Debian Default Page.
+
Następnie należy zainstalować paczkę <code>apache2</code> i przetestować czy działa: odświeżyć stronę. Powinna pojawić się strona Apache2 Debian Default Page.
-
Strona serwowana w tym momencie przez nasz komputer znajduje się w katalogu /var/www/html/ (index.html). Proszę wejść do tego katalogu i stworzyć wewnątrz plik tekstowy foo.html z dowloną treścią (np. “Ala ma kota”). Plik powinien zostać poprawnie wyświetlony przez przeglądarkę po wpisaniu http://localhost/foo.html. Podobnie, po wpisaniu adresu IP komputera na którym uruchomiony jest serwer np. http://194.29.175.132/foo.html możemy oglądać zawartość strony na zewnątrz.
+
Strona serwowana w tym momencie przez nasz komputer znajduje się w katalogu <code>/var/www/html/</code> (plik <code>index.html</code>). Proszę wejść do tego katalogu i stworzyć wewnątrz plik tekstowy <code>foo.html</code> z dowolną treścią (np. “Ala ma kota”). Plik powinien zostać poprawnie wyświetlony przez przeglądarkę po wpisaniu http://localhost/foo.html. Podobnie, po wpisaniu adresu IP komputera na którym uruchomiony jest serwer np. http://194.29.175.132/foo.html możemy oglądać zawartość strony z dowolnego innego komputera (oczywiście znajdującego się w takiej sieci, w której widzi nasz adres IP).
-
===Zadanie 2: własna strona www - virtual host===
+
===Zadanie 2: własna strona WWW - Virtual Host===
-
# Tworzymy katalog przechowywujący wszystkie pliki naszej strony. Zwykle strony przechowujemy w folderze /var/www. Polecane jest stworzenie folderu o nazwie wybranej dla strony domeny - ten przykład jest rozpisany dla example.com. Proszę stworzyć stronę o domenie związanej z nazwiskiem, np. nazwisko.net.
+
 
 +
W ogólności na jednym serwerze WWW może znajdować się więcej niż jedna strona (domena). Takie pojedyncze strony nazwyane są wirtualnymi hostami - '''Virtual Hosts'''. Aby stworzyć własną stronę:
 +
 
 +
# Tworzymy katalog przechowywujący wszystkie pliki naszej strony. Zwykle strony przechowujemy w folderze <code>/var/www</code>. Polecane jest stworzenie folderu o nazwie wybranej dla strony domeny - ten przykład jest rozpisany dla strony o nazwie <code>example.com</code>. W Państwa przypadku - proszę stworzyć stronę o domenie związanej z Waszym nazwiskiem, np. <code>Kowalski.net</code>.
#Ponieważ jest to folder systemowy, należałoby rozpocząć od ustawienia odpowiednich uprawnień:
#Ponieważ jest to folder systemowy, należałoby rozpocząć od ustawienia odpowiednich uprawnień:
Line 43: Line 67:
  sudo chmod -R 755 /var/www
  sudo chmod -R 755 /var/www
-
#Stwórz plik tekstowy index.html zawierający dowolną frazę.
+
#Stwórz plik tekstowy <code>index.html</code> zawierający dowolną frazę.
-
#Tworzenie wirtualnego hosta (Virtual Host)
+
'''Tworzenie wirtualnego hosta (Virtual Host)'''
-
W ogólności na jednym serwerze WWW może znajdować się więcej niż jedna strona (domena). Takie pojedyncze strony nazwyane są wirtualnymi hostami Virtual Hosts. Tworzy się je oraz konfiguruje w katalogach platformy apache2, mianowicie /etc/apache2. Najważniejsze elementy konfiguracji apache2:
+
Wirtualne hosty tworzy się oraz konfiguruje w katalogach platformy Apache 2, mianowicie w folderze <code>/etc/apache2</code>. Najważniejsze elementy konfiguracji serwera Apache 2:
-
* apache2.conf: główny plik konfiguracyjny serwera.
+
* <code>apache2.conf</code>: główny plik konfiguracyjny serwera.
-
* sites-available/: katalog zawierający wszystkie pliki wirtualnych hostów, które definiują strony www. W tym katalogu znajdują się wszystkie dostępne strony. Strony te nie muszą być aktywne.
+
* <code>sites-available/</code>: katalog zawierający wszystkie pliki wirtualnych hostów, które definiują kolejne strony WWW. W tym katalogu znajdują się wszystkie dostępne strony (nie wszystkie strony muszą być aktywne i dostępne).
-
* sites-enabled/: katalog określający które ze stron będą hostowane przez serwer apache2. Zwykle folder ten zawiera linki symboliczne do plików w katalogu sites-available.
+
* <code>sites-enabled/</code>: katalog określający które ze stron będą hostowane przez serwer Apache 2. Zwykle folder ten zawiera linki symboliczne do plików w katalogu <code>sites-available</code>.
-
By skonfigurować wirtualny host najłatwiej jest skopiować domyślny plik konfiguracyjny 000-default.conf znajdujący się w katalogu sites-avaliable. Polecane jest nadanie mu nazwy odpowiadającej nazwie domeny np example.com.conf. Nowy plik musi się kończyć rozszerzeniem *.conf!
+
By skonfigurować wirtualny host najłatwiej jest skopiować domyślny plik konfiguracyjny <code>000-default.conf</code> znajdujący się w katalogu <code>sites-avaliable</code>. Polecane jest nadanie mu nazwy odpowiadającej nazwie domeny, np. <code>example.com.conf</code>. Nowy plik '''musi''' kończyć się rozszerzeniem *.conf!
Następnie należy go odpowiednio zmodyfikować:
Następnie należy go odpowiednio zmodyfikować:
Line 59: Line 83:
  ServerName http://www.example.com
  ServerName http://www.example.com
-
*Zmienić ścieżkę w DocumentRoot:
+
*Zmienić ścieżkę w <code>DocumentRoot</code>:
  DocumentRoot /var/www/example.com
  DocumentRoot /var/www/example.com
Line 65: Line 89:
  ServerAlias example.com
  ServerAlias example.com
-
* Zapisz i wyjdź.
+
* Zapisać i wyjść zpliku.
-
Ostatnim krokiem jest aktywacja hosta oraz restart serwera apache2.
+
Ostatnim krokiem jest aktywacja hosta oraz restart serwera Apache 2.
-
* Stwórz dowiązanie symboliczne do modyfikowanego przed chwilą pliku znajdującego się w /etc/apache2/sites-available. Ten utworzony link symboliczny powinien się znaleźć wewnątrz katalogu /etc/apache2/sites-enabled, oraz mieć samą nazwę co odpowiadający plik *.conf w sites-available.
+
* W katalogu  <code>/etc/apache2/sites-enabled</code> stwórz dowiązanie symboliczne do modyfikowanego przed chwilą pliku znajdującego się w <code>/etc/apache2/sites-available</code>. Utworzony link symboliczny powinien mieć dokładnie tę samą nazwę co odpowiadający plik <code>*.conf</code> w folderze <code>sites-available</code>.
-
Dowiązanie symboliczne jest to specjalny rodzaj pliku, który wskazuje (odwołując się za pomocą nazwy/ścieżki) na dowolny inny plik lub katalog, który może nawet w danej chwili nie istnieć; odwołanie jest niewidoczne na poziomie aplikacji - dowiązanie symboliczne jest traktowany jak zwykły plik lub katalog.
+
-
Note Do stworzenia dowiązania symbolicznego służy komenda ln -s [CEL] [NAZWA_LINKU].
+
'''Uwaga!''' Dowiązanie symboliczne (link symboliczny) jest to specjalny rodzaj pliku, który wskazuje (odwołując się za pomocą nazwy/ścieżki) na dowolny inny plik lub katalog, który może nawet w danej chwili nie istnieć; odwołanie jest niewidoczne na poziomie aplikacji - dowiązanie symboliczne jest traktowane jak zwykły plik lub katalog.
-
Alternatywnie można użyć polecenia: sudo a2ensite example.com.
+
-
Restart serwera:
+
-
service apache2 restart
+
'''Uwaga 2!''' Do stworzenia dowiązania symbolicznego służy komenda <code>ln -s [SKĄD] [NAZWA_LINKU_SYMBOLICZNEGO]</code>.
-
Domyślną stroną www wyświetlaną przez serwer po wpisaniu http://localhost jest strona określona przez pierwszy (alfabetycznie) plik konfiguracyjny znajdujący się w katalogu sites-enabled.
+
-
Plik /etc/hosts
+
Alternatywnie można użyć polecenia serwera Apache 2, które zrobi link symboliczny za nas:
-
Plik hosts służy do mapowania (przypisywania) domen internetowych do konkretnych adresów IP. Kiedyś używany powszechnie, w dzisiejszych czasach zwykle zastąpiony przez serwery DNS. Jest to zwykły tekstowy plik, na linuksach znjdujący się w /etc/hosts.
+
sudo a2ensite example.com.
-
Note Jeśli domena jest wpisana w /etc/hosts, zawsze będze używany IP z tego pliku, a komputer w ogóle nie wykona zapytania DNS.
+
Po ustawieniu wirtualnych hostów, musimy zrestartować serwe Apache 2:
-
Pliki hosts są używane do dziś, np. w małych firmach, które nie chcą stawiać firmowych serwerów DNS.
+
-
Należy zmodyfikować plik /etc/hosts w ten sposób, by dodać nowe mapowanie:
+
sudo service apache2 restart
-
127.0.1.2 example.com
+
'''Uwaga 3!''' Domyślną stroną WWW wyświetlaną przez serwer po wpisaniu http://localhost jest strona określona przez pierwszy (alfabetycznie) plik konfiguracyjny znajdujący się w katalogu <code>sites-enabled</code>. Możemy zatem usunąć (albo lepiej - zmienić nazwę) plik <code>000-default.conf</code> i sprawdzić co się wyświetli po wpisaniu: http://localhost.
-
Należy wpisać w pasku przeglądarki example.com (a właściwie w Państwa przypadku: nazwisko.net) i sprawdzić, czy uzyskujemy utworzoną stronę www.
+
-
MySQL
+
====Plik <code>/etc/hosts</code>====
 +
Plik <code>/etc/hosts</code> służy do mapowania (przypisywania) domen (nazw) internetowych do konkretnych adresów IP. Kiedyś używany powszechnie, w dzisiejszych czasach zwykle zastąpiony przez dedykowane serwery DNS. W systemie Linux jest to zwykły plik tekstowy znajdujący się w folderze <code>/etc</code>.
 +
 
 +
Pliki <code>hosts</code> są używane do dziś, np. w małych firmach, które nie chcą stawiać firmowych serwerów DNS.
 +
 
 +
Należy zmodyfikować plik <code>/etc/hosts</code> w ten sposób, by dodać nowe mapowanie:
 +
 
 +
127.0.1.2 example.com
 +
 
 +
Należy wpisać w pasku przeglądarki http://example.com (a właściwie w Państwa przypadku: http://Kowalski.net) i sprawdzić, czy uzyskujemy utworzoną stronę WWW.
 +
 
 +
'''Uwaga!''' Jeśli domena jest wpisana w pliku <code>/etc/hosts</code>, to zawsze będze używany IP z tego pliku, a komputer w ogóle nie wykona zapytania do serwera DNS.
 +
 
 +
==Bazy danych MySQL==
 +
===Zadanie 3: instalacja i przetestowanie MySQL===
MySQL jest to wolnodostępny system zarządzania relacyjnymi bazami danych.
MySQL jest to wolnodostępny system zarządzania relacyjnymi bazami danych.
-
Zadanie 3: instalacja i przetestowanie MySQL
+
Należy zainstalować paczki: <code>mysql-server</code> i <code>mysql-client</code>.
-
Należy zainstalować paczki mysql-server i mysql-client
+
-
Uwaga, przy instalacji serwera zostanie poproszone o hasło roota dla MySQLa. Należy zapamiętać ustawione hasło!
+
'''Uwaga!''' przy instalacji serwera MySQL zostanie poproszone o hasło roota dla MySQL'a. '''Należy zapamiętać ustawione hasło!'''
-
Zadaniem jest stworzenie bazy danych MojaBaza, oraz użytkownika admin, który będzie posiadał pełne uprawnienia dostępu do niej.
+
Zadaniem jest stworzenie bazy danych <code>MojaBaza</code>, oraz użytkownika <code>admin</code>, który będzie posiadał pełne uprawnienia dostępu do niej.
Zapoznajmy się teraz z działaniem MySQL:
Zapoznajmy się teraz z działaniem MySQL:
-
Logowanie do bazy danych (dla użytkownika root).
+
* Logowanie do bazy danych (dla użytkownika <code>root</code>).
-
mysql -u root -p
+
mysql -u root -p
-
Wylistowanie wszystkich dostępnych baz danych:
+
-
SHOW DATABASES;
+
* Wylistowanie wszystkich dostępnych baz danych:
-
Stworzenie nowej bazy danych:
+
-
CREATE DATABASE nazwa;
+
SHOW DATABASES;
-
Stworzenie nowego użytkownika:
+
-
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
+
* Stworzenie nowej bazy danych:
-
Nadawanie uprawnień użytkownikom:
+
-
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
+
CREATE DATABASE nazwa;
-
Należy nadać uprawnienia ALL PRIVILEGES nowo stworzonemu użytkownikowi dla nowo utworzonej bazy danych oraz wszystkich znajdujących się w jej wnętrzu tabel (należy użyć *):
+
-
GRANT ALL PRIVILEGES ON nazwa. * TO 'newuser'@'localhost';
+
* Stworzenie nowego użytkownika:
-
Proszę wyjść z systemu (exit) oraz zalogować się ponownie na utworzonego użytkownika, a następnie wypisać widoczne dla niego bazy danych.
+
-
PHP
+
-
PHP to skryptowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistnym. Można go umieszczać razem z kodem html.
+
-
Zadanie 4: instalacja serwera PHP
+
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-
Należy zainstalować paczki php5, php-pear, php5-mysql.
+
-
Następnie należy stworzyć plik info.php oraz umieścić go w katalogu naszej uprzednio utworzonej strony www (hostowanej przez apache2). Plik powinien zawierać kilka linijek napisanych w języku PHP, np.:
+
* Nadawanie uprawnień użytkownikom:
-
<?php
+
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
-
  echo "Ala ma kota";
+
-
  phpinfo();
+
-
?>
+
-
Znaczniki <?php oraz ?> oznaczają początek oraz koniec skryptu PHP. Funkcja echo działa podobnie jak w języku bash, natomiast phpinfo() wypisuje informacje o systemie.
+
-
Na koniec zrestartuj serwer apache2. Sprawdź, czy strona wyświetlana jest poprawnie wchodząc na http://localhost/info.php
+
Należy nadać uprawnienia <code>ALL PRIVILEGES</code> nowo stworzonemu użytkownikowi dla nowo utworzonej bazy danych oraz wszystkich znajdujących się w jej wnętrzu tabel (w tym celu należy użyć <code>*</code>):
-
Systemy Zarządzania Treścią (CMS)
+
GRANT ALL PRIVILEGES ON nazwa. * TO 'newuser'@'localhost';
 +
 
 +
Proszę wyjść z linii poleceń MySQL (polecenie <code>exit</code>) i zalogować się ponownie na utworzonego użytkownika, a następnie wypisać widoczne dla niego bazy danych. Jeśli wszystko działa, to MySQL jest zainstalowany i skonfigurowany poprawnie.
 +
 
 +
==Język PHP==
 +
===Zadanie 4: instalacja serwera PHP===
 +
PHP to skryptowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistnym. Można go umieszczać razem z kodem HTML.
 +
 
 +
Należy zainstalować paczki: <code>php</code>, <code>php-pear</code>, <code>php-mysql</code> oraz <code>libapache2-mod-php</code>.
 +
 
 +
Następnie należy stworzyć plik <code>info.php</code> oraz umieścić go w katalogu naszej uprzednio utworzonej strony WWW (hostowanej przez Apache 2). Plik powinien zawierać kilka linijek napisanych w języku PHP, np.:
 +
 
 +
<?php
 +
  echo "Ala ma kota";
 +
  phpinfo();
 +
?>
 +
 
 +
Znaczniki <?php oraz ?>  oznaczają początek oraz koniec skryptu PHP. Funkcja <code>echo</code> działa podobnie jak w języku skryptowym bash, natomiast <code>phpinfo()</code> wypisuje informacje o systemie.
 +
 
 +
Na koniec zrestartuj serwer Apache 2 i srawdź, czy strona wyświetlana jest poprawnie wpisując w przeglądarce adres: http://localhost/info.php .
 +
 
 +
==System zarządzania treścią CMS==
 +
===Zadanie 5: instalacja systemu Wordpress===
System zarządzania treścią (ang. Content Management System, CMS) jesto to oprogramowanie pozwalające na proste tworzenie oraz późniejszą aktualizację serwisu WWW, umożliwiające dalszą rozbudowę przez redakcyjny personel nietechniczny. Dodawane informacje zapisywane są w bazie danych (najczęściej MySQL), a sam system napisany jest zwykle w języku PHP.
System zarządzania treścią (ang. Content Management System, CMS) jesto to oprogramowanie pozwalające na proste tworzenie oraz późniejszą aktualizację serwisu WWW, umożliwiające dalszą rozbudowę przez redakcyjny personel nietechniczny. Dodawane informacje zapisywane są w bazie danych (najczęściej MySQL), a sam system napisany jest zwykle w języku PHP.
-
Zadanie 5: instalacja systemu WordPress
 
Wordpress, najpopularniejszy CMS na świecie, zaprojektowany jest głównie do obsługi blogów. Jest darmowy i rozpowszechniony na licencji GNU. Jeśli interesują Cię inne CMS możesz zerknąć tutaj: http://jakicmswybrac.pl/ .
Wordpress, najpopularniejszy CMS na świecie, zaprojektowany jest głównie do obsługi blogów. Jest darmowy i rozpowszechniony na licencji GNU. Jeśli interesują Cię inne CMS możesz zerknąć tutaj: http://jakicmswybrac.pl/ .
-
Ściągnij ze strony https://wordpress.org/download/ oraz rozpakuj w dowolnym katalogu paczkę WordPress
+
* Ściągnij ze strony https://wordpress.org/download/ oraz rozpakuj w dowolnym katalogu paczkę Wordpress
-
Wrzuć zawartość paczki do katalogu strony hostowanej przez serwer apache2.
+
* Wrzuć zawartość paczki do katalogu strony hostowanej przez serwer Apache 2.
-
Skrypt instalacyjny można odpalić wchodząc na adres hostowanej strony.
+
* Skrypt instalacyjny można odpalić wchodząc na adres hostowanej strony.
-
Podczas instalacji należy podać informacje związane z bazą danych gdzie będą przechowywane treści: należy podać nazwę użytkownika oraz nazwę bazy danych utworzonych uprzednio w zadaniu dotyczącym MySQL.
+
* Podczas instalacji należy podać informacje związane z bazą danych gdzie będą przechowywane treści: należy podać nazwę użytkownika oraz nazwę bazy danych utworzonych uprzednio w zadaniu dotyczącym MySQL.
-
Proszę zmodyfikować/dodać pierwszy wpis do nowo utworzonego bloga.
+
* Proszę zmodyfikować/dodać pierwszy wpis do nowo utworzonego bloga.
 +
 
 +
== Protokół SAMBA ==
 +
 
 +
SAMBA jest protokołem pozwalającym na zdalne udostępnianie plików oraz drukarek w sieci, dostępny za darmo na licencji GNU. Zaletą jest to, że można go wykorzystywać zarówno na systemach Windows jak i Linux, oraz innych platformach. Na zajęciach spróbujemy uruchomić serwer SAMBA na maszynie wirtualnej i połączyć się z komputera Windows.
 +
 
 +
===Zadanie 6===
 +
Uruchomimy serwer SAMBA umożliwiając anonimowe (bez logowania) udostępnianie plików.
 +
 
 +
'''Uwaga!''' Jest to metoda niepolecana, gdyż umożliwia dostęp do naszego komputera dowolnej osobie w sieci bez jakiejkolwiek weryfikacji.
 +
 
 +
* Instalujemy serwer SAMBA poprzez ściągnięcie następujących paczek: <code>samba</code>, <code>samba-common</code>, <code>python-glade2</code>, <code>system-config-samba</code>.
 +
* Wszystkie pliki konfiguracyjne serwera znajdują się w folderze <code>/etc/samba</code>, zatem wchodzimy tam.
 +
* Tworzymy kopię zapasową domyślnego pliku <code>smb.conf</code> (np. skopiować go do pliku <code>smb.conf.DEFAULT</code> - na wypadek, gdybyśmy coś zepsuli.
 +
* Usuwamy '''całą''' zawartość pliku <code>smb.conf</code>  i wpisujemy do niego:
 +
 
 +
#============================ Ustawienia globalne ==============================
 +
[global]
 +
workgroup = WORKGROUP
 +
server string = Samba Server %v
 +
netbios name = ubuntu
 +
security = user
 +
map to guest = bad user
 +
dns proxy = no
 +
 +
#============================ Udostepnianie anonimowe ==========================
 +
 +
[Anonymous]
 +
path = /samba/anonymous
 +
browsable =yes
 +
writable = yes
 +
guest ok = yes
 +
read only = no
 +
force user = nobody
 +
 
 +
* Tworzymy katalog do anonimowego udostępniania: <code>/samba/anonymous</code>.
 +
* Katalogowi (i wszystkiemu wewnątrz) <code>/samba/anonymous</code> ustawiamy uprawnienia 755.
 +
* Zmieniamy właściciela katalogu (i wszystkiego wewnątrz) na użytkownika: <code>nobody</code> i grupę: <code>nogroup</code>.
 +
* Na koniec restartujemy serwer SAMBA:
 +
sudo service smbd restart
 +
 
 +
W systemie Windows wchodzimy do <code>Network</code> - powinien nam sam znaleźć folder o nazwie '''student-XX''' (gdzie XX to numer naszego komputera). Jeśli nie, wpisujemy to w oknie '''Search'''. Powinien się pojawić folder '''Anonymous''', do którego powinniśmy mieć dostęp i wszelkie prawa zapisu/odczytu - przetestować!
 +
 
 +
===Zadanie 7===
 +
W celu udostępnienia plików poprzez SAMBĘ z użyciem logowania, stworzymy nowego użytkownika i nadamy mu odpowiednie hasło. W systemie Windows będziemy logować sie za pomocą tego użytkownika i hasła.
 +
 
 +
* Tworzymy nową grupę:
 +
sudo addgroup sambagroup
 +
* Tworzymy nowego użytkownika i dołączamy go do uprzednio stworzonej grupy:
 +
sudo useradd sambauser -G sambagroup
 +
* Ustawiamy hasło protokołu SAMBA dla tego użytkownika:
 +
sudo smbpasswd -a sambauser
 +
* Następnie tworzymy folder: <code>/sambda/secured</code>.
 +
* Ustawiamy temu folderowi (i wzystkiemu co w środku) analogiczne uprawnienia (775).
 +
* Jako właściciela tego folderu (i wszystkiego co w śrdodku) ustawiamy naszego nowego użytkownika i nową grupę.
 +
* W pliku <code>smb.conf</code> dopisujemy:
 +
#============================ Udostepnianie bezpieczne ==========================
 +
[secured]
 +
path = /samba/secured
 +
valid users = @sambagroup
 +
guest ok = no
 +
writable = yes
 +
browsable = yes
 +
* Restartujemy serwis <code>smbd</code> (serwer SAMBA).
 +
* Sprawdzamy, czy Windows widzi folder '''secured''' i próbujemy do niego wejść, podając użytkownika <code>sambauser</code> i wymyślone przez nas hasło. Testujemy czy wszystko działa!
 +
 
 +
<!--
 +
===Ankiety===
 +
[https://goo.gl/forms/UEr1EsJ9WDePi7MY2 Ankieta szczegółowa z przedmiotu sieci komputerowe]
 +
 
 +
[https://goo.gl/forms/MkjlpzIyqOEIkDS03 Ankieta z przedmiotów prowadzonych w laboratorium komputerowym]
 +
-->

Latest revision as of 08:01, 16 May 2022

Contents

Zadania

Zadanie 1

Zainstalować serwer Apache 2 i stworzyć przykładową stronę uruchamiającą się pod adresem: http://localhost.

Zadanie 2

Należy stworzyć własnego wirtualnego hosta (Virtual Host) o nazwie Kowalski.net (podstawiając własne nazwisko) i zmodyfikować plik /etc/hosts tak, by po wpisaniu: http://Kowalski.net uruchomiła się odpowiednia strona.

Zadanie 3

Instalujemy serwer MySQL, tworzymy nową bazę MojaBaza oraz użytkownika admin, któremu nadajemy wszelkie uprawnienia do tej bazy danych.

Zadanie 4

Instalujemy PHP oraz tworzymy plik info.php w folderze utworzonej uprzednio strony (wirtualnego hosta), z zawartością:

<?php
  echo "Ala ma kota";
  phpinfo();
?>

I sprawdzamy, czy wszystko działa po wpisaniu: http://Kowalski.net/info.php.

Zadanie 5

Instalujemy system CMS Wordpress, ściągając paczkę ze strony: https://wordpress.org/download/. Instalujemy go w folderze naszego wirtualnego hosta i sprawdzamy, czy umiemy dostawić post w naszej stronie.

Zadanie 6

Na maszynie wirtualnej uruchamiamy serwer SAMBA i udostępniamy anonimowo folder /samba/anonymous. Próbujemy się zalogować z poziomu Windows na innym komputerze w tej samej sieci.

Zadanie 7

Na maszynie wirtualnej uruchamiamy serwer SAMBA i udostępniamy bezpiecznie (z logowaniem) folder /samba/secured, tworząc nowego użytkownika i ustawiając mu hasło w SAMBIE. Próbujemy się zalogować z poziomu Windows na innym komputerze w tej samej sieci.

Platforma LAMP

LAMP jest to zestaw oprogramowania typu open source stanowiący popularną platformę serwerową dynamicznych stron WWW. Na LAMP składają się (zgodnie ze skrótem):

  • Linux (system operacyjny)
  • Apache (serwer WWW)
  • MySQL (system baz danych)
  • PHP, lub w zamian Perl, czy Python (język skryptowy)

Platforma LAMP jest idealną bazą do uruchamiania różnego rodzaju systemów CMS (Content Management Systems), takich jak MediaWiki, Joomla, Wordpress czy Drupal, które są podstawą nowoczesnych stron internetowych.

Celem zajęć będzie zainstalowanie i skonfigurowanie platformy LAMP w wersji Apache+MySQL+PHP. Następnie, w ramach przetestowania konfiguracji, postawimy prostą stronę internetową opartą na systemie zarządzania treścią Wordpress.

Serwer Apache 2

Apache to wieloplatformowy serwer WWW na licencji wolnego oprogramowania. Jest najszerzej stosowanym serwerem HTTP w Internecie.

Drugim bardzo popularnym serwerem HTTP na rynku jest nginx. Decyzja, który z serwerów wykorzystać w konkretnym przypadku wymaga zawsze dokładnej oceny. Serwerem nginx nie będziemy się zajmować na zajęciach, jednakże instrukcje do jego instalacji można znaleźć tutaj: Instalacja serwera nginx.

Zanim zaczniesz instalację LAMP

Zanim zaczniesz cokolwiek instalować:

sudo apt-get update

oraz ewentualnie:

sudo apt-get dist-upgrade

Zadanie 1: instalacja Apache2

Włączyć przeglądarkę i przejść do adresu http://localhost/ - nie powinno się nic wyświetlić.

Następnie należy zainstalować paczkę apache2 i przetestować czy działa: odświeżyć stronę. Powinna pojawić się strona Apache2 Debian Default Page.

Strona serwowana w tym momencie przez nasz komputer znajduje się w katalogu /var/www/html/ (plik index.html). Proszę wejść do tego katalogu i stworzyć wewnątrz plik tekstowy foo.html z dowolną treścią (np. “Ala ma kota”). Plik powinien zostać poprawnie wyświetlony przez przeglądarkę po wpisaniu http://localhost/foo.html. Podobnie, po wpisaniu adresu IP komputera na którym uruchomiony jest serwer np. http://194.29.175.132/foo.html możemy oglądać zawartość strony z dowolnego innego komputera (oczywiście znajdującego się w takiej sieci, w której widzi nasz adres IP).

Zadanie 2: własna strona WWW - Virtual Host

W ogólności na jednym serwerze WWW może znajdować się więcej niż jedna strona (domena). Takie pojedyncze strony nazwyane są wirtualnymi hostami - Virtual Hosts. Aby stworzyć własną stronę:

  1. Tworzymy katalog przechowywujący wszystkie pliki naszej strony. Zwykle strony przechowujemy w folderze /var/www. Polecane jest stworzenie folderu o nazwie wybranej dla strony domeny - ten przykład jest rozpisany dla strony o nazwie example.com. W Państwa przypadku - proszę stworzyć stronę o domenie związanej z Waszym nazwiskiem, np. Kowalski.net.
  2. Ponieważ jest to folder systemowy, należałoby rozpocząć od ustawienia odpowiednich uprawnień:
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www
  1. Stwórz plik tekstowy index.html zawierający dowolną frazę.

Tworzenie wirtualnego hosta (Virtual Host)

Wirtualne hosty tworzy się oraz konfiguruje w katalogach platformy Apache 2, mianowicie w folderze /etc/apache2. Najważniejsze elementy konfiguracji serwera Apache 2:

  • apache2.conf: główny plik konfiguracyjny serwera.
  • sites-available/: katalog zawierający wszystkie pliki wirtualnych hostów, które definiują kolejne strony WWW. W tym katalogu znajdują się wszystkie dostępne strony (nie wszystkie strony muszą być aktywne i dostępne).
  • sites-enabled/: katalog określający które ze stron będą hostowane przez serwer Apache 2. Zwykle folder ten zawiera linki symboliczne do plików w katalogu sites-available.

By skonfigurować wirtualny host najłatwiej jest skopiować domyślny plik konfiguracyjny 000-default.conf znajdujący się w katalogu sites-avaliable. Polecane jest nadanie mu nazwy odpowiadającej nazwie domeny, np. example.com.conf. Nowy plik musi kończyć się rozszerzeniem *.conf!

Następnie należy go odpowiednio zmodyfikować:

  • Odkomentować i zmodyfikować linijkę:
ServerName http://www.example.com
  • Zmienić ścieżkę w DocumentRoot:
DocumentRoot /var/www/example.com
  • Dodaj linijkę zawierającą alias:
ServerAlias example.com
  • Zapisać i wyjść zpliku.

Ostatnim krokiem jest aktywacja hosta oraz restart serwera Apache 2.

  • W katalogu /etc/apache2/sites-enabled stwórz dowiązanie symboliczne do modyfikowanego przed chwilą pliku znajdującego się w /etc/apache2/sites-available. Utworzony link symboliczny powinien mieć dokładnie tę samą nazwę co odpowiadający plik *.conf w folderze sites-available.

Uwaga! Dowiązanie symboliczne (link symboliczny) jest to specjalny rodzaj pliku, który wskazuje (odwołując się za pomocą nazwy/ścieżki) na dowolny inny plik lub katalog, który może nawet w danej chwili nie istnieć; odwołanie jest niewidoczne na poziomie aplikacji - dowiązanie symboliczne jest traktowane jak zwykły plik lub katalog.

Uwaga 2! Do stworzenia dowiązania symbolicznego służy komenda ln -s [SKĄD] [NAZWA_LINKU_SYMBOLICZNEGO].

Alternatywnie można użyć polecenia serwera Apache 2, które zrobi link symboliczny za nas:

sudo a2ensite example.com.

Po ustawieniu wirtualnych hostów, musimy zrestartować serwe Apache 2:

sudo service apache2 restart

Uwaga 3! Domyślną stroną WWW wyświetlaną przez serwer po wpisaniu http://localhost jest strona określona przez pierwszy (alfabetycznie) plik konfiguracyjny znajdujący się w katalogu sites-enabled. Możemy zatem usunąć (albo lepiej - zmienić nazwę) plik 000-default.conf i sprawdzić co się wyświetli po wpisaniu: http://localhost.

Plik /etc/hosts

Plik /etc/hosts służy do mapowania (przypisywania) domen (nazw) internetowych do konkretnych adresów IP. Kiedyś używany powszechnie, w dzisiejszych czasach zwykle zastąpiony przez dedykowane serwery DNS. W systemie Linux jest to zwykły plik tekstowy znajdujący się w folderze /etc.

Pliki hosts są używane do dziś, np. w małych firmach, które nie chcą stawiać firmowych serwerów DNS.

Należy zmodyfikować plik /etc/hosts w ten sposób, by dodać nowe mapowanie:

127.0.1.2 example.com

Należy wpisać w pasku przeglądarki http://example.com (a właściwie w Państwa przypadku: http://Kowalski.net) i sprawdzić, czy uzyskujemy utworzoną stronę WWW.

Uwaga! Jeśli domena jest wpisana w pliku /etc/hosts, to zawsze będze używany IP z tego pliku, a komputer w ogóle nie wykona zapytania do serwera DNS.

Bazy danych MySQL

Zadanie 3: instalacja i przetestowanie MySQL

MySQL jest to wolnodostępny system zarządzania relacyjnymi bazami danych.

Należy zainstalować paczki: mysql-server i mysql-client.

Uwaga! przy instalacji serwera MySQL zostanie poproszone o hasło roota dla MySQL'a. Należy zapamiętać ustawione hasło!

Zadaniem jest stworzenie bazy danych MojaBaza, oraz użytkownika admin, który będzie posiadał pełne uprawnienia dostępu do niej.

Zapoznajmy się teraz z działaniem MySQL:

  • Logowanie do bazy danych (dla użytkownika root).
mysql -u root -p
  • Wylistowanie wszystkich dostępnych baz danych:
SHOW DATABASES;
  • Stworzenie nowej bazy danych:
CREATE DATABASE nazwa;
  • Stworzenie nowego użytkownika:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
  • Nadawanie uprawnień użytkownikom:
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;

Należy nadać uprawnienia ALL PRIVILEGES nowo stworzonemu użytkownikowi dla nowo utworzonej bazy danych oraz wszystkich znajdujących się w jej wnętrzu tabel (w tym celu należy użyć *):

GRANT ALL PRIVILEGES ON nazwa. * TO 'newuser'@'localhost';

Proszę wyjść z linii poleceń MySQL (polecenie exit) i zalogować się ponownie na utworzonego użytkownika, a następnie wypisać widoczne dla niego bazy danych. Jeśli wszystko działa, to MySQL jest zainstalowany i skonfigurowany poprawnie.

Język PHP

Zadanie 4: instalacja serwera PHP

PHP to skryptowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistnym. Można go umieszczać razem z kodem HTML.

Należy zainstalować paczki: php, php-pear, php-mysql oraz libapache2-mod-php.

Następnie należy stworzyć plik info.php oraz umieścić go w katalogu naszej uprzednio utworzonej strony WWW (hostowanej przez Apache 2). Plik powinien zawierać kilka linijek napisanych w języku PHP, np.:

<?php
  echo "Ala ma kota";
  phpinfo();
?>

Znaczniki <?php oraz ?> oznaczają początek oraz koniec skryptu PHP. Funkcja echo działa podobnie jak w języku skryptowym bash, natomiast phpinfo() wypisuje informacje o systemie.

Na koniec zrestartuj serwer Apache 2 i srawdź, czy strona wyświetlana jest poprawnie wpisując w przeglądarce adres: http://localhost/info.php .

System zarządzania treścią CMS

Zadanie 5: instalacja systemu Wordpress

System zarządzania treścią (ang. Content Management System, CMS) jesto to oprogramowanie pozwalające na proste tworzenie oraz późniejszą aktualizację serwisu WWW, umożliwiające dalszą rozbudowę przez redakcyjny personel nietechniczny. Dodawane informacje zapisywane są w bazie danych (najczęściej MySQL), a sam system napisany jest zwykle w języku PHP.

Wordpress, najpopularniejszy CMS na świecie, zaprojektowany jest głównie do obsługi blogów. Jest darmowy i rozpowszechniony na licencji GNU. Jeśli interesują Cię inne CMS możesz zerknąć tutaj: http://jakicmswybrac.pl/ .

  • Ściągnij ze strony https://wordpress.org/download/ oraz rozpakuj w dowolnym katalogu paczkę Wordpress
  • Wrzuć zawartość paczki do katalogu strony hostowanej przez serwer Apache 2.
  • Skrypt instalacyjny można odpalić wchodząc na adres hostowanej strony.
  • Podczas instalacji należy podać informacje związane z bazą danych gdzie będą przechowywane treści: należy podać nazwę użytkownika oraz nazwę bazy danych utworzonych uprzednio w zadaniu dotyczącym MySQL.
  • Proszę zmodyfikować/dodać pierwszy wpis do nowo utworzonego bloga.

Protokół SAMBA

SAMBA jest protokołem pozwalającym na zdalne udostępnianie plików oraz drukarek w sieci, dostępny za darmo na licencji GNU. Zaletą jest to, że można go wykorzystywać zarówno na systemach Windows jak i Linux, oraz innych platformach. Na zajęciach spróbujemy uruchomić serwer SAMBA na maszynie wirtualnej i połączyć się z komputera Windows.

Zadanie 6

Uruchomimy serwer SAMBA umożliwiając anonimowe (bez logowania) udostępnianie plików.

Uwaga! Jest to metoda niepolecana, gdyż umożliwia dostęp do naszego komputera dowolnej osobie w sieci bez jakiejkolwiek weryfikacji.

  • Instalujemy serwer SAMBA poprzez ściągnięcie następujących paczek: samba, samba-common, python-glade2, system-config-samba.
  • Wszystkie pliki konfiguracyjne serwera znajdują się w folderze /etc/samba, zatem wchodzimy tam.
  • Tworzymy kopię zapasową domyślnego pliku smb.conf (np. skopiować go do pliku smb.conf.DEFAULT - na wypadek, gdybyśmy coś zepsuli.
  • Usuwamy całą zawartość pliku smb.conf i wpisujemy do niego:
#============================ Ustawienia globalne ============================== 
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu
security = user
map to guest = bad user
dns proxy = no

#============================ Udostepnianie anonimowe ==========================

[Anonymous]
path = /samba/anonymous
browsable =yes
writable = yes
guest ok = yes
read only = no
force user = nobody
  • Tworzymy katalog do anonimowego udostępniania: /samba/anonymous.
  • Katalogowi (i wszystkiemu wewnątrz) /samba/anonymous ustawiamy uprawnienia 755.
  • Zmieniamy właściciela katalogu (i wszystkiego wewnątrz) na użytkownika: nobody i grupę: nogroup.
  • Na koniec restartujemy serwer SAMBA:
sudo service smbd restart

W systemie Windows wchodzimy do Network - powinien nam sam znaleźć folder o nazwie student-XX (gdzie XX to numer naszego komputera). Jeśli nie, wpisujemy to w oknie Search. Powinien się pojawić folder Anonymous, do którego powinniśmy mieć dostęp i wszelkie prawa zapisu/odczytu - przetestować!

Zadanie 7

W celu udostępnienia plików poprzez SAMBĘ z użyciem logowania, stworzymy nowego użytkownika i nadamy mu odpowiednie hasło. W systemie Windows będziemy logować sie za pomocą tego użytkownika i hasła.

  • Tworzymy nową grupę:
sudo addgroup sambagroup
  • Tworzymy nowego użytkownika i dołączamy go do uprzednio stworzonej grupy:
sudo useradd sambauser -G sambagroup
  • Ustawiamy hasło protokołu SAMBA dla tego użytkownika:
sudo smbpasswd -a sambauser
  • Następnie tworzymy folder: /sambda/secured.
  • Ustawiamy temu folderowi (i wzystkiemu co w środku) analogiczne uprawnienia (775).
  • Jako właściciela tego folderu (i wszystkiego co w śrdodku) ustawiamy naszego nowego użytkownika i nową grupę.
  • W pliku smb.conf dopisujemy:
#============================ Udostepnianie bezpieczne ==========================
[secured]
path = /samba/secured
valid users = @sambagroup
guest ok = no
writable = yes
browsable = yes
  • Restartujemy serwis smbd (serwer SAMBA).
  • Sprawdzamy, czy Windows widzi folder secured i próbujemy do niego wejść, podając użytkownika sambauser i wymyślone przez nas hasło. Testujemy czy wszystko działa!