MAMP Mac + Apache + MySQL + PHP Kraków 8 czerwca 2009, Adam Strzelecki, www.nanoant.com
COŚ O MNIE. Developer od 13 lat Freelancer od 3 lat, od 1.5 roku na Maku www.nanoant.com Projekty komercyjne GIS, IM, Web Projekty open-source Miranda, TC plugins, CVSTrac, jabberd2 Wkrótce własny software na Maka
PRAWIE WSZYSTKO JUŻ MAMY... OSX wywodzi się od BSD, więc jest Unixem podobnie jak Linux czy FreeBSD Drzewo katalogów jest podobne do tego, które możemy znaleźć w Linuksie /usr/bin /etc ale mamy też typowe katalogi dla OSX /System /Library /Developer /Users Apple nie wymyśla własnych rozwiązań na siłę, ale używa tych sprawdzonych z open-source, a Udostępnianie WWW to nic innego jak wbudowany serwer HTTP Apache Katalog główny dokumentów: /Library/WebServer/Documents Konfiguracja: /etc/apache2/httpd.conf
PRAWIE WSZYSTKO JUŻ MAMY... Podobnie jest z PHP i nie tylko $ php -v PHP 5.2.8 (cli) (built: Feb 5 2009 21:21:13) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies $ perl -v This is perl, v5.8.8 built for darwin-threadmulti-2level (with 4 registered patches, see perl -V for more detail) $ svn --version svn, version 1.4.4 (r25188) compiled Sep 23 2007, 22:32:34 $ ruby -v ruby 1.8.6 (2008-08-11 patchlevel 287) [universaldarwin9.0] OSX to prawie kompletne startowe środowisko dla developerów webowych A także dla programistów C/C++/Objective-C po zainstalowaniu narzędzi Xcode w /Developer no i terminal freak-ów takich jak ja ;P
PRAWIE... Czy wszyscy wiedzą co to jest sudo? PHP działa, ale już nie w Apache, który ma domyślnie moduł php5_module wyłączony Musimy go włączyć edytując plik /etc/apache2/httpd.conf sudo nano /etc/apache2/httpd.conf lub mate /etc/apache2/httpd.conf #LoadModule php5_module libexec/apache2/libphp5.so Niestety PHP, dołączone do OSX jest troszeczkę wybrakowane $ php -r phpinfo(); Brakuje m.in. GD, czyli czegoś co się pojawia w większości bibliotek webowych
NAPRAWIAMY PHP PODEJŚCIE NR. 1 Na szczęście jest dostępna prosta w instalacji kompletna paczka PHP na http://www.entropy.ch/blog/software/2009/03/27/php-5-2-9-and-5-3-0rc1-packages-for-mac-os-x-10-5.html Paczka Entropy PHP 5.2.9-4.pkg instaluje się w /usr/local/php5 oraz dodaje plik w /etc/apache2/other, który automatycznie uaktywnia nową instalację PHP Nie musimy uaktywniać PHP w /etc/apache2/httpd.conf jak to było pokazane na poprzednim slajdzie, dodatkowy plik w /etc/apache2/other wystarczy Paczkę można wywalić usuwając /usr/local/php5 i /etc/apache2/other/*entropy* Jeśli chcemy dowiedzieć się co i gdzie zainstalowała dana paczka możemy użyć lsbom $ lsbom /Library/Receipts/Entropy\ PHP\ 5.2.9-4.pkg/Contents/Archive.bom OSX nie posiada uninstallera, ale lsbom i rm dają radę
A CO Z MYSQL? PODEJŚCIE NR.1 MySQL dostarcza oficjalne paczki dla OSX na http://dev.mysql.com/downloads/ Paczka mysql-5.1.35-osx10.5-x86.dmg instaluje się w /usr/local/mysql-5.1.35 oraz w Preferencjach systemowych Możemy ustawić w preferencjach systemowych, żeby MySQL odpalał nam się przy starcie systemu Aby mieć polecenie mysql w konsoli powinniśmy dodać do ścieżki katalog /usr/local/mysql-v.v.v/bin do ścieżki $ echo /usr/local/mysql-v.v.v/bin sudo tee /etc/paths.d/mysql Zagadka! Czemu nie? $ sudo echo /usr/local/mysql-v.v.v/bin > /etc/paths.d/mysql Paczkę możemy usunąć przez usunięcie katalogu /usr/local/mysql-5.1.35 oraz /usr/local/mysqlcom, który zawiera skrypty startujące MySQL przy starcie systemu
I TO BY BYŁO NA TYLE...... ale jeśli chcemy wycisnąć z tego wszystkiego coś więcej?
NAPRAWIAMY PHP PODEJŚCIE NR. 2 MacPorts (dawniej DarwinPorts) kompletny zintegrowany system pobierania, kompilowania i instalacji pakietów open-source na Maka http://www.macports.org/ Jeśli na Maku brakuje jakiegoś oprogramowania open-source (np. rodem z Linuksa), biblioteki lub modułu to na 99% jest on dostępny w MacPorts Warianty w MacPorts pozwalają zainstalować dany program tylko/lub dodatkowo z wybranymi rozszerzeniami $ sudo port install php5 +apache2 +mysql5 +pear
NAPRAWIAMY PHP PODEJŚCIE NR. 2 MacPorts jest zupełnie niezależne od oprogramowania zainstalowanego w OSX i żyje sobie w osobnym katalogu stworzonym tylko dla siebie /opt/local Właśnie dlatego MacPorts pobierze, skompiluje i zainstaluje w swoim katalogu także Apache i MySQL ze źródeł jeśli zażądamy instalacji PHP wraz z niżej wymienionymi rozszerzeniami $ sudo port install php5 +apache2 +mysql5 +pear A więc ten slajd to również MySQL: Podejście nr. 2 Wypada też w takim razie dodać /opt/local/bin do ścieżki $ echo /opt/local/bin sudo tee /etc/paths.d/macports
PARĘ SŁÓW WIĘCEJ O. MacPorts przypomina trochę menadżer pakietów Debiana albo RubyGems i potrafi zainstalować całkiem dużo nieprzydatnych programów (pakietów) oraz pochłonąć dużo miejsca na dysku jeśli nie jest używany,-a,-e(?) z umiarem. Na szczęście tylko w obrębie /opt/local Polecam kontrolować co mamy zainstalowane $ port installed Odinstalowywać zbędne pakiety $ sudo port uninstall bzdet Oraz czyścić środowisko kompilacji i cache pobranych plików $ sudo port clean installed No i czasami uaktualniać MacPorts oraz informacje o pakietach $ sudo port selfupdate && sudo port update
VS PACZKI W PKG/DMG. Aplikacje w DMG to fajna rzecz, wrzucamy je do kosza i po kłopocie, niestety odinstalowywanie PKG wymaga, albo żeby autor paczki przygotował własnego uninstallera albo czeka nas ręczne wywalanie przez lsbom + rm. Paczki w PKG (np. ta z Entropy dla PHP) są fajne jeśli nie zamierzacie odinstalowywać/ doinstalowywać modułów, bibliotek czy dodatkowych narzędzi. MacPorts wygrywa jeśli często aktualizujecie PHP, lub chcecie używać najnowszej wersji Apache czy MySQL skompilowanego z niestandardowymi parametrami. MacPorts pozwala także zainstalować języki niedostępne domyślnie w OSX np. Erlang, albo narzędzia takie jak GNU/Make (polecenie gmake), które nie do końca są kompatybilne z tymi dostępnymi w OSX.
COŚ O KONTROLI WERSJI OSX zawiera domyślnie dystrybucję Subversion 1.4.x, czyli polecenia svn i svnadmin Możemy wersjonować projekty używając zdalnego serwera, albo też używać lokalnego repozytorium $ svnadmin create ~/repozytoria/nowe $ svn co file:///users/ja/repozytora/nowe Możemy też zainstalować GIT (polecam, paczka git-core) lub CVS (dla old school owców ) przez MacPorts
DZIĘKUJĘ PYTANIA?