godło

STASZIC

XIV Liceum Ogólnokształcące

Pomoc WWW

Umieszczanie strony na serwerze

Zanim zaczniesz

Aby móc umieścić stronę WWW na szkolnym serwerze musisz posiadać na nim konto. Jeśli jesteś uczniem, najprawdopobniej dostałeś je na początku pierwszej klasy. Jeżeli z jakichś przyczyn nie posiadasz konta, zgłoś się do swojego nauczyciela informatyki lub do bezpośrednio do serwerowni (p. 213).

Kopiowanie plików na serwer

Zanim zaczniesz kopiować pliki na serwer, musisz utworzyć w swoim katalogu domowym katalog na stronę WWW o nazwie .homepage (uwaga na kropkę na początku) i nadać mu oraz swojemu katalogowi domowemu odpowiednie prawa dostępu. Zaloguj się na swoje konto przez SSH i wydaj następujące komendy:

chmod o+x ~
mkdir .homepage
chmod o+x .homepage

Pliki kopiuje się na serwer za pomocą SCP. Dokładną instrukcję korzystania z SCP można znaleźć w zakładce Sieć → Pomoc SSH.

Skopiuj wszystkie pliki wchodzące w skład twojej strony do wcześniej utworzonego katalogu .homepage.

Prawa dostępu

Na koniec należy jeszcze sprawdzić, czy prawa dostępu do plików są właściwe. Jeśli nie są, to należy je zmienić. Można w tym celu skorzystać z polecenia chmod (po zalogowaniu się na serwer przez SSH), lub z programu WinSCP.

  • Wszystkim katalogom wchodzącym w skład strony należy nadać prawa 711. Przykładowo, aby ustawić prawa do katalogu o nazwie "grafika" wykonaj przez SSH polecenie: chmod 711 grafika. Aby zrobić to samo w programie WinSCP, trzeba kliknąć na katalogu prawym klawiszem myszy, wybrać "Properties", a następnie zaznaczyć pola "R," "W", "X" w wierszu "Owner" oraz pola "X" w wierszach "Group" i "Others". Jeśli wszystko zrobisz poprawnie, program WinSCP wyświetli na liście plików w kolumnie "Rights" ciąg znaków "rwx--x--x".
  • Wszystkim pozostałym plikom (np. pliki HTML, grafika) należy nadać prawa 644 (WinSCP wyświetla wówczas w kolumnie "Rights" ciąg znaków "rw-r--r--").

Ponadto, jeśli korzystasz ze skryptów CGI lub PHP:

  • Wszystkim skryptom musisz nadać prawa 700 (WinSCP wyświetla wówczas w kolumnie "Rights" ciąg znaków "rwx------"). Dzięki temu nie będą one mogły być przeglądane przez innych użytkowników serwera.
  • Wszystkim plikom, z których owe skrypty pobierają dane, bądź do których je zapisują, musisz nadać prawa 600 (WinSCP wyświetla wówczas w kolumnie "Rights" ciąg znaków "rw-------"). Dzięki temu pliki te nie będą mogły być przeglądane przez innych użytkowników serwera (co ma znaczenie, gdy np. masz na swojej stronie forum i potrzebujesz zapisać w pliku informacje o jego użytkownikach).

Aby szybko nadać właściwe prawa dostępu wszystkim plikom z rozszerzeniem .php, można posłużyć się poleceniem:

find ~/.homepage -name '*\.php' | xargs chmod 700

Jeśli wszystko wykonałeś poprawnie, twoja strona powinna być dostępna pod adresem: http://NAZWAKONTA.home.staszic.waw.pl/ lub krócej http://NAZWAKONTA.w.staszic.waw.pl

Dostęp do bazy danych SQL

Czym jest baza danych?

Baza danych z interfejsem SQL jest wygodnym sposobem przechowywania różnych danych wykorzystywanych przez skrypty PHP do generowania dynamicznej zawartości Twojej strony WWW. Dane te mogą być oczywiście przechowywane w plikach tekstowych, jednak ich obróbka przy pomocy skryptów jest podatna na błędy i przy dużej ilości danych — po prostu uciążliwa. W bazie wszystkie informacje są przechowywane w postaci tabel, a dostęp do nich uzyskuje się, wysyłając do serwera bazy zapytania w języku SQL.

Dostęp do bazy danych

Szkolnym serwerem baz danych jest MySQL (mysql.staszic.waw.pl). Do utworzenia bazy MySQL służy polecenie mysqlrequest, które należy uruchomić ze swojego konta (przez SSH). Zapyta ono o hasło, które będzie potrzebne do zalogowania się do bazy. Hasło należy potwierdzić klawiszem enter, znaki hasła nie będą wyświetlane podczas wpisywania, skrypt poprosi o hasło dwukrotnie. Dane potrzebne do korzystania z bazy danych:

  • serwer: mysql.staszic.waw.pl
  • użytkownik: taki jak login
  • nazwa bazy: taka jak login
  • hasło: podane do polecenia mysqlrequest

Podłączenie do MySQL w PHP

<?php         
    $mysqlUser = 'login';
    $mysqlPassword = 'haslo';
    $mysqlHost = 'mysql:host=mysql.staszic.waw.pl; dbname='.$mysqlUser;
    $pdoAttributes = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
    
    try {
        $pdo = new PDO($mysqlHost, $mysqlUser, $mysqlPassword, $pdoAttributes);
        /* Zapytania */
    } catch (PDOException $e) {
        echo 'Error: '.$e->getMessage();
    } finally {
        $pdo = null;
    }
?>

Zapomniałem hasła! Co zrobić?

Aby zresetować hasło do bazy danych, możesz użyć polecenia mysqlpasswd. Jeżeli jednak zapomniałeś hasła do konta, zapraszamy do serwerowni (pokój 213).

PostgreSQL

Aby otrzymać bazę PostgreSQL, należy wysłać ze swojego konta szkolnego maila na adres root@staszic.waw.pl wyrażającego taką potrzebę.

Najczęstsze Problemy

Jeśli twoja strona wczytuje się niepoprawnie, nie w całości lub w ogóle, zgłoś to webmasterowi na adres: webmaster@staszic.waw.pl. Przedtem jednak upewnij się, że nie popełniłeś(aś) jednego z poniższych błędów:

Małe i duże litery w nazwach plików

Szkolne serwery pracują pod kontrolą systemu Linux, w którym - w odróżnieniu od Windows - wielkość liter w nazwach plików ma znaczenie! Sprawdź, czy wielkość liter w odsyłaczach i nazwach obrazków na Twojej stronie zgadza się z nazwami plików.

Ukośniki w ścieżkach dostępu do plików

Sprawdź, czy w użytych na stronie odsyłaczach i adresach obrazków nie umieściłeś odwrotnych ukośników \ (ang. backslash) zamiast zwykłych / (ang. slash).

Komunikaty o błędach

  • Jeśli zamiast strony pojawia się komunikat "Not found", to znaczy, że serwer nie może znaleźć żądanej ścieżki lub pliku. Sprawdź, czy poprawnie nazwałeś pliki i katalogi, oraz czy nie popełniłeś błędu w odsyłaczu.
  • Jeśli pojawia się komunikat "Forbidden", to znaczy, że błędnie ustawiłeś prawa dostępu do pliku lub któregoś z katalogów nadrzędnych. Sprawdź ich poprawność, pomagając sobie powyższą instrukcją.
  • Jeśli przy próbie wykonania skryptu pojawia się komunikat "Internal Server Error", to być może nie nadałeś skryptowi prawa do wykonania (patrz powyższa instrukcja). Możliwe, że skrypt jest błędny - spróbuj go najpierw uruchomić z poziomu shella (po zalogowaniu się przez SSH) i popraw ewentualne błędy.

Strony w innych językach niż PHP

Istnieje możliwość napisania strony właściwie w dowolnym języku. Tak samo jak w przypadku stron w PHP, właściciel musi mieć uprawnienia do wykonania pliku. Jednak w przypadku innych języków, plik wykonywalny musi mieć rozszerzenie .cgi i przed treścią strony musi drukować nagłówek:

Content-type: text/html

Przykładowy skrypt w Pythonie:

#!/usr/bin/python3

print('Content-type: text/html\n\n')
print('Hello')