
Is there a server admin guide for noobs? - dawilster
Hi HN,<p>I was building this app the other day and because I'm a complete cloud server noob I deploy all my apps onto phpfog.com but there really lacking some features essential to my web app so I was really hoping to take the time to learn linux servers.<p>I've used rackspace in the past but nothing more than copying and pasting commands from a tutorial so when it comes to anything beyond the scope of what's in it I become stumped so I really need to learn how to fish in this case.<p>I want to become more acquainted with servers like Centos so does anybody know where I should get started?<p>Thanks a lot
======
kcvv
While there are several books to teach you basics of Linux, the best way to
learn is to do hands on.

\- Install Virtual box ( or any other free VM hosts).

\- Download CentOS.

\- Set yourself a goal on what you need to achieve - e.g I need to run php
version x with apache configured to do x y z tasks.

\- Install CentOS as a VM ( you could skip these steps and run a cheap VPS as
others have suggested) .

\- Understand the various steps in the installation - Disk partition, Software
selection etc. Don't just blindly select anything unless you understand what
you are doing.

\- Figure out what software you need to install to achieve your goal and
install it one by one.

\- Ever time you get struck, if you find some command to fix the issue, don't
blindly copy paste it - understand what the issue is and figure out what the
command you are trying to run is doing to fix the issue.

Once you have everything up and running, destroy the machine and start over
with a slightly different goal.

Google is your friend! Good luck.

~~~
marquis
>Don't just blindly select anything unless you understand what you are doing.

That's important advice: anytime you run up against a selection option and you
don't know what you should choose or why the default is what is it, search for
more information to understand what is going on. I believe you can teach
yourself anything just by setting a goal and learning as you go (with plenty
of time and acceptance for mistakes).

------
niel
<http://vagrantup.com> is a good way to get started on your local machine
(without paying a VPS provider). You can install a minimal operating system
and build up your stack from there. Because it is completely free, you can
recreate your server and really experiment with different operating systems
until you feel comfortable to go live.

Once you get the hang of running on a virtual machine, use Puppet or Chef to
learn how to automatically configure your servers when starting a new VM. This
will save you a lot of time setting up your public VPS later.

An important difference between your local virtual machine and a VPS is that
you will have to take some steps to secure a publically accessible server.
Points to take into consideration here are: key vs password based SSH
authentication, iptables firewall.

I've found the Linode library to be a good source of introductory
documentation about setting up a VPS: <http://library.linode.com>

~~~
dawilster
Thanks for this!

Running from a local machine is going to be really helpful.

------
geoffpado
The Linode Library has a ton of great tutorials that are mostly not Linode-
specific, and don't require you to have an account there. They even have LAMP
setup guides for both CentOS 5 and 6: <http://library.linode.com/>

------
loxs
I don't know what kind of answers are you hoping to get here, but from the way
you address the issue, I would say that there is no easy way to this.

If you want to learn linux server administration, IMHO the easiest (or at
least the one which will _make_ you learn) way is to try and use linux as a
desktop for several months.

And don't go for something "easy" like ubuntu. Try Slackware, Arch Linux or
Gentoo. This will force you to see what kind of knowledge you need, what kind
of problems are common. Things like kernel tweaking, dependency resolving,
filesystems, shells, etc.

Of course, you can continue to copy/paste from tutorials. It will probably
work... to some degree... until things go wrong...

~~~
crazygringo
I'm in a similar boat to the OP. But when I read "kernel tweaking"... it
terrifies me.

Do Linux server admins actually... change anything related to the Linux
_kernel_?

I mean, I pretty much gave up on trying to understand Linux when the
"certified" tech support at Rackspace couldn't figure out how to upgrade the
version of PHP on my servers, apparently something to do with
incompatibilities between the way the Red Hat PHP distribution was set up, and
the official PHP one. And these are guys who have taken _courses_ of years+ on
configuring Linux, and that's still inadequate to achieve what would appear to
me to be a trivial uninstall / reinstall.

Am I missing something here, or is Linux really this insanely hard to
configure, to the point where I shoudn't even bother trying, and just leave it
to the experts?

~~~
loxs
Nowadays, you will most likely never need to recompile your kernel. At least
not if you are doing "normal" stuff.

Let me give you an example of what kind of stuff you will come head to head
with:

Recently I was installing and configuring a Riak cluster. I wanted to
configure it to use multi backend with a large partition ring. What these are
is not essential to our discussion here. What is essential is that I hit the
riak user's limit for simultaneously open files. This is a thing controlled by
the kernel, but configurable in userspace. If you are interested, you can find
how to raise the limit by using Google.

This is the kind of "kernel tweaking" one usually needs to do. 1. How to make
it work 2. how to make it persistent after server restart 3. WTF?! it's not
the same in debian/ubuntu and Red Hat (half of the solutions I found don't
work)

But the harder part is not finding the solution. The harder part is finding
out what is the problem. In order to do so, you need to have experience. Know
where are the logs, know which logs to look at. Know how different systems
behave under such conditions (in my case, Erlang VM). Be proficient with shell
tools for diagnostics. Be able to use emacs or vi(m) on the spot (you have no
graphical environment) etc.

And there is no easy way in obtaining this skills. The only way is to get your
hands dirty. Very dirty. Build systems, break systems, fix systems. You can't
be good by just following tutorials, nor by using a sandboxed environment like
a VPS.

------
revorad
The Slicehost articles are quite good - <http://articles.slicehost.com/>

Linode also has a library - <http://library.linode.com/>

------
wilhow
Solving a problem is the easiest to learn and retain that knowledge. Get an
account in development EC2 which I think is free, or something cheap in the
cloud like prgmr.com and build a linux server and learn. Deploy your
application manually and solve all the issues you face. Linux is so wide
spread these days, there are very little that you can't an answer on the web.

I say CentOS or Ubuntu (w/out UI) is a good way to start. Those 2
distributions have many step by step solutions scattered on the web such as
stackoveflow and forums posts. Slackware, Arch Linux or Gentoo are great for
their target audience. IMHO they provides very little out of box for a noob
and it's very easy to get lost in what you can set, break and/or fix. There is
nothing more demoralizing that spending 2 days digging around the web for a
problem that has numerous answers and you've no idea what everyone is on
about.

Books are very useful guidelines, but getting your hands dirty is how you'll
really learn.

~~~
corin_
I'd suggest avoiding prgmr (who I think are awesome by the way) and opting for
somewhere like Linode, just because it makes it so easy to wipe your VPS with
a clean image and start again. (I'm talking specific to this thread, not as
advice for everyone.)

~~~
wilhow
For me that is a very helpful feature. I've done installation many times and
I've done them to a cheap machine at home so I'm quite familiar with the
process. It's the ins and outs of the linux that I was not able to get for a
long time. Being able to wipe a VPS with a clean image allows me to quickly
start over when I have mess things up so bad.

------
goodbytes
Hi! I teach Linux server administration basics in college, on Centos. I've
been thinking about writing an ebook or some sort of guide for other
developers to get started with Linux/Centos. Would you care to share what kind
of things you'd like to learn? Are you talking about real linux basics,
maintaining software, setting up Apache, ... ?

~~~
dawilster
Hi,

Essentially getting apache up and running and actually understanding the
commands I'm using, other things are ssh, setting up FTP and another thing
that daunts me incredibly is setting up the virtual host, I find it so easy to
break things when I don't know what I'm doing.

There are probably a couple things I missed out on but a noob to ninja type
ebook would be great.

Thanks a lot

~~~
goodbytes
Sounds exactly like the basics I'm teaching my students. It isn't all that
difficult to get started with linux once you know how to approach things.
Thanks for the feedback, I'll think I might get started on an ebook that
clearly builds things up.

------
peterwwillis
HOWTOs. <http://www.tldp.org/HOWTO/HOWTO-INDEX/index.html>
<http://www.tldp.org/guides.html>

This treasure trove of quick-start guides for newbies enables you to learn a
wide variety of software and ways to use the Linux operating system. There are
several docs on using Linux, common command line tools, server/network
administration, Bash programming guides, set up instructions for server
software, and tons more. You will become a Linux ninja by reading and
following through with these HOWTOs.

------
locusm
Start with the shell/command line and study its infinite capability. A good
place to start would be Zed's site. <http://cli.learncodethehardway.org>

After that follow the advice of kcvv - take notes, rebuild VM's again and
again building on your new knowledge.

------
timthorn
10 years old now (and that's the 3rd edition), but still a good tome:
Essential System Administration from ORA
<http://shop.oreilly.com/product/9780596003432.do>

------
jerrya
I'd love a modern guide on how to secure a modern webstack.

What do I really need to do to secure an EC2 image, or an AppEngine
application or a Heroku application?

------
middus
It would probably be easier for us to give advice if you told us which
specific features essential to your web app you need.

------
evilmoo
Make backups. Take backups often. Ensure the backups work.

Remember these and most other things are just window dressing.

