You are on page 1of 4

Setting up a LAMP stack — Fedora Unity Project Page 1 of 4

Setting up a LAMP stack


The so-called LAMP stack is one of the most compelling reasons to install Linux in
the first place and probably the one primary purpose for many Fedora server-
based installations. The combination of Linux/Apache/MySQL/PHP (or Perl, or
even Python) allows webmasters to build websites and run complex applications
such as a webmail interface or a wiki.

Requirements

The requirements for a server running Fedora can range somewhat more widely than those
recommended in the release notes, depending on the use case. A small, private server with light
use can easily handle its expected load with even less memory/storage/speed than the release
notes necessarily call for. On the other hand, a server designed to withstand huge amounts of
traffic can benefit from multiple processors, several gigabytes of RAM, and large arrays of disk
drives. As a server administrator, you'll need to use your best judgment for your use case.

Hardware aside, this article assumes nothing more than a fresh Fedora installation and shell
access as root (all commands listed here assume you execute them as root). Configuring for
specific uses (setting up Virtual Hosts, installing web applications or creating websites, or
learning PHP) are beyond the scope of this article, which only covers setup.

For people who want to install xampp follow this howto instead of trying to install the xampp
blob of unmanageable crap.

Doing the work

The best way to install a LAMP stack is to install each letter in sequence; to spell out the word
LAMP, in effect.

Linux

If you've already got Fedora installed, then you've accomplished this step. If you haven't, check
out Install Solutions

for more details on installing and configuring Fedora.

Apache

1. Installing Apache means installing the program which will handle requests to your web
server. For most people, Apache itself is the web server, terminologically speaking. In
your Fedora installation, depending on the choices you made during the install process,
you may or may not have Apache already installed. Just use the following command to
check:

http://fedorasolved.org/server-solutions/lamp-stack 25.04.2013
Setting up a LAMP stack — Fedora Unity Project Page 2 of 4

# rpm -q httpd

2. If it tells you a version number, then it's installed and we can progress to the next step.
Otherwise, we need to install it:

# yum install httpd

3. After installation, the service must be configured to start automatically.

# /sbin/chkconfig httpd on

4. To start the server process immediately:

# /sbin/service httpd start

5. (F10 or older) Finally, it's important to make sure that port 80 is remotely accessible, by
configuring iptables to open the port (and to leave it open by default from the outside).
The following commands will remember the rule for you across reboots and apply it
immediately:

# echo '-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT'
>> /etc/sysconfig/iptables

# /sbin/service iptables restart

You can put in the hostname or IP address of the server in the address bar of a web
browser (whether on the same host or elsewhere in the network) to test the installation.
You'll see a welcome page if everything was successful. Otherwise, refer to
troubleshooting.

6. (F11 or newer) 1. Execute the 'system-config-firewall-tui' command as root:

# system-config-firewall-tui

2. Use tab to navigate to "customize" and press [enter].


3. Use the arrow keys to navigate to WWW (HTTP) and press the space bar or [enter].
4. Use tab to navigate to 'forward' and press [enter].
--- httpd is allowed now once we save
--- mysql steps
5. On the "Other Ports" screen, use tab to select 'add'.
6. For the Port/Port-Range, enter 3306. For the protocol, enter tcp. Use tab to navigate to
'OK' and press [enter].
7. Use tab to navigate to 'close' and press [enter].
8. Use tab to navigate to 'OK' and press [enter].
9. Use tab to navigate to 'Yes' and press [enter].

MySQL

NOTE:

This is the abbreviated process to setup MySQL.

http://fedorasolved.org/server-solutions/lamp-stack 25.04.2013
Setting up a LAMP stack — Fedora Unity Project Page 3 of 4

1. Installing and running the database component of the LAMP stack, called MySQL, is at
least as easy. The following command will install the database and the server process.

# yum install mysql mysql-server

2. (F10 or older only) The server process must likewise be running and accessible.

# /sbin/chkconfig mysqld on

# echo '-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT'
>> /etc/sysconfig/iptables

# /sbin/service iptables restart

# /sbin/service mysqld start

3. To test that everything is working okay so far, run this command to print out some
information and check its status:

# mysqladmin version status

PHP (or Perl or Python)


PHP interprets the scripts of your favorite web site or application, running on top of the
other parts of the LAMP stack.

1. The following command will install PHP, along with the needed stuff to glue it together
with the web server and the database.

# yum install php php-mysql

2. PHP is pretty much ready to run after that, although you may need to restart the web
server to make sure it loads the PHP module.

# /sbin/service httpd restart

If you'd like to use another 'P' in the place of PHP (or install alongside), the steps are
pretty similar. Both Perl and Python come with ways to access MySQL and modules to
allow them to run smoothly and quickly inside of Apache.

3. To run Python on your web server, run the following. (Python is already installed on all
Fedora installations, so it's not needed to install that as well.)

# yum install mod_python MySQL-python

4. For Perl, the following will get you started:

# yum install perl mod_perl perl-DBD-mysql

Don't forget to restart the web server after either (or both) of these commands to make
sure the relevant modules will be loaded by Apache.

http://fedorasolved.org/server-solutions/lamp-stack 25.04.2013
Setting up a LAMP stack — Fedora Unity Project Page 4 of 4

Troubleshooting

Definitively testing the whole thing is pretty easy. You can create a small test PHP file and try to
access it.

1. Create the test script:

# echo "<?php phpinfo(); ?>" > /var/www/html/index.php

Then access the web server by putting the address in any web browser that can access the
server. If your server's IP address is 192.168.1.100, put that in the address bar. By going
to that address, you should see a long detailed page describing PHP's configuration and
status in detail.

You can skip down to the MySQL section by putting a jump in the address bar to it. (If
you used http://192.168.1.100/ to access the page, use
http://192.168.1.100/#module_mysql to skip down to the relevant part.) You should see
various options about MySQL enumerated.

2. If all this is successful, you should delete the script you just created.

# rm -f /var/www/html/index.php

Now it's time to install your favorite web application (phpBB, mediawiki,
squirrelmail/roundcube) or learn PHP.

Bugs
Since I don't personally use Perl for web development, I'm not sure what exactly is needed to use
it with a database.

Disclaimer
We test this stuff on our own machines, really we do. But you may run into problems, if you do,
come to #fedora on irc.freenode.net

http://fedorasolved.org/server-solutions/lamp-stack 25.04.2013

You might also like