Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've developed a website using PHP but I implemented it on Windows OS and hosted it on Windows server. I just searched the PHP job market to know the on-going technology requirement and to keep my knowledge up-to-date accordingly with the job market. I see more are asking for LAMP stack. I understand the sort of skills required for a developer in PHP and MySQL. But coming to the Linux and Apache what kind of the skills exactly companies expect from a developer?

On what should I be focusing in case of Linux, Apache whilst developing my website using these LAMP stack?

I am going to develop a new website and want it to be using LAMP. But I want to know what difference it makes?

Why LAMP stack got more demand in the job market compared to WAMP ?

Edit: Sorry I thought my question is creating confusion ... so I put my question in different words as What and all the areas of a Linux a PHP developer should know about? (Like just commands of it or something advanced)

Note: I am Linux newbie

share|improve this question
    
The "Why?" is pretty easy to answer: Because Linux just makes a better and more versatile web server. –  thiton Nov 12 '11 at 16:32
    
Microsoft won't agree ;-) –  johannes Nov 12 '11 at 17:16

3 Answers 3

up vote 4 down vote accepted

As far as why LAMP has a bigger mindshare (if not market share) than WAMP: probably because the LAMP components don't have licensing costs. That makes getting started cheaper. Cheap Linux hosting has to be cheaper than cheap Windows hosting just for that reason alone. The free/libre nature of LAMP makes it possible to just try it out for free. From there, everything else is an accident of history, although IIS and Windows have historically had more and more severe security problems than Apache and Linux.

As far as what you need to know as a developer:

  1. Familiar with shell programming.
  2. At least moderate ability to use a text editor, probably vi or vim
  3. Familiarity with basic Linux commands ls, ps. Not just to run them, but to understand them, how to find out information about them. (man ls, man ps, the "--help" type options).
  4. Familiarity with the user's view of a linux filesystem. Not just things like "hierachical", "single root", but rather where might you find config files, where does HTML live, where do .php files live, what shows up in /proc/.
  5. Familiarity with the command line interface to the database. "M" in LAMP is for "MySQL", but PostgreSQL is common.
  6. Intimate familiarity with ssh, scp, sftp can help.

If you have spare hardware, even 5 or 6 year-old hardware, you can easily install something like Slackware linux distro. Just getting Slackware up and running will teach a lot, configuring Apache, MySQL and PHP will teach you even more.

share|improve this answer
    
thanks for the answer - Now I should start on learning Linux covering those points you mentioned –  droidsites Nov 12 '11 at 19:26
2  
I would add familiarity with linux file permissions to the list and filename case sensitivity it's the first peculiarities windows developers get stuck with. (peculiarities from a windows dev perspective, don't get me wrong) –  Yannis Rizos Nov 13 '11 at 3:40

This is a good question and has been circulating for awhile. The main difference between windows and linux is that the linux filesystem is case sensitive. This can cause issues with people going from windows to linux, because myPage.php and mypage.php are two different documents. With linux you can install extensions for what you need and not for everything. Generally linux has a smaller footprint and you can technically run a web server on a 10 year old machine like it was brand new.

This can be achieved due to linux using a swap drive that works in conjunction with ram. This allows for the system to use harddrive space for simple file tasks and leave the hardware for application/process tasks (generally speaking).

But as far as the technical requirement of programmers varies by company. I have had companies that wanted to make sure I could program in them and others that wanted me to manage the environment.

One link to someone that has put up differences can be found here: http://tips.webdesign10.com/microsoft-hosting-vs-linux-hosting

share|improve this answer
    
Thanks for the answer. I agree that the requirements varies from company to company. But basic question is different. I edited my question. Please check it once and let me know the answer –  droidsites Nov 12 '11 at 17:59

As developer, the most important skill to focus on is development. There's a lot more differences between Linux and Windows than case sensitivity. A LAMP dev should have a strong server management skill set, but you're not a sys admin.

A couple of concrete goals: Being comfortable on the command line is a must. Be able to set up, secure, configure and deploy a web server from scratch in your favorite *nix distro from the command line. A solid understanding of how your server daemons run and how they interact with one another goes a long way in diagnosing all manners of problems. Be able to set up and change DNS and NS records. Become comfortable with a version control system such as svn or git.

As far as WAMP vs LAMP: well, for one thing, Windows licensing costs money. And Windows has shipped with a built-in web server called IIS since XP, which can be configured to run PHP in ~3 clicks, and then there's MSSQL, and .NET, which -> ASP, and suddenly web dev is whole different ball game. Because, if you're going to run IIS, you probably have a whole slew of the other Windows-specific tools / suite you want to run (Exchange, AD, etc) so you're probably running them all on Windows Server 2008, not a desktop OS like Windows 7.

WAMP is mainly the stuff of localhost sandbox development. I dare say most experienced developers who run Windows either have *nix as a dual boot or a virtual machine for development purposes. Working on the command line in Windows is a pain to set up and it's clumsy at best, even with PuTTY, Pageant, plink, etc. If your resources permit, setting up a virtual machine locally to learn on would probably be useful to you.

HTH. :)

share|improve this answer

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.