Posts Tagged ‘server’

Billede af Karmic Koala CD'erne

Karmic Koala CD'er


For en uge siden, torsdag d. 29. August blev d. 10. udgave af Ubuntu udgivet, navnlig Ubuntu 9.10 Karmic Koala. I den forbindelse har jeg i kraft af min position som LoCo kontakt for det danske Ubuntu community modtaget en kasse med de eftertragtede Ubuntu 9.10 Karmic Koala CD’er.
I følge officielle udsagn indeholder kassen:

  • 250 Ubuntu CD’er
  • 75 Kubuntu CD’er
  • 75 Ubuntu Server CD’er

Jeg har dog ikke fået givet mig i kast med at tælle efter, men det kan jo være det bliver gjort på togturen, fordi disse CD’er vil selvfølgelig blive medbragt til uddeling på lørdag d. 14/11 hvor vi i Ubuntu Danmark afholder vores fremragende Karmic Koala release party i Bruun’s galleri i Århus.

Build your own database driven website using PHP & MySQL - forsidecover

Build your own database driven website using PHP & MySQL - forsidecover


Jeg har brugt (lidt af) de sidste par dage på at tøffe mig igennem Sitepoint bogen med det lange, men meget præcise navn “Build your own database driven website using PHP & MySQL”, og titlen fortæller lige præcis hvad det er bogen handler om.
Bogen giver en generel introduktion til programmeringssproget PHP, samt hvordan man arbejder med databasesystemet MySQL.
Bogen starter med en introduktion til hvad PHP og MySQL er, installation af Linux, Apache, MySQL & PHP og fortsætter derefter med en meget grundlæggende introduktion til PHP hvor der bl.a. introduceres variabler og kontrol strukturer, samt en introduktion til MySQL inkl. hvad er databaser, hvad er SQL og hvordan bruges det.
Bogen kommer heldigvis en tand højere op i niveau senere i bogen med en gennemgang af relationelt databasedesign og MySQL administration på MySQL-siden, og cookies & sessions til adgangskontrol på PHP-siden. Der røres også ved lidt mere eksotiske emner, såsom regulære udtryk og filer/binær data i PHP.

Bogen forudsætter kendskab til HTML og ingen af de brugte HTML-elementer i bogen, forklares nærmere, CSS bliver hverken brugt eller nævnt. Dette gør selvfølgelig at bogen kræver en lille smule baggrundsviden, men jeg synes det er rigtig lækkert, da det giver plads i bogen til nogle af de mere interessante emner indenfor databasedrevne websites. Dette gør bogen til en god introduktion til PHP og MySQL for folk der allerede har kendskab til basal opbygning af hjemmesider, men gerne vil lave mere dynamiske sites, eller webdesigneren der gerne vil lære PHP og MySQL.
For folk med bare en smule forhåndskendskab til programmering og PHP og/eller SQL virker bogen dog lidt for basic til at nå at blive rigtig interessant. Til gengæld er jeg rigtig glad for at bogen, i modsætning til mange så grundlæggende bøger, rent faktisk vælger at give en introduktion til struktureret kode, og hvordan man separer kode og præsentationslaget i bedste MVC-stil. Det er rigtig positivt da jeg mener det er vigtigt for at kunne lave ordentlig kode.

Så konklusionen er altså at bogen er rigtig god til den spirende webprogrammør, eller webdesigneren der gerne vil lære lidt mere om hvad der foregår bag scenen, men den er for grundlæggende til folk med egentlig programmeringserfaring, især folk der har erfaring med PHP eller SQL.

Bogen kan lånes på biblioteket men der er i skrivende stund kun adgang til de 3 første udgaver, og så vidt jeg ved er det først i denne 4. udgave at den meget vigtige del, med fokus på struktureret kode er medtaget, vil man have denne del med (hvilket jeg klart vil anbefale) skal man ud og købe bogen.

For nogle dage siden offentliggjorde Canonical’s community leader Jono Bacon den nyeste bonus for officielle LoCo teams. Hvert team kan gratis få tilsendt 2 Ubuntubøger.
Der er tale om:

Som LoCo-kontaktperson har jeg selvfølgelig allerede sendt en mail og bedt om at få de to bøger tilsendt til min adresse, og jeg glæder mig meget til selv at få læst især serverbogen som jeg ikke har læst før.
Da det selvfølgelig ikke er meningen at bøgerne bare skal ligge og samle støv på mine hylder har jeg tilføjet et punkt på dagsordenen til bestyrelsesmødet på søndag, hvor vi vil diskutere hvordan vi som forening vil håndtere udlån af foreningens ejendele.

I denne artikel vil jeg fortælle lidt om hvordan man opsætter sin Ubuntu eller Debian server som medieserver, dvs. en maskine der indeholder Video/lyd-filer, og deler dem på netværket. Her mener jeg selvfølgelig ikke piratkopiering, men jeg mener at dele medierne med andre enheder i hjemmet.
Min egen grund til at opsætte en medieserver var for at dele musik og film med min playstation 3, så de kan blive afspillet via. fjernsynet, da jeg pt. ikke har nogle ordentlige højtalere tilknyttet min computer.

UPnP

Playstation 3 understøtter den protokol der hedder UPnP. Det er en protokol der bl.a. bygget på HTTP og TCP/IP, der gør det muligt for et antal enheder at arbejde sammen uden at man skal rode med drivere, opsætning af forbindelse osv.

Mediatomb

For at få Playstationen til at arbejde sammen med medieserveren er det altså bare nødvendigt at finde noget mediecentersoftware der understøtter UPnP. En anden begrænsning er at det skal køre på den server jeg har opsat uden GUI.
Til dette formål har jeg fundet programmet MediaTomb, dette findes i repositories, så det er let:

aptitude install mediatomb

Efter installationen startes programmet med kommandoen:

mediatomb

Hvis du tidligere har installeret Screen på din Ubuntu/Debian server kan du åbne et screenvindue og starte mediatomb i dette. Det giver mulighed for at lade medieserveren køre selvom du logger af, og vende tilbage til den på et senere tidspunkt.

Selve administrationen sker igennem et webinterface på en port som MediaTomb selv indstiller. Du bliver informeret om den adresse du skal connecte til når du starter MediaTomb. Denne adresse tastes altså bare ind i en webbrowser, og du vil straks have adgang til administratorinterfacet på din medieserver. Så mangler du bare at ligge medier på serveren :-)

Hvorfor Screen + Irssi?

Efter at have installeret Debian og SSH på min Eee server, samt gjort klar til at hoste og teste PHP applikationer på Ubuntu/Debain LAMP serveren, er det på tide også at gøre plads til lidt pjat og chat.
Meget af kommunikationen i både det danske og det internationale Ubuntucommunity foregår via IRC protokollen, og IRC er derfor et godt sted at følge med hvis man gerne vil hjælpe til i communitiet, eller hvis man bare gerne vil have hjælp i real-time.
For at benytte IRC protokollen skal man have en såkaldt IRC-klient. Der findes mange af disse, både med og uden GUI. Da projektet her handler om at køre en server der kan styres via ssh vælger jeg Irssi som er en terminalbaseret IRC-klient.
For at gøre det en smule mere interessant vælger jeg at køre det igennem programmet Screen. Screen er et terminal program der lader dig åbne og styre flere terminalvinduer på den maskine det kører på, selvom du kun har åbnet én session. Dvs. det giver mulighed for kun at lave én SSH-forbindelse fra klientmaskinen til serveren, der så kan åbne flere “terminalvinduer” og på den måde køre flere programmer sideløbende. Ydermere lader Screen serveren huske din session fra gang til gang. Du kan altså starte en række terminalprogrammer, lukke SSH-forbindelsen, og logge på igen via SSH, og fortsætte hvor du slap.

Hvordan Screen + Irssi?

Selve opsætningen er let nok, da standardindstillingerne egentlig er fint nok til langt det meste.
Begge programmer findes i både Ubuntu og Debians repositories, og kan derfor installeres som med det meste andet.
Først Screen:

aptitude install screen

Derefter Irssi:

aptitude install irssi

Herfra kører det egentlig af sig selv, og standardopsætningen skulle for de fleste være god nok langt hen af vejen.
Hvis man gerne vil pille, findes Screen’s opsætningsfil i:

/etc/screenrc

Men jeg har aldrig haft behov for at ændre på standardindstillingerne, så jeg kender egentlig ikke rigtigt noget til den.
opsætningen til Irssi findes i:

~/.irssi/config

Her er der mulighed for at indstille hvilke chatnets (IRC-servere) du benytter, hvilke kanaler (chatrum) på de forskellige chatnets du bruger, samt sætte autojoin på de forskellige chatnets og/eller kanaler, samt auto identify (log-in) på dine chatnets. Dette kan også gøres fra selve programmet hvis man ikke er så glad for at sidde og fedte med config-filer, dette vil jeg komme ind på senere.

Screen

De grundlæggende ting i screen er forholdsvis lette at lave hvis man har en smule erfaring med terminalbrug (hvilken mine læsere selvfølgelig har, da det efterhånden er et stykke tid siden jeg skrev min guide til Ubuntu terminalen ;-)), eller bare en smule gåpåmod.
Først startes screen med:

screen

Der startes så en terminal, hvor du kan starte dine programmer som normalt. Udover de normale terminalkommandoer har screen nogle shortcuts der er gode at kende når man arbejder med programmet. Disse kommandoer bruges med:

ctrl+a, [letter]

Dvs. man trykker ctrl og bogstavet a samtidig, hvorefter man slipper de to knapper og trykker på det bogstav der svarer til den kommando man leder efter.
Nogle gode kommandoer er:

  • 0-9 – skift til vindue 0-9
  • c – ny vindue
  • d – Detach fra session
  • n – næste vindue
  • w – Vis vinduer
  • k – kill, luk vindue

Dvs. hvis man vil oprette et nyt terminalvindue i sin screen session trykker man ctrl+a ned samtidig, slipper de to knapper hvorefter man trykker en enkelt gang på c.
Når man er færdig med at bruge screen kan man enten lukke det ned med

exit

ligesom alle andre terminalsessions, eller man kan bruge ctrl+a+d for at detache. Det vil sige man kobler sig fra sin screen session, men lader den køre i baggrunden så man altid kan få fat i den og arbejde videre med den, på et senere tidspunkt.

Reattach

Næste gang man vil starte screen skal man så lige overveje hvad det egentlig er man gerne vil. Man kan, ligesom i første omgang, bruge

screen

Til at starte en ny screen-session, eller:

screen -raAd

for at genoptage en evt. gammel screen session, som du tidligere har detachet fra.

Irssi

Her ville jeg egentlig have skrevet en guide til at bruge Irssi, men jeg har selv været meget glad for
MenZa’s guide til Irssi, så den vil jeg gerne have lov til at anbefale :-)

Edit:

Jeg vil forresten også gerne gøre lidt reklame for denne Irssi kommandoliste, med en masse kommandoer der kan være gode at kunne når man er kommet lidt i gang med Irssi.

Asus Eee Box B202

Endelig ankom min nye Eee Box B202. I sort, hvis det skulle have interesse.
Det er en lækker lille maskine, og rent umiddelbart virker den utroligt stille. Den blive ihvertfald konstant overdøvet af min desktop PC der står et stykke længere væk.

Udover selve maskinen, samt selvfølgelig en strømforsyning medfølger også en fod, et ophæng, en WIFI-antenne, og for at det ikke skal være løgn, også med DVI-VGA converter, et keyboard og en lille mus, de to sidste i USB-versioner. Der mangler altså kun en skærm før man er kørende.

Det eneste problem er at den kommer med Windows XP præinstalleret, men ingen er jo fuldkommen. Som læserne af min blog nok har opdaget, er jeg normalt Ubuntubruger, men da jeg har tænkt mig udelukkende at bruge den som server har jeg valgt at smide Debian på den i stedet.
Da maskinen kommer uden CD-drev kræves det et SD-kort eller en USB-stick, samt mod på at rode minimalt med BIOS’en, hvis man vil skifte styresystem. Det hele går dog let og smertefrit, og det er tydeligt at mærke at maskinen er bygget til at boote fra alle de tilslutningsmuligheder den kan komme i nærheden af.
Jeg valgte at installere fra et SD-kort, da det var det eneste jeg lige havde adgang til, men installation fra USB-stick foregår så vidt jeg ved på ca. samme måde.
For at gøre det endnu lettere findes der endda en Eee version af Debian, der kommer komplet med nødvendige drivers osv. jeg tog selv udgangspunkterne i projektets install instructions. Jeg giver her et oprids af hovedpunkterne.

Debian installer på SD-kort

Først downloades et Debian Eee image, som jeg overførte til mit SD-kort med programmet dd.

dd if=Desktop/debian-eeepc.img of=/dev/[device]

Hvor [device] er det device du vil have installere fra. Jeg var selv meget i tvivl om hvilket device der svarede til mit SD-kort, men med

ls -l /dev/disk/by-id/

fandt jeg det hurtigt.
Efter filen er dd’et over på kortet skal du huske at køre en

sync

for at sikre at din maskine er HELT færdig med at kopiere til kortet.
Herefter kan kortet tages ud, og sættes over i Eee’n.

Debian på Eee B202

For at boote fra SD-Kort skal man først sørge for at sætte kortlæseren som første bootprioritet i BIOS, denne er heldigvis let tilgængelig fra Express Gate. Vær opmærksom på, ved installation fra SD-Kort, at kortet IKKE står på boot-listen fra starten af. Jeg troede fejlagtigt at kortet gik under betegnelsen [removable drive], men jeg tog fejl. Kortet skal man selv tilføje til listen, og flytte op øverst. Enheder kan tilføjes bootlisten ved at markere et af punkterne på listen, og trykke enter.

Express Gate kan slås fra i BIOS hvis man ikke skal bruge det, da det giver en irriterende fejlbesked under opstart hvis man fjerner den harddiskpartition det ligger på.

Herefter vælges “safe & exit” hvorefter computeren vil genstarte, og boote fra det valgte device.
Installationen er som altid på Debian, og handler mest om at man skal udfylde nogle svære felter som navn, og hvilket password man ønsker. Da der er tale om en netinstall er det vigtigt at computeren har adgang til internettet, så et kabel kan være godt at have. Bruges Debian-Eee installationen er det dog muligt allerede under installation at opsætte det trådløse netværkskort, givet man kan huske sit trådløse netværks SSID og krypteringskode (som man selvfølgelig har på sit trådløse netværk).

Resten af spørgsmålene er de samme som altid på en linuxinstallation hvor man bl.a. kan vælge at sætte størrelsen på sine partitioner hvis man har lyst, eller lade installeren gøre det hvis man ikke gider rode med det selv.
Jeg lavede selv 3 partitioner:
Jeg lavede en swap, på 2GB som selvfølgelig blev lavet som swap-filsystem.
Derudover afsatte jeg 20 GB til / (root) , og smed resten som /home , begge som ext3.

Resten af installationen kørte uden problemer, også efter jeg havde fjernet SD-kortet. Efter installationen genstartede maskinen, og bootede i Debian som planlagt, klar til at logge ind med den bruger jeg havde opsat under installationen.

Sidste skridt: SSH

Det sidste der mangler er SSH, der giver remote adgang til maskinen. Det installeres uden problemer da Debian, ligesom Ubuntu, bruger Apt pakkemanager fra terminalen. En forskel på Linux og Ubuntu er dog at Debian ikke bruger sudo til super user opgaver. Derimod bruges

su

for at starte en administrator session. Herefter bruges samme kommandoer som i Ubuntu, bare uden sudo.
Debian’s repositories indeholder en SSH-metapackage der både installerer OpenSSH-server og en SSH klient. Det kræver altså bare en simpel

aptitude install ssh

for at du er kørende.
Konfigurationen til ssh-serveren styres via. config-filen

/etc/ssh/sshd_config

hvis du ændrer i filen så husk at restarte SSH-serveren, for at lade ændringerne træde i kraft.

/etc/init.d/ssh restart

Sidste skridt er at lukke maskinen ned

shutdown -h now

stille den hvor den skal stå fra nu af, og fjerne alle ledninger pånær strøm og netværket, trykke på power, og vente på at Debian starter op. Herefter et det muligt at SSH’e til maskinen, og opsætte alt hvad man eller lyster herfra.

Et forslag kunne jo være at opsætte en LAMP server. Fremgangsmåden er den samme som ved opsætning af LAMP på Ubuntu.