Hem > Guider, Linux > Guide: Min ultimata Ubuntu webbserver

Guide: Min ultimata Ubuntu webbserver

Uppdatering 2020

Detta är en gammal och utdaterad guide som var främst skrivern för Ubuntu 9.10, en version av operativsystem som släpptes 2009. Stora delar av guiden kan inte eller bör appliceras på en Ubuntu installation idag då det är baserad på utdaterad mjukvara och utdaterade säkerhetspraxis. Guiden är enbart sparad för historik och bör inte användas för nyinstallationer. Att använda denna guide som utgångspunkt för installation eller konfiguration av server görs på egen risk.

Orginalartikel från 2009

När jag installerar en webbserver brukar jag använda mig av en checklista för att se till allt jag behöver verkligen blir installerat på serven. Utifrån det installerar och konfigurerar jag serven. De kommandon som jag inte kan i huvudet googlar jag fram istället. Men i längden blir detta ganska så tröttsamt eftersom att man det är tidsödande att hitta den där sidan eller kommandot som man använde sist. Därför satte jag ihop ett litet dokument med alla kommandon som man behöver. Nu tänkte jag, vid skrivande stund, när det är julaftons morgon att dela med mig detta dokument fast i form av en guide. Se det som en liten julklapp.

Njut av läsningen och God Jul! 🙂

Feedback och egna förslag på vad som bör finnas med uppskattas! Lämna en kommentar eller maila mig via kontaktformuläret.

Inledning

Denna guide inriktar sig främst för PHP-webbutvecklare som känner behov av en webbserver som man kan testa sina script och applikationer med en mycket sträng PHP-konfiguration. Att man kan har en viss vana med linux, unix eller mac i terminalen är en klar fördel. Sedan sist men inte minst, när man gör större ingrepp på en dator som har betydande information lagrad på en hårddisk. Vad du än gör, ta alltid backup innan du följer resten av guiden.

Steg 1 – Installera Ubuntu Server

Något som är självklart för mig är att installera ett linux-operativsystem på min webbserver, eftersom att det bäst passar mig. Bland annat för att PHP och Apache trivs bäst på denna plattform, som är för övrigt helt underbar mjukvara. Sedan att slippa all besvär med virus och licenskostnader är helt klart en bonus!

Av de distributioner som jag har provat har jag fastnat för Ubuntu Server, bland annat för att pakethanteraren är så himla underbar samt att de paket som installeras är oftast rätt så up to date, vilket Debian som Ubuntu baseras sig på inte är. Den version som jag kommer använda mig av här är 9.10 eftersom att det är i skrivande stund den senaste stabila versionen av operativsystemet. När du läser detta och det finns en nyare version av Ubuntu server rekommenderar jag att du installerar den, instruktionerna nedan bör även fungera för nyare mjukvara (och även för äldre för den delen). Har du tur så kan du använda denna guide även för ett annat linux-distribution med pakethanteraren apt-get.

Jag tänkte inte gå igenom hur man installerar Ubuntu server, men jag kan istället tipsa om denna utmärkta guide som steg för steg går igenom hur man installerar Ubuntu Server 9.10.

OBS! När du kommer till ”Now it will start Installing software and here you need to select the server options …” välj då inte LAMP som föreslås i guiden. Använder du SSH rekommenderas det varmt att välja OpenSSH, annars bör man inte välja några andra paket här och bör helt enkelt fortsätta. Att man har glömt eller inte valde ett alternativ spelar ingen större roll eftersom att det går utmärkt att installera i efterhand.

Föredrar du ett grafiskt gränssnitt när du administrerar serven så finns det tre alternativ du kan välja mellan:

  1. När du har installerat ubuntu server kör du följande kommando:
    sudo apt-get install --no-install-recommends ubuntu-desktop

    Detta lägger till ett grafiskt gränssnitt för Ubuntu Server och får det att likna vanliga Ubuntu Desktop.

  2. Tycker du att installationen såg otäck ut eller känner att föredrar att använda sig av en muspekare kan du installera Ubuntu Desktop istället och därmed få grafiskt gränssnitt från start till slut och sedan följa resten av guiden. Enda uppenbara nackdel med denna lösning är att den även installear mycket annan mjukvara som inte man kommer behöva om man vill använda datorn som en ren server.
  3. Kan du tänka dig att att följa denna guide men sedan vill ha någon from av förenklad gränssnitt för framtida administration är kanske en webbaserad administration skulle vara något för dig. Webmin är en kontrollpanel som på flera sätt är helt underbar och som dessutom är väldigt lätt att installera. Längre ned i denna guide visar jag hur.

Steg 2 – Grundläggande installation och konfiguration

När du har installerat eller har en redan installerad version av Ubuntu är det dags att antingen öppna en terminal (Ubuntu Desktop, Program -> Tillbehör -> Terminal) eller bara att logga in om du installerat Ubuntu Server utan grafisk gränssnitt.

SSH

Det första jag gör är att installera SSH, detta för att kunna göra resten av installationen från en annan dator.

sudo apt-get install ssh openssh-server

Även om SSH är rätt bra konfigurerad redan från start finns det alltid utrymme för förbättringar. Just denna del täcks inte upp av denna guide, men det finns andra guider du kan läsa för att hur man går till väga för att säkra SSH ytterligare.

Statisk IP-adress

Nu till lite konfiguration av nätverksinställningarna. Dessa inställningar bör du göra om du vill ha ett statiskt IP-adress till serven. Öppna konfig-filen:

sudo nano /etc/network/interfaces

och gör den så att den efterliknade följande (med egna inställningar):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Starta nu om nätverksservicen.

sudo /etc/init.d/networking restart

Hostname

Nu till att ställa in hostname, så här ”enkelt” är det. Öppna konfig-filen:

sudo nano /etc/hosts

Och ändra filen så att den liknar följande:

127.0.0.1 localhost.localdomain localhost
192.168.0.100 dinEventuellaDomanTillServer.se VadDuVillKallaDen

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Och till slut så ställer vi in hostname:

sudo echo dinEventuellaDomanTillServer.se > /etc/hostname

Slutligen en omstart på det (

sudo reboot

). Efter omstarten brukar jag kontrollera om hostname blir rätt med följande:

hostname<br />hostname -f

Resultaet bör vara dinEventuellaDomanTillServer.se för båda kommandona.

Synkronisera systemklockan

En av de saker som jag irriterar mig på när jag ska köra applikationer på en webbserver, är att klockan går helt åt skogen fel. Nu pratar vi inte om det faktum att serven i frågan kan ligga i en annan tidzon, utan en server vars klocka går 20 minuter fel som jag tyvärr har stött på. Med tanke på hur enkelt för en webbserver det är att synkronisera en klocka kan man undra varför man har gjort det från början. Allt man behöver skriva är följande en gång och vänta i 30 sekunder:

sudo apt-get install ntp ntpdate

AppArmor

Om man vill kan man ta bort AppArmor, eftersom att denna kan ställa till lite problem med de program som man installerar.

sudo /etc/init.d/apparmor stop<br />sudo update-rc.d -f apparmor remove<br />sudo aptitude remove apparmor apparmor-utils

Steg 3 – Installera Apache, PHP och MySQL

Här kan du beroende på din personliga inställning välja vilken version av PHP och MySQL du vill ha. Vill du ha absolut den senaste versionen av PHP och MySQL bör man gå igenom steg 2a, annars gå till steg 3b.

Steg 3a (Frivillig)

Som standard skickar den vanliga Ubuntu-installationen enbart äldre versioner av PHP och MySQL. Vill man istället ha den senaste versionen måste man oftast installera själv dessa paket, vilket inte är lika enkelt som att köra apt-get-kommandot. Men som tur är så finns det enklare lösningar. Lägger man in Dotdeb.org i sitt responsorium får man både den senaste stabila PHP-vesionen samt även framtida uppdateringar. Observera att dotdeb.org är ett projekt egentligen gjord för Debian och samspelar inte riktigt med Ubuntu. Det några modifikationer kan man få dotdeb.org att samspela med Ubuntu. Dock går jag inte detta i denna guide utan rekommenderar att enbart köra steg 3b som räcker för 99% av användarna. För att få det gör bara följande:

1. Kör följande kommando:

sudo nano /etc/apt/sources.list

2. Mata in följande längst ned i dokumentet

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

3. Vill du ha tillgång till php 5.3.x bör du även lägga in dessa rader i samma dokument

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

4. Spara och stäng nano och kör komandot:

sudo apt-get update

Steg 3b

Nu är det hög tid att installera Apache, PHP och MySQL. Allt detta med följande kommando:

sudo apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libapache2-mod-php5 libapache2-mod-python php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imap php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-mcrypt

Det enda som man behöver göra under tiden som installationen sker är att följa den installationsguide som poppar upp när det är Mysqls tur att installeras. Enda det man behöver tänkta på är att välja ett bra och säkert root-lösenord för mysql som man lätt komma ihåg.

Steg 3c (Frivillig)

Vill du att MySQL-databasen även ska kunna kommas åt även från andra datorer och servrar behöver du göra följande:
Öppna konfig-filen

sudo nano /etc/mysql/my.cnf

och leta upp raden

bind-address = 127.0.0.1

ersätt den med följande

#bind-address = 127.0.0.1

Starta om MySQL-serven (

sudo /etc/init.d/mysql restart

) och kontrollera att MySQL fungerar:

sudo netstat -tap | grep mysql

Utskriften bör se ut i stil med följande:

tcp 0 0 *:mysql *:* LISTEN 4145/mysqld

OBS! Gör detta endast om du är behov av det!

Steg 4 – Apache Inställningar

Apache kommer med en helt okej konfiguration. Däremot är det starkt rekommenderat att installera följande tillägg:

sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
sudo a2enmod dav_fs
sudo a2enmod dav
sudo a2enmod headers
sudo a2enmod expires

Vill man även låta användaren skapa en public_html-mapp i sin hemkatalog och därmed få en egen hemsida med adressen http://dindomännamn.se/~användarnamn, går man följande till väga:

1. Öppna filen php5.conf

sudo nano /etc/apache2/mods-available/php5.conf/

2. Kommentera eller ta bort följande rader:



php_admin_value engine Off

3. Starta om Apache

sudo /etc/init.d/apache2 restart

Steg 5 – PHP5 Inställningar

När jag gör ett script eller applikation gillar jag att ha en sträng och strikt PHP-konfiguration under utvecklingsprocessen. Detta för att upptäcka fel och brister i koden lättare samt att få bort funktioner som invaggar i en falsk trygghet av säkerhet om dessa inte är på. Med andra ord, allt för att höja kvalitén på koden.

Är man lat är det okej att hoppa över detta steg, annars rekommenderar jag varmt att åtminstone ta del av några inställningarna. Vill du förbättra dina PHP-inställningar men är för lat att ändra dessa själv kan du ladda ned min PHP-ini-fil och ersätta med din gamla som bör ligga i mappen /etc/php5/apache2/.

Annars kan du sälla in dessa inställningar själv genom att börja med att öppna filen:

sudo nano /etc/php5/apache2/php.ini

Och sedan leta upp inställning efter inställning i dokumentet:

  • short_open_tag = Off – Skriv PHP-taggar med
  • precision = 12 – Av prestandarssjäl minskar jag denna tal från 14. Högre preposition på float-tal behövs sällan
  • allow_call_time_pass_reference = Off – För att gynna framtida utveckling för språket bör denna vara av. En referens ska inte kunna definieras till en funktion utan att man uttryckligen ber om det.
  • safe_mode = Off – Denna ska ALLITD vara off, safe_mode ger tro det eller ej sämre säkerhet. Undantag är föståss om du vill utveckla portabel applikation som ska fungera med safe_mode.
  • expose_php = Off – Säkerhetsrelaterat, döljer att PHP finns installerat i headern.
  • memory_limit = 64M – Denna gräns bör väljas utifrån vad behov man har. Ska PHP-appliaktionen kunna även köras på ett webbhotell bör värdet ligga runt 32-64Mb. Annars kan man köra med 128M och därmed få stor marginal när man utvecklar sina applikationer.
  • error_reporting = E_ALL | E_STRICT – Ser till att alla typer av fel som uppstår verkligen kommer fram i ljuset.
  • log_errors = On – Logga gärna även felen så att du kan gå tillbaka till gamla felmeddelanden.
  • variables_order = ”GPCS” – Optimera prestandarden på serven genom att räkna strunta att ladda $_ENV som ändå ger samma resultat som $_SERVER.
  • register_argc_argv = Off – Är det möjligt ska denna vara avstängd. Detta ger förbättrad prestandard.
  • post_max_size = 8M – Bör begränsas så mycket som det är möjligt. Det är både säkerhet och försäkra sig att man är kompatibel med servrar med andra inställningar.
  • magic_quotes_runtime = Off – Denna inställning leder till falsk trygghet och kommer att tas bort i version 6 av php. Tills php6 lanseras, se till att din PHP-kod funkar oavsett denna inställning är på eller avstängd.
  • upload_max_filesize = 2M – Bör beränsas till samma gräns som applikationens gräns på hur stor en uppladdad fil får vara.

Steg 6 – Förenkla administration via webben

Att gå in i terminalen för att kunna göra dagliga arbetsuppgifter eller vanlig underhåll av en server är det inte alltid så roligt att göra allt framför en terminal. Ett grafiskt gränssnitt löser det problemet, men att installera massa program på varje dator som man arbetar med är inte så speciellt roligt, speciellt om man sitter på en dator utan att ha rättigheter till att installera program. Lösningen blir att köra en webbaserad kontrollpanel. Så länge som du har en dator med en webbläsare och som är uppkopplad mot Internet kan du utan problem göra princip vad du vill på din server. Jag tänkte ta upp några av de mest förekommande och mest användbara bland dessa paneler.

PhpMyAdmin

En klassiker som i Ubuntu är busenkelt att installera.

sudo apt-get install phpmyadmin

Därefter går du in på http://din-adress-till-serven.se/phpmyadmin för att logga in med mysql root-konto och lösenord.

Vill du däremot installera den senaste versionen blir det plötsligt inte lika enkelt. Men laddar du ned phpmyadmin från hemsidan och följer dokumentationen är det egentligen inte mycket svårare, snarare lite mer jobb.

Webmin

Ett utmärkt verktyg för att administrera hela serven. Förutom de mest grundläggande så som lägga till systemanvändare, ändra inställningar osv. kan den även administrera annan mjukvara så som apache, php, mysql, potix och mycket mer. Skulle det visa sig att ett program inte stöds av webmin som standard finns det möjlighet att lägga till denna funktion som ett tilägg. Med tillägg kan du även utöka webmins fuktionalitet om du mot förmodan saknar något. Det är möjligt att använda webmin så sätt att du aldrig behöver öppna en terminal någonsin mer.

Nu till det roliga, att installera webmin. Börja med att öppna filen:

sudo nano /etc/apt/sources.list

Lägg till följande i slutet av filen:

deb http://download.webmin.com/download/repository sarge contrib

Stäng och kör sedan följande komandon:

sudo wget http://www.webmin.com/jcameron-key.asc<br />sudo apt-key add jcameron-key.as

Sist men inte minst följande komando:

sudo apt-get update<br />sudo apt-get install webmin

Efter installationen går du till adressen https://din.servers.ip.nummer:10000/ eller http://din.servers.ip.nummer:10000/ och logga in med samma användarnamn och lösenord som du har för att logga in på ditt vanliga användarkonto på serven. Nu kan du gå runt och leka bäst du vill.

  1. Daniel
    augusti 26th, 2012 i 14:19 | #1

    Grymt bra sida du har! Det här är mumma för en nybörjare inom ämnet att lägga upp egen server med ubuntu 🙂

  1. Inga trackbacks än.