Beginning LAMP (Linux, Apache, MySQL, PHP) - How to begin and which resources to use?
Joined: Jun 10, 2012
I have basic programming skills in C++ and Java. I am currently learning SQL. I am interested in developing a website with LAMP - Linux, Apache HTTP Server, MySQL and PHP.
my questions -
1) OS - Which linux to use ? Is ubuntu okay ?
2) DB - Can i switch MySQL with MS Sql server ?
Would there be any ad/disadvantages by doing so ?
3) Scripting Language - Should I use PHP or Python ?
4) Are there any prerequisites that I must know
before i can begin learning LAMP development ? For example -
computer networks, design patterns etc
5) Which books are good for beginners ?
6) Where can i get good/respected mini-project samples to learn the basics ?
7) After that, where can i get mega-projects samples ?
I did a few searches for the projects and such, but i don't know if all those links are good or not.
Sorry, this was a little long. But i hope that it will help other beginners like me to get started.
The main problem I've found with running Linux at home is the lack of drivers for some hardware e.g. printers, network cards etc. There are ways around this but it can be a real PITA e.g. trying to get your network card working in Linux if you can't get online to download the tools/drivers you need to get the card working!
Alternatively, you could look at running Ubuntu inside a virtual machine. Download VirtualBox and install it on your Windows PC, then you can install Ubuntu to run inside VirtualBox. This is actually very easy to set up, and allows you to try out different flavours of Linux or set up alternative installations for different purposes, without abandoning your Windows system. But you will need plenty of RAM as you will effectively be running two operating systems at the same time.
AFAIK SQL Server doesn't run on Linux, does it? In any case, I'd suggest you stick to the open source DBs like MySQL or PostgreSQL (my favourite) as it will be much easier to find tools (e.g. phpMyAdmin), drivers, documentation and help for these common options.
3. Scripting language:
I really like Python (still learning it) and I think it's a much cleaner OO language (with huge libraries for all kinds of specialised purposes), but most books/tutorials for beginners will probably use PHP and it's the most common language for many existing LAMP tools, CMS etc. You should find PHP easy enough to pick up (easier than C++), and there are PHP plugins for Eclipse to make development easier.
If you are planning to develop your own web applications, I can also recommend you look at code frameworks e.g. Zend Framework (which I've used), or CodeIgniter or Cake (which I haven't), which can give you a huge range of good quality code components to make it easier to develop robust and clean applications e.g. ZF includes a load of stuff similar to Java tools like Struts for MVC development.
There's always tons of stuff you could be learning first, but I'd just get a book on developing web applications with the LAMP stack or check out some online tutorials to get going initially. You can always dig into things in more detail (e.g. databases, web application design etc) as you discover the gaps in your knowledge. You'll probably need a simple tutorial or manual that you can keep handy for common Linux shell commands.
Look on Amazon for PHP and MySQL and check out the book reviews, as this will give you a pretty good idea of which books are worth getting. Start out with maybe a Ubuntu/Linux book plus a "LAMP for beginners" type book, as this will get you up and running quickly. You will probably find you want to know more about PHP programming - my own books are a bit out of date now, but I found PHP In Action to be very useful, as well as Advanced PHP Programming. But check to see if there are more up-to-date books that will meet your needs, especially if you want to learn how to get the most out of the frameworks like ZF or CodeIgniter.
If you've learned C++ and Java, then you presumably already know the basics of OO design (or pick up a book on this). It would also be useful to learn about design patterns before you get too embroiled in your own major projects - try the Head First Design Patterns book (which uses Java).
Finally, as a database developer, I would urge you to get a basic practical book on relational database design and development: even if you only learn a little, you will still be way ahead of all too many professional developers!
6/7. Downloading code examples etc
Work through your tutorial/introductory book first, to get a basic understanding of how this stuff works. Then you could download the code for open source content management systems (things like Drupal, Wordpress etc) and other packages to see how other people do it, although be warned: there is a lot of really cruddy PHP code out there!
Also look inside the Zend Framework components, as this project is heavily supported by Zend's professional PHP developers, so you might find the code quality is a little higher than some projects.