Building A Lamp Stack On Ubuntu
Installing the LAMP stack (Linux, Apache, MySQL, PHP) is extremely simple in Ubuntu. This article will guide you through building a LAMP server for both development and production environments. I’m assuming Ubuntu Server for production, this means this article will be focused on the command line.
A single command will get your web server up and running.
sudo apt-get install lamp-server^
You’ll get a prompt for a MySQL password, enter you password and confirm on the following screen. This should be the only interaction required on your part. Open your browser and type localhost into the address bar. If you get a page saying “It works!” you now have a functioning LAMP server. The remainder of this article discusses advanced installation, much of which centers around my specific needs.
Users
If your in a production environment you will want to add a new user (in development your normal user is fine). This is the user that will be responsible for keeping the web sites and directories up to date. For the sake of this article, we’ll call that user production.
sudo adduser production
sudo passwd -l production
I like to keep my web directories on the default Apache path /var/www. This directory is owned by root and since we never want to login as root just to update a web directory, we will change ownership to the production user.
sudo chown production:production -R /var/www /var/www/*
sudo chmod 775 -R /var/www /var/www/*
Apache Modules
Apache modules provide additional functionality for your web applications. My applications tend to utilize the following moduels.
sudo a2enmod headers rewrite ssl env filter
sudo service apache2 restart
Supporting Applications
In addition to Apache modules, we may want to ask the server for even more features. We can install some additional Linux applications to provide these features. My applications tend utilize the following applications.
sudo apt-get install php5-imagick zip mcrypt php5-mcrypt curl php5-curl
sudo service apache2 restart
All of the applications to this point have required no cofiguration. The following applications will require some additional configuration. Thus they are listed seperatly.
Postfix
I like to use postfix to send email via PHP. You could use sendmail but in my experience postfix is a bit faster.
apt-get install postfix
You will get a dialog asking “General type of mail configuration:”. Choose the “Internet Site” option.
You will then be asked “System mail name:” Enter the fully qualified domain name (FQDN).
FTP
While I mostly interact with my server over SSH, FTP can be very useful. I’ll install ProFTP on my server and Filezilla on my client machine. At this point I can get the best of both worlds, a simple FTP client over an SSH connection. Answer [Y] to all of the questions and choose the standalone option.
apt-get install proftpd
phpMyAdmin
phpMyAdmin is a good, high level tool for managing a MySQL database.
apt-get install phpmyadmin
SSL
See Creating a Self-Signed SSL Certificate on Ubuntu for createing a self signed SSL certificate.