Part I – Introduction
This post will be the beginning of a series of posts, I still don’t know how many, that will attempt to teach you the basics of using Linux, specifically using Ubuntu Server (why Ubuntu and why Server? I’ll explain that in the next post). It’s aimed towards people with absolutely no Linux background at all, but that are savvy Windows power users or developers.
I’m good with my Microsoft stack. Why do I need to learn Linux?
It’s very comfortable to stay within the Windows environment. Too comfortable. I know that because I’ve been there for a long time and I still am. Basically there’s nothing wrong with it – the tooling is rich, the experience is great, documentation (official & unofficial) is extensive.
But even if you select to build your system around the MS stack, there are times where you’d really want to use some Linux-based tools and server apps. You’ll probably not have to, but in some cases you will compromise either performance, budget, or versatility if you avoid using them.
There are some great products that only available in Linux (or that their Windows fork is not at the same level of stability as the original Linux repo). To name a few:
- Redis – a widely used key-value store, mostly used as cache server + pub/sub engine. Used by the biggest platforms: GitHub, Tumblr, Pinterest, and one of my favorites: Stack Exchange – a .NET-based platform that uses Redis (on Linux) extensively.
- HAProxy – a reliable, high performance TCP/HTTP load balancer. Also used by Stack Exchange (among many others).
- Varnish – an HTTP accelerator designed for content-heavy dynamic web sites
- Nagios – computer system monitoring, network monitoring and infrastructure monitoring software application.
And the list continues. The point is that, as a Windows developer / power user, you don’t have to master Linux, but knowing the basics is a strong skill to add to your skill set these days. There are so many servers and devices that use Linux today and I think it’s crucial to have a basic understanding of Linux. You definitely don’t need to learn everything the world has to offer. Learning everything is not a smart thing to do, both on a personal and economical aspects. But not being clueless in this so widely used environment is a big tick.
What will this series of posts teach you?
My goal is to get you to a point where you’ll be able to create a Linux server from scratch and install a server program yourself. I’ll focus on Ubuntu but the principles are similar in other flavors such as Debian. I don’t think there will be any differences to the extent this tutorial covers. I also want you to feel comfortable opening an existing Linux machine and finding your way – be it finding where a program is installed, changing some configuration, sorting out permission issues, running a daemon, monitoring the server’s resources etc. This guide is not going to make you a Linux sysadmin. It won’t teach you how to develop programs for Linux on your own either. I just want to make you, as a Windows developer or power user, familiar with Linux and not treat it as a black box beyond your knowledge and control anymore.
This series won’t teach you everything and it is definitely not thorough. I only want to present the main bits. I’ll use sidebars to offer extended information on specific subjects. Feel free to explore further or just ignore the sidebars and follow the main text.
One important disclaimer: Although I’ll touch some security aspects (in the posts themselves as well as in sidebars), this definitely doesn’t attempt to provide information on how to really secure your production Linux machine. The guide only aims to quickly get you into the water and familiarize yourself with Linux. There is plenty of information available on the Internet about Linux security, and of course it’s really important if you plan to deploy a production server on the Internet.
Why am writing this series of posts?
Besides the fun of blogging, there is one more reason which I’ll save to the very end of the series. If you follow this series till the end, you’ll find out.
Some housekeeping before we start
I didn’t include many references and hyperlinks throughout the text, to the facts I’m presenting. That’s because I want this series to be less “academic” and more easy and lightweight to read. I can generally say that the facts I describe are gathered from easy to find sources on the Internet.
I might be occasionally wrong or not precise during this tutorial. I’m a heavy Windows/.NET developer and pretty new to this world myself. You are more than welcome to correct me and I promise to fix the posts accordingly.
Let’s Get Started! Continue to the second part of this tutorial –>