5
votes

I (as this title implies) am very new to this server configuration stuff. I have recently been pushed to learn how to configure developing/production environments. My history with actual server/network configuration is limited to programming. I am proficient with PHP/MySQL/JavaScript.

I am picking up on server-related stuff at a fast pace and jumping into some rather complicated stuff.

I executed my first LAMP install (on Ubuntu) about a month ago and I have...

  1. successfully installed/configured Apache. This includes setting up virtual hosting, setting up folder permissions. My understanding of Apache is decent. I'd still like to get into mod_rewrite more...
  2. Successfully installed/configured Postfix. I had a bit of help with this one from my partner - who is also not all that experienced in this realm. I followed this tutorial pretty much exactly. I have elaborated on this tutorial a bit, in that I am utilizing an SMTP relay through Gmail.
  3. Successfully installed/configured OpenSSL. (via the Ubuntu community wiki tutorial). This was a bit less challenging and more brief than Postfix... But my server can now generate and validate certificates for itself, in addition to using a third party authority to validate certificates.
  4. A decent base of using the command-line. SSH'ing, vi, pico, some directory/file making junk. and other little odds and ends. (perhaps a nice cheat sheet would help?)

Any other server-admin-related processes are slipping my mind right now, but they are probably very minor.

I should mention that I will be specializing in Linux based (likely Ubuntu) servers via Amazon EC2. This will not be my career path - just a temporary utility. I will personally be focusing on the web-based application end of development. I figure I can't go wrong learning how to configure my environment... right?

I am a bit concerned though, as I have no "formal" education in this subject matter (or really in any web-related subject). I rely heavily on forums or Q&A sites such as this one, to ensure my education is complete.

Large or small. It makes no difference to me. It's my understanding that everyone has those 'holy crap, I wish I knew about this a while ago!' moments.

The problem I'm facing is I lack a base. I am confident that I can learn how to do most of the moderate and some advanced stuff.

Short of repetition and just immersing myself in material. What do I need to know?

Which concepts do I need to know in-and-out?

For example: security essentials, how to set up a decent system to securely FTP (file transfer, whatever), filesystem organization, which Linux distribution should I use.

Thanks - any input or direction given is greatly appreciated!

Sorry if this is a bit general and vague.

EDIT: I will be focusing on Internet-based applications that will most definitely be using some kind of SQL database.

0

6 Answers 6

5
votes

You should know how to do backups and more importantly test whether the restore is functioning probably. So you can get back files when you accidentally deleted some.

When you administer multiple servers, take a look at configuration management tools like Puppet.

Keep a log of your changes and the reasons why you made them. In ITIL terms it is done in a cmdb, but you could start with a simple textfile, wiki, ...

Get a monitoring solution like Nagios so you know what your systems are doing.

Automate as much as possible. you will be thankful for every script you have when things get messy.

This isn't everything for sure, but I'm certain you will get a lot of other good answers.

Edit1: here are some blogs which might help to get you a starting point:

And some books:
* Linux System Administration Handbook
* The Art of UNIX Programming

Edit2: here is a overview of different Linux distributions:

2
  • thanks! perhaps a good resource would be a list of common acronyms... haha Jan 12, 2010 at 15:06
  • sorry. itil => it infrastructure library. cmdb => configuration management database. itil is a summary of best practices (mostly processes), but it is a lot of stuff. it is not really a point where you should start your sysadmin career.
    – Christian
    Jan 12, 2010 at 16:04
4
votes

Your backups are only as good as your restores.

1
vote

I'd say that one important lead you can take is to truly get your head around all the various forms of virtualisation (server, desktop, storage, network etc.) as it's one area where I've really started to see some of the 'old guard' struggling.

I'm not talking about the hands-on side of things, more the required separation of functionality from physicality - once you've 'got it' you'll see the benefit career-wise - I'm surprised how many people either can't understand it at all or fall back to old ways by default.

You also need to develop very 'clean', product/tech-gnostic, fault-finding skills - these will be more valuable long-term than any specific skills you might have right now as the kit and software we use changes all the time but basic logical thought processes rarely do.

Best of luck.

1
vote

Don't use FTP. Use SCP (sshd/ssh to transfer files).

Your question, as you said, is vague. That makes it hard to give any specific details. I mean, what are your end goals? I'm an administrator for servers, but I don't do much at all with our Cisco CallManager/PBX system. System administration falls into sub-disciplines, and while there's crossover, most of learning about system administration comes from actively pursuing the needs of your users and business and experiencing issues to solve and reading books, magazines, blogs, etc.

You should probably know about backups. You need to have a system that allows you to restore the computer from bare metal if necessary, so to speak. But it depends on your needs. Do you have a lot of dynamic data? Do you need 24/7 uptime and accessibility?

Security depends on how what you're running and who you're allowing access to the server. Keep up with updates, disallow unneeded services, scan with nmap and auditing tools, etc. to assess it, but also be aware of simple things like user password requirements, trust given to users, and it also depends on what you're running on the server. For example, SQL could be the latest version, but if you're not sanitizing input from the web server, you could have injection attacks.

If you have a specific usage scenario others on the site may be able to give you more information relevant to your situation. Otherwise, the only thing I could suggest is to get Linux books from your local bookstore and read, read, read. Check out security blogs from gurus like Bruce Schneier.

5
  • Thanks - part of the problem is I don't KNOW what sectors of this vast world I will be diving into. Recommendations on books are greatly appreciated! Jan 12, 2010 at 15:12
  • Start by stating what service or goal you're looking to reach. Phone server, file server, web server, web with database,...? Once you state what it is you're trying to achieve, then you narrow it down. Think of it this way; you have architects who are good and design, but unless they do a lot of building schools, they won't know how to design one tailored to a school's needs. Admin for a database server is different from a basic file server, even with common elements. Jan 12, 2010 at 15:23
  • 1
    My personal recommendation is to follow magazines and blogs for system administration and security, since books tend to get kind of outdated for all but the most basic concepts. I don't have any titles off the top of my head unfortunately, but I will say that the books I get I usually pick up after searching Amazon for reviews first. Jan 12, 2010 at 15:34
  • Another good way to glean information is to type in some concept or bit that you're working with into search for ServerFault and browse some answers. You'll find all sorts of useful tidbits from experience that you won't find in books right here on the site by browsing the "possibly related" questions. Eventually it all sort of sinks in as an amalgamated gestalt body of knowledge. Google is your best friend in system administration today. Jan 12, 2010 at 15:36
  • Google is everybody's best friend... =P Definitely need to be geared towards web-services w/ a database Jan 12, 2010 at 15:41
1
vote

The Practice of System and Network Administration. This book is a must-have.

1
vote

To transfer files I would recommend using NULL FTP Server instead of WinSCP, which is a nice, easy to understand (from a SSL point of view) FTPS and SFTP server. I would recommend running the SFTP server on port 22. For the FTP client, use FileZilla.

To get experience with the development environment, get VisualSVN and Tortoise client and play around with those.

For experimenting with Operating Systems, I would recommend using Sun VirtualBox . Its a little finnicky with networking stuff but you should be able to handle it ok.

1
  • Thanks for the plug on Null FTP Server. There is also a Null FTP Client as well by the way. Jan 25, 2010 at 2:06

Not the answer you're looking for? Browse other questions tagged .