Windows Subsystem for Linux

WSL

“The Windows Subsystem for Linux lets developers run GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a virtual machine.” - Microsoft.com

Det hÀr dokumentet innehÄller ett flertal instruktioner för hur du kommer igÄng och sÀtter upp en fungerande utvecklarmiljö med Windows Subsystem for Linux (WSL) och Ubuntu.

Majoriteten av de kommandon som visas kör du i terminalen, genom ett skal (engelska shell). Det Àr dÀrför vÀldigt viktigt att du följer instruktionerna noggrant och att du fÄr kommandona att fungera innan du gÄr vidare. Jag kan inte skriva eller sÀga det nog mÄnga gÄnger och det Àr:

LÀs vad som sker pÄ din skÀrm! NÀstan alla kommandon ger felmeddelanden nÀr det inte fungerar. MÄnga kommandon ger inte nÄgot meddelande alls nÀr de fungerade.

För att fÄ ut det mesta ur detta dokument och förstÄ sÄ Àr det sjÀlvklart bra om du har en grundlÀggande kunskap om hur du anvÀnder terminalen; Bash eller Powershell. I slutet av dokumentet finns det en samlad lista över anvÀndbara kommandon.

Installation

Viktigt: WSL 2

Förhoppningsvis kan du vid installationstillfÀllet köra WSL 2. Se följande guide.

Windows krÀver att du slÄr pÄ en feature för att kunna installera WSL. Starta Powershell som administratör och kör följande kommando.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Windows kommer att be dig starta om datorn nÀr kommandot Àr utfört. NÀr din dator startat om sÄ startar du sedan Microsoft Store och söker efter Ubuntu.

VĂ€lj senaste versionen av Ubuntu LTS och installera.

Skriv in ett anvÀndarnamn under installationen nÀr den frÄgar. VÀlj ett lösenord som du kommer ihÄg!

NÀr installationen Àr fÀrdig sÄ startar du Ubuntu och kör följande kommandon med apt, apt Àr Ubuntus pakethanterare. Först uppdaterar apt Ubuntus listor över paket. Sedan uppgraderar apt de paket som behöver uppdateras.

sudo apt update
sudo apt upgrade

Kommandot sudo lÄter dig köra program med rÀttigheterna för superuser, Linux root konto. Det behövs ofta nÀr du ska installera program. Försök undvika det om möjligt av sÀkerhetsskÀl.

Ubuntu körs nu i ett fönster under Windows och ger dig tillgÄng till ett flertal program som anvÀnds vid webbutveckling. Det utan att behöva virtualisera eller dual-boota Linux.

För att komma Ät andra diskar eller partitioner med Windows filer pÄ nÀr du kör Ubuntu sÄ hittar du dem i /mnt.

cd /mnt
ls -la

List kommandot visar de filsystem som Àr aktiva under Linux. Kör du en skoldator med en disk sÄ kommer du med största sannolikhet sec, vilket Àr disken som Àrc: under Windows.

Visual Studio Code

Innan du fortsÀtter behöver du installera Visual Studio Code (förkortat till vscode). HÀmta vscode hÀr.

Vscode Àr en integrerad utvecklingsmiljö (pÄ engelska Integrated Development Environment, IDE). Ett program som innehÄller flera verktyg för att koda.

I vscode Àr inte WSL dess standard shell. För att byta shell i vscode behöver du Àndra instÀllningarna.

I menyn -> Terminal -> New Terminal

Vscode kommer att öppna ett nytt terminalfönster, för att vÀlja default shell klickar du som pÄ bilden och vÀljer sedan WSL.

NÀsta steg Àr att skapa goda förutsÀttningar för att arbeta med kod i vscode. Börja med att skapa en mapp i c: med namnet code (om du inte har en sedan tidigare). Skapandet av mappen gör du i Windows.

Att samla kod pÄ ett stÀlle Àr bÄde praktiskt och bra praxis.

För att enkelt komma Ät code-mappen ska du skapa en symbolisk lÀnk (symlink) till den. Navigera till hem-mappen i WSL/Ubuntu och skapa lÀnken sÄhÀr:

cd
ln -s /mnt/c/code
ls -la

List kommandot visar om symlinken skapats. Är den röd saknas kĂ€llan och det har blivit fel. Du kan se hur det ser ut hĂ€r nedanför.

lrwxrwxrwx 1 jens jens       11 Feb 17  2019 code -> /mnt/c/code

Öppna code-mappen och lista innehĂ„llet.

cd code
ls -la

GitHub

För att anvÀnda GIT med WSL behöder det installeras.

sudo apt install git

Git kan nu anvÀndas frÄn WSL. NÀr du gör din första commit kommer Git efterfrÄga dina anvÀndaruppgifter. AnvÀndaruppgifterna anger du med följande kommandon.

MÄnga program i Linux-miljö ger inget meddelande nÀr de lyckas.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Gits terminal-kommandon finns i detta Cheat Sheet.

LAMP server

I webbserver-kursen kommer du att fÄ prova pÄ ett antal olika typer av webbservrar. LAMP Àr en akronym för en typ av server och betyder en webbserver med Linux, Apache, MySQL och PHP. Det finns flera varianter av *AMP dÀr första bokstaven byts ut beroende pÄ vilket operativsystem du anvÀnder, till exempel WAMP och MAMP. Eftersom du kör en Linux distribution, Ubuntu, under Windows sÄ installerar du en LAMP-server.

Ubuntu har en fÀrdig samling paket för LAMP-server.

sudo apt install lamp-server^

Svara [Y] pÄ frÄgorna och vÀnta pÄ att den ska ladda ner och installera paketen. Förhoppningsvis sÄ gÄr det bra, strular det sÄ prova att starta om installationen.

Apache

Apache Àr ett open source webbserver-projekt som har funnits sedan 1995. Apache Àr den absolut vanligast förekommande webbservern pÄ internet. I en LAMP-server sÄ Àr alltsÄ Apache sjÀlva webbservern.

Apache startas pÄ Ubuntu som en service.

sudo service apache2 restart

NÀr en service startar och fungerar sÄ stÄr det [OK] till höger i terminalen. Eventuella meddelande Àr varningar eller annat. SÄ lÀnge det stÄr [OK] sÄ Àr tjÀnsten startad. Annars stÄr det [FAIL].

Fungerade det att starta din service, [OK], sÄ kan du nu öppna en webblÀsare och surfa till http://localhost.

localhost Àr ett alias för din dators loopback interface som har ip-adressen 127.0.0.1.

Om det stÄr ett felmeddelande, [FAIL], sÄ behöver det felsökas. Det vanligaste felet nÀr du försöker starta Apache Àr att port 80 Àr blockerad.

En port Àr en adress som trafiken skickas till. En webbservers standardport Àr 80.

Windows anvÀnder ofta port 80 för olika tjÀnster. Du kan undersöka det med hjÀlp av Powershell.

netstat -aon | findstr :80

Det finns tvÄ sÀtt att ÄtgÀrda problemet med att Windows anvÀnder port 80. Antingen avslutar du och stÀnger av tjÀnsterna som blockerar port 80, eller sÄ Àndrar du vilken port Apache ska anvÀnda. Det enklare sÀttet Àr att konfigurera om vilken port Apache anvÀnder.

cd /etc/apache2
sudo nano ports.conf

Med textredigeringsprogrammet Nano Àndra raden dÀr det stÄr Listen 80 till Listen 88. Spara sedan filen i Nano genom att trycka ctrl+o, följt av enter och sedan ctrl+x för att avsluta.

Apache behöver sedan starts om. Om Apache startar och du ser [OK] sÄ surfa till http://localhost:88 med webblÀsaren. Webbservern anvÀnder nu port 88 och du mÄste ange det med :88 efter adressen.

Apache-logfiler för felsökning finns under /var/log/apache2.

MySQL

MySQL Àr en databashanterare som anvÀnder sprÄket Structured Query Language (SQL). Precis som Apache Àr MySQL ett open source-projekt som började 1995. MySQL Àr den databasserver som anvÀnds i LAMP.

PĂ„ Ubuntu startas MySQL-server som en service.

sudo service mysql restart

MySQL-servern ligger nu i bakgrunden och vÀntar pÄ att anvÀndas. MySQL anvÀnder port 3306 som standard och det behöver inte Àndras.

En MySQL-server anvÀnds genom nÄgon form av klient. Klienten kan vara ett program, en webbtjÀnst eller annat. För att koppla upp en klient till en MySQL-server behövs det en anvÀndare och ett lösenord. Första gÄngen du gör detta sÄ anvÀnder du sudo och en lokal MySQL-klient.

sudo mysql -u root

Sudo anvÀnds hÀr för att skapa en uppkoppling till MySQL-servern frÄn MySQL-klienten med anvÀndaren root (-u root). Om uppkopplingen till MySQL-servern fungerade sÄ kör följande kommando för att skapa dig en anvÀndare. Byt ut username och password mot dina egna uppgifter.

Skriv ett lösenord som du kommer ihĂ„g och inget “viktigt” lösenord.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';

Kommandot skapa en anvÀndare för alla databaser pÄ localhost med username och password. För att avsluta skriver du exit.

AnvÀnd sedan MySQL-klienten för att testa anvÀndaren.

mysql -u username -p

VÀl inne pÄ servern sÄ skrivs kommandon med SQL.

MySQL-logfiler för felsökning finns under /var/log/mysql.

phpMyAdmin

FrÄn MySQL-klienten anvÀnds SQL för att styra databasen och köra kommandon. Det Àr viktigt att du lÀr dig grunderna i SQL. Men för att förenkla arbetet med MySQL-servern finns det en klient som heter phpMyAdmin. phpMyAdmin kan installeras med apt.

sudo apt install phpmyadmin

VÀlj följande vid installationen:

  1. apache2 server.

  2. Database common.

  3. config, generate password.

Apache2 anvÀnder ett modulÀrt system för konfiguration. För att slutföra installationen av phpMyAdmin mÄste vi skapa en symlink till konfigurationsfilen och berÀtta för systemet att den ska anvÀndas.

cd /etc/apache2/sites-available
sudo ln -s /etc/phpmyadmin/apache.conf phpmyadmin.conf
ls -la

Kommandot skapar en symlink som heter phpmyadmin.conf och som pekar till kÀllfilen. Du kan se hur det ser ut hÀr nedanför.

lrwxrwxrwx 1 root root   27 Feb 17  2019 phpmyadmin.conf -> /etc/phpmyadmin/apache.conf

NÀsta steg Àr att aktivera konfigurationen med kommandot a2ensite.

sudo a2ensite phpmyadmin

Starta sedan om Apache och surfa till http://localhost/phpmyadmin eller http://localhost:88/phpmyadmin beroende pÄ webbserverns port.

Userdir

Linux sparar alla anvÀndares data i /home, det Àr din hem-mapp. För att förenkla arbetet med filer till webbservern anvÀnds en modul till Apache som heter userdir. Userdir kopplar en mapp, public_html, i hem-mappen till webbservern.

sudo a2enmod userdir
sudo service apache2 restart

Skapa sedan mappen public_html i hem-mappen.

cd
mkdir public_html

Surfa sedan till http://localhost/~USER eller http://localhost:88/~USER, dÀr USER Àr ett Linux username.

PHP

PHP: Hypertext Preprocessor (PHP) Àr ett skriptsprÄk för webbservrar som anvÀnds för att skapa dynamiskt innehÄll. Det fungerar sÄ att PHP kod tolkas och omvandlas till text. Apache behöver konfigureras för att tillÄta PHP i public_html. För att göra det behöver modulens konfigurationsfil redigeras.

cd /etc/apache2/mods-available
ls -la php*
sudo nano phpX.X.conf # dÀr X Àr versionsnumret

Kommentera ut följande rader med #.

phpX.X.conf
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
    </Directory>
</IfModule>

Apache behöver sedan startas om.

Skapa sedan en ny fil i public_html för att testa om PHP fungerar.

cd
cd public_html
echo "<?php phpinfo(); ?>" > info.php

Surfa sedan till localhost/~USER/info.php med webblÀsaren. Fungerar det sÄ ser presenteras information för webbservern. NÀr PHP inte fungerar sÄ skrivs koden ut pÄ det sÀtt den skrivs, det sker alltsÄ ingen tolkning av Apache.

info.php
<?php phpinfo(); ?>

Node.js

Node Àr en annan webbserver. Node har ett eget avsnitt i denna guide, Node och Express

Resultat

Du har nu installerat och skapat en grym utvecklingsmiljö dÀr du kan utföra ditt utvecklingsarbete. Du slipper krÄngliga Windows-lösningar som XAMPP och kan köra programmen under WSL vilket ger mycket större kontroll.

Miljön anvÀnder ett shell i Linux vilket Àr standarden inom det hÀr omrÄdet och otroligt viktigt att behÀrska.

Bash

Att kunna navigera i bash Àr en förutsÀttning för anvÀndningen av WSL. HÀr Àr nÄgra av de kommandon som du bör lÀra dig. De flesta kommandon i linux ger dig bra hjÀlp om du skriver.

kommando --help

Listan Àr lÄng, lÀs mer hÀr och hÀr.

Last updated