Tags Posts tagged with "apache"

apache

przez -
3 1191
Apache

Pisząc reguły RewriteRule (mod_rewrite), możemy napotkać sporo problemów, zwłaszcza kiedy jest ich wiele. Na szczęście serwer Apache udostępnia dwie opcje, które pomogą nam się zalogować i odszukać, jaki popełniliśmy błąd. Odpowiadają za to parametry RewriteLog oraz RewriteLogLevel. Dyrektywy te można dopisać w dwóch miejscach. Pierwszym z nich jest plik konfiguracyjny całego serwera, a drugim konfiguracja wirtualnego hosta.

Pierwsza (RewriteLog) dyrektywa ustawia plik, w jakim będą logowane dane pochodzące z modułu mod_rewrite. Jeżeli nazwy pliku nie zaczniemy od znaczka (‚/’), wtedy plik zostanie zapisany relatywnie do katalogu, ustawionego w dyrektywie Server Root.

[bash]RewriteLog "/var/log/httpd/rewrite.log"[/bash]

Dyrektywa ta powinna pojawić się tylko raz w pliku konfiguracyjnym serwera. Jeżeli chcemy wyłączyć logowanie, najprościej jest skasować ten parametr lub ustawić RewriteLogLevel na wartość 0. Nie jest zalecane ustawianie pliku jako /dev/null. Mimo, że nie będą zapisywane żadne dane na dysk, to dane będę i tak generowane, co może znacząco zwolnić pracę serwera.

Parametr RewriteLogLevel odpowiada za poziom logowania danych do pliku, gdzie 0 oznacza wyłączone logowanie, a 9 loguje każdą czynność serwera. Ustawiając bardzo wysokie wartości, możemy znacząco obciążyć serwer, dlatego zalecane jest korzystanie z wartości 2 lub 3. Dane logowane na tym poziomie, są wystarczające do analizy.

[bash]RewriteLogLevel 3[/bash]

Przykładowe zastosowanie

W pliku .htaccess zapisaliśmy przykładową regułę:

[bash]RewriteCond %{HTTPS} ^on$
RewriteCond %{REQUEST_URI} ^html [NC]
RewriteRule ^(.*)$ http://www.domena.com/html/$1 [R=301,L][/bash]

Nie działa ona nam poprawnie i chcemy przeanalizować, co się dzieje. W konfiguracji hosta wirtualnego dla tej aplikacji dopisujemy znane już nam dyrektywy:

[bash]<VirtualHost 100.100.100.100:443>
ServerName domena.com
DocumentRoot /home/domena.com/htdocs
RewriteLog /var/log/httpd/rewrite.log
RewriteLogLevel 5
[…]
</VirtualHost>[/bash]

Po restarcie serwera w pliku, zobaczymy przykładowy log:

[bash]193.238.93.130 – – [30/Dec/2011:09:28:00 +0000] [domena.com/sid#2b331f133bb0][rid#2b332e1ea980/initial] (4) [perdir /home/domena.com/htdocs/html/] RewriteCond: input=’on’ pattern=’^on$’ => matched
193.238.93.130 – – [30/Dec/2011:09:28:00 +0000] [domena.com/sid#2b331f133bb0][rid#2b332e1ea980/initial] (4) [perdir /home/domena.com/htdocs/html/] RewriteCond: input=’/html/pricing.html’ pattern=’^html’ [NC] => not-matched[/bash]

Z powyższego logu możemy wyczytać następujące informacje:

Opis Przykład
Adres hosta jaki wywołał URL 193.238.93.130
Zdalny login Zazwyczaj będzie to „-„
Autoryzacja HTTP Nazwa użytkownika lub „-” w przypadku braku logowania
Data i czas żądania (request) [30/Dec/2011:09:28:00 +0000]
Wirtualny host oraz jego ID [domena.com/sid#2b331f133bb0]
ID żądania (request) [rid#2b332e1ea980/initial]
Poziom logowania (4)
Treść błędu [perdir /home/domena.com/htdocs/html/] RewriteCond: input=’/html/pricing.html’ pattern=’^html’ [NC] => not-matched

Dzięki temu wiemy, jaki błąd popełniliśmy, (input='/html/pricing.html' pattern='^html' [NC] => not-matched) tworząc regułę (RewriteCond %{REQUEST_URI} ^html [NC]).

Jeżeli w logach Apacha widzimy błąd, RewriteLog not allowed here oznacza to, że dodaliśmy dyrektywy w złym miejscy. Najprawdopodobniej w pliku .htaccess.

przez -
0 519
Apache

Wydano Apache Tika 1.0 – narzędzie do wykrywania i wypakowywania metadanych i struktury zawartości dokumentów, używając istniejących bibliotek parsera. Projekt rozpoczął się, jako podprojekt Apache Lucene w 2007 roku i został odłączony od niego w maju ostatniego roku. Jest on zbiorem bibliotek Java i potrafi obsługiwać struktury dokumentów HTML, XML, Microsoft Office(OLE2 i OOXML), OpenDocument Formats, PDF, ePub, RTF, skompresowane i spakowane pliki, różne kodowania, skrzynki pocztowe Outlook i mbox, tekst zawarty w plikach audio, wideo, obrazkach. Posiada graficzny interfejs użytkownika do zarządzania zawartością pliku.

Najnowsza wersja usuwa metody API pre-1.0 i porzuca wsparcie dla starej Javy 1.4. Ulepsza integrację OSGi, dzięki czemu można używać teraz automatycznie procesów Parser i Detector.

Dodano rozpoznawanie języków: białoruskiego, katalońskiego, hiszpańskiego, galicyjskiego, litewskiego, rumuńskiego, słowackiego, słoweńskiego i ukraińskiego. W Outlooku można od teraz przetwarzać załączniki z wiadomości, natomiast w MS Office ulepszono wydajność rozpakowywania dokumentów docs. Parser PDF potrafi rozpakowywać paragrafy z każdej strony i opcjonalnie tekst z adnotacji PDF. Istnieje także możliwość włączenia lub wyłączenia wstawiania automatycznej spacji. W dokumentach OpenOffice procesora tekstu, arkusza kalkulacyjnego i prezentacji rozpakowywany jest tekst nagłówka i stopki.

Warto wspomnieć, że w rozwoju tej wersji brał udział Polak – Andrzej Białecki.

przez -
0 574
Apache

Apache Software Foundation ogłosiła wydanie Cassandra 1.0 – otwarto-źródłowej, wysoce skalowalnej, zorientowanej kolumnowo, dystrybuowanej bazie danych typu NoSQL. Została ona pierwotnie zaprojektowana na potrzeby Facebooka, i w 2008 roku oddana Fundacji Apache. W 2010 roku została oznaczona, jako wysoce priorytetowy projekt (Top-Level Project (TLP)). Jest wykorzystywana przez Digg, Twitter, Rackspace, Cisco, Netflix i Reddit, a największy znany klaser na niej oparty, składa z się 400 maszyn i 300 terabajtów danych.

Po pięciu miesiącach prac dodano wsparcie dla kompresji danych, w celu zmniejszenia ilości plików, w węzłach Cassandry. Ulepszono zarządzanie pamięcią i przestrzenią dyskową.

Inne usprawnienia obejmują możliwość uruchomienia Cassandry jako usługa systemu Windows, łatwiejsze zarządzanie węzłami.

Wydajność nowej bazy wzrosła o 400 procent w przypadku odczytu danych i o 40 dla zapisu.

przez -
0 530
Apache

Apache Software Foundation ogłosiła wydanie kolejnej wersji Apache HTTP Server (httpd) – otwartego serwera HTTP dostępnego dla wielu systemów operacyjnych. Najważniejszą zmianą jest załatanie poważnej luki, która mogła wywołać atak denial-of-service (DoS) (CVE-2011-3192) z pojedynczego komputera. Został do niej napisany specjalny skrypt w języku Perl, zwany „Apache Killer„, który umieszczono publicznie do wglądu.

Skrypt wysyła zapytania GET z wieloma zakresami bajtów, która zajmuje dużą część wolnej pamięci systemu. Podatne na to były także wersje 1.3, 2.x.x do 2.2.19. Aktualizacja do najnowszej wersji usuwa ową lukę w zabezpieczeniach.

Pełna lista zmian znajduje się na apache.org.

przez -
1 820
Apache

Pojawił się nieznany wcześniej błąd w kodzie, który polega na wysyłaniu do serwera zapytań z nagłówkiem Range, przyjmującym więcej niż jeden zakres bajtów. Jest to skrypt Perla, nazwany „Killer Apache„, który został opublikowany na liście mailingowej Full Disclosure.

Narzędzie wysyła zapytania GET z wieloma zakresami bajtów, która zajmuje dużą część wolnej pamięci systemu. Zapytanie takie pozwala załadować tylko niektóre części dokumentu, np. między 500 a 1000. Owa metoda jest używana przez programy, takie jak menedżery pobierania, w celu wznowienia ściąganego pliku, który to transfer został przerwany. Zostało to zaprojektowane w celu zmniejszenia przepustowości. Okazuje się jednak, że zdefiniowanie wielu nieposortowanych zakresów w nagłówku, może spowodować nieprawidłowe działanie serwera Apache.

Na razie brak oficjalnej łatki, jednakże pomóc może odpowiednia konfiguracja mod_rewrite, która pozwala na tylko jedno żądanie w nagłówkach GET i HEAD.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
RewriteRule .* - [F]

przez -
3 1073
ImageMagick

Wydano pakiet do obróbki grafiki – ImageMagick 6.6.8-3. Wydawany jest na licencji Apache 2.0 i dostępny jest na wiele platform. Programy wchodzące w skład pakietu pozwalają tworzyć, modyfikować i zapisywać pliki graficzne w wielu formatach. ImageMagick dostępny jest z wiersza poleceń lub poprzez API możemy z niego korzystać w wielu językach programowania jak np: Perl, C, C++, Python i PHP. Najnowsza wersja otrzymała wsparcie formatu Radiance HDR. Poprawiona została obsługa plików w formacie PNG.

przez -
5 2034
Konsola

Pracując z różnego rodzaju aplikacjami, serwerami – bardzo często mamy do czynienia z logami. Jak to zwykle z nimi bywa, potrafią urosnąć do kolosalnych wielkości, zajmując nam cenną przestrzeń dyskową. W takim wypadku czyścimy system ze zbędnych plików logów. Najczęściej po prostu kasujemy stare pliki. A co się stanie jeżeli przypadkiem usuniemy plik, do którego aplikacja aktualnie pisze? Czy dane straciliśmy bezpowrotnie? Otóż nie! Dopóki działa daemon tej aplikacji, możemy przywrócić plik.

Dla przykładu weźmiemy serwer Apache HTTP. W domyślnej konfiguracji w systemie Fedora 13 – Goddard zapisuje on pliki logów w ścieżce /var/log/httpd.

[root@seiken httpd]# ls -l
total 2528
-rw-r--r--  1 root root  326536 Jun  3 18:52 access_log
-rw-r--r--. 1 root root  553888 Jan 16 22:46 access_log-20100124
-rw-r--r--. 1 root root 1149789 Jun  3 14:14 access_log-20100603
-rw-r--r--  1 root root     324 Jun  3 14:14 error_log
-rw-r--r--. 1 root root  234778 Jan 16 22:47 error_log-20100124
-rw-r--r--. 1 root root  293605 Jun  3 14:14 error_log-20100603

Plikiem, do którego aktualnie pisze serwer jest access_log. Skasujemy go za pomocą polecenia:

[root@seiken httpd]# rm -fv access_log
removed `access_log'

Tak naprawdę polecenie rm nie usuwa pliku. Dane nie są faktycznie niszczone. Zostaje skasowana jedynie informacja, która wskazuje, gdzie dany plik jest przechowywany. Miejsce po pliku zostaje udostępnione do ponownego wykorzystania. Jeżeli serwer nasz ma mało miejsca i jest mocno obciążony, możemy być pewni, że miejsce to zaraz zostanie nadpisane i stracimy dane.

Jeżeli nie, to możemy spróbować odzyskać plik. Istnieje kilka metod odzyskania plików pod Linuksem. W tym przypadku postaramy się odbudować deskryptor pliku i uzyskać do niego dostęp.

W pierwszej kolejności szukamy numer głównego PID serwera Apache.

[root@seiken ~]# ps -efww | grep httpd
root      1198     1  0 13:20 ?        00:00:02 /usr/sbin/httpd
apache    2804  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2805  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2806  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2807  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2808  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2809  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2810  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
apache    2811  1198  0 14:14 ?        00:00:00 /usr/sbin/httpd
root     11105 11066  0 19:27 pts/3    00:00:00 grep httpd

Korzystając z systemu plików procesów możemy obejrzeć deskryptor plików dla tego procesu. Przeglądając katalog /proc/1198/fd dowiemy się jakie otwarte pliki posiada proces.

[root@seiken ~]# ls -l /proc/1198/fd
total 0
lr-x------ 1 root root 64 Jun  3 18:56 0 -> /dev/null
l-wx------ 1 root root 64 Jun  3 18:56 1 -> /dev/null
l-wx------ 1 root root 64 Jun  3 18:56 2 -> /var/log/httpd/error_log
lrwx------ 1 root root 64 Jun  3 18:56 3 -> socket:[10043]
lrwx------ 1 root root 64 Jun  3 18:56 4 -> socket:[10044]
lr-x------ 1 root root 64 Jun  3 18:56 5 -> pipe:[16756]
l-wx------ 1 root root 64 Jun  3 18:56 6 -> pipe:[16756]
l-wx------ 1 root root 64 Jun  3 18:56 7 -> /var/log/httpd/access_log (deleted)
lr-x------ 1 root root 64 Jun  3 18:56 8 -> /dev/urandom

Jak można zobaczyć, znajdują się dam dowiązania symboliczne do plików. Teraz wystarczy przepisać plik z deskryptora do pliku loga. Można do tego celu wykorzystać polecenie:

[root@seiken ~]# cat /proc/1198/fd/7 > /var/log/httpd/access_log

Plik wrócił na swoje miejsce i można znowu odczytać z niego dane.

przez -
0 653
Apache

Zgodnie z zapowiedziami, Apache Software Foundation wydało ostatnią wersję serwera Apache 1.3.42. Najnowsza wersja zawiera jedynie poprawki dla modułu mod_proxy oraz logresolve. Seria Apache 1.3 została zapoczątkowana w roku 1998, stąd fundacja zaleca szybką migrację na produkty z serii Apache 2.2, która obsługuje między innymi wielowątkowość.

Polecane

linux magazine

0 307
Narzędzia do tworzenia grafiki wektorowej, takie jak Inkscape, pozwalają szybko tworzyć obrazy nie tracące na jakości nawet przy dużym powiększeniu. Czy narzędzia...