Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to learn more about Linux. I briefly went through a few books and quite a few articles online, but the only way to learn something is to actually start using it.

I would like to jump in the deep end and configure a Linux server. So far I have downloaded Ubuntu Server.

I'm looking for goal or a challenge if you like, something that will familiarize me with Linux servers.

Ideally, I would like to be able to configure a secure mail, file and web servers. I have a strong programming background so I hope that it will help me out.

I understand that this is not a specific question, I'm just looking for a milestone or a goal, otherwise I can spend weeks reading books and online articles.

Edit 1: Thank you all for replies.

Based on what you have said so far, I think that there are few different areas that I need to learn about:

  1. Kernels. Am I correct to say that this is a first thing I should concentrate on?
  2. Virtualisation. Once I'm happy with my knowledge about kernels I'd like to concentrate on KVM. I've read briedly about hypervisors and I believe that they also fall under virtualisation. Please correct me if I'm wrong.
  3. Security. Ideally I would like to leave this till last, but I guess that the majority of packages that I will require are online. So I'm not sure whether I should give this a higher priority. SSH, Linux as Firewall and remote access through shell fall under this category.
  4. Finally I will have a look at backup routines (using Linux as a file-server) and I'll configure web and mail servers. I guess that mail server might be a pain.

I'm tempted to start a blog and see where it takes me after two weeks. In regards to distributives, I have seen that there are hundreds of different Linux distributives. To be perfectly honest I don't want anything simple, but, at the same time, I don't want to spend hours on a very basic operation to start with. Ideally I would like to work only from command prompt, once I can do that I'll be able to work with most of pretty GUIs (I hope so anyway).

Once again, thank you for your help and I will really appreciate any further advise.

Edit 2: This leaves me with a final question on what distribution of Linux I should be using?

share|improve this question

closed as too broad by derobert, slm Aug 7 '14 at 2:47

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

A hypervisor is the 'thing' that enables you to run virtual machines. You wanted to learn. The kernel is a fine place to learn. But it does have a steep learning curve :) – wzzrd Dec 29 '10 at 14:32
up vote 10 down vote accepted

Here's a couple:

  • run Linux as your primary operating system, on both your desktop and your laptop, if any
  • install KVM and virt-manager and build a couple of virtual machines
  • build a package for your distro of choice (a .deb or .rpm file); it helps in understanding a lot of things
  • build your own kernel

These might not seem directly related to your own personal goals of learning to build web servers, but I assure you, if you understand Linux, you will build all kinds of servers easily.

share|improve this answer
+1 for the suggestion of virtualization! Personally I think VirtualBox might be an easier way to learn Ubuntu server, but the concept is the same. – Josh Dec 28 '10 at 22:19
Thanks. Virtualbox is a desktop virtualization product, targetted at desktops, with a desktop-friendly interface. I didn't mention KVM for no reason: KVM is server-orientated. It is a Type 1 hypervisor, whereas Virtualbox is Type 2. KVM forces you to learn a little bit about how kernels work, what a hypervisor is and how you can make the kernel into a hypervisor. Virtualbox will merely teach you how to click. Learning Linux is not about 'easy'. It is about 'knowledge'. – wzzrd Dec 28 '10 at 23:12
Oh and people, please, Ubuntu is not Linux. Ubuntu is just an incarnation of Linux. A nice one, to be sure, but still just one of the hundreds of distro's out there. So, as far as I'm concerned: install a whole bunch of Linuxes. Install CentOS, Fedora, Ubuntu, Gentoo (good one to learn a lot from), a couple of BSD's. You want to learn? Experiment! Try to make your eyes bleed ;-) – wzzrd Dec 28 '10 at 23:15
Hi wzzrd, thank you for your replies. Please see the edit. – vikp Dec 29 '10 at 9:50
you forgot the mandatory link to distrowatch.com since there is no better site that can show how many different distros you can choose from. – Johan May 5 '11 at 19:07

I'm not sure how "on topic" this question is but I think that it is fun. The more of your computing that you move into Linux, the faster you will start to pick things up.

Here is something I did shortly after moving to using Linux exclusively. It requires having a spare computer.

  • Set up a server with Ubuntu Server.
  • Set up SSH access to the server.
  • Remove the Keyboard and Monitor and do all further configuration and administration remotely. For me, this was a serious learning experience since it forces you to (1) do everything via the shell and (2) be very careful about configuration changes.
  • Get to work configuring the services you want. You might consider doing some of the following
    • Focus on security from the start. Configure a firewall. Secure your ssh settings. Ensure you understand what services are running on the machine and why.
    • Set up client machines to back up regularly to your server or to some external media mounted on the server or create some other backup solution that requires interaction between your clients and the server.

On any Debian-based system, a file-server and web server will be relatively easy to set up and configure. An email server will be more difficult, at least if you attempt to get the type of reliable mail delivery that a service like gmail can provide.

share|improve this answer
Hi, thank you for your advise, please see the edit. – vikp Dec 29 '10 at 9:51
+1 for "be very carefull about configuration changes". :) – Stefan Dec 29 '10 at 11:24
In software development there is an unofficial "must read" book - Gang of Four, it explains very important fundamentals and principles that a lot of software developers choose to ignore. Is there any similar literature for Linux? – vikp Dec 29 '10 at 11:27

I challenge you to configure a secure mail, file and web servers. Does that help?

Sounds like you've done a good job of coming up with your own challenges. Do those first, then think of something new. Rinse, repeat.

share|improve this answer
Adding to the list: use your linux box as your home firewall w/NAT. – gabe. Dec 29 '10 at 5:51
Hi, challenge is one side. I was concerned that I'll concentrate on something like file-servers or web servers without understanding fundamentals. – vikp Dec 29 '10 at 9:52

Here's two good challenges:

  • Install samba and either swat or webmin to configure it. You'll hear from a lot of people that swat and webmin can be insecure, learn why and learn how to make it not insecure. Experimentation with using a Linux box as a file server is very useful and this will teach you a little bit of what is needed to get Windows and Linux to play nice together.

  • Select a "third-party" web application, install it, and get it working. I'd say install Wordpress and experiment with running your own blog. Ajaxplorer is a nice application that is very useful as well. You will learn about apache, mySQL php, and how web application installs work and how all those components work together. After all that you will come out with a lot of knowledge.

An easier challenge:

  • Install and run an FTP server. Then find out why FTP sucks and learn about SCP, and configure sshd to enable you to do secure file transfers.
share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.