Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm a PHP web developer and I'd like to start learning more about system administration and was wondering if anyone had any good resources/starting points to look at. I have an old computer I can install Linux on and play around with if necessary. The server a couple of my apps run on right now use CentOS so I was thinking just learning that but if that is not a good starter I'm open to using other distros.

I'm comfortable with very basic UNIX commands right now (cd, cp, ls, rm, really weak sauce stuff like that). My main motivation to learn about this is I want to play around with tools for web development (like XHProf, buildBot, Selenium, etc) but realized I don't even know how to install anything. I'm very comfortable developing web apps but I feel like I should know at least a little bit about how web servers work. I also would like to eventually be able to monitor server load, performance, etc since I am into performance.

share|improve this question

migrated from stackoverflow.com Feb 12 '10 at 1:40

This question came from our site for professional and enthusiast programmers.

add comment

5 Answers 5

up vote 4 down vote accepted

Take a look at Rute User's Tutorial and Exposition: http://rute.2038bug.com/rute.html.gz It's comprehensive, but reasonably accessible.

share|improve this answer
    
Good read! Didn't know this existed! –  Powertieke Feb 12 '10 at 13:37
add comment

Performance tuning can be a rather broad field, so I'd worry about understanding how posix operating systems work, so you know how to monitor it and find where you can squeeze out extra performance.

I'm a fan of books ... so as you're on CentOS, I'd suggest the Linux System Administration Handbook, but it'll also help to find people to ask questions of, such as a local Linux Users Group.

For performance tuning, you'll also want to learn about your webserver and other aspects as well, but this might give you a good start.

share|improve this answer
add comment

I would suggest going to GoDaddy or some other registrar, getting your own domain name, and then setting yourself up with a personal web site (should be the fun part since you're a PHP guy). Add in e-mail to the server, and work out how you would back everything up. I started out pretty much the same way, programming in PHP and moving towards system administration. Playing around on my own server got me going with all the basics I needed to get into the field. Also try out a few distros (I prefer Ubuntu) for your server, and get a feel for which you like best.

Forcing yourself to figure out things like these on your own server is the fastest way to get you experience with running a Linux server. Getting good at searching for all the tutorials and information you need is probably the most commonly used sysadmin skill, IMHO. If you want a few more specifics, here's some of what I set up for myself that you could try:

LAMP server (for my website/blog) Postfix and CourierIMAP for e-mail (filter e-mail into folders automatically with procmail rules) Secure it using iptables Use Subversion to maintain your code, and set up test and production pages through Apache Figure out how to keep it all backed up

After typing this I realized I could go on for a lot longer, so please ask any questions and I'd be happy to go into more detail.

share|improve this answer
add comment

CentOS is based on Redhat, so it is a good starter. You might want to check out Debian or Ubuntu as a server and see if that suits you better. I would then look at the software packages you want to install and look for guides to installing it on your distro of choice. Some things will come in packages that install pretty easily and check for the dependencies it will need. Others will need to be compiled and dependency checking is mostly left to you.

share|improve this answer
add comment

As well as the web specific stuff I would also advise installing some flavour of LDAP and an email server. Working with these will give you a good feel for what's involved in user authentication and management (which should in turn be of benefit to you with web apps) and a messaging environment (which you might get practical use from but which is still handy to know all the same).

This particular pond can be very very deep, and how far down you want to go is up to you. I'd advise - at least to start with - that you select simpler tools to learn on, and try to exhaust the possibilities of what you can do with those. You could dive head first into something that's too big for your current experience (and well outside your comfort zone) which would be not a good thing to happen.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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