This is a mirror copy, Go to the latest version.
Linux, Apache web server, MySQL database and PHP scripting (LAMP) is very popular platform for web solutions. This tutorial shows how to install and configure Apache web server, MySQL database and scripting language. Linux, Apache, MySQL, PHP (LAMP) is very popular platform for web solutions. LAMP is Free, stable, easy to learn and well documented.
To install servers, you first have to become root with su
-
. Install the actual web server program
yum install httpd
If you don't have yum, you can use rpm -i httpd*.i386.rpm
or apt-get install httpd
.
Start web server, make it start automatically on boot
/etc/init.d/httpd start
chkconfig httpd on
Now your web server should be running. When you surf to
http://localhost
, you should see a test page.
mozilla http://localhost
Localhost usually works even without hole in the firewall. If you do not see your test page right away, click shift-reload (ctrl-shift-R or shift-F5) to bypass cache.
Hide the testpage, so that your computer does not look like a punching bag for wannabe crackers
echo "go
away" > /var/www/html/index.html
Make a hole into firewall to make your web server visible to others.
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
Check your ip number (it's not 127.0.0.1)
/sbin/ifconfig/
and surf to that address, for example http://10.0.0.1
.
If you see your test page, congratulations, you just installed your
web server!
Other servers in Linux are installed just like above: install the program, start it and make it start automatically, and make a hole in the firewall.
Web server content directory /var/www/html/
is not
writable by normal users, and you don't want to edit web pages as
root. That's why users create homepages
in /home/foo/public_html
. Homepages are shown in
http://localhost/~foo
yum install pine
pico /etc/httpd/conf/httpd.conf
Find the section about homepages by searching ctrl-W
for
public_html, then comment out the line with UserDir disable
and remove the comment char "#
" from the line UserDir
public_html
.
Activate your changes by restarting the web server.
/etc/init.d/httpd restart
Your users can now create homepages.
If you are still root (if you have a # in your prompt),
exit
.
Create a directory for homepages. Home directory, public_html and all directories under public_html must be executable (x) by all, so that web server can access files under them if it knows their name. Files must be readable by the web server.
cd $HOME
mkdir public_html
echo "my homepage" > public_html/index.html
chmod a+x $HOME $HOME/public_html
chmod a+r $HOME/public_html/index.html
If you have a lot of users (10+), automate this by putting
public_html
and index.html
to
/etc/skel
and check default home dir permissions.
Browse to your home page. If your
name is "user", it is located in http://localhost/~user
. If
you can see "my homepage", you are now a happy owner of a homepage.
PHP is a powerfull scripting language with a C++ like syntax, many readymade classes, good examples and great documentation.
yum install php
Because php is a module, you must restart a web server to load it.
/etc/init.d/httpd restart
As a normal user, write a sample php page
cd $HOME/public_html
pico hello.php
Write this sample code to hello.php
<?php echo "Hello PHP World, 2+2 is " . 2+2; ?>
Text outside code block is printed normally to web page.
Usually there is a normal html web page outside the <?php
code ?>
.
Browse to http://localhost/~user/hello.php
. Put your own
login name instead of user
. If you see "Hello PHP World, 2+2
is 4", you have installed php and written your first program.
Install mysqld just like any server, but don't make a hole for it in the firewall. It is only used locally by Apache.
yum install mysql-server mysql
/etc/init.d/mysqld start
chkconfig mysqld on
Try your new SQL server
mysqlshow
+-----------+ | Databases | +-----------+ | mysql | | test | +-----------+
Two databases. mysql
contains database management system
internal data, so don't edit it. test
is a safe sandbox to
play with.
mysqlshow test
Database: test +--------+ | Tables | +--------+ +--------+
If for some reason you do not have database test
, create
it CREATE DATABASE test;
and then USE test;
No tables in database test
yet. Let's CREATE
some.
mysql
On the prompt mysql>
, you can type mysql commands
(USE, SHOW) or sql queries (CREATE, INSERT, SELECT).
USE test;
SHOW tables;
CREATE TABLE persons( name VARCHAR(50), email VARCHAR(50) );
SHOW tables;
DESC persons;
INSERT INTO persons VALUES('Tero Karvinen', 'karvinen
SELECT * FROM persons;
INSERT INTO persons VALUES('Sample Person', 'recycle@nosuch.invalid');
SELECT * FROM persons;
QUIT
After the two INSERT
s, the last SELECT
should
return a table with two records
+---------------+---------------------------+ | name | email | +---------------+---------------------------+ | Tero Karvinen | karvinen <at-sign> iki.fi | | Sample Person | recycle@nosuch.invalid | +---------------+---------------------------+ 2 rows in set (0.01 sec)
You have now installed a database management system, and you also know some SQL.
A database by itself is not very usefull - it needs a user interface. To create a web interface to database, we use PHP scripting language.
yum install php-mysql
/etc/init.d/httpd restart
Let's write a simple program to display our database. Use
pico $HOME/public_html/mysql.php
to copy this
script to a file
PHP database example - http://iki.fi/karvinen. <br>
<?php
/* database.php - Use mysql database from php
* (c) 200309 Tero.Karvinen <at-sign> iki.fi, adapted from php.net
* See http://iki.fi/karvinen Linux Apache MySQL PHP tutorial. */
/* Connect to database */
$link = mysql_connect("localhost", "root", "")
or die("Could not connect : " . mysql_error());
print "Connected successfully";
mysql_select_db("test") or die("Could not select database");
/* Perform SQL query */
$query = "SELECT * FROM persons";
$result = mysql_query($query)
or die("Query failed : " . mysql_error());
/* Print results in HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t\n";
}
print "</table>\n";
mysql_free_result($result);
/* Close connection */
mysql_close($link);
?>
Browse to http://localhost/~user/database.php
. Use your
own login name instead of user
. You should see:
PHP database example - http://iki.fi/karvinen.
Connected successfully
Tero Karvinen karvinen iki.fi
Sample Person recycle@nosuch.invalid
If you see the two email addreses from the database, congratulations! You have successfully completed every part of this tutorial.
Write YUM howto with links to yum, freshrpms-gpg-key, redhat-gpg-key and fedora-gpg-key. Pretty print code block without pre.
This is just an old copy. Go to the latest version.
Copyright 2003 Tero Karvinen. All rights reserved. XHTML Basic 1.0