Throughout my years of programming, I've often seen two camps, the programmer and the server administrator. Often these two camps don't see eye to eye and difficulties can arise. This is mainly due to a lack of understanding between the two departments. The server administrator does not see the scope of completing the job for a demanding client, and the programmer does not see potential issues with misconfigured and poorly programmed applications being introduced to a server, where other services could be heavily impacted. I almost believe they focus on the opposite, and in reality, we as programmers, should be really viewing their priorities, since we all want to have secure applications in the end.
As a programmer, I see great benefit learning the environment where your application will reside. Over the last few years I've been heavily involved Linux server administration. My application have been mainly written to use the LAMP environment (Linux Apache Mysql Php). Because of this, I thought becoming fluent in Linux administration could help bridge the gap between myself and server administrators, since a majority of my clients use Linux servers.
While learning Linux administration, I began to have a better understanding of PHP-CLI (command line scripting) for increased power and control of my apps. Also, the ability to fully understand other services (FTP, mail, PAM, cron) have been increasingly useful for my coding practices.
I also believe that working with the server environment, I show a level of respect to server administrators and can offer suggestions to potential problems with PHP configuration and compliations, as well as Apache configurations to help increase security on my applications.
If you're interested in learning Linux, I would highly recommend creating a development environment. If a server is unavailable, look into virtualization software (ie: vmware) to create your first Linux environment. After creating the environment, begin focusing on your basic services.
Apache and Mysql configurations and administration will be your first hurdle. I would also recommend a distro that has easy package maintenance (I prefer source based distros). You'll want to look into different compile flags for PHP. Keep security conscience. Most administrators will have security in mind, so try to replicate your environment as hard as you can tweak it (SafeMode, Open_basedir, Mod_security, Suhosin, Mod_chroot, etc). Learn to work in this restricted environment. If you can produce working applications here, you'll be able to create robust applications in any LAMP environment.
Go Back
