Wednesday, 1 January 2014
How-to: Install LaMp Stack on Debian 7
If you remember a while back, I installed the LaMp stack on Linux in preparation for installing Wordpress... which I did but didn't post the How-to. Err, sorry about that. I'll get around to it, promise.
Well, that LaMp How-to was a tad simple-minded and things have moved on a little. Here's an update with a bit more detail to it. You'll note I'm doing this the old fashioned way, step by step, command line by command line. We'll look at an easier way soon.
L is for Linux
I'm using Debian these days, but you can as easily choose Ubuntu server, Arch, Gentoo or whatever. Before starting to install the LaMp stack, make sure your chosen Linux distribution is up to date. You can do this through the system tools, Software Update, Software Centre, or if you must, in a Root Terminal using good old aptitude (the '#' prompt indicates commands to issue as root):
# aptitude update && aptitude upgrade
A is for Apache2
Apache is the web server, which can be installed as follows:
# aptitude install apache2 apache2-doc
To configure user directories for the Apache Web Server, run the Enable module
# a2enmod userdir
You should get the message:
To enable the new configuration you need to run
# service apache2 restart
This is the usual command to restart Apache, so do that:
# service apache2 restart
Next configure the Apache module userdir in /etc/apache2/mods-enabled/userdir.conf as follows:
UserDir disabled root
Options MultiViews Indexes SymLinksIfOwnerMatch
<Limit GET POST OPTIONS>
Allow from all
<LimitExcept GET POST OPTIONS>
Deny from all
Create directory as a normal user (not as root):
Change group as root (substitute your username) and restart web server:
# chgrp www-data /home/<username>/public_html
# service apache2 restart
If you get a Forbidden error when accessing home folder through Apache, check /home/username has the permissions drwxr-xr-x. If the permissions are wrong correct them as such:
# chmod 755 /home/<username>
M is for MySQL
Next install the MYSQL database server and client using the following command:
# aptitude install mysql-server mysql-client
In Debian 7 and most current Linux versions, you will be asked to input MySQL root user's password during installation. If not, then immediately after you have installed the MySQL server, you should change its root password.
# /usr/bin/mysqladmin -u root password 'enter-new-password'
Of course, remember you should only use the root account for normal running of databases; root is a privileged account which should only be used for administrative tasks. The MySQL installer normally creates a separate user account to connect to your MySQL databases from a PHP script. If the command line is too much for you, a control panel like phpMyAdmin is a convenient tool to create or assign database permissions for users.
P is for PHP
Installing the PHP layer of LaMp in Debian can be done with one command in the root terminal:
# aptitude install php5 php5-mysql libapache2-mod-php5
At this point in Debian Wheezy I got the message:
The following packages have unmet dependencies:
apache2-mpm-prefork : Conflicts: apache2-mpm which is a virtual package.
apache2-mpm-worker : Conflicts: apache2-mpm which is a virtual package.
The following actions will resolve these dependencies:
Remove the following packages:
Accept this solution? [Y/n/q/?]
If you get this, don't panic. I accepted with the Y option and Debian resolved the dependencies.
In order to serve PHP, the /etc/apache2/mods-available/php5.conf needs to be correct with the following settings:
# 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.
# <Directory /home/*/public_html>
# php_admin_value engine Off
Again, if the installer is up to date, you may not need to do anything.
Place some web content in ~/public_html and see the results at http://localhost/~username
where ~username is your regular (not root) username for which we configured user directories in the web server above.
It used to be that you had to edit the Apache2 configuration file, /etc/apache2/apache2.conf, with a bunch of complex stuff. In most cases, the server confiuration is now done through conf.d.
To test the PHP interface, edit the file /var/www/apache2-default/test.php:
# gedit /var/www/apache2-default/test.php
and insert the following code:
<?php phpinfo(); ?>
Point your browser to http://localhost/apache2-default/test.php and you should get the info page for the installed PHP version.
Another P for phpMyAdmin
As mentioned earlier, the phpMyAdmin tool is useful for easy configuration:
# aptitude install phpmyadmin
The one option the installer comes up with is:
Server to configure
with the choices
Apache2 or LightPPD
which should be obvious unless you have installed the lightweight LightPPD.
The installer should configure phpMyAdmin for your website automatically.
Try it by invoking http://localhost/phpmyadmin/
You will need to restart Apache to complete the install of phpMyAdmin:
# /etc/init.d/apache2 restart
In the first-run setup of phpMyAdmin, you can configure the database for phpmyadmin with dbconfig-common ('Yes') for a simple setup.
You will also need to use the MySQL admin password in order to set the phpMyAdmin password.
That should give you a complete LaMp stack on Debian 7. At least, that's what it gave me, ready to install a content management system. RC