Archive

Archive for November, 2009

Prywatne repo git’a cz.1

November 29th, 2009 No comments

Jakiś czas temu pisałem jak za pomocą git’a i pendirve’a można w łatwy sposób zabezpieczyć się przed utratą projektu. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git’a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje GitHub; mają też rozwiązanie płatne w którym to możemy mieć  prywatne repo, ale ja wole mieć je u siebie ;) ).

Moje oczekiwania od takiego repo są następujące:

  • dostępność do repo z każdego zakątka świata (czyli serwer musi być dostępny szeroko pojętej sieci)
  • możliwość dostępu do repo tylko dla wybranych użytkowników
  • możliwość przeglądania repo z poziomu www
  • bezpieczeństwo stosowanego rozwiązania (https, ssh)

Jakie wybrałem oprogramowanie ?

  • systemem bazowym będzie Debian (znany, lubiany i standardowy linux)
  • gitosis (prosty soft do hostowania repozytorium git’a z równie prostą kontrolą dostępu, IMO rozwiązanie w sam raz do moich potrzeb)
  • lighttpd (mały i szybki httpd)
  • mod_ssl oraz mod_auth do wyżej wymienionego httpd
  • cgit odpowiednik gitweb’a ale moim zdaniem ładniejszy i bardziej przejrzysty

We własnym zakresie trzeba zadbać o system bazowy, oraz jego konfigurację ;) . Zakładam, że Debian jest już zainstalowany, skonfigurowany, zabezpieczony oraz podpięty do sieci.

Zaczynamy od instalacji i konfiguracji lighttpd

apt-get install lighttpd apache2-utils

Pakiet apache2-utils będzie nam potrzebny do wygenerowania hash‘a hasła potrzebnego do mod_auth (swoją drogą system pakietowania debiana coraz bardziej mnie zadziwia … nie rozumiem po co w zależnościach do tego pakietu znajduje się libmysqlclient …). Po zainstalowaniu włączamy dwa interesujące nas moduły:

lighttpd-enable-mod auth
lighttpd-enable-mod ssl

Oraz przechodzimy do konfiguracji zarówno httpd jak i modułów. Zaczniemy od mod_auth, czyli edytujemy pliczek /etc/lighttpd/conf-enabled/05-auth.conf, w którym to wybieramy backend (czyli algorytm szyfrowania haseł oraz miejsce ich zapisu) oraz konfigurujemy miejsca do których dostęp będzie strzeżony hasłem. Po modyfikacjach plik konfiguracyjny powinien wyglądać mniej więcej tak:

## Authentication for lighttpd
##
## Documentation: /usr/share/doc/lighttpd-doc/authentication.txt.gz
##                http://www.lighttpd.net/documentation/authentication.html
server.modules                += ( "mod_auth" )
# htdigest jest najmocniejszym dostepnym "algorytmem" szyfrujacym
auth.backend                   = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd-htdigest.user"
 
auth.require                 = ( "/" =>
                                     (
                                       "method"  => "digest",
                                       "realm"   => "secure content",
                                       "require" => "valid-user"
                                      )
                                )

Opcja auth.require zawiera tylko jeden element, którym jest root serwera httpd, czyli dostęp do dowolnego pliku na serwerze będzie chroniony hasłem. Warto tutaj wspomnieć, że hash hasła zostanie posolony wartością w realm, dzięki temu uzyskujemy prosty mechanizm kontroli dostępu (tj. gdybyśmy mieli dwa zasoby z różnymi wartościami w realm, każdego użytkownika który powinien posiadać dostęp do obu powinniśmy dodać osobno). Teraz wystarczy tylko dodać użytkownika:

htdigest -c /etc/lighttpd/lighttpd-htdigest.user 'secure content' user_name

Po wydaniu tej komendy zostaniemy poproszeni o podanie oraz potwierdzenie hasła dla tego użytkownika.

Po skonfigurowaniu mod_auth przechodzimy do konfiguracji mod_ssl, w tym celu edytujemy /etc/lighttpd/conf-enabled/10-ssl.conf. Ja zdecydowałem się udostępniać usługę http tylko na porcie 443 z szyfrowaniem (czyli popularny https ;) ), więc w konfiguracji mod_ssl wskazałem na którym dokładnie adresie IP oraz na jakim porcie ma nasłuchiwać daemon; plik konfiguracyjny wygląda mniej więcej tak:

## lighttpd support for SSLv2 and SSLv3
##
## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt
##      http://www.lighttpd.net/documentation/ssl.html
 
#### SSL engine
$SERVER["socket"] == "111.222.3.4:443" {
ssl.engine                  = "enable"
ssl.pemfile                 = "/etc/lighttpd/server.pem"
}

następnie generujemy certyfikat self-signed dla naszego serwera:

openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

Który to kopujemy do /etc/lighttpd/server.pem.

Ostatnią częścią konfiguracji lighttpd będzie ogólna konfiguracja serwera, czyli edytujemy plik
/etc/lighttpd/lihttpd.conf. W którym to odkomentowujemy tylko linie:

server.bind = "localhost"

Spowoduje to, że port 80 zostanie otwarty tylko na interfejsie loopback, co w konsekwencji prowadzi do tego, że wszystkie połączenia (z sieci) do portu 80 będą odrzucane (za to akceptowane będą połączenia do portu 443, zgodnie z konfiguracją w pliku 10-ssl.conf).

Na razie to wszystko w kwestii konfiguracji lighttpd, wrócimy jeszcze do niej podczas konfiguracji cgit’a. W następnej części zajmiemy się konfiguracją gitosis.

PS. Tutaj jest część druga.

Po Szczecińskiej Konferencji OpenSource

November 23rd, 2009 No comments

W dniach 20-21 listopada odbyła się druga Szczecińska Konferencja OpenSource (de facto pierwsza edycja nazywała się: Szczecińska Konferencja OpenSolaris ale to już jest w kwestii organizatorów ;) ). Ogólna tematyka konferencji w większości poświęcona była OpenSolarisowi, pomiędzy prezentacje o zonach, zfs (… czyli to co jak powiedział Damian Wojsław: każda porządna konferencja o OpenSolarisie powinna posiadać) itp. wpleciono dość zgrabnie aspekty prawne dotyczące OpenSource, Sambe4, systemy biblioteczne, XEN’a, Firefoxa i PostrgreSQL.

Pierwszego dnia kulturalnie się spóźniłem kilka minut i ominą mnie początek pierwszej prezentacji o OpenSolarisie, na szczęście na pozostałych prezentacjach byłem już obecny w całości, tak więc po kolei. Druga prezentacja Piotra Jasiukajtisa bardzo ładnie prezentowała wykorzystanie mechanizmów które są dostępne tylko w *Solarisie (należy pamiętać o tym że wszystkie omawiane technologie istnieją również w innych systemach ale nie zawsze są odpowiednikami 1 do 1 w stosunku do prezentowanych). Ogólnie prezentacja bardzo przypadła mi od gustu, gdyż w przeciwieństwie do tego co było rok temu, pokazywała jak praktycznie są wykorzystywane zony, zfs i mechanizm wirtualizacji. Dla mnie jako osoby która na co dzień nie ma styczności z *Solarisem nie jest ważne to jak skonfigurować zfs’a, zone czy cokolwiek innego, tylko gdzie to można użyć, jakie problemy rozwiązać. Dzięki tej prezentacji wiem, że mechanizm snapshot’ów w zfs’ie na prawdę jest przydatny oraz jest praktycznie jedynym rozwiązaniem jeżeli chodzi o backup dużej porcji danych które się cały czas zmieniają. To samo dotyczy zon. Takie podejście do mnie trafia ;)

Kolejna prezentacja nt. aspektów prawnych Rafała Malujdy była równie cennym doświadczeniem. Przede wszystkim dla tego, że w końcu zobaczyłem że OpenSource nie tylko dostrzegany jest przez środowisko IT oraz pasjonatów/hobbystów informatyki ale też przez inne grupy zawodowe oraz że jest on postrzegany jako równie interesujący. Cieszę się bardzo, że ten temat został poruszony na tej konferencji oraz, że prelegent jest ze Szczecina ;) .

Samba 4 … przed tą prezentacją wiedziałem tylko że jest jakaś samba, do czego służy oraz jak mniej więcej powstała. Po prezentacji TomLee’go (tj. Tomasza Woźniaka) wiem dużo więcej o ciekawej (moim zdaniem) historii tego projektu, o tym jak jest rozwijany … a co konkretnie będzie w kolejnej wesji to szczerze mówiąc jest dla mnie miej istotne ;)

RBAC i OpenSolaris, czyli dostęp oparty o role w w/w systemie. Prezentacja rzeczowa i przyjemna, szkoda tylko że ograniczona tylko do OpenSolarisa … rozumiem, że tam jest to zrobione najlepiej ale moim zdaniem warto by też wspomnieć więcej o innych systemach i dostępnych tam implementacjach. AFAIK i nie czegoś nie pomieszałem to dla linuxa dostępne są trzy implementacje RSBAC, SeLinux, grsecurity … to takie moje małe wtrącenia jako sympatyka linuxa ;)

Drugi dzień konferencji również obfitował w wykłady o OpenSolarisie które poruszały już bardziej zaawansowane tematy które jakoś nie specjalnie mnie … aktualnie programistę, a nie admina … porwały ;) . Za to wszystkie tematy nie związane z OpenSolaristem były bardzo ciekawe ;)

Wegług kolejności pierwszy był Firefox prezentowany przez Roberta Partykę . Muszę przyznać, że nie wiedziałem iż ta przeglądarka posiada takie możliwości. Tak wiem, spora ilość pluginów może o tym świadczyć. Prezentacja była bardzo rzeczowa (aczkolwiek można by trochę popracować nad jej kolorystyką i wielkością czcionki ;) ), na prawdę zrobiła na mnie spore wrażenie … do tego stopnia, że przesiadłem się ponownie z Opery na Firefox’a. Swoją drogą jestem ciekaw dlaczego ktoś jeszcze nie pokusił się (a przynajmniej nic mi o tym nie wiadomo) o pisanie plugin’ów do firefox’a z wykorzystaniem GWT … przecież to JavaScript, a w Javie przecież jest wygodniej ;)

Ostatnio mognym tematem jest wirtualizacja … może z powodu kryzysu w którym to tnie się koszty ;) . Nie mogło jej zabraknąć również na tej konferencji, najpierw Marcin Weksznejder mówił o wirtualizacji pod OpenSolarisem, potem Sebastian Szary mówił o XENie. Prezentacja mocno ukierunkowana była na praktyczne wykorzystanie tej technologii. O wirtualizacji z wykorzystaniem XEN’a mówił na GeeCon’ie oraz JAVArsovii mówił również Waldemar Kot … w sumie były to prezentacje o wirtualizacji JVM, a nie całego systemu operacyjnego ;)

Hitem całej konferencji okazała się prezentacja Piotra Wejmana o systemie bibliotecznym … głównie dzięki niesamowitemu prowadzącemu który w poprowadził tą prezentację (mógł bym porównać poziom tej prezentacji do poziomu Jacka Laskowskiego). Prezentacja ta była kolejnym dowodem, że oprogramowanie OpenSource coraz aktywniej bierze udział w walce rynkowej oraz, że coraz częściej jest postrzegane jako właściwy wybór/kierunek. O samej aplikacji Koha nie będę się rozwodził, jedyne co mogę napisać to to, że na podstawie zaprezentowanych screenshot’ów rzeczywiście bije na głowę zamkniętą konkurencję.

Pod przewrotnym tytułem kolejnej prezentacji “Słonie w akcji”, poprowadzonej znowu przez Roberta Partykę ukrywała się PostgreSQL. Kolejna świetna prezentacja na wysokim poziomie. Dzięki tej prezentacji wiem jak sporo jeszcze nie wiem o PostgreSQL oraz, że w miarę możliwości będę wybierał ten system bazodanowy, a nie MySQL’a ;) . Robertowi należą się spore brawa za przygotownie dwuch na prawdę dobrych i interesujących prezentacji, jestem pod wrażeniem jego wiedzy oraz umiejętności jej przekazania jak i umiejętności prowadzenia prezentacji … na prawdę jest z kogo brać przykład ;)

Ostatnia prezentacja dotyczyła wykorzystania wolnego oprogramowania w firmie. TomLee przedstawił kilka przykładowych scenariuszy oraz listę zamienników dla płatnych aplikacji … szkoda tylko, że na audytorium nie było ludzi którzy mogli by z tej wiedzy skorzystać … cóż, są sobie sami winni …

Po konferencji odbyło się nie oficjalne wspólne spotkanie przy nie pasteryzowanym piwie w PetitParis w czasie którego poruszane były przeróżne tematy ;) kto nie był ten niech żałuje ;P

Cieszę się, że w Szczecinie odbywają się takie imprezy. Jest to już druga konferencja informatyczna odbywająca się cyklicznie w tym mieście (pierwsza jest Java4People ;) ), mam nadzieje że za rok będę mógł powtórzyć to zdanie (tj. że obie konferencje się znowu odbędą ;) ). Jest jedna rzecz która mnie trochę martwi … słaby sponsoring tych imprez, nie wiem dlaczego Szczecińskie (i chyba nie tylko firmy) nie widzą w tym jakiejś formy promocji, czy też kontaktu z nowymi pracownikami (warto tutaj wspomnieć, że na JAVArsovi organizowana była wśród uczestników rekrutacja …)

BTW. Trójmiejska Grupa Użytkowników Linuksa (TLUG) organizuje zimowisko linuksowe w Pucku, można się rejestrować pod adresem: http://zimowisko.linux.gda.pl/. ;) ;>

PS. Z góry, chcę przeprosić jeżeli przekręciłem czyjeś nazwisko, gdyby ktoś coś takiego się jednak zdarzyło proszę o informacje … tak samo jeżeli ktoś chciał by podlinkować swojego bloga ;)

SCJP6 c.d.

November 16th, 2009 2 comments

Ponad rok temu wspominałem tutaj o blogu Mariusz Lipińskiego w kontekście SCJP. Od wspominanego wpisu minął ponad rok. W tym czasie Mariusz zdążył uzyskać certyfikat, a nawet opublikować dwa wydania własnej książki (pierwsze jest całkowicie darmowe, a drugie można kupić tutaj), dodatkowo na łamach bloga krótko opisuje każdy rozdział z Sun Certified Programmer for Java 5 Stury Guide.

Ja w tym samy czasie próbowałem moich sił z  Sun Certified Programmer for Java 6 Stury Guide (SCJP6SG), cóż ukazał się dokładnie jeden post o tym temacie (w sumie to nie ma się czym chwalić :| ), a natłok obowiązków związanych ze studiami i pracą nie pozwolił mi kontynuować tą serię wpisów.

Wspomniałem już wcześniej o książce Mariusza w formie drukowanej, dziś właśnie dotarł do mnie jeden jej egzemplarz. Objętościowo jest on nie do porównania z SCJP6SG. Jeszcze nie zagłębiałem się dokładnie w Przygotowanie do certyfikacji SCJP6 ale zakładam, że jest to odpowiedni wstęp jak i repetytorium przed i po zapoznaniem się z SCPJ6SG.

W tym roku nie ma już raczej szans żebym przystąpił do egzaminu … ale za to postaram się to zrobić w przyszłym ;)

Rozwój osobisty … nie tylko programowanie

November 15th, 2009 No comments

Kiedyś ktoś stwierdził, że “mamy” (my jako Polacy) wielu wspaniałych specjalistów, naukowców, informatyków … programistów, tylko że wielu z nich “nie potrafi się sprzedać”, co powoduje że razem ze swoim geniuszem lądują w tłumie “szaraczków” i mimo swoich wybitnych zdolności tam pozostają. Karierę zawodową robią nie ci najzdolniejsi, ale ci którzy są w elastyczni, komunikatywni i mimo swoich wad znają i potrafią się cenić.

Tak to już jest skonstruowany ten świat i “komercyjny magiel”, że nie wystarczy już tylko być zdolnym ale trzeba też umieć komuś “wmówić”, że jesteśmy “zdolni”. Pierwszym krokiem żeby się umieć sprzedać jest dostrzeżenie tego problemu, potem mamy już do wyboru kilka możliwych ścieżek … drogie szkolenia, czytanie książek lub też nauka na własnych błędach.

Jest takie miejsce w “polskim internecie” gdzie takowych nauk udziela się za darmo. Miejsce w którym liczy się każde zdanie, miejsce gdzie każdy ma prawo (możliwe nawet że i nie pisany obowiązek) wypowiedzi na dany temat. Takim miejscem dla mnie jest Blog Alexa.

Nie pamiętam już w jak odkryłem tą kopalnie wiedzy o życiu, biznesie, podejściu do siebie i innych … nie jestem też w stanie określić dokładnie kiedy to się stało. Wiem tylko tyle, że na prawdę warto tam zaglądać … choć sam muszę się przyznać, że przez ostatni rok nie gościłem tam prawie w ogóle. Nic to, czas to nadrobić, aktualnie jestem na postach z maja 2009 więc już nie długo będę już na bieżąco ;)

W myśl zasady Alexa “podaj dalej”, podaję i polecam wszystkim lekturę jego bloga … jeżeli tylko chcesz skorzystać z darmowej skarbnicy wiedzy i poprawić siebie ;)