In this article I'll show you how to setup Linux Apache Mysql PHP (LAMP) web development environment on Ubuntu Linux with your web site files in your home directory. This way you can easily develop for web as non-root user. If you are trying to install Linux Apache Mysql PHP on Windows, I'll point you to one of my previous articles where I have explained just that:
My goals for this session are to install Apache, MySQL and PHP with Xdebug module for PHP development debugging. We will setup Xdebug and use it with Netbeans, but once Xdebug is properly installed, you can debug your applications with any other application like Eclipse. The most important thing for a web developer or web programmer is to be able to easily modify his web development files without becoming root for everything he is working on. I will show you how to instruct Apache to make virtual host in your home directory. At the end of it all I will install Netbeans and create sample project to work with our new development environment. So lets get started...
First thing we need to do is to install Linux Apache Mysql PHP server. In Debian based Linux distribution this is easily done using tasksel to select all necessary packages for typical Linux Apache Mysql PHP server. So lets install tasksel program first. Type this at your terminal:
sudo apt-get install tasksel
Next thing is to use tasksel to install Linux Apache Mysql PHP server. We do this this way:
sudo tasksel install lamp-server
In the middle of Linux Apache Mysql PHP installation, tasksel will ask you for MySQL root password. It is very important to write down what you gave to tasksel, because this password will be used to access MySQL database. After Linux Apache Mysql PHP installation is over, we will install Xdebug and one of the PHP image manipulation modules any web developer will need in his work, namely GD library. While we're working with apt-get, we will install Netbeans from Ubuntu repository. Here's the command to do this:
sudo apt-get install php5-xdebug php5-gd netbeans
I usually use directory "public_html" inside my home to keep all of my web sites code. You can use whatever directory inside you home you want. Important thing to mention is that Ubuntu web server is started as user "www-data" and directory where we keep our web source code should be accessible and writable by this user. So we will designate "www-data" as the owner of "public_html" directory. What's important for us is that we, as users have same permissions like our web servers "www-data" user for "public_html" directory so we could freely do our work. We will accomplish this by adding our selves to the "www-data" group. Now lets create "public_html" directory, adjust its permissions and add our selves to the "www-data" group:
mkdir /home/$USER/public_html sudo chown -R www-data:www-data /home/$USER/public_html sudo chmod -R 775 /home/$USER/public_html sudo adduser $USER www-data
Now after we have our "public_html" folder in place, we will adjust Apache setting so that "public_html" is used as web server document root. This way when we go to "localhost" or "127.0.0.1" server serves files from "/home/$USER/public_html". We will copy default web site template and modify it:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/public_html
Now we need to edit new web site template to point to "/home/$USER/public_html" instead of default "/var/www". Lets open our new template for editing:
gksudo gedit /etc/apache2/sites-available/public_html
We need to modify two lines: "DocumentRoot" from "/var/www" to "/home/username/public_html" and location of the second "Directory" section from "/var/www/" to "/home/username/public_html/". Notice the extra "/" on the "Directory" definition when compared to "DocumentRoot", this is on purpose. Instead of "usensame" put you own username. Everything else should be left as it were.
Here's the example of our modified file on my Ubuntu PC. Instead of "marko" in this file you must put your own username:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/marko/public_html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/marko/public_html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /home/marko/public_html/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /home/marko/public_html/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
Now we can disable Ubuntu default "/var/www"site and enable our new "public_html" site:
sudo a2dissite default sudo a2ensite public_html
What's left is to adjust Xdebug settings to allow debugging. We need to append to Xdebug configuration file:
For older Ubuntu (Debian) versions:
gksudo gedit /etc/php5/conf.d/xdebug.ini
For recent Ubuntu (Debian) versions:
gksudo gedit /etc/php5/mods-available/xdebug.ini
We will add this at the bottom of "/etc/php5/conf.d/xdebug.ini":
xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_host=localhost xdebug.remote_port=9000
Now we restart Apache server to apply our new settings:
sudo service apache2 restart
The last thing to do is to setup Netbeans with project inside our new "public_html" directory. Because we added our selves to the "www-data" user group, we should restart our PC now to make sure everything is refreshed properly. Next we start Netbeans from Applications -> Programming -> Netbeans and create new project by going to the File -> New Project. In the dialog we select PHP from the left side and "PHP Application" from the right side.
On the next screen you should configure things like this if you want your project to be called "techytalk":
After you click "next" you will be presented with the screen for run configuration. "Run As" should be set to "Local web site" and "Project URL" to "http://localhost/techytalk/". Leave the checkbox unchecked and click next two times.
Now you are presented with index.php inside Netbeans IDE and you can start creating your new web site. You can go to Run -> Run Project to show your web site in your browser or Debug -> Debug project to debug it. When you choose debug you will be given an opportunity to go trough your PHP code line by line and watch state of variables change at the bottom of Netbeans window on "Variables" tab.
This guide is a bit longer so there are many places for both of us to make mistake. So if something doesn't work, comment here (you don't need to register) and I'll do my best to help you out.