Setting up a LAMP (Apache, MySQL, PHP) development environment on Ubuntu 11.04 (Natty) / 11.10 (Oneiric) for Drupal/Wordpress development
Setting up a LAMP (Apache, MySQL, PHP) development environment on Ubuntu 11.04 (Natty) / 11.10 (Oneiric) for Drupal/Wordpress development
Package Installation
From Terminal, execute the following command to install the required packages:
sudo apt-get install apache2 mysql-server mysql-admin mysql-query-browser mysql-client mysql-navigator php5 libapache2-mod-php5 php5-gd php5-mysql php5-cli php5-curl kcachegrind php5-ffmpeg php5-mcrypt php5-imagick php5-xdebug phpmyadmin
Additional Configuration
1. To fix the Fully Qualified Domain Name issue for Apache
After the installation, apache might show the following error (Try restarting the apache server):
sudo /etc/init.d/apache2 restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
FIX:
sudo gedit /etc/apache2/httpd.conf
By default apache's httpd.conf
file will be blank. Now, simply add the following line to the file.
ServerName localhost
Save the file and exit from gEdit.
Now restart the apache server for the change to take effect:
sudo /etc/init.d/apache2 restart
2. To enable the mod_rewrite apache module (for "Clean URLs")
By default, Drupal uses and generates URLs for your site's pages that look like
"http://www.example.com/?q=node/83
".
This style of URLs can be hard to read, and can prevent some search engines from indexing all the pages of your site.
To facilitate easy readability, and to improve search engine friendliness, it is generally advisable to enable the Clean URL functionality. Drupal supports Clean URLs and requires that the web server also includes support for the same. Apache needs the mod_rewrite
module enabled, to allow Clean URLs.
To enable the apache mod_rewrite
module, issue the following set of commands at the terminal:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
3. Change some common php.ini
Settings
You might want to make the following change in /etc/php5/apache2/php.ini
:
sudo gedit /etc/php5/apache2/php.ini
Changes:
Change upload_max_filesize = 2M
to upload_max_filesize = 100M
Save the file and exit from gEdit.
Restart apache for the changes to take effect:
sudo /etc/init.d/apache2 restart
4. Changing Document Root from /var/www
to /home/username/public_html
If you would like to change the apache Document Root from /var/www/
to ~/public_html/
, you need to use the mod_userdir
module for Apache, otherwise you need to set up symlinks from /var/www/
. We prefer to go the mod_userdir
way, which seems a more well defined solution.
To enable mod_userdir
,
sudo gedit /etc/apache2/mods-available/php5.conf
Comment out the following lines from /etc/apache2/mods-available/php5.conf
:
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>
so that the file now looks like this:
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>
</IfModule>
Next, make some changes to userdir.conf
:
sudo gedit /etc/apache2/mods-available/userdir.conf
Comment out
AllowOverride FileInfo AuthConfig Limit Indexes
And below that write:
AllowOverride All
so that the file now looks like this:
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
#AllowOverride FileInfo AuthConfig Limit Indexes
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>
Then, issue the following commands in terminal:
sudo a2enmod userdir
sudo /etc/init.d/apache2 restart
Now create the public_html
folder:
mkdir -p ~/public_html/test
echo "<?php phpinfo(); ?>" > ~/public_html/test/info.php
sudo mkdir /etc/skel/public_html
That should do it. To test whether things are ok,
in your web browser, Browse to the URL: http://localhost/~
USERNAME/test/info.php
(Note: replace USERNAME with the actual username.)
- 26323 reads
Comments
Mubashir (not verified)
Sun, 01/22/2012 - 09:36
Permalink
Unable to view Drupal core installation!
Thanks for the cool post.
Everything worked perfect for me. But when I copied a Drupal core installation to the public_html folder, I am unable to view it when I enter http://localhost in my browser. I get this message
"It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet."
Please help.
anto
Sat, 01/28/2012 - 14:02
Permalink
Please try the following URL instead:
Mubashir,
Please try the following URL instead:
http://localhost/~mubashir/
where mubashir is your username (please modify accordingly as per your linux username).
Cheers,
Anto
Add new comment