diff options
Diffstat (limited to 'doc/pl/admin')
-rw-r--r-- | doc/pl/admin/administrator_guide.md | 593 | ||||
-rw-r--r-- | doc/pl/admin/hub_snapshots.md | 127 |
2 files changed, 720 insertions, 0 deletions
diff --git a/doc/pl/admin/administrator_guide.md b/doc/pl/admin/administrator_guide.md new file mode 100644 index 000000000..540828e0d --- /dev/null +++ b/doc/pl/admin/administrator_guide.md @@ -0,0 +1,593 @@ +### Przegląd + +$Projectname to więcej niż prosta aplikacja internetowa. Jest to złożony system +komunikacyjny, który bardziej przypomina serwer poczty elektronicznej niż serwer +WWW. Aby zapewnić niezawodność i wydajność, wiadomości są dostarczane w tle i +umieszczane w kolejce do późniejszego dostarczenia, gdy lokacje są wyłączone. +Ten rodzaj funkcjonalności wymaga nieco więcej zasobów hosta niż typowy dziennik. +Nie każdy dostawca hostingu PHP-MySQL będzie w stanie obsługiwać $Projectname. Tak więc, przed instalacją zapoznaj się z wymaganiami i potwierdź je u dostawcy usług hostingowych. + +Bardzo staraliśmy się, aby Hubzilla działała na zwykłych platformach hostingowych, takich jak te używane do hostowania blogów Wordpress i stron internetowych Drupal. Będzie ona działać na większości systemów VPS Linux. Platformy Windows LAMP, takie jak XAMPP i WAMP, nie są obecnie oficjalnie obsługiwane, jednak mile widziane są poprawki, jeśli uda Ci się je uruchomić. + +### Gdzie można znaleźć więcej pomocy + +Jeśli napotkasz problemy lub sam masz jakiś problem, które nie zostały opisane w tej dokumentacji, poinformuj nas o tym za pośrednictwem narzędzia do [śledzenia problemów na Github](https://framagit.org/hubzilla/core/issues). Prosimy o jak najdokładniejsze opisanie swojego środowiska operacyjnego i podanie jak największej ilości informacji o wszelkich komunikatach o błędach, które mogą się pojawić, abyśmy mogli zapobiec ich występowaniu w przyszłości. Ze względu na dużą różnorodność istniejących systemów operacyjnych i platform PHP możemy mieć ograniczone możliwości debugowania instalacji PHP lub pozyskiwania brakujących modułów, ale dołożymy wszelkich starań, aby rozwiązać wszelkie ogólne problemy z kodem. + +### Zanim zaczniesz + +#### Wybierz nazwę domeny lub subdomeny dla swojego serwera + +Platformę $Projectname można zainstalować tylko w katalogu głównym domeny lub +subdomeny i nie może ona działać na niestandardowych portach TCP. + +#### Zdecyduj, czy będziesz używać SSL i uzyskaj certyfikat SSL przed instalacją oprogramowania + +POWINNO się używać SSL. Jeśli używasz SSL, MUSISZ użyć certyfikatu uznawanego +przez przeglądarki. **NIE WOLNO używać certyfikatów z podpisem własnym!** + +Przetestuj swój certyfikat przed instalacją. Narzędzie internetowe do testowania +certyfikatu jest dostępne pod adresem `http://www.digicert.com/help/`. +Odwiedzając witrynę po raz pierwszy, użyj adresu URL SSL (`https: //`), jeśli +protokół SSL jest dostępny. Pozwoli to uniknąć późniejszych problemów. Procedura +instalacji nie pozwoli na użycie certyfikatu, który nie jest zaufany dla przeglądarki. + +To ograniczenie zostało wprowadzone, ponieważ Twoje publiczne wpisy mogą zawierać +odniesienia do obrazów na Twoim hubie. Inni członkowie przeglądający swój strumień +w innych centrach otrzymają ostrzeżenia, jeśli Twój certyfikat nie jest zaufany +w ich przeglądarce internetowej. To zmyli wiele osób, ponieważ jest to +zdecentralizowana sieć i otrzymają ostrzeżenie o Twoim hubie podczas przeglądania +własnego huba i mogą pomyśleć, że ich własny hub ma problem. Te ostrzeżenia +są bardzo techniczne i przerażające dla niektórych osób, z których wielu nie +będzie wiedziało, jak postępować, z wyjątkiem przestrzegania zaleceń przeglądarki. +Jest to destrukcyjne dla społeczności. To powiedziawszy, zdajemy sobie sprawę z +problemów związanych z obecną infrastrukturą certyfikatów i zgadzamy się, że +istnieje wiele problemów, ale to nie zmienia wymagania. + +Bezpłatne certyfikaty zgodne z przeglądarkami są dostępne od dostawców, takich +jak StartSSL i LetsEncrypt. + +Jeśli NIE używasz SSL, może wystąpić opóźnienie do minuty dla startowego skryptu +instalacyjnego - podczas sprawdzania portu SSL, aby zobaczyć, czy tam jest wszystko +w porządku. Podczas komunikowania się z nowymi witrynami Hubzilla zawsze najpierw +próbuje połączyć się z portem SSL, zanim powróci do mniej bezpiecznego połączenia. +Jeśli nie używasz SSL, twój serwer WWW NIE MOŻE w ogóle nasłuchiwać na porcie 443. + +Jeśli używasz LetsEncrypt do dostarczania certyfikatów i tworzenia pliku pod +`well-known` lub `acme-challenge`, aby LetsEncrypt mógł zweryfikować własność +domeny, usuń lub zmień nazwę katalogu `.well-known` zaraz po wygenerowaniu +certyfikatu. $Projectname zapewni własną procedurę obsługi usług `.well-know` po +zainstalowaniu, a istniejący katalog w tej lokalizacji może uniemożliwić poprawne +działanie niektórych z tych usług. Nie powinno to stanowić problemu w przypadku +Apache, ale może to być problem z Nginx lub innymi platformami serwera internetowego. + +### Wdrożenie +Nowy hub można wdrożyć na kilka sposobów: + +* ręczna inastalaja na istniejącym serwerze; +* automatyczna instalacja na istniejącym serwerze przy użyciu skryptu instalacyjnego; +* automatyczne wdrożenie przy użyciu prywatnego serwera wirtualnego OpenShift (VPS).) + +### Wymagania +* Apache z włączonym modułem `mod-rewrite` i ustawioną dyrektywą "AllowOverride + All", tak aby można było stosować plik `.htaccess`. Niektóre osoby z powodzeniem + stosowały Nginx czy Lighttpd.Przykładowe skrypty konfiguracyjne są dostępne na + tej platformie w [doc/install](). Apache and Nginx mają najlepsze wsparcie. + +* PHP 7.1 lub w wersji wyższej. + * _Proszę mieć na uwadze, że w niektórych środowiskach hostinu + współdzielonego, wersja wiersza poleceń PHP różni się od wersji + serwera internetowego_ + +* Dostęp do wiersza poleceń PHP z ustawionym w pliku php.ini parametrem + `register_argc_argv` na `true` i bez ograniczeń dostawcy hostingu w zakresie + stosowania fumkcji `exec()` i `proc_open()`. + +* Rozszerzenia curl, gd (z obsługą co najmmniej jpeg i png), mysqli, mbstring, + mcrypt, zip i openssl. Tozszerzenie imagick nie jest wymagane ale jest zalecane. + +* Wymagane jest rozszerzenie xml, jeśli chce sie mieć działajacą obsługę webdav. + +* Jakaś forma serwera pocztowego lub bramy pocztowej, taka jak działa PHP mail(). + +* Serwer bazy danych Mysql 5.x lub MariaDB lub PostgreSQL. + +* Możliwość planowania zadań dla crona. + +* WYMAGANA jest instalacja w katalogu głównym hosta WWW (wirtualnego hosta w + Apache i bloku w Nginx). + +### Instalacja ręczna + +##### Krok 1. + +Rozpakuj pliki $Projectname do katalogu głównego obszaru dokumentów serwera WWW. +Jeśli kopiujesz drzewo katalogów na swój serwer WWW, upewnij się, że dołączasz +ukryte pliki, takie jak `.htaccess`. + +Jeśli możesz to zrobić, zalecamy użycie Git do sklonowania repozytorium źródłowego +zamiast używania spakowanego pliku tar lub zip. To znacznie ułatwia późniejszą +aktualizację oprogramowania. Polecenie Linux do sklonowania repozytorium do katalogu +"mywebsite: wyglądałoby tak: + + git clone https://framagit.org/hubzilla/core.git mywebsite + +a następnie, w dowolnym momencie, możesz pobrać najnowsze zmiany za pomocą: + + git pull + +upewnij się, że istniejeją foldery `store/[data]/smarty3` i `store` i że są +one możliwe do zapisu przez właściciela procesu serwera WWW: + + mkdir -p "store/[data]/smarty3" + chmod -R 777 store + +To uprawnienie (777) jest bardzo niebezpieczne i jeśli masz wystarczające +uprawnienia i wiedzę powinieneś umożliwić zapisywanie w tych katalogach tylko +przez serwer WWW i użytkownika, który uruchomia crona (patrz poniżej), jeśli jest +taki. W wielu współdzielonych środowiskach hostingowych może to być trudne, bez +zgłoszenia problemu u dostawcy. Powyższe uprawnienia pozwolą oprogramowaniu +działać, ale nie są optymalne. + +Aby działały niektóre internetowe narzędzia administracyjne, serwer WWW musi mieć +możliwość zapisu w następujących katalogach: + +* `addon` +* `extend` +* `view/theme` +* `widget` + +##### Krok 2. + +Utwórz pustą bazę danych i zanotuj szczegóły dostępu (nazwa hosta, nazwa +użytkownika, hasło, nazwa bazy danych). Biblioteki bazy danych PDO powracają do +komunikacji przez gniazdo uniksowe, gdy nazwą hosta jest `localhost`, ale +niektóre osoby zgłosiły problemy z implementacją gniazda. Użyj gniazd, jeśli +Twoje uprawnienia na to pozwalają. W przeciwnym razie, jeśli baza danych jest +udostępniana na hoście `localhost`, jako nazwę hosta wpisz `127.0.0.1`. + +Wewnętrznie używamy teraz biblioteki PDO do połączeń z bazą danych. Jeśli masz +do czynienia z konfigyracją bazy danych, którą nie możesz obsłużyć poprzez +formularz konfiguracyjny (ma przykład w przypadku uzywania MySQL z nietypową +lokalizacją gniazd) - możesz podać ciąg połączenia PDO jako nazwę hosta. +Na przykład: + + :/path/to/socket.file + +W razie potrzeby nadal trzeba wypełnić w formularzu konfiguracyjnym wszystkie +inne wartości mające zastosowanie. + +##### Krok 3. + +Utwórz pusty plik o nazwie `.htconfig.php` i uczyń go możliwymm do zapisania +przez serwer WWW. Krok ten wykonaj, jeśli wiesz, że serwer WWW nie będzie +mógł sam utworzyć tego pliku. + +##### Krok 4. + +Odwiedź swoją witrynę za pomocą przeglądarki internetowej i postępuj zgodnie z +instrukcjami. Zanotuj wszelkie komunikaty o błędach i popraw je przed +kontynuowaniem. Jeśli używasz protokołu SSL (od znanego urzędu autoryzacyjnego), +użyj schematu `https` w adresie URL swojej witryny. + +##### Krok 5. + +Jeśli automatyczna instalacja nie powiedzie się z jakiegoś powodu, +sprawdź następujące rzeczy: + +* Czy istnieje plik `.htconfig.php`? Jeśli nie, edytuj plik `htconfig.php` + i zmień w nim ustawienia systemowe. Następnie zmień jego nazwę na .htconfig.php. +* Czy baza danych jest wypełniona. Jeśli nie, zaimportuj treść skryptu + `install/schema_xxxxx.sql` w phpmyadmin lub wierszu poleceń mysql (zamień + 'xxxxx' na własciwy typ bazy danych). + +##### Krok 6. + +Po udanej instalacji odwiedż ponownie swoją witrynę i zarejestruj swoje osobiste +konto. Błędy rejestracji powinny dać sie naprawić automatycznie. + +Jeśli w tym momencie wystąpiła jakakolwiek *krytyczna* awaria, to na ogół +przyczyna leży w źle funkcjonującej bazie danych. W takim przypadku, aby zacząć +od nowa, usuń lub zmień nazwę pliku `.htconfig.php` i usuń tabele bazy danych. + +Aby Twoje konto miało dostęp administratora, powinno to być utworzone jako +pierwsze, a adres e-mail podany podczas rejestracji musi być zgodny z adresem +administratora podanym podczas instalacji. Jeśli stało sie inaczej, aby dać +dostęp administracyjny jakiemuś kontu, dodaj `4096` w rekordzie tabeli +`account_roles` tego konta. + +Ze względu na bezpieczeństwo witryny, nie ma możliwości zapewnienia dostępu +administracyjnego za pomocą formularzy konfiguracyjnych. + +##### Krok 7. BARDZO WAŻNY! + +Skonfiguruj zadanie Crona lub *zadanie zaplanowane*, tak aby uruchamiać menedżera +Crona co 10-15 minut w celu przetwarzania i konserwacji w tle. Przykład: + + cd /base/directory; /path/to/php Zotlabs/Daemon/Master.php Cron + + +Zmień tutaj `/base/directory` i `/path/to/php` na właściwe dla siebie ścieżki. + +Jeśli używasz serwera linuksowego, uruchom polecenie `crontab -e` i dodaj wiersz +taki jak poniżej, zmieniając odpowiednio ścieżki i ustawienia: + + */10 * * * * cd /home/myname/mywebsite; /usr/bin/php Zotlabs/Daemon/Master.php Cron > /dev/null 2>&1 + +Lokalizację PHP na ogół można ustalić wykonując polecenie `which php`. Jeśli +masz problemy z ustawienie Crona, skontaktuj się z dostawcą hostingu w celu +uzyskania pomocy. Hubzilla nie będzie działać prawidłowo bez tego kroku. + +Powinno się również sprawdzić ustawienie parametru +`App::$config['system']['php_path']` w pliku `.htconfig.php`. +Powinno to wyglądać tak (zmień to zgodnie z lokalizacją PHP w swoim systemie): + + + App::$config['system']['php_path'] = '/usr/local/php56/bin/php'; + +#### Oficjalne dodatki + +##### Instalacja + +Przejdź do swojej witryny. Następnie sklonuj repozytorium dodatków (osobno). +Nadamy temu repozytorium pseudonim `hzaddons`. Możesz pobrać inne repozytoria +dodatków Hubzilla, nadając im różne pseudonimy: + + cd mywebsite + util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons + +##### Aktualizacja + +W celu aktualizacji drzewa dodatków, powinno się, z poziomu głównego katalogu +witryny, wydać polecenie aktualizacji tego repozytorium: + + cd mywebsite + util/update_addon_repo hzaddons + +Stwórz reprezentację dokumentacji online z możliwością wyszukiwania. Możesz to +zrobić za każdym razem, gdy dokumentacja jest aktualizowana: + + cd mywebsite + util/importdoc + +### Automatyczna instalacja poprzez skrypt .homeinstall + +Istnieje skrypt powłoki `.homeinstall/hubzilla-setup.sh`, który po +uruchomieniu zainstaluje Hubzillę i jego zależności na nowej instalacji stabilnej +dystrybucji Debiana 9 (Stetch). Powinien działać na podobnych systemach Linux, +ale wyniki mogą się różnić. + +#### Wymagania + +Skrypt instalacyjny został pierwotnie zaprojektowany dla małego serwera +sprzętowego za routerem domowym. Jednak został przetestowany też na kilku +systemach z Debian 9: + +* Home-PC (Debian-9.2-amd64) i Rapberry-Pi 3 (Rasbian = Debian 9.3) + * Połączenie z Internetem i domowy router + * Mini-PC lub Raspi połaczone z router + * Napęd USB dla kopii zapasowych + * Świeża instalacja Debian na swoim mini-pc + * Router z otwartymi portami 80 i 443 dla Debiana + +#### Etapy instalacji +1. `apt-get install git` +1. `mkdir -p /var/www/html` +1. `cd /var/www/html` +1. `git clone https://framagit.org/hubzilla/core.git .` +1. `nano .homeinstall/hubzilla-config.txt` +1. `cd .homeinstall/` +1. `./hubzilla-setup.sh` +1. `service apache2 reload` +1. Open your domain with a browser and step throught the initial configuration of $Projectname. + +### Zalecane dodatki + +Zalecamy zainstalowanie następujących dodatków we wszystkich publicznych witrynach: + + nsfw - hide inappropriate posts/comments + superblock - block content from offensive channels + +### Dodatki federacyjne + +Kilka społeczności internetowych zaczęło łączyć się przy użyciu wspólnych +protokołów. Stosowane protokoły mają nieco ograniczone możliwości. Na przykład +protokół GNU-Social nie oferuje żadnych trybów prywatności, a protokół Diaspora +jest nieco bardziej restrykcyjny w zakresie dozwolonych rodzajów komunikacji. +Wszystkie komentarze muszą być podpisane w bardzo unikalny sposób przez +oryginalnego autora. Rozważany jest również protokół ActivityPub, który może być +obsługiwany w przyszłości. Żaden inny istniejący protokół nie obsługuje +lokalizacji nomadycznej używanej w tym projekcie. Stwarza to pewne problemy z +obsługą, ponieważ niektóre funkcje działają w niektórych sieciach, a w innych nie. +Niemniej jednak protokoły federacyjne umożliwiają nawiązywanie połączeń ze znacznie +większą społecznością ludzi na całym świecie. Są dostarczane jako dodatki. + +* _diaspora_ - protokół diaspory używany przez Diasporę i Friendica. Najpierw + należy włączyć „Diaspora Statistics” (statystyki), aby włączyć wszystkie + dostępne funkcje. + +* _gnusoc_ - protokół społecznościowy GNU, używany przez GNU-Social, Mastodon i + kilka innych społeczności. Ten dodatek wymaga najpierw zainstalowania usługi + `pubsubhubbub` (także dodatku). + +Każdy członek Twojej siatki musi indywidualnie zdecydować, czy zezwolić na te +protokoły, ponieważ mogą one kolidować z kilkoma pożądanymi podstawowymi funkcjami +i możliwościami Hubzilla (takimi jak migracja kanałów i klonowanie). Robi się to +na swojej stronie _Ustawienia_ -> _Ustawienia funkcji i dodatków_. Administrator +może również ustawić: + + util/config system.diaspora_allowed 1 + util/config system.gnusoc_allowed 1 + +i włączać te protokoły automatycznie dla wszystkich nowo tworzonych kanałów. + +### Klasy usług + +Klasy usług pozwalają na ustawienie limitów zasobów systemowych poprzez +ograniczenie tego, co mogą robić poszczególne konta, w tym przechowywania plików +i najwyższych limitów wpisów. Zdefiniuj niestandardowe klasy usług zgodnie ze +swoimi potrzebami w pliku `.htconfig.php`. Na przykład utwórz klasę standard +i premium, używając następujących wierszy: + + // Service classes + + App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account + + // configuration for standard service class + App::$config['service_class']['standard'] = + array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB) + 'total_identities' =>1, // number of channels an account can create + 'total_items' =>0, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>100, // number of pages a channel can create + 'total_channels' =>100, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB) + 'chatters_inroom' =>20); + + // configuration for premium service class + App::$config['service_class']['premium'] = + array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB) + 'total_identities' =>20, // number of channels an account can create + 'total_items' =>20000, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>400, // number of pages a channel can create + 'total_channels' =>2000, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>20000000000, // total attachment storage limit per channel (here 20GB) + 'chatters_inroom' =>100); + +Aby zastosować klasę usług do istniejącego konta, użyj narzędzia wiersza poleceń +z katalogu głównego instalacji Hubzilla: + +* uzyskanie listy klas usług: + + util/service_class + + +* ustawienie domyślnej klasy usług na `firstclass`: + + util/config system default_service_class firstclass + +* uzyskanie listy usług, które należą do klasy `firstclass`: + + util/service_class firstclass + +* ustawienie całkowitego użycia dysku ze zdjęciami `firstclass` na 10 milionów bajtów + + util/service_class firstclass photo_upload_limit 10000000 + +* ustawienie konta z identyfikatorem 5 na klasę `firstclass` (z potwierdzeniem): + + util/service_class --account=5 firstclass + +* ustawienie konta, które jest właścicielem kanału `bdziennikchan` na klasę `firstclass` (z potwierdzeniem) + + util/service_class --channel=bdziennikchan firstclass + +**Service class limit options** + +##### Opcje limitów klas usług: + +* `photo_upload_limit` - maksymalna łączna liczba bajtów na zdjęcia +* `total_items` - maksymalna liczba wpisów na najwyższym poziomie +* `total_pages` - maksymalna liczba stron comanche +* `total_identities` - maksymalna liczba kanałów posiadanych na koncie +* `total_channels` - maksymalna liczba kanałów +* `total_feeds` - maksymalna liczba kanałów RSS +* `attach_upload_limit` - maksymalna pojemność przesyłania plików (w bajtach) +* `minimum_feedcheck_minutes` - najniższe ustawienie dozwolone dla odpytywania kanałów RSS +* `chatrooms` - maksymalna liczba czatów +* `chatters_inroom` - maksymalna liczba rozmówców w czacie +* `access_tokens` - maksymalna liczba tokenów dostępu gościa na kanał + +### Zarządzanie motywami + +#### Przykład zarządzania repozytorium + +1) Przejdź na poziom katalogu głównego serwera: + + ``` + root@hub:/root# cd /var/www + ``` + +2) Dodaj repozytorium motywu i nadaj mu nazwę + + ``` + root@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero + ``` +3) Zaktualizuj repozytorium motywu + + ``` + root@hub:/var/www# util/update_theme_repo DeadSuperHero + ``` + +### Katalog kanałów + +#### Słowa kluczowe + +Na stronie katalogu kanałów może pojawiać się „chmura tagów” słów kluczowych. +Jeśli chcesz ukryć te słowa kluczowe, które są pobierane z serwera katalogów, +możesz użyć narzędzia `config`: + + util/config system disable_directory_keywords 1 + +Jeśli twój hub pracuje w trybie autonomicznym, ponieważ nie chcesz łączyć się +z globalną siecią, możesz zamiast tego ustawić opcję systemową `directory_server` +na wartość pustą: + + util/config system directory_server "" + +### Administrowanie + +#### Administrowanie witryną + +Administracja witryną jest zwykle wykonywana za pośrednictwem strony administratora +znajdującej się na ścieżce `/admin` adresu URL Twojej witryny. Aby uzyskać dostęp +do tej strony, trzeba mieć uprawnienia administratora na serwerze. Prawa +administracyjne są przyznawane pierwszemu kontu, które zostało zarejestrowane w +witrynie, pod warunkiem, że adres e-mail tego konta dokładnie odpowiada adresowi +e-mail podanemu jako adres e-mail administratora podczas konfiguracji. + +Istnieje kilka sposobów, w jakie może to się nie powieść i pozostawić system bez +konta administratora, na przykład jeśli pierwsze konto, które zostało utworzone, +miało inny adres e-mail niż adres e-mail administratora, który został podany +podczas konfiguracji. + +Ze względów bezpieczeństwa w systemie nie ma strony internetowej ani interfejsu, +który daje dostęp administratora. Jeśli potrzebujesz poprawić sytuację, w której +system nie ma konta administratora, musisz to zrobić edytując tabelę kont w bazie +danych. Nie ma innego wyjścia. Aby to zrobić, będziesz musiał zlokalizować wpis +w tabeli kont, który należy do żądanego administratora i ustawić `account_roles` +dla tego wpisu na `4096`. Będziesz wtedy mógł uzyskać dostęp do strony +administratora z menu profilu twojego systemu lub bezpośrednio na ścieżce `/admin`. + +Hub może mieć wielu administratorów i nie ma ograniczeń co do ich liczby. +Powtórz powyższą procedurę dla każdego konta, któremu chcesz przyznać uprawnienia +administracyjne. + +### Rozwiązywanie problemów + +#### Pliki dzienników + +Plik dziennika systemowego jest niezwykle przydatnym źródłem informacji do +śledzenia błędów. Można to włączyć na stronie konfiguracji `admin/dziennik`. +Ustawienie poziomu o wartości `dziennikGER_DEBUG` jest preferowany w stabilnej +instalacji produkcyjnej. Większość problemów związanych z komunikacją lub +przechowywaniem jest tutaj wymieniona. Ustawienie na `dziennikGER_DATA` +zapewnia znacznie więcej szczegółów, ale może wypełnić dysk. W obu przypadkach +zalecamy użycie `dziennikrotate` w systemie operacyjnym do cyklicznego tworzenia +dzienników i usuwania starszych wpisów. + +Na dole twojego `.htconfig.php` znajduje się kilka linii (zakomentowanych), +które umożliwiają rejestrowanie błędów PHP. Zgłaszane są problemy ze składnią i +wykonywaniem kodu i jest to też pierwszym miejscem, w którym należy szukać +problemów, które powodują "biały ekran" lub pustą stronę. Zwykle jest to wynikiem +problemów z kodem lub składnią. Błędy bazy danych są zgłaszane do pliku dziennika +systemowego, ale uznaliśmy, że przydatne jest umieszczenie w katalogu najwyższego +poziomu pliku `dbfail.out`, który gromadzi tylko informacje o problemach +związanych z bazą danych. Jeśli plik istnieje i można go zapisać, będą rejestrowane +w nim błędy bazy danych, a także w pliku dziennika systemowego. + +W przypadku błędów "500: problemy mogą być często rejestrowane w dziennikach +serwera internetowego, często w `/var/dziennik/apache2/error.dziennik` lub +podobnym. Zapoznaj się z dokumentacją systemu operacyjnego. + +Istnieją trzy różne obiekty dziennika. + +**Pierwsza to dziennik błędów bazy danych**. Jest on używane tylko wtedy, gdy +tworzy ssię plik o specyficznej nazwie `dbfail.out` w folderze głównym swojej +witryny i pozwala się na zapisywanie w nim przez serwer WWW. Jeśli masz +jakiekolwiek zapytania do bazy danych, które nie powiodły się, wszystkie są +zgłaszane tutaj. Zwykle wskazują na literówki w naszych zapytaniach, ale występują +również w przypadku rozłączenia serwera bazy danych lub uszkodzenia tabel. +W rzadkich przypadkach zobaczymy tutaj warunki wyścigu, w których dwa procesy +próbowały utworzyć wpis `xchan` lub `cache`z tym samym identyfikatorem. Należy +zbadać wszelkie inne błędy (zwłaszcza błędy uporczywe). + +**Drugi to dziennik błędów PHP**. Jest tworzony przez procesor języka i zgłasza +tylko problemy powstałe w środowisku językowym. Znowu mogą to być błędy składniowe +lub błędy programistyczne, ale generalnie są one fatalne i skutkują "białym ekranem"; +na przykład PHP kończy działanie. Prawdopodobnie powinieneś zajrzeć do tego pliku +też, jeśli coś pójdzie nie tak, co nie powoduje białego ekranu. Często zdarza się, +że plik ten jest pusty przez wiele dni. + +Na dole dostarczonego pliku `.htconfig.php` znajduje się kilka linii, które, +jeśli nie są zakomentowane, włączają dziennik PHP (niezwykle przydatny do +znajdowania źródła błędów białego ekranu). Nie jest to robione domyślnie ze względu +na potencjalne problemy z własnością pliku dziennika i uprawnieniami do zapisu +oraz fakt, że domyślnie nie ma rotacji pliku dziennika. + +**Trzeci to "dziennik aplikacji"**. Jest to używane przez Hubzillę do zgłaszania +tego, co dzieje się w programie i zwykle zapisywane są tu wszelkie trudności lub +nieoczekiwane dane, które otrzymaliśmy. Czasami zgłasza się tu również komunikaty +o stanie "pulsu", aby wskazać, że osiągnęliśmy określony punkt w skrypcie. Jest +to dla nas najważniejszy plik dziennika, ponieważ tworzymy go samodzielnie +wyłącznie w celu zgłaszania stanu zadań w tle i wszystkiego, co wydaje się dziwne +lub nie na miejscu. To może nie być śmiertelne, ale może po prostu nieoczekiwane. +Jeśli wykonujesz zadanie i występuje problem, daj nam znać, co znajduje się w tym +pliku, gdy wystąpił problem. Proszę nie wysyłaj mi 100 milionów zrzutów, tylko +mnie wkurzysz! Tylko kilka odpowiednich wierszy, abym mógł wykluczyć kilkaset +tysięcy wierszy kodu i skoncentrować się na tym, gdzie zaczyna się pojawiać +problem. + +To są dzienniki Twojej witryny, a nie moje. Zgłaszamy poważne problemy na każdym +poziomie dziennika. Gorąco polecam poziom dziennika `DEBUG` dla większości witryn. +Dostarcza on trochę dodatkowych informacji i nie tworzy dużych plików dziennika. +Kiedy pojawia się problem, który uniemożliwia wszelkie próby śledzenia, możesz +wtedy włączyć na krótki czas poziom `DATA`, aby uchwycić wszystkie szczegóły +struktur, z którymi mieliśmy do czynienia w tym czasie. Ten poziom dziennika +zajmuje dużo miejsca, więc jest zalecany tylko na krótkie okresy lub w przypadku +witryn testowych dla programistów. + +Zalecam skonfigurowanie `logrotate` zarówno dla dziennika php, jak i dziennika +aplikacji. Zazwyczaj co tydzień lub dwa zaglądam do `dbfail.out`, naprawiam +zgłoszone problemy i zaczynam od nowego pliku. Podobnie jest z plikiem dziennika +PHP. Odwołuję się do tego od czasu do czasu, aby sprawdzić, czy jest coś, co +wymaga naprawy. + +Jeśli coś pójdzie nie tak i nie jest to błąd krytyczny, patrzę na plik dziennika +aplikacji. Często robię to: + +``` +tail -f logfile.out +``` + +ponieważ powtarza operację, która ma problemy. Często wstawiam w kodzie dodatkowe +instrukcje logowania, jeśli nie ma żadnej wskazówki, co się dzieje. Nawet coś tak +prostego jak "got here" lub drukuję wartości zmiennej, która może być podejrzana. +Ty też możesz to zrobić - wręcz zachęcam Cię do tego. Gdy już znajdziesz to, czego +potrzebujesz, możesz wykonać: + +``` +git checkout file.php +``` + +aby natychmiast wyczyścić wszystkie dodane elementy rejestrowania. Skorzystaj z +informacji z tego dziennika i wszelkich szczegółów, które możesz podać podczas +badania problemu, aby zgłosić błąd - chyba że analiza wskazuje na źródło problemu. +W takim przypadku po prostu to napraw. + +##### Rotowanie plików dziennika + +1. Włącz dodatek *Logrot* w [oficjalnym repozytorium dodatków hubzilla](https://framagit.org/hubzilla/addons). +1. Utwórz katalog w swoim katalogu głównym o nazwie `log` z uprawnieniami do zapisu przez serwer WWW. +1. Przejdź do ustawień administratora programu *Logrot* i wprowadź nazwę folderu, a także maksymalny rozmiar i liczbę zachowanych plików dziennika. + +#### Zgłaszanie problemów + +Zgłaszając problemy, staraj się podać jak najwięcej szczegółów, które mogą być +potrzebne programistom do odtworzenia problemu i podać pełny tekst wszystkich +komunikatów o błędach. + +Zachęcamy do dołożenia wszelkich starań, aby wykorzystać te dzienniki w połączeniu +z posiadanym kodem źródłowym w celu rozwiązywania problemów i znajdowania ich +przyczyn. Społeczność często jest w stanie pomóc, ale tylko Ty masz dostęp do +plików dziennika swojej witryny i ich udostępnianie jest uważane za zagrożenie +bezpieczeństwa. + +Jeśli problem z kodem został odkryty, zgłoś go w bugtrackerze projektu +(https://framagit.org/hubzilla/core/issues). Ponownie podaj jak najwięcej szczegółów, +aby uniknąć ciągłego zadawania pytań o konfigurację lub powielanie problemu, +abyśmy mogli przejść od razu do problemu i dowiedzieć się, co z nim zrobić. +Zapraszamy również do oferowania własnych rozwiązań i przesyłania poprawek. +W rzeczywistości zachęcamy do tego, ponieważ wszyscy jesteśmy wolontariuszami i +mamy mało wolnego czasu. Im więcej osób pomaga, tym łatwiejsze jest obciążenie +pracą dla wszystkich. W porządku, jeśli Twoje rozwiązanie nie jest idealne. +Wszystko pomaga i być może uda nam się to poprawić. + diff --git a/doc/pl/admin/hub_snapshots.md b/doc/pl/admin/hub_snapshots.md new file mode 100644 index 000000000..1a5bd2d4f --- /dev/null +++ b/doc/pl/admin/hub_snapshots.md @@ -0,0 +1,127 @@ +### Hub Snapshot Tools + +Programiści Hubzilli często muszą przełączać się między gałęziami, które mogą +mieć niekompatybilne schematy lub zawartość bazy danych. Poniższe dwa skrypty +tworzą i przywracają pełne migawki instancji Hubzilli, w tym zarówno główny +katalog sieciowy, jak i stan całej bazy danych. Każdy skrypt wymaga pliku +konfiguracyjnego o nazwie `hub-snapshot.conf` znajdującego się w tym samym +folderze i zawiera on określone katalogi i szczegóły bazy danych huba. + +### Konfiguracja + +Format pliku konfiguracyjnego jest bardzo ścisły. Między nazwą zmiennej a +wartością nie może być spacji. Zastąp tylko treść w cudzysłowach swoją +konfiguracją. Zapisz ten plik jako `hub-snapshot.conf` obok skryptów. + + # Location of hub root. Typically this is the location of the Hubzilla repo clone. + HUBROOT="/var/www/" + # MySQL database name + DBNAME="hubzilla" + # MySQL database user + DBUSER="hubzilla" + # MySQL database password + DBPWD="akeufajeuwfb" + # The target snapshot folder where the git repo will be initialized + SNAPSHOTROOT="/root/snapshots/hubzilla/" + +### Migawka + +Przykład użycia: + + sh hub-snapshot.sh my-hub.conf "Commit message for the snapshot" + +**hub-snapshot.sh**: + + #!/bin/bash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + #echo "$DBNAME" + #echo "$DBUSER" + #echo "$DBPWD" + #echo "$HUBROOT" + #echo "$SNAPSHOTROOT" + MESSAGE="snapshot: $2" + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + + if [ ! -d "$SNAPSHOTROOT"/db/ ]; then + mkdir -p "$SNAPSHOTROOT"/db/ + fi + if [ ! -d "$SNAPSHOTROOT"/www/ ]; then + mkdir -p "$SNAPSHOTROOT"/www/ + fi + + if [ ! -d "$SNAPSHOTROOT"/www/ ] || [ ! -d "$SNAPSHOTROOT"/db/ ]; then + echo "Error creating snapshot directories. Aborting..." + exit 1 + fi + + echo "Export database..." + mysqldump -u "$DBUSER" -p"$DBPWD" "$DBNAME" > "$SNAPSHOTROOT"/db/"$DBNAME".sql + echo "Copy hub root files..." + rsync -va --delete --exclude=.git* "$HUBROOT"/ "$SNAPSHOTROOT"/www/ + + cd "$SNAPSHOTROOT" + + if [ ! -d ".git" ]; then + git init + fi + if [ ! -d ".git" ]; then + echo "Cannot initialize git repo. Aborting..." + exit 1 + fi + + git add -A + echo "Commit hub snapshot..." + git commit -a -m "$MESSAGE" + + exit 0 + +### Przywracanie + + #!/bin/bash + # Restore hub to a previous state. Input hub config and commit hash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + COMMIT=$2 + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + RESTOREDIR="$(mktemp -d)/" + + if [ ! -d "$RESTOREDIR" ]; then + echo "Cannot create restore directory. Aborting..." + exit 1 + fi + echo "Cloning the snapshot repo..." + git clone "$SNAPSHOTROOT" "$RESTOREDIR" + cd "$RESTOREDIR" + echo "Checkout requested snapshot..." + git checkout "$COMMIT" + echo "Restore hub root files..." + rsync -a --delete --exclude=.git* "$RESTOREDIR"/www/ "$HUBROOT"/ + echo "Restore hub database..." + mysql -u "$DBUSER" -p"$DBPWD" "$DBNAME" < "$RESTOREDIR"/db/"$DBNAME".sql + + chown -R www-data:www-data "$HUBROOT"/{store,extend,addon,.htlog,.htconfig.php} + + echo "Restored hub to snapshot $COMMIT" + echo "Removing temporary files..." + + rm -rf "$RESTOREDIR" + + exit 0 + |