Andreas Karlsson

/

Om webbutveckling

Magento / WordPress / CodeIgniter / jQuery / Prototype /

Jag heter Andreas Karlsson och jobbar som webbutvecklare på Karlsson & Lord. Du når mig enklast genom andreas.karlsson@indiebytes.se eller 073-512 78 09.

Sätt upp en lokal utvecklingsmiljö i Leopard – steg för steg

Sedan en tid tillbaka har jag jobbat väldigt mycket tillsammans med Dabber, en trevlig webbyrå med fokus på video. Just nu jobbar vi med ett väldigt stort projekt där jag har ansvar för utvecklingen och att saker blir klara i tid. Till min stora glädje låg det även på min lott att plocka in en extern förmåga att hjälpa mig i utvecklingen. Så tidigare i veckan träffades jag och Erik Pettersson, som är – förutom en klippa på webb – en god vän, för att planera upp sommaren och projektet.

Det första steget blev givetvis att se över våra lokala utvecklingsmiljöer. I Leopard. Det som har skapat frustration och ominstallationer för mig under en lång tid. Men tack vare att Anton Lindqvist tipsade mig om hur han använt sig av MacPorts och hur han fått det att fungera bra så blev det inte fullt så krångligt som tidigare försök. Särskilt inte med tanke på att jag upptäckte hur man lätt avinstallerar allt man installerar med MacPorts. Efter ett par tre försök rullade allt på min ena dator, och med allt menar jag:

Fortsätt läsa så går jag igenom steg för steg hur jag gjorde. Om jag gjort fel någonstans, är otydlig, om det inte fungerar eller om det för den delen fungerar – lämna gärna en kommentar och hjälp mig på så sätt att förbättra det här inlägget.

Observera: vid ett par tillfällen i inlägget när vi ska redigera filer förekommer kommandot mate, det kräver att du har Textmate installerat. Har du inte det kan du lika gärna använda dig av till exempel pico eller vi.

Installera MacPorts

Först av allt, se till att ha Xcode installerat, det krävs av MacPorts. Installera sedan MacPorts enligt anvisningarna på deras hemsida. När installationen är klar, öppna upp ett nytt Terminal-fönster för att vara säker på att kommandot port har laddats in.

Det kan vara bra att notera att det vi installerar med hjälp av port hamnar som standard i /opt/local/, läs mer om det på deras hemsida.

Installera Python

Leopard skeppas med Python 2.5, men för enkelhetens skull installerar vi Python på egen hand för att ha allt samlat på ett ställe och ha full koll på hela utvecklingsmiljön. Jag har valt att använda mig av Python 2.6 här, men det ska gå lika bra med någon annan version. Man kan även installera flera Python-versioner och sedan enkelt växla mellan dem, till exempel med python_select som vi strax kommer att installera.

$ sudo port install python26
$ sudo port install python_select

Sätt Python-versionen som vi nyss installerade till standard med hjälp av python_select och kontrollera att det är korrekt Python-version som körs:

$ sudo python_select python26
Selecting version "python26" for python
$ which python
/opt/local/bin/python

Installera MySQL

$ sudo port install mysql5-server

För att MySQL ska startas automatiskt vid uppstart:

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5-server.plist

Ta reda på var din server socket ligger och skapa följande symboliska länkar så att PHP och Pyhton fungerar med MySQL:

$ mysql_config5 --socket
/opt/local/var/run/mysql5/mysqld.sock
$ sudo ln -s /opt/local/var/run/mysql5/mysqld.sock /tmp/mysql.sock
$ sudo mkdir /var/mysql
$ sudo ln -s /opt/local/var/run/mysql5/mysqld.sock /var/mysql/mysql.sock

Slå av MySQL, skapa rotanvändare (root) och standarddatabasen och slå sedan på MySQL igen:

$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5-server.plist
$ sudo /opt/local/lib/mysql5/bin/mysql_install_db --user=mysql
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5-server.plist

Sätt ett lösenord för root:

$ mysql5 -u root

mysql> UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> quit

För att kontrollera att allt har gått bra, prova att logga in som root med det nya lösenordet:

$ mysql5 -u root -p

Installera MySQL for Python

För att MySQL och Python ska fungera tillsammans behöver vi installera följande koppling:

$ sudo port install py26-mysql

Installera Apache

Börja med att kontrollera att Webbdelning under Systeminställningar » Delning är inaktiverat. Annars riskerar vi konflikter mellan Leopards inbyggda Apache och vår installation. Sedan kan vi påbörja installationen:

$ sudo port install apache2

För att Apache ska startas automatiskt vid uppstart:

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

Genom att lägga till ett alias för sudo /opt/local/apache2/bin/apachectl kan vi underlätta hanteringen av Apache. Öppna ~/.profile:

$ mate ~/.profile

Lägg till följande rad:

alias apache2ctl='sudo /opt/local/apache2/bin/apachectl'

När vi laddar om profilen ska vårt nyskapade alias börja fungera:

$ source ~/.profile

Efter omladdningen kan vi testa detta genom att exempelvis starta om Apache med:

$ apache2ctl graceful

Installera mod_python

mod_python är en Apache-modul som integrerar Python i servern. Installera den med:

$ sudo port install mod_python26

Innan modulen fungerar måste vi säga åt Apache att ladda in den, vilket vi gör senare i det här inlägget.

Har du Subversion installerat?

Subversion finns som standard i Leopard, men för att dubbelkolla att vi har det installerat kör vi:

$ svn --version

Skulle du inte ha det kan du enkelt installera det med:

$ sudo port install subversion

Installera Django

Det finns flera sätt att installera Django, här kommer vi att använda oss av Subversion och kommandot svn.

Vi hämtar hem den absolut senaste (trunk) samt den senast stabila versionen till en lämplig mapp med hjälp av svn:

mkdir ~/svn
svn co http://code.djangoproject.com/svn/django/trunk/ ~/svn/django_trunk
svn co http://code.djangoproject.com/svn/django/tags/releases/1.0.2/ ~/svn/django-1.0.2

Sedan tar vi reda på var site-packages ligger:

$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages

Nu när vi vet det kan vi skapa en symbolisk där till den Django-version du vill använda dig av:

$ sudo ln -s ~/svn/django_trunk/django /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django

Det sista steget vi gör för Django är att skapa ytterligare en symbolisk länk för kommandot django-admin.py så att vi lätt kan använda kommandot oavsett vilken mapp vi befinner oss i:

$ sudo ln -s ~/svn/django_trunk/django/bin/django-admin.py /opt/local/bin/django-admin.py

Installera PHP

$ sudo port install php5 +apache2 +fastcgi +imap +tidy +mysql5 +sqlite +pear +readline +sockets +t1lib

Innan PHP rullar som det ska med servern måste vi bland annat säga åt servern att ladda Apache-modulen för PHP, vilket är en av de sakerna vi ska göra härnäst…

Konfigurera Apache genom httpd.conf

$ mate /opt/local/apache2/conf/httpd.conf

Lägg till följande två rader i listan över moduler som Apache ska ladda, det är modulen för mod_python och för PHP:

LoadModule python_module modules/mod_python.so
LoadModule php5_module modules/libphp5.so

Leta reda på raden

#ServerName www.example.com:80

avkommenterad den och ändra den till

ServerName 127.0.0.1:80

Som standard pekar din server mot /opt/local/apache2/htdocs, personligen föredrar jag att använda mappen Sites (översatt till Webbsidor i Leopards grafiska gränssnitt), därför ändrar vi följande rad

DocumentRoot "/opt/local/apache2/htdocs"

och pekar istället DocumentRoot mot Sites:

DocumentRoot "/Users/username/Sites"

Vi ändrar även raden

<Directory "/opt/local/apache2/htdocs">

till att peka på samma mapp:

<Directory "/Users/username/Sites">

I det blocket sätter vi även

AllowOverride None

till

AllowOverride All

Som standard tittar vår server först och främst efter index.html när vi inte anger en specifik fil i vår sökväg. Där vill vi att Apache även ska titta efter index.php, sök reda på raden

DirectoryIndex index.html

och lägg till index.php:

DirectoryIndex index.php index.html

I blocket <IfModule mime_module> ska vi även lägga till följande rader för att servern ska tolka våra PHP-filer korrekt:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Starta sedan om servern för att ändringarna ska börja gälla:

$ apache2ctl graceful

Fortsatt läsning

7 Responses / Sätt upp en lokal utvecklingsmiljö i Leopard – steg för steg

Pingback: Intressanta bloggar som jag följer - Johannes Holmberg

Bo 19 juli 2009 at 22:00

Är helt grön i Mac-världen och har egentligen inget behov av någon utvecklingsmiljö. Men om det blir någon riktigt regnig dag så kan jag agera försökskanin och se om jag kan få in det i min Macbook.

Svara
marketingMartin 5 augusti 2009 at 23:17

Har du provat Mamp? Det kör jag och de funkar smidigt. Det låter dock lockande med versionshantering, men verkar krångligt att installera MacPorts..

Svara
Johan 26 augusti 2009 at 05:52

Det här inlägget kommer vara trevligt att läsa när jag skaffat min Mac.

Svara
Petter 1 september 2009 at 14:30

Kan hålla med marketingMartin. Mamp borde stå med i inlägget som ett alternativ för den som inte kan/vill hålla på i terminal, även om installationen inte kanske blir exakt som man vill ha den från början. Riktigt smidigt om man bara är ute efter att testköra WP eller något annat system lokalt.

Svara
jonas 9 september 2009 at 18:12

Härlig guide, hittade dock den så här en dag efter jag fått allt att rulla ändå..
Men jag vill bara slå ett slag för decentraliserade versionshanteringssystem (istället för subversion), t.ex git eller mercurial.

Svara
codepeak 6 februari 2010 at 14:58

Mycket bra skrivet, har precis använt det själv för att installera min lokala webbmiljö. Noterade dock att ”sudo port -v selfupdate” misslyckades, detta för att jag sitter bakom en brandvägg. Dock så löser det sig om man öppnar upp port 873 i brandväggen.

Svara

Leave a reply / Sätt upp en lokal utvecklingsmiljö i Leopard – steg för steg

*

*