Categories
Server Webmaster

LNMP – Część 1: Wstęp i repozytoria

Jakiś czas temu na łamach bloga pojawiła się seria wpisów okoko w której poruszał on niektóre aspekty sieci czy serwerów www. Na podstawie swoich doświadczeń miałem kilka zastrzeżeń w artykule dotyczącym nginx, zapowiedziałem wtedy swój artykuł. Czas leci do przodu, a wpisu cały czas nie ma. Nie będę oszukiwał, po prostu nie było. Pozwoliło mi to jednak na przemyślenie sprawy i ostatecznie zmianę koncepcji. Postanowiłem, że zamiast jednego wpisu pojawi się cała seria dotycząc konfiguracji LNMP – od Linux + Nginx + MySQL + PHP. Sądzę, że taka seria pozwoli innym zapoznać się w tym bardziej przystępny sposób, liczę też na to, że dzięki waszym komentarzom sam dowiem się czegoś nowego ;) Z góry zaznaczam, że może być nieregularnie, bo równie bywa z czasem.

Categories
Software

Nginx – ilość aktywnych połączeń

Czasami chociażby z czystej ciekawości chciałoby się zobaczyć, jak wiele połączeń obsługuje w danym momencie nasz serwer www. W wypadku nginxa sprawa jest bardzo prosta, wystarczy w zasadzie krótki dopisek w pliku konfiguracyjnym (np. /etc/nginx/nginx.conf) lub którymś w vhoscie. Edytujemy któryś z nich, w zależności od tego, gdzie chcemy mieć dostęp do takich informacji, a następnie dodajemy:

location /statystyki 
{
    stub_status on;
    access_log   off;
}

Tak, to naprawdę tyle. Teraz pozostaje nam restart usługi nginxa (np. service nginx restart) i to tyle. Po wejściu na któryś z vhostów (w wypadku dodania do głównego pliku), lub ten jeden określony, który modyfikowaliśmy np. adres.com/statystyki, zobaczymy informacje tego typu:

Active connections: 23 
server accepts handled requests
 245703 245703 493924 
Reading: 12 Writing: 3 Waiting: 8

Oczywiście w wypadku tych danych warto dodać np. auth_basic, albo dopuszczanie tylko określonego IP, jeżeli mamy taką możliwość.

Categories
Software

WHOIS w wierszu poleceń (CMD)

Dzisiaj będzie naprawdę krótko, bo ciekawostka jaką mam zamiar opisać nie jest specjalnie rozbudowana, a trafiła mi się nieco przykładowo. Na pewno wiele osób korzystało już na wiele sposobów z WHOIS. Z jednej strony, sporo czasu i tak spędza się w przeglądarce internetowej, a np. Firefox oferuje ze swoimi dodatkami istne cuda i na pewno coś się znajdzie. Z drugiej, czasami chcemy szybko sprawdzić dane, niekoniecznie przez witrynę. W systemie Linux wpisałbym polecenie, a potem zastanawiał się, czy takie istnieje, lub czy ewentualnie trzeba coś doinstalować – zakładałbym, że już jest. W systemie Windows i jego wierszu poleceń nie spodziewałem się takiej opcji, no ale aby to potwierdzić spróbowałem – bez rezultatu. Poszukałem więc i szybko znalazłem rozwiązanie.

Categories
Webmaster

Suma kontrolna pliku w PHP na przykładzie md5

W ostatnim czasie tworzyłem skrypt, który musiał badać sumy kontrolne plików i porównywać je z gotową listą – po prostu weryfikacja, czy pliki są oby na pewno w porządku, z użyciem hashy md5. Wszystko byłoby bardzo proste, gdyby nie fakt, że pliki bywały dosyć spore (nawet ponad 250 MB), a nie miałem żadnego wpływu na ustawienia z php.ini. Dlaczego o tym wspominam? Ano dlatego, że pierwsze co przyszło na myśl to użycie funkcji md5_file. W sieci można znaleźć również inne specyficzne rozwiązanie tj. wczytanie zawartości pliku, a następnie obliczenie przy pomocy funkcji md5() hasha dla tych danych:

$checksum = md5(file_get_contents($filename));

Niestety przy sporych plikach momentalnie przekraczamy limit zajętej pamięci, bo przecież ich zawartość leci właśnie tam. Takie rozwiązanie odpada. Lepszym wydawało się użycie wspomnianej funkcji md5_file, która pamięci nam tak nie zawala:

$checksum = md5_file($filename);

To niestety również nie było satysfakcjonującym wynikiem, bo o ile skrypt nie przekraczał limitu pamięci, o tyle często nie był w stanie wyrobić się z obliczeniem sumy w czasie jaki miał do dyspozycji (np. 60 sekund). Po prostu obliczenie sumy md5 za pośrednictwem PHP było za wolne. Kolejne rozwiązanie – sięgnięcie do shella:

$result = explode('= ',exec("openssl md5 $filename"));
$checksum = $result[1];

W tym wypadku obliczanie sumy kontrolnej trwało… ponad 3-4 razy krócej! Było to już więc całkiem niezłe rozwiązanie, oczywiście do pewnego rozmiaru. Okazało się jednak, że istnieje jeszcze szybsza metoda, skracająca ten czas jeszcze dwukrotnie, czasami nawet więcej. Zamiast używać openssl md5, można od razu użyć md5sum, dodatkowo z parametrem “b” tj. czytanie w trybie binarnym. Na koniec przedstawiam więc metodę, która w moim wypadku okazała się najszybsza, dodatkowo jest ona “skompletowana” poprzez przefiltrowanie zmiennej która idzie do funkcji shell_exec:

$result = explode(' ', exec('md5sum -b ' . escapeshellarg($filename)));
$checksum = $result[0];

Warto zwrócić uwagę na różnicę w pierwszym argumencie dla explode oraz sam dostęp do elementu tablicy z sumą kontrolną – oba polecenia zwracają dane w nieco inny sposób (oraz kolejności). To by by było na tyle. Dlaczego nie SHA albo CRC? Pierwszy z nich okazał się sporo wolniejszy, drugi nie odbiegał od md5 ale zwracał sumy w formacie dwuczłonowym, a mi zależało na jak najszybszym i najkrótszym otrzymaniu sum kontrolnych. Jeżeli znacie metody lepsze / szybsze, lub też gdzieś popełniłem błąd, poprawcie mnie.

Categories
Software Webmaster

Generator haseł – metodologia wyboru z zestawów

Dosyć często używam generatorów haseł. Jakoś nie mam talentu ani sposobu na wymyślanie jakichś finezyjnych, więc polegam na losowo wygenerowanych ciągach zawierających różne zestawy danych. Tradycyjnie takimi zestawami są np: małe litery, duże litery, cyfry, znaki interpunkcyjne oraz inne znaki specjalne. Używając kilku z narzędzi do generowania haseł dostępnych z poziomu www zauważyłem pewną “prawidłowość” – losowanie najprawdopodobniej wykonywane jest na sumie wybranych zbiorów. Przedstawienie bardziej-po-ludzku: załóżmy, że chcemy hasło 9 znakowe, zawierające duże/małe litery oraz cyfry. Przy wielokrotnym generowaniu hasła zauważamy, że cyfry występują nad wyraz rzadko. Często mają miejsce sytuacje, gdy nie jest wylosowana żadna, albo tylko jedna. Czasami trafiają się dwie, zaś większa ilość to istna egzotyka. Statystycznie średnio powinny być jednak 3 cyfry, bo mamy do dyspozycji 3 zbiory i 9 miejsc do wypełnienia. Tak się jednak nie dzieje…