Guide:(K)Ubuntu server howto/For entusiasten og bedriften
Fra Diskusjon.no WIKI
For entusiasten og bedriften
| Forfatter: | Del |
| Diskusjonsemne: | Emne på diskusjon.no |
| Forum: | Programvare > GNU/Linux |
| Beskrivelse: | En innføring i oppsett og konfigurasjon av servere med Ubuntu og Kubuntu. |
- 1 – Introduksjon til GNU/Linux
- 2 – Vanlig filserverfunksjonalitet
- 3 – Hjemmeserver
- 4 – For entusiasten og bedriften
- 5 – Gode og relevante lenker
Web-server - installasjon av verdens mest utbredte web-server
Det er vanskelig med nøyaktige tall, men antagelig kjører godt over halvparten av verdens web-servere GNU/Linux, blant annet diskusjon.no. For en fullblods server trenger du selve web-serveren (Apache), en database (MySQL) og et egnet programmeringsspråk for utvikling av nettsider (PHP). Alt dette er lagt inn i en pakke, i menyen velger du System->Synaptics Package Manager. Så velger du Edit->Mark packages by Task, huk av "LAMP server" og trykk "OK". Denne kombinasjonen er så vanlig, at det er laget en walk-through for den fra installasjon til ferdig system her. Lag deg nå din egen hjemmeside og legg den i /var/www, så har du ditt eget nettsted. Husk at du må være administrator/rot for å gjøre endringer i /var/www. Du finner mange eksempelsider du kan bruke her og her. Følg veiledningen her for en enkel og god løsning. Hvis du ønsker å ta skrittet helt ut, og utvikle dine egne nettløsninger, så bør du ta en titt på Joomla eller Drupal, Drupal er ferdigpakket for Ubuntu. Du finner gjennomgang på oppsett av begge hhv. her og her. Vær oppmerksom på at åpning av port 80 ut mot internet kombinert med å kjøre web-server innebærer sikkerhetsrisiko. I utgangspunktet bør du kjøre så få tjenester som mulig hvis du vil ha maksimal sikkerhet, alle programmer kan ha sikkerhetshull, vurder selv hvor kritisk du synes et innbrudd på serveren din er. Nettsider bruker gjerne php, unngå å kjøre php kode som rot. Ikke endre rettigheter på systemmapper bare for å få til en quick-fix, spør heller om hjelp hvis noe er tricky. Les forøvrig neste post, og vurder sterkt om du ønsker overvåkingsoftware. Husk også at gode passord som byttes ut med jevne mellomrom er en fin ting. Det er mange gode ressurser på nett som omhandler sikkert oppsett og bruk av LAMP server. Dersom du jobber i en bedrift hvor det er viktig å unngå innbrudd, så anbefaler jeg deg en google runde, for så å gå igjennom en av de mer grundig sikkerhetsoppsettene (hvilket gjerne innbefatter at boksen blir dedikert til kun web-server med minimalt av software installert, og faller derfor utenfor det vi prøver på her).
Tips: Mange tjenester du kan være interessert i benytter databaser. En database kan bli korrupt dersom det kommer et strømbrudd mens den er i bruk. For å forhindre dette kjører du følgende på de harddiskpartisjoner som f.eks. MySQL bruker (bare åpne en terminal, f.eks. Konsole):
hdparm -W 0 /dev/sda
Bytt ut sda med dine harddisker. Dersom din database bruker disk mye, så vurder om dette gir deg dramatisk ytelsestap. Gjør endringen permanent ved å redigere /etc/hdparm.conf.
Web-OS - på tide å teste skyen?
Fra din Ubuntuboks kan du kjøre web-basert OS. Dvs. at du kjører en hel desktop inni nettleseren din. Les mer og se alternativer her. Min anbefaling er EyeOS, et nytt prosjekt som allerede har kommet langt. Dessverre finnes ingen Ubuntu-pakker i skrivende stund, så du må hit for å se hvordan du installerer. Sørg for at du har installert web-serveren LAMP som beskrevet ovenfor først. Hvis du bare er nysgjerrig kan du teste ut løsningen på utviklernes server, bare gå hit og opprett en bruker.
Sikkerhet på nett
Du har nå kanskje mange åpne porter i systemet ditt, det er på tide å tenke på overvåking. Fra din router har du faktisk veldig god kontroll på nett-trafikken, og adgangskontroll til nettverket ditt, men vurder gjerne noe mer sofistikert. På serveren din er kontroll med nettverkstrafikk bygget inn i linux-kjerna. Reglene som styrer det (f.eks. åpner relevante porter når du installerer programmer som trenger portene) styres fra kommandolinja med kommandoen iptables, men det finnes mange programmer som gjør dette brukervennlig (f.esk. firestarter, fwbuilder, guarddog, guidedog og kmyfirewall), bruk den du liker best. Finn og endre hastigheten på nettverkskortet ditt med kommandoen ethtool. Dersom du lurer på om noen har forøkt å få tilgang til maskinen din (inklusive deg selv), så ligger detaljert informasjon om dette i filen /var/log/auth.log, bare titt på den med kate:
kate /var/log/auth.log
Munin er en meget god Perl applikasjon som gir deg alt du trenger for avansert overvåking at netttrafikken til og fra dine servere. Du finner en flott gjennomgang på oppsett og bruk av Munin hos linuxguiden her , og lære deg hvordan du bruker den. I utgangspunktet er alle relevante porter lukket på et linux system, men pakkene vi har installert, og kommer til å installere åpner en etter en. Remote desktop er meget sårbar, men også ssh. Det finnes roboter (små programmer/virus), som notorisk prøver "brute force" angrep (gjetter på en rekke brukernavn/passord) på utvalgte porter. Du bør derfor unngå admin/administrator som brukernavn, og som indikert under sørge for at root ikke kan logge seg på ved ssh. Husk at din OpenWrt router holder deg helt trygg inntil du selv vil åpne de relevante portene ut mot nettet, så for kun internt bruk kan du være mye mer sloppy. Hvis du vil være helt trygg for brute force angrep mot port 22, så sjekk ut oppsett av ssh under. Les gjerne denne for mange flotte tips. For ssh spesielt bør du ta deg tid til denne.
Router, trådløsrouter og Brannmur/Gateway funksjonalitet
Hvis du har mer enn en nettverksport, eller både nettverksport og trådløskort, så har du mange muligheter. Vi tar hovedpunktene:
Du kan bruke maskinen din som trådløst aksesspunkt, altså som full erstatning for trådløs router. Det finner du gjennomgang på her. Regn med at driverstøtten for dette vil bedre seg vesentlig fremover etter at dette kom inn i trådløsstacken i 2.6.29 kjernen: http://kernelnewbies.org/Linux_2_6_29#head-15bbf47db6d2c7b07052f248a98711d6629363d5
Du kan bruke den ene porten til å dele nettet med en annen maskin, det kan du gjøre enkelt med bridging, og det finner du gjennomgang på her. Du kan eksempelvis ta inn Internett på trådløskortet og så koble en annen maskin til nettverksporten med kabel, så har begge Internett. Sjekk hvilke interfacer du har (og som du skal brokoble) med
ifconfig
Når du bruker maskinen på denne måten fungerer den som en gateway, dvs. nettet går gjennom denne maskinen. Du kan da vurdere om du vil ha mye mer kontroll på nett-trafikken ved å bruke maskinen som en fullblods gateway med brannmur. Du finner fin informasjon om dette her.
Du kan ha redundant nett, dvs. hvis den ene detter ut så vil den andre ta over. Eksempelvis kan du ha mobilt nett som sikkerhet skulle din faste nettforbindelse dette ut. Det heter bonding, og du finner en gjennomgang her.
Virtualisering
Med virualisering her mener vi å kjøre et OS inni et annet virtuelt, se her for forklaring. I GNU/Linux så har du fire ledende løsninger for dette, de er alle gratis, men ikke alle er fullt ut GPL. Først har vi VMware som er lukket, men nå helt gratis. VMware var tidlig ute med virtualisering, tilbyr god brukervennlighet og meget god ytelse. Dernest har vi Virtualbox som også kommer i en gratis versjon som mangler noe funksjonalitet, men denne gratisversjonen er faktisk lisensiert under GPL. Virtualbox er også et meget godt proudukt, ligger ferdig pakket i pakkesystemet, og selvforklarende grensesnitt for enkel installasjon av gjeste-OS. Ytelsen er også god, selv om den nok ikke når opp til ESXi basert løsning fra VMware.
Det finne også to helt åpne alternativer, Xen og KVM. KVM er gjenstand for stor kodeinnsats, og er nå min klare favoritt. Les mer om løsningen her og her. Du finner god dokumentasjon for Ubuntu her. Personlig vil jeg likevel henvise deg til Debian sin wiki hvor jeg også legger mine bidrag her.
Med virtualisering kan du sette opp mange servere på en fysisk maskin. Dette kan rulles ut svært effektivt med KVM. Du kan enkelt administrere dine virtuelle maskiner med Virtual Machine Manager, og du får ferdige Ubuntu-baserte servere du kan sette opp i en fei med Turnkey linux. Disse løsningene er allerede klare for produksjon, og støttes offisielt av Red Hat, så her er det ingenting å vente på. Bare sett igang!
Fra speiling av disk til bit-kirurgi
Det finnes et fantastisk verktøy som heter dd, som kan gjøre nærmest hva som helst med dine data. Det er skrevet så mye bra om bruken av dd at vi skal nøye oss med få kommentarer, samt denne fantastiske linken. Om ikke alt du er ute etter står der, så kan du t.o.m. spørre denne dd-guruen selv! Husk å ikke kopiere en hel disk som er montert, siden det da kan skrives til den mens du kopierer, bruk en live CD om nødvendig. Husk også at ved kloning av disk får du med partisjonstabellen, så hvis den nye disken er større, vil du trenge å partisjonere disken etterpå for å nyttiggjøre deg den ekstra plassen, f.eks. med gparted, qtparted eller annet partisjoneringsprogram (bruk Live-CD dersom disken er systemdisken, disker kan ikke være montert når du skal partisjonere dem). Hvis du rett og slett skal kopiere en harddiskpartisjon til en annen, så kan det være like greit å bruke cp -a i stedet, men da får du ikke med deg alt (dd tar med alt bit for bit, inklusive rester etter slettede filer). Det finnes også en grei GUI til dd og alternativet dcfldd hvis du vil unngå kommandolinja, den finner du her. For disker som begynner å gjøre seg vanskelige , ødelagte partisjoner osv. så er dd et kraftig opprettingsverktøy. Derfor har det blitt laget et eget program for dette formålet, ddrescue. Installer ddrescue fra terminal med
sudo aptitude install gddrescue
Bruken av ddrescue er rett frem på partisjonnivå, f.eks. berg /dev/hda1 med følgende:
ddrescue /dev/hda1 hdpartisjon logfilen
Partisjonen vil da gjenopprettes, og skrives til filen hdpartisjon, du vil finne informasjon fra gjenopprettingen i logfilen. Hvis du er ute etter et generelt datagjenopprettingsverkøy er TestDisk verdt en test.
Ramdisk - når harddisken ikke er rask nok
Hvis du har nok minne er det meget lett å ta en del av minnet for å bruke som diskplass. Vær da klar over at alt som ligger i ramdisken forsvinner når strømmen kuttes. I GNU/Linux er dette implementert på en meget elegant måte med virtuelt filsystem som bruker virtuelt minne. Det betyr at du kan opprette den med en kommandolinje, og den bruker til enhver tid kun så mye minne som det du legger der tar. Først må du opprette et monteringspunkt for disken, dvs. en mappe hvor ramdisken skal ligge, f.eks. /home/bruker/ramdisk, så kan du opprette ramdisken fra terminal med
sudo mount -t tmpfs tmpfs /home/brukernavn/ramdisk
Som standard kan maksimalt halvparten av minnet brukes til ramdisken, men dette kan du dynamisk endre selv med boot-parametre. Les mer her. Så kan du teste skrivehastigheten til ditt nye diskområde fra terminal med
time dd if=/dev/zero of=/home/bruker/ramdisk/garbage bs=8k count=30000
count=30000 gir en fil som heter garbage på 246MB, juster størrelsen på count etter hvor mye ram du har (ikke la filen overstige halvparten av ditt totale minne).
Installer OS og/eller applikasjoner over lokalt nett
Hvis du drifter maskiner er installasjon av OS noe du ikke kommer unna. Når antallet maskiner er betydelig er det på tide å tenke på å automatisere oppgaven. Sørg for at hovedkort støtter installasjon over nett, så kan du sette opp din egen installasjonserver slik. Så lenge denne serveren er på nettet er det nok å koble maskin uten OS på nettet, så blir den installert over nett. Du kan alternativt se på Cobbler som en mer komplett løsning for installasjon over nett.
Du kan også sentralisere installasjon av pakker. Hvis du kun er ute etter å spare båndbredde, så installerer du apt-cacher server med instruksjoner her. Hvis du ønsker å ha full kontroll med hvilken software som skal installeres, så kan du opprette din egen pakkebrønn i en mappe slik, mappen kan deler du ut med NFS. Dersom du ønsker å la klienter få rettigheter til å installere fra kun denne pakkebrønnen, så kan du konfigurere sudo med de rettighetene du ønsker at brukerne skal ha (f.eks. tillate bruk av pakkeinstallering), og fjerne alle eksterne pakkebrønner fra /etc/apt/sources.list. Les mer om tilpassing av sudo her.
E-post server - oppsett og alternativer
På et visst nivå vil ikke lenger en gratis web-basert e-post være tilstrekkelig. Selv for hjemmebruk er det ingenting i veien for å sette opp sin egen e-post server, slik at du kan bruke ditt eget domenenavn (f.eks. fra DynDNS) til å motta e-post direkte til din (K)Ubuntu server. Dere som nøyer dere greit med web-basert mail bør absolutt ta en titt på Gmail. Registrer din nye Gmail konto her. Så installerer du appleten KCheckGmail med Add/Remove Programs (prøv Gmail Notify istedet hvis du bruker Gnome). Nok om Gmail, det å sette opp sin egen e-post server kan være ganske omfattende hvis man skal ha en profesjonell løsning. Det finnes meget gode guider for dette på nettet. Ta deg tid til å lese denne fine oversikten. Noen av Groupware løsningene presentert under har egne e-post løsninger. Min klare anbefaling er Kolab, som gir deg alle ledende løsninger i en pakke.
Hvis du er moden for å sett opp din egen fullblods e-post server, så kan du starte med å sette opp basis Postix oppsett. Du har nå fullt fungerende e-post for alle dine brukere, men du ønsker kanskje en litt mer komplett løsning, da er et naturlig neste skritt her. Du trenger nå et vanlig e-post program for å lese og sende e-post. Da installerer du Cyrus eller Dovecot som gir deg både POP3 og IMAP tilgang (som kan settes opp i Thunderbird, KMail, Evolution, Outlook etc.). Hvis du i tillegg har lyst til å ta opp kampen mot GMail og ordne en web-interface for din e-post server slik at alle brukere kan lese og sende e-post via nettleser, så installerer du i tillegg Squirrel. Hvis du finner ut at du fortsatt vil lære mye mer om oppsett av e-post server går du hit. Nå kan tiden være moden til å gå tilbake til Kolab, og nyte at noen andre tar seg av alt det kompliserte for deg.
Mail og kalenderløsning for flerbrukermiljø - oppsett og alternativer
Les generell informasjon om denne typen løsninger her. Det finnes tre ledende kommersielle løsninger på dette: Exchange fra Microsoft som er MS only, Novell groupwise og Lotus Notes fra IBM som er plattformuavhengige. Disse løsningene kommer også med en database løsning for å dele og lagre informasjon. Flere av Norges største bedrifter har med hell brukt Notes. Jeg anbefaler konsekvent produkter som er platformuavhengige (såfremt de holder mål), så blant de store kommersielle har Notes min anbefaling med forbehold om at jeg kjenner Novells løsning for dårlig. For de som er glad i åpen kildekode finnes også overraskende mange gode alternativer som nok duger for de aller aller fleste. Ta gjerne en titt på Kolab, Hula, phpGroupWare, Zimbra, E-GroupWare, OpenGroupware.org, Citadel og Meldware før du bestemmer deg (vilkårlig rekkefølge). Av disse er E-GroupWare, Kolab, Hula og phpGroupWare ferdigpakket for Ubuntu. eGroupware, Kolab og Novell Groupwise kan enkelt settes opp i KDE med Kde Groupware Wizard, som du finner i menyen under Office. Installer med KPackage eller Synaptic, evt. apt fra kommandolinja (du finner de ikke med Add/Remove Programs). mens OpenGroupware.org og Citadel har debian pakker som du kan prøve her og her. Riktignok har Zimbra ferdigpakkede binærfiler for sin open source utgave til en rekke distribusjoner, du finner disse her. For Meldware er det verdt å prøve deres web install (den krever at du har Java installert). Noen av disse løsningene er rene web-løsninger, slik at alt du trenger er nettleseren, mens andre er tyngre fullblods samarbeidsløsninger. Flere av disse løsningene har integrert løsning for effektiv deling av dokumenter, uten at jeg klarer se spesielt tungtveiende grunner til å ha de dokumenthåndterinssystemer integrert. Slike systemer har derfor fått en egen spalte rett nedenfor her.
Selv om din bedrift er låst til Exchange infrastruktur grunnet tidligere investeringer, så er det likevel mulig å velge rimeligere løsninger ved en utvidelse. Les mer her.
I denne jungelen er min anbefaling Kolab. Istedet for å selv finne opp kruttet på nytt baserer de seg på å sy sammen de beste åpne løsningene, og holder seg til kjernefunksjonalitet. Prosjektet selv er GPL tvers igjennom, i motsetning til mange av de andre løsningene som kun delvis er åpne. Den er gjennomprøvd i profesjonelle miljøer gjennom en årrekke, og med versjon 2.2.1 kan den betegnes som feature complete. Den er i skrivende stund ute i versjon 2.2.4, og jeg har laget et KVM bilde som du kan teste ut. Bruker og innlogging er bare debian, samme gjelder rotpassord, så sørg for å endre dette før du åpner den på nettet ditt. Du finner en tekstfil i mappen /root som gir instruksjoner for tilpasning til ditt oppsett. Her er lenken til det virtuelle bildet: http://ubuntuone.com/p/Hjm/
Dokumenthåndteringssystemer - åpne alternativer
Den typen programvare er ikke veldig godt kjent, så sjekk ut Document management system hos Wikipedia for en fin oversikt. Legg spesielt merke til at Microsoft sin løsning krever Microsofts egen databaseserver, den kjører på Microsofts proprietære .Net, og det som ikke står er at den kun fungerer med Microsoft Office programmer og dokumenter. Til sammenligning har Alfresco funksjonalitet som overgår Microsoft Sharepoint, du kan få den gratis under GPL, eller betale for support (akkurat som Red Hat og Suse). Den kan kobles med alle ledende databaseservere, kjører Java og er derfor plattformuavhengig, og fungerer like godt med Microsft Office som med Openoffice. Nå har t.o.m. Alfresco blitt kompatibel med Sharepoint, slik at du kan integrere Alfresco med eksisterende Sharepoint infrastruktur. Gå hit for å finne installeringsinstruksjoner for Ubuntu 8.04. Du finner en gjennomgang med automatisert skript for Ubuntu 9.04 her. Med denne typen løsninger begynner vi virkelig å se hvordan åpne løsninger kan spare store summer for en bedrift, eller rett og slett gjøre løsninger tilgjengelige i det hele tatt.
Andre systemer jeg vil anbefale deg å ta en nærmere titt på er Nuxeo, Main Pyrus og OpenKM. Du kan laste ned Nuxeo her og OpenKM her.
Wiki, forum og blogg - anbefalte løsninger og oppsett
Det er utrolig hvor mye god dokumentasjon som ligger ute på nett. For wiki-løsning anbefaler jeg Mediawiki, som er den løsningen Wikipedia bruker, den setter du opp på få minutter slik. Sjekk gjerne også ut de mange utvidelsene til MediaWiki.
Kanskje du har lyst til å ta opp konkurransen med diskusjon.no, da setter du opp ditt eget forum på få minutter her, husk at du enkelt kan endre skin på forumet for å få det til å se ut slik du vil.
Blogging har blitt populært. Du kan enkelt sette opp en bloggtjeneste for ditt interne nett, eller åpent ut mot internett. Til formålet anbefaler jeg WordPress, og det setter du opp på få minutter med veiledningen her. Legg spesielt merke til at du på nyere versjon av Ubuntu må endre
sudo sh /usr/share/doc/wordpress/examples/setup-mysql -n dinmysqlbruker localhost
til
sudo bash /usr/share/doc/wordpress/examples/setup-mysql -n dinmysqlbruker localhost
hvor du erstatter dinmysqlbruker med det bruker navnet du ønsker å ha for databasen.
DNS-server, Proxy-server og autentisering - anbefalte løsninger og oppsett
Hvis du har en liten eller større bedrift er proxy-server absolutt noe å tenke på. Det setter du også enkelt opp med denne glimrende gjennomgangen. Du har da sentralisert adgang til Internett, som gjør det enkelt for deg å administrere og restriktere adgang til Internett med utvidelsen SquidGuard. Grei og brukervennlig administrering av Squid og SquidGuard får du gjennom webmin.
Sentraliserte tjenester er en grei ting når man har mange maskiner, blant annet kan det være fornuftig med DNS-server for å holde styr på domene navn. Merk at det nylig ble oppdaget et sikkerhetshull i DNS, så sørg for oppdatert programvare.
For større brukermiljø er det nyttig med brukerautentisering for å holde styr på hvem som har rettigheter til hva. Den best ytende løsningen for å gjøre dette er OpenLDAP, som du finner god veiledning til her. Hvis du setter opp den løsningen, vil du få et sømløst flerbrukersystem. Dvs. et system hvor alle hjemmemapper og log-in informasjon ligger på en server slik at en bruker vil kunne gå fra en maskin til en annen å logge inn på samme måte, få opp samme desktop og de samme filene.
Programmering - komplett utviklingsmiljø
GNU/Linux ble utviklet av og for programmerere. Følgelig er også plattformen ekstremt godt egnet til programutvikling med ledende verktøy tilgjengelig gjennom hele verdikjeden. Temaet er så omfattende at bare stikkordsmessig grov oversikt får plass her. La oss starte med det generelle, som går på tvers av programmeringsprosjekter. Basis infrastruktur dekker her versjonskontroll, dokumentasjonsløsning, system for bug-tracking og kompilatorpakke. For versjonskontroll anbefaler jeg Subversion med Trac som frontend. Vurder om du kan nyttiggjøre deg et distribuert versjonskontrollsystem, isåfall anbefaler jeg at du titter på Git og Mercurial. For dokumentasjon er MediaWiki en flott løsning, suppler gjerne med Doxygen. For bug-tracking liker jeg Ubuntus system Launchpad som nylig ble sluppet under GPL. Det finnes flotte alternativer som Bugzilla (brukes av blant annet Mozilla og Red Hat) ferdigpakket til Ubuntu. For kompilering er GCC et naturlig førstevalg.
Når det kommer til forskjellige kodeprosjekter, så vil jeg dele disse inn i to hovedkategorier. Det ene er skripting, som typisk faller under kategorien quick'n'dirty, men som dessverre likevel ofte ender opp som større kodeprosjekter i produksjon. I denne kategorien finner vi språk som Shell-skript, Sed, Awk, Perl, Python, MatLab og tildels Java. Et hederlig unntak er dog Php som med hell brukes til profesjonell utvikling av nettsteder. Den andre kategorien er prosjekter som kompileres fra kildekode, typisk C, C++ og Fortran. Disse er godt egnet for store programmeringsprosjekter, med unntaket at Fortranrutiner ikke bør velges som hovedprogram (men de kan gjerne linkes inn).
Hvilke verktøy du bør bruke avhenger veldig av type programmeringsprosjekt. En fellesnevner er en god editor, og for de som liker det minimalistisk har Emacs blitt veldig populær. Den er enkel, lett, effektiv, gjenkjenner og tilpasses ethvert språk, kan kjøres gjennom terminal med full funksjonalitet, og integrerer avansert funksjonalitet som debuggeren Gdb. Du finner en fin gjennomgang her. Eksempelvis vil få foretrekke MathWorks' egen editor etter å ha vent seg til Emacs med matlab.el plug-in. Tid anvendt i Emacs vil du neppe angre, mange profesjonelle utviklere sverger til Emacs. Hvis du bruker Emacs bør du ta en titt på CEDET, en utvidelse som gir Emacs funksjonalitet som mange tror er forbeholdt tunge IDE'er.
Hvis du skal skripte, så anbefaler jeg Python for generelt bruk, og Octave for numeriske problemer. Octave er en åpen og gratis Matlab klone som kjører det meste av Matlab skript greit, og ligger ferdigpakket i Ubuntu (i likhet med Python, og forsåvidt alle andre språk). Emacs er et flott verktøy for denne typen oppgaver, men ta gjerne en titt på andre Editorer også. Hvis du skal utvikle noe i Java, så finnes det avanserte IDE (integrerte utviklingsmiljø) tilgjengelig. Ta spesielt en titt på Eclipse og Netbeans.
Hvis du skal utvikle nettsider er det et hav å velge i. Du kan naturligvis kode direkte i Emacs enten det er html, php, eller noe mer eksotisk, eller du kan bruke skreddersydde editor som Nvu, Quanta eller Bluefish. Det finnes også verktøy hvor du knapt trenger å vite noe om programmering, og hvor du kan designe hele nettsteder på kort tid. I denne kategorien bør du ta en titt på Joomla, Drupal og Ruby on Rails. For å få et utviklingsmiljø trenger du naturligvis en full web-server.
Dersom du spiser kirsebær med de store, og ønsker å utvikle store kommersielle eller åpne applikasjoner, så er min anbefaling C med relevante utvidelser som hovedspråk. For større prosjekter er objektorientering viktig, og da bruker man gjerne C++ (som er en utvidelse av C). Hvis du trenger et grafisk brukergrensesnitt til applikasjonen, så dekker Qt (som er en utvidelse av C++) alle behov. Som editor kan du naturligvis bruke Emacs, men det kan være vel verdt å titte på KDevelop som integrerer sømløst blant annet Subversion, Doxygen, GCC og Gdb! Kdevelop er ledende enten det gjelder C, C++ eller Qt, men støtter også andre språk. Gå hit for å komme i gang nå!
Linux-klynge - bygg din egen superdatamaskin
Hvis man ser på listen over verdens fem hundre kraftigste datamaskiner, såkalte superdatamaskiner, så kjører nå over 90% GNU/Linux, og andelen er økende! Microsoft har nå dumpet ned til 1%. Det er sterke grunner til dette, uten at vi skal bruke tid på å kartlegge det her. Hvis du skal ha en klynge, så er det første du gjør å kontakte en leverandør. Du kan få en klynge ferdig oppsatt med GNU/Linux nærmest som postordre i dag, så vurder i hvor stor grad du ønsker å gjøre noe selv (det koster ikke all verden å få det ferdig). Alle leverandører kan eksempelvis levere alle sine nodeløsninger med GNU/Linux ferdig installert, og kobler opp hardwaren for deg. Skulle du ønske å få klynga helt nøkkelferdig, er heller ikke det noe problem.
Nå er dette en tråd for DIY (do-it-yourself), så det er klart at vi kjøper ingenting, og rigger opp alt på egenhånd. Ditt første valg er hardware. Har du dårlig plass går du for blades, hvis ikke kan 1U være godt kjøp, typisk velger du to-sokkelnoder med AMD eller Intel CPU'er. AMD er konkurransedyktig med Intel i dette segmentet, og ofte rimeligere, så vurder om AMD er best for deg. Hardwaren kjøper du fra leverandør, vi bygger ikke noder selv (uansett hvor fristende det fete hovedkortet fra MSI så ut), sånn er det med den saken. Når det gjelder OS så er det bare to ting som gjelder: Red Hat eller Suse. Etterhvert kommer sikkert Ubuntu også, men i dag holder du deg til de to store, så blir livet mye enklere. Vi som er gjerrige velger gratisversjonene CentOS eller OpenSuse. Jeg vil basere meg på CentOS rett og slett fordi det er Red Hat jeg har mest erfaring med. Jeg har bare lovord og gode erfaringer med Suse også, så du må gjerne velge det selv.
Nå når vi har bestemt oss for OS er det på tide å oppsøke informasjon om klynger, vi starter her. Så kan du lese deg opp på Red Hats egen informasjon om klynger her. Red Hat har gitt ut gode verktøy for klyngeadministrasjon som er ferdigpakket i Ubuntu, de leser du om her. Hvis du har lyst til å se litt på verktøyene til Red Hat mens du leser dokumentasjonen, og kanskje prøve deg litt frem, så kan du installere pakkene redhat-cluster-suite og system-config-cluster. Start system-config-cluster med sudo. Du kan fort bli litt slått i bakken av alle mulighetene Red Hat legger frem, men det er ikke så dumt å se litt på hvilke muligheter du har til å skreddersy en klynge.
Vi tar utgangspunkt i at du har falt ned på en typisk HPC løsning. Ta deg først tid til å lese IBM sine tips her. Så går du hit, og installerer Rocks cluster. Du velger naturligvis x86_64 versjonen, slik at du får utnyttet mer enn 2GB minne på en prosess. Så kan du gå hit og velge fra en innholdsrik meny. Legg spesielt merke til køsystemene Torque og Sun Grid Engine, vurder hvem som passer deg best. Så går du til dokumentasjon her. Begynn med å installere på nodene dine med Users Guide. Det bør ikke være noe problem å installere hundre noder før lunsj ;) så du har god tid til å få på plass køsystem og annet snacks i løpet av dagen.
Klynger har normalt lokalt operativsystem kombinert med mapper delt sentralt over NFS eller andre tilsvarende løsninger. Det er likevel fullt mulig å distribuere også lagring, selv om dette ikke er spesielt brukervennlig ennå. Du kan bruke globalt filsystem, GFS. GFS er utviklet av Red Hat, og det anbefales å ha enten Red Hat eller CentOS på nodene dersom du skal bruke GFS. Du finner en kortfattet howto på hvordan du setter det opp her, og Red Hat sin offisielle dokumentasjon finner du her. OCFS er et alternativ til GFS fra Oracle. Du finner informasjon om det her.
Det er uvanlig å kjøre driftskritiske applikasjoner på en HPC-klynge, så man bruker gjerne ikke samme programvare for å holde oversikt over nodene her som på eksempelvis en web-server eller mail-server. Det du typisk er interessert i er å holde oversikt over hvor høy last nodene har over tid, og nettverktrafikken mellom dem. Til det finnes det et utmerket verktøy i Ganglia. Den er essensielt en web-interface til det mer fleksible RDD tool.
VPN - lag ditt eget virtuelle lokale nettverk
VPN eller Virtual private network består typisk av at du installerer server på en maskin for så å la klienter koble seg opp. Serveren og de maskinene som har koblet seg opp opptrer da som et lokalt nettverk. Dette kan være ønskelig i flere sammenhenger. Typisk eksempel er at du ønsker at din laptop skal kobles opp mot hjemme eller jobbnettverk som om den ble koblet opp lokalt på LAN, for å gi enkel tilgang til tjenestene som du har lokalt på nettet ditt, eller kanskje du bare vil sett opp en spillserver som kun dine venner skal koble seg til over Internett som om dere hadde et LAN party hjemme hos deg. Da er OpenVPN tingen. Serveren kan du faktisk sette opp på routeren hvis du kjører OpenWrt, se howto for WhiteRussian og for Backfire eller senere, sørg for at du har port 1194 åpen og NAT fra Internett og inn til routeren. Du kan også sette opp serveren på en av dine GNU/Linux maskiner. Det er en del vendinger med å sette opp OpenVPN server, men du finner en oversiktlig gjennomgang her. På klientsiden begynner det å bli enkelt å koble seg opp med VPN rett og slett ved å bruke Network Manager i Ubuntu (KNetworkmanager i KDE).
Hvis du vil ha full oversikt over konfigurasjon, så kan du titte på konfigurasjonsfilene her.
Systemadministrasjon - har du mange maskiner å drifte?
Det finnes svært gode verktøy for å håndtere administrasjon av datamaskinene i store bedrifter. De ledende løsningene er ikke gratis, men de kan likevel være verdt investeringen. Hver av de tre store har sin variant. For Ubuntu tilbys Landscape, som har modnet fint i siste versjon. Fra Red Hat har du Red Hat Network Satellite som også fremstår som en moden løsning. Fra Novell, firmaet bak Suse finner du Open Enterprise Server, den eldste løsningen av de som er på markedet, som også erstatter Microsoft sine katalogtjenester. Red Hat er svært flinke til å dele sine prosjekter tilbake til miljøet. Deres Sattelite er ikke noe unntak, du får den også i en fri versjon, Spacewalk, da kan du også drifte Red Hat derivatene CentOS, Fedora og Scientific linux.
Hvis du er ute etter katalogtjenester, så er Fedora sitt prosjekt, 389 Directory Server et godt alternativ. Det er også verdt å få med seg at Samba (filserverprogramvare for linux) i versjon fire vil fungere som en fullverdig erstatning for Microsofts AD, les mer om det her. Personlig holder jeg rett og slett en knapp på OpenLDAP for katalogtjenester, selv om oppsett kan være krevende.
Hvis du har mange maskiner å drifte vil jeg varmt anbefale å ta en nærmere titt på Gosa. Et administrasjonsverktøy som Munchen har finansiert utviklingen av i forbindelse med deres overgang til GNU/Linux. Du får da samlet all administrasjon du måtte ønske i et grensesnitt. Du kan gjøre som Munchen og kombinere Gosa med FAI, slik at du får automatisert utrulling av operativsystem og programvare. Gosa og FAI er en suveren kombinasjon om du ønsker å basere din løsning primært på Debian, men er på ingen måte begrenset til Debian.
Overvåking og feilretting - hold oversikt over maskinene dine
Det finnes mange gode programmer for å holde oversikt over dine linux-maskiners helse. Et av de første du bør ta en nærmere titt på er Nagios. Du finner en flott gjennomgang av Nagios her.
Hvis du synes Nagios ikke har nok å by for å holde oversikt på tar du en titt på Zenoss. Du finner en gjennomgang på installasjon for Ubuntu 10.04 her.
Hvis du kjører tjenester som er driftskritiske eller ønsker å gjøre automatisk feilretting av systemkonfigurasjoner bør du ta en titt på Puppet. For å bruke Puppet trenger du å skripte, og dette gjør terskelen noe høyere enn med mange verktøy. Til gjengjeld er skriptspråket lett og lære og gir deg stor fleksibilitet. Ta en titt her for en smakebit.
Forretningsprogramvare - har du flere ansatte? Kunder?
For bedrifter med mange ansatte er det mye å hente på å la datamaskinen hjelpe deg med vanlige oppgaver. Den mest kjente kommersielle programvaren for formålet er SAP, og den er plattformuavhengig. Dessverre er den både dyr og krevende å drifte. Heldigvis finnes det gode frie alternativer. For en innføring i utvelgelse av slik programvare anbefaler jeg å lese denne artikkelen. Oversikt over tilgjengelige løsninger finner du her. Spesielt vil jeg trekke frem Adempiere som en interessant løsning verdt en nærmere titt. På litt sikt vil sikkert også GNU prosjektet være en svært interessant løsning. Hvis du egentlig bare trenger et fakturaprogram bør du titte på Finfaktura. Er du ute etter et program for utfylling av reiseregning skjer det interessante ting: https://www.coderesort.com/p/reiseregningen/wiki/WikiStart
Telefoni - mer enn bare å ringe
Telefoni er ikke lenger bare en analog linje, datamaskinen har gjort sitt inntog også her. En bedrift har gjerne komplekse behov på telefonsiden, hvor mange ikke engang er klar over alle mulighetene som kan utnyttes med åpne løsninger. Den ledende programvaren i dag er Asterisk. Ta gjerne en titt på alternativer her. Med Asterisk har du din egen telefonsentral som router samtaler mellom telefoner, mobiltelefoner, VoIP, samt organiserer telefonkonferanser og interaktive telefonmenyer. Kommersiell støtte fra hardware til software tilbys av ledende Asterisk utviklere gjennom firmaet Digium, de tilbyr også kurs som du kan lese om her. Gå hit for å se hvordan du setter opp Asterisk på Ubuntu 9.04.
Internett-kiosk
Kanskje du ønsker å starte en Internett-Cafe, eller bare ha en maskin stående som kun skal brukes til surfing. Dette setter du greit opp med GNU/Linux. Opera nettleser er meget godt egnet til formålet, og du finner all informasjon du trenger om det her. Hvis du ønsker en gjennomført åpen løsning (Opera er lukket og proprietært vettu), så kan du også greit sette det opp med Ubuntu, en god gjennomgang (Ubuntu er basert på Debian) finner du her.
Trådløs hotspot - lei ut trådløst nett
Du har kanskje opplevd å leie trådløst nett, f.eks. på Gardermoen eller i et hotell. Typisk er det trådløse nettet ikke sikret, men du må logge inn på en velkomstside før du kommer inn på Internett. Dette kalles gjerne hotspot, og du kan sette det opp på din OpenWrt router (selv en Linksys WRT54GL er nok). Hvis du ønsker eller trenger å sette det opp manuelt, finner du det her, men det finnes heldigvis et enklere alternativ, du får OpenWrt ferdig som hotspot i form av Coova. Du finner en steg-for-steg gjennomgang av oppsett av Coova her. Dersom du ønsker å sette opp hotspot direkte på en Ubuntu-maskin istedet går du hit.




