Linux 101

Structure

  • Introduction - why and where
  • Installation of Ubuntu
  • Writing and compiling a simple C♯ program

Why?

  • 69.4% of webservers use a Unix-based OS
  • 30.6% of webservers use Windows

According to W3Techs

Where?

  • US Department of Defence
  • French Parliament
  • Amazon
  • Android

Sources: 1

Installing Ubuntu

What's Ubuntu?

  • A distribution of Linux
  • Others are available, but Ubuntu is great for beginners
  • Lots of help available online if you get stuck
The logos of a number of different linux distributions.
A timeline of different linux distributions.

Let's Get Started!

  • Open Hyper-V to access the VM

Choosing the language

Install step 0: Choosing the language

Boot menu

Install step 1: Boot menu

Welcome

Install step 2

Keyboard Layout

Install step 3: keyboard layout

Initial Software and Updates

Install step 4

Partitioning

Install step 5

Dual Booting

Install step 6

I'm sure it's fine.....

Install step 7

Location

Install step 8

Credentials

Install step 9

Now we wait!

Install step 10

and wait

Install step 12

Complete!

Install step 13

Logging in

Install step 14

Type your password

Install step 15
Install step 16
Install step 17
Install step 18

The amazing apt

Install step 20

Doing it manually

Install step 21

Done!

  • Installation complete!
  • What next?
  • Linux basics
  • Let's write some C♯

Linux Basics

Things to talk about

  • Similarities and differences to Windows
  • Filesystem structure
  • Typing your password with sudo

Similarities and Differences

  • Command line → Terminal
  • Package management - more on this later
  • File system: ext4, not NTFS

Filesystem Structure

  • Everything starts with /
  • ...and everything is a file

Places to remember

/etc Configuration files
/home User home folders
/usr/bin Program binaries (also other places; some are symlinks)
/var/log Log files
/dev Hardware devices

Typing your password

  • On Linux, typing your password is a key security mechanism
  • Ask yourself:
    • "Why am I typing my password?"
    • "Do I understand what it's going to do?"
    • "Do I trust the program?"
  • Ask for help / an explanation if unsure

Let's Compile some C♯!

Package Management

  • Most Linux distributions use a package manager
  • Everything is a package - from your kernel to the software that you use
  • Debian-based distributions use apt
  • GUIs do exist - Synaptic

Installation

  • We have the apt repository
  • Now we can install Mono
  • sudo apt install mono-devel

Usage

  • The Linux terminal is similar to the Windows command prompt
  • Download a Visual Studio solution now if possible
  • Use a text editor to write a quick program otherwise

Usage (cont.)

  • We can use csc and msbuild to compile just like we do on Windows
  • csc MyFile.cs
  • msbuild

Monodevelop

What's Monodevelop?

  • Writing C♯ code in a text editor is old-school
  • Like Visual Studio, but on Linux
  • Actually the base of Visual Studio for Mac

Summary

Summary

  • We've installed Ubuntu
  • We've installed Mono
  • We've compiled some C♯
  • We've looked at Monodevelop

Where next?

  • Web server setup
  • Application server setup
  • Git hosting
  • Email hosting
  • Decentralised Instant Messaging

Future Workshops

  • 201: Securing a Linux server & hosting a static website
  • 301: Deploying your application to a Linux server
  • Talks