Ubuntu - Install php5, mysql, apache2, ssl, pdo & pdo_mysql


I recently tried SUSE enterprise 10 and although i found the GUI absoloutly excellent, wireless support and sound card support was such an effort to get working, i have come back to good ol’ ubuntu. The classic linux distro where stuff seems to ‘just work’.

The following is meant to be a tutorial for setting up a basic webserver on your ubuntu desktop.

Installation instructions / How to setup PHP5, Mysql, Apache2, SSL, Mod_rewrite, pdo and pdo_mysql

Overview / Index

The reason i have put this together, is so people don’t have to search for multiple things, and can find all the essentials here

I am running Ubuntu 7.10 and fresh installation (about 10 mins ago).

I am going to setup Apache2, PHP5, MySQL, SSL, PDO loading the PDO_MySQL driver. This document is ment to help people who struggle with any of these and provide a bit more of a ‘one stop shop’ to anyone trying to set these services up.


Step 1 > Apache2

ntom@localhost:~$ sudo apt-get install apache2

Incase you need to, you can find how to add extra repositories here


Step 2 > MySQL 5

ntom@localhost:~$ sudo apt-get install mysql-server libmysqlclient15-dev


Step 3 > PHP5

ntom@localhost:~$ sudo apt-get install php5 php5-common libapache2-mod-php5 php5-gd php5-dev curl libcurl3 libcurl3-dev php5-curl


Step 4 > PHPMyAdmin

ntom@localhost:~$ sudo aptitude install phpmyadmin

At this point, you should be able to go to http://localhost/ and see your webserver is now up and running.
You should also now see a folder called ‘phpmyadmin‘ which if you click on, and enter ‘root’ as the username, leave the password blank, and login, will give you access to your mysql db’s.


Step 5 > SSL certificate for Apache2

ntom@localhost:~$ sudo apache2-ssl-certificate

If you get back that it can’t find apache2-ssl-certificate .. then not to worry, this is a known bug, and please read my comment at the bottom.. direct link to the comment click here

Answer the questions

ntom@localhost:~$ sudo a2enmod ssl

This enables the ssl mod for apache2

ntom@localhost:~$ echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf


ntom@localhost:~$ sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl 


ntom@localhost:~$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

To understand more about sites-enabled, sites-available click here

ntom@localhost:~$ sudo gedit /etc/apache2/sites-available/ssl

Select All (crt+a), delete, then paste in this:

NameVirtualHost *:443

<virtualhost *:443>
        ServerAdmin webmaster@localhost

        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem

        DocumentRoot /var/www/
        <directory />
                Options FollowSymLinks
                AllowOverride None

        <directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all

        ErrorLog /var/log/apache2/error.log

        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from ::1/128


Then we need to change the default file, so…

ntom@localhost:~$ sudo gedit /etc/apache2/sites-available/default

and make sure the following lines say this:

NameVirtualHost *:80
<virtualhost *:80>


You may also want to enable mod_rewrite.. todo so, follow the following steps:

ntom@localhost:~$ sudo a2enmod rewrite


You will also need to edit sites-available default, and ssl:

sudo gedit /etc/apache2/sites-available/default

And the same again for the ssl file.
Here you will need to change the section which says ‘AllowOverride None’ to:

AllowOverride All


Now restart apache

ntom@localhost~: sudo apache2 -k restart


Step 6 > PDO & PDO_MySql

First, we need to install PEAR, so…

sudo apt-get install php-pear


If you get anything about warning, ‘phpize’, this means you need php-dev, or if your using sypantic package manager, ‘php5-dev’.

sudo pecl install pdo

This installs pdo.

The next thing you want todo is install the pdo_mysql drivers. Do this by doing the following:

sudo pecl install pdo_mysql

If however you get a error somthing along the lines of:

checking for MySQL support for PDO... yes, shared
checking for mysql_config... not found
configure: error: Cannot find MySQL header files under
ERROR: `/tmp/tmpRiQ5ax/PDO_MYSQL-1.0.2/configure' failed

Then you should download and install the following packages:

sudo apt-get install libmysqlclient15-dev

and then try to re-install pdo_mysql.

Once this is finished and sucessful (it was for me), its best to then run the following code:

sudo updatedb
sudo gedit /etc/php5/apache2/php.ini

Inside the php.ini, at the bottom, add the following lines:


The end

I hope this has been helpfull to many people out there. I hope it has saved people endless hours looking at different sites for different aspects of this tutorial.

Please be sure to leave some comments :)