Vad handlar det här inlägget inte om? Det handlar inte om en setup som är till för webbdesigners som självklart behöver tillgång till alla webbläsare och använda sig av de typsnitten som är standard på internet.
Linux är inte speciellt bra på att hantera grafik, det kan ingen påstå. Och det har jag inte heller något intresse av att hävda. Denna guide är framför allt till för mig själv och folk som fungerar som jag. Det vill säga människor som spenderar sina dagar med att programmera för internet, och inte har speciellt mycket med den slutgiltiga designen att göra.
De miljöer jag riktar in mig på är speciellt den klassiska LAMP varianten. Linux, Apache, Mysql och PHP. Jag kommer inte heller prata något om de tekniker som finns för att sen “ladda” upp sina filer via FTP eller sFTP till något webbhotell. Mest för att jag inte använder den typen av webbhotel och har inte riktigt koll på vilka problem man träffar på i den typen av miljö.
Val av Linux distro.
Personligen så gillar jag att använda Ubuntu. Anledningen till detta val är ganska enkelt. Det finns alltid en helt enormt stor mängd hjälp att få på internet vid eventuella problem. Samt att det är enligt min mening den dist som kommer bäst lämpad för skrivbordsklienter från start.
Och ser man på det som webbutvecklare så bygger ju Ubuntu på Debian som är ett tämligen populärt val på produktionsservrarna sen vilket gör att man kan använda mycket av den kunskap man bygger upp om sin utvecklingsdator även under driften av projektet.
Men i övrigt så finns det inte direkt något som gör Ubuntu till ett bättre eller sämre val när det handlar om webbutveckling. De flesta programmen finns till alla de stora distarna, så länge man inte har några väldigt speciella behov av konstig programvara så ska det nog gå bra.
Webbserver, Apache 2.2
För mig så är det alltid Apache som gäller, trots att jag tittat en del på andra webbservrar så som Lighttpd och liknande så faller jag alltid tillbaka på Apache känns det som. Trots att det är en gammal webbserver så känns det enormt stabilt. Tror aldrig jag varit med om att Apache har hängt sig under en körning.
En smidig sak som fungerar väldigt bra i Apache är virtuella domäner (vhosts). Dvs att jag inte behöver skriva ip eller localhost i webbläsaren för att komma till just mitt projekt. Istället kan jag sätta upp valfritt namn som pekar rakt in i min projektmapp istället.
Det är några steg man måste gå igenom för att lyckas med det dock.
Regigera /etc/hosts filen med de custom namn man vill ha med.
# gksudo gedit /etc/hosts
Lägg till dina egna namn på raden som börjar med 127.0.0.1
Till exempel så här.
127.0.0.1 localhost projekt1 projekt2 projekt3 minblogg dev.localhost
I princip kan man skriva vad man vill på den raden, det är alltid den filen som din dator kommer fråga först innan den skickar ut en förfrågan till DNS servrarna för att se vilken dator som ligger bakom ett specefikt ip.
För att sen få Apache att leverera ut en speciell sida när man skriver in den som address i sin webbläsare så kräver det att man sätter upp en s.k vhost i Apache.
# gksudo gedit /etc/apache2/sites-enabled/000-default
Lägg till följande i slutet anpassat till vart du valt att spara dina utvecklingsfiler.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName minblogg # Det här är kopplat till det namn du angav i /etc/hosts filen.
DocumentRoot "/home/johan/dev/minblogg" # Här skriver du vart du har ditt utvecklingprojekt
DirectoryIndex index.php
<Directory "/home/johan/dev/minblogg"> # Här behöver du med skriva det för att htaccess ska fungera.
AllowOverride All
</Directory>
</VirtualHost>
Några andra inställningar som kan vara bra att göra är att ändra vilken användare som skall köra webbserven. Finns som jag ser det ingen anledning att låte www-data ligga kvar som ägare av Apache processen. Blir mest bara problem med rättigheter till filerna då. Bättre är då att låta din egen användare äga Apache processen.
Detta görs genom att man redigerar /etc/envvars konfigurationsfilen.
# gksudo gedit /etc/apache2/envvars
Redigera:
export APACHE_RUN_USER=johan # och bytt ut johan mot ditt användarnamn
export APACHE_RUN_GROUP=johan # här med.
Andra saker man kan göra om man vill är att ändra sessionstider och max filstorlekar som apache och php kan hantera. Dock är detta inte helt nödvändigt för mindre projekt då minneshantering och liknande inte är lika aktuellt.
Editorer och IDE’s
Valet av editor för utveckling är alltid lika svårt. Det beror självklart mycket på vad man är för typ av person. Personligen så ser jag det som att det finns två och en halv typer av olika editorer. De som gör allt och de som inte gör något (och de som gör allt utan att någon vet kan använda den).
De som gör allt.
Dessa IDE’s är alltid stora och ofta klumpiga att ha att göra med. Ofta krävs att man sätter upp speciella projekt och har ordning på sina filer. Exempel på editorer som hamnar i denna kategori är Eclipse (Aptana), NetBeans, Komodo Edit.
Av dessa så har det blivigt så att jag kommit att föredra NetBeans. Mest för att den är stabilare än Eclipse med kommer med i princip samma funktionalitet. Autocompletion, Subversion integration, Goto definition och massor av annat smått och gått som är perfekt när man sitter med ett större projekt och ska hålla koll på flera hundra filer och många tusen rader av kod.
De som inte gör något
Helt vanliga texteditorer, perfekt för att redigera en enstaka fil eller ändra något i en konfigurationsfil. Listan över dessa editorer kan i princip göras hur lång som helst men för att nämna några som finns tillgängliga antingen som standrad i Ubuntu (med Gnome) eller enkelt kan laddas ner.
Den som jag använder av dessa är oftast gEdit. Mest för att den har ett bra stöd för egna färgteman och smidiga plugins som kan göra livet lite lättare. Och normallt sett om det inte är väldigt stora filer så har den laddningstider som är nära noll.
Och de som gör allt utan att någon kan använda dem
I mitt dagliga arbete så är det många gånger man är inne på någon server och harvar runt i olika konfigurationsfiler eller gör små modifikationer i redan befintlig kod som körs på dessa servrar. Av denna anledning kan det vara bra att kunna hantera någon editor som är textbaserad med. Mitt personliga val har landat på Vim. Mest för att jag kan göra allt jag behöver göra där hyfsat enkelt. Men det finns självklart andra man kan titta på med så som Emacs eller Nano.
Jag har märkt att just Vim är väldigt mycket krafigare än vad man först kan tro, men det tar lite tid att lära sig alla de olika kommandona som finns tillgängliga och att man hela tiden jobbar i två olika lägen, ett kommando läge och ett edit läge.
För att komma igång med Vim så rekomenderar jag följande länk.
http://tips.webdesign10.com/another-vim-tutorial
Subversion eller git.
För alla som jobbat med ett större projekt där ni är flera stycken inblandade så finns problem med olika versioner av olika filer. För att lösa det problem så kommer versionshanteringssystemen in och hjälper en. Självklart finns ingen versionshanterare som perfekt kan lösa alla konflikter om två personer redigerat samma fil. Men det underlättar i alla fall. Jag kommer inte gå in så mycket på det här men det är i alla värt och nämna. Och om du inte redan jobbar med någon form av versionshantering så det är npg dags att du börjar. När det kommer till versionshantering finns idag två stora system. Subversion och Git.
Subversion är ett centraliserat system för att hålla koll på olika versioner av massor av filer i ett eller flera olika projekt.
Git är decentraliserat vilket betyder att alla projektmedlemmar har sitt eget privata repo som de kan skicka in filerna till som sedan synkas med de andra deltagarna i projektet. Git är bland annat det versionshanteringssystem som används för linux kärnan på grund av att det har väldigt mycket bättre prestanda än Subversion.
Det kan vara lite omständigt att lära sig något av dessa system, men det är väl värt sin tid trots den relativt höga inlärningskurvan. Om inte annat så finns det grafiska klienter tillgängliga för båda systemen.
Mer info hittas på följande länkar.
Subversion Git
Virtualisering, gör livet lättare för alla.
Om du har behov av att prova hur ett javascript eller en sida ser ut i en annan webbläsare än firefox som följer med som standard i linux så rekomenderar jag faktiskt att köra en Windows instans i en virtuell maskin. På det sättet så kan du ha flera olika uppsättningar av webbläsare i olika maskiner. Dock kan det vara ganska komplext att sätta upp en virtuell maskin och få den att fungera som den skall.
Jag använder mig av VirtualBox med mycket bra resultat och har flertalet olika maskiner som jag kan prova nya saker med och se att allt fungerar som det ska även på andra datorer än min egen.
Länkar om hur du sätter upp VirtalBox.
https://help.ubuntu.com/community/VirtualBox
http://ubuntu-se.org/wiki/Program/Virtualbox
Finns självklart mycket mycket mer man kan göra för att underlätta sitt liv som utvecklare. Och självklart mängder med smarta kommandon man kan använda sig av i terminalen för att göra livet lättare.
Avslutar med några fler länkar för att komma igång med terminalen och göra livet lite lättare.
http://cubiq.org/terminal-tips-for-web-developers/
http://muffinresearch.co.uk/archives/2006/10/16/six-useful-shell-commands-for-web-developers/
http://www.seomoz.org/blog/web-developers-command-line-tricks