Vahid
September 13th, 2008, 02:55
Build Your Own Web Server ~
Quick & Easy Do it Yourself Installation ~ All within 24 hours !!!!
Apache 2 - Linux Web server
MySQL 5 - MySQL Database Server
PHP4/5 - PHP Scripting Language
phpMyAdmin - Web-based database admin software.
Webalizer - Website Traffic Analyzer
Mail Server - Postfix (MTA) with Dovecot IMAP/POP3 + Sasl Authentication
Squirrelmail - A web based email
VSFTP - A fast ftp server to upload files
Webmin - A freely available server control panel
ClamAV - Antivirus software.
A Firewall using IPtables.
Note: Linux + Apache + MySQL + PHP/Perl together commonly known as LAMP Server.
First, let us prepare a system that has a minimum requirement of Debian/Ubuntu version of linux with atleast 256MB of RAM available.Anything less than this minimum ram will cause lot of problems since we are running a server along especially mysql and webmin requires lot of RAM to run properly. Mysql will give you this nasty error "cannot connect to mysql.sock" if you dont have enough memory in your server.
I love debian/ubuntu based linux because of my enormous affinity towards this command apt-get. As a starter knowing this one command, It is so easy to install packages and you dont need to worry about package dependency and configuration. You need to buy a dedicated server or a VPS package if you want to setup your own server. If you want to experiment with the server and installation it is recommended to buy a vps package from various hosts. I prefer vpslink (http://vpslink.com/) because of their pricing. Believe it or not it is so easy to install and configure your server yourself eventhough you are new are to linux and dedicated/vps hosting.
First download PuTTy (http://the.earth.li/%7Esgtatham/putty/latest/x86/putty.exe) if you are accessing your server through SSH. Just enter the IP of your server with root login to access your host. As you probably know, Webmin (http://mysql-apache-php.com/#webmin) is a freely available server control panel and we will setup this once we have completed the LAMP server and Mail Server. Webmin makes more easier for us to fine tune our linux box.
Before proceeding to install, update the necessary packages with debian with this command.
apt-get install update
1. Installing Apache + PHP
Apache is one of the most famous web server which runs on most linux based servers. With just few commands you can configure apache to run with PHP 4 or PHP 5.
If you want to install PHP 4, just apt-get
apt-get install apache2 php4 libapache2-mod-php4
To install PHP5, just run the following on linux shell. Note that if you dont specify packages with '4', PHP5 will be automatically installed.
apt-get install apache2 php5 libapache2-mod-php5
Apache configuration file is located at: /etc/apache2/apache2.conf and your web folder is /var/www
To check whether php is installed and running properly, just create a test.php in your /var/www folder with phpinfo() function exactly as shown below.
nano /var/www/test.php
# test.php
<?php phpinfo(); ?>
Point your browser to http://ip.address/test.php or http://domain/test.php and this should show all your php configuration and default settings.
You can edit necessary values or setup virtual domains using apache configuration file.
Enabling GD Library with PHP
If you want to use CAPTCHA or for dynamic image generation with php scripts for image verification to stop SPAM or automated robots, then it is absolutely necessary to get php gd library installed with php. Here is the command
apt-get install php5-gd
Thats it!! Point your browser to http://domain/test.php and the php configuration settings will show GD library will be enabled for PNG, GIF, JPG etc.
Enabling Mod Rewrite with .htaccess
Do you use mod-rewrite from apache to rewrite friendly URLs ?? This must be absolutely necessary for the rewrite module to get enabled in your apache, especially if your blog, forum script uses rewriting engine to generate friendly URLs in your site. Note that default apache2 installation does not come with mod-rewrite. Here is how you enable it. Issue the following command
# a2enmod rewrite
Once you run this command, apache will tell you that this rewrite module is enabled. You can find mod_rewrite enabled and show up in your test.php file.
I often experienced page not found 404 error with debian/ubuntu versions eventhough your apache runs with mod-rewrite. To fix this, you will need to edit the following file to make some changes.
nano /etc/apache2/sites-enabled/000-default
Find the following and change AllowOverride from None to All
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>
Upload the .htaccess file to your server and restart apache. /etc/init.d/apache2 restart
Make sure your .htaccess file has 644 permission as otherwise you get permission denied error.
NOTE: I have often experienced .htaccess remaining invisible or disappearing problem when i uploaded any dotted files in the server (like .htaccess .ftpquota). Actually FTP clients do write .htaccess file but they do not show up when you upload. This happened with me using VSFTP. Here is how you fix (http://mysql-apache-php.com/#dotfix)
2. Installing MySQL Database Server
Installing mysql database server is always necessary if you are running a database driven ecommerce site. Remember running mysql server to a fair extend requires atleast 256mb of RAM in your server. So unless you are running database driven sites you dont absolutely need mysql. The following commands will install mysql 5 server and mysql 5 client.
apt-get install mysql-server mysql-client php5-mysql
Note: If you have already installed php4, you should make a slight change like this.
apt-get install mysql-server mysql-client php4-mysql
The configuration file of mysql is located at: /etc/mysql/my.cnf
Creating users to use MySQL and Changing Root Password
By default mysql creates user as root and runs with no passport. You might need to change the root password.
To change Root Password
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('new-password') WHERE user='root';
mysql> FLUSH PRIVILEGES;
To Create User
You must never use root password, so you might need to create a user to connect to mysql database for a PHP script. Alternatively you can add users to mysql database by using a control panel like webmin or phpMyAdmin to easily create or assign database permission to users. We will install Webmin (http://mysql-apache-php.com/#webmin) and phpmyadmin (http://mysql-apache-php.com/#phpmyadmin) during later once we complete basic mail LAMP installation.
Quick & Easy Do it Yourself Installation ~ All within 24 hours !!!!
Apache 2 - Linux Web server
MySQL 5 - MySQL Database Server
PHP4/5 - PHP Scripting Language
phpMyAdmin - Web-based database admin software.
Webalizer - Website Traffic Analyzer
Mail Server - Postfix (MTA) with Dovecot IMAP/POP3 + Sasl Authentication
Squirrelmail - A web based email
VSFTP - A fast ftp server to upload files
Webmin - A freely available server control panel
ClamAV - Antivirus software.
A Firewall using IPtables.
Note: Linux + Apache + MySQL + PHP/Perl together commonly known as LAMP Server.
First, let us prepare a system that has a minimum requirement of Debian/Ubuntu version of linux with atleast 256MB of RAM available.Anything less than this minimum ram will cause lot of problems since we are running a server along especially mysql and webmin requires lot of RAM to run properly. Mysql will give you this nasty error "cannot connect to mysql.sock" if you dont have enough memory in your server.
I love debian/ubuntu based linux because of my enormous affinity towards this command apt-get. As a starter knowing this one command, It is so easy to install packages and you dont need to worry about package dependency and configuration. You need to buy a dedicated server or a VPS package if you want to setup your own server. If you want to experiment with the server and installation it is recommended to buy a vps package from various hosts. I prefer vpslink (http://vpslink.com/) because of their pricing. Believe it or not it is so easy to install and configure your server yourself eventhough you are new are to linux and dedicated/vps hosting.
First download PuTTy (http://the.earth.li/%7Esgtatham/putty/latest/x86/putty.exe) if you are accessing your server through SSH. Just enter the IP of your server with root login to access your host. As you probably know, Webmin (http://mysql-apache-php.com/#webmin) is a freely available server control panel and we will setup this once we have completed the LAMP server and Mail Server. Webmin makes more easier for us to fine tune our linux box.
Before proceeding to install, update the necessary packages with debian with this command.
apt-get install update
1. Installing Apache + PHP
Apache is one of the most famous web server which runs on most linux based servers. With just few commands you can configure apache to run with PHP 4 or PHP 5.
If you want to install PHP 4, just apt-get
apt-get install apache2 php4 libapache2-mod-php4
To install PHP5, just run the following on linux shell. Note that if you dont specify packages with '4', PHP5 will be automatically installed.
apt-get install apache2 php5 libapache2-mod-php5
Apache configuration file is located at: /etc/apache2/apache2.conf and your web folder is /var/www
To check whether php is installed and running properly, just create a test.php in your /var/www folder with phpinfo() function exactly as shown below.
nano /var/www/test.php
# test.php
<?php phpinfo(); ?>
Point your browser to http://ip.address/test.php or http://domain/test.php and this should show all your php configuration and default settings.
You can edit necessary values or setup virtual domains using apache configuration file.
Enabling GD Library with PHP
If you want to use CAPTCHA or for dynamic image generation with php scripts for image verification to stop SPAM or automated robots, then it is absolutely necessary to get php gd library installed with php. Here is the command
apt-get install php5-gd
Thats it!! Point your browser to http://domain/test.php and the php configuration settings will show GD library will be enabled for PNG, GIF, JPG etc.
Enabling Mod Rewrite with .htaccess
Do you use mod-rewrite from apache to rewrite friendly URLs ?? This must be absolutely necessary for the rewrite module to get enabled in your apache, especially if your blog, forum script uses rewriting engine to generate friendly URLs in your site. Note that default apache2 installation does not come with mod-rewrite. Here is how you enable it. Issue the following command
# a2enmod rewrite
Once you run this command, apache will tell you that this rewrite module is enabled. You can find mod_rewrite enabled and show up in your test.php file.
I often experienced page not found 404 error with debian/ubuntu versions eventhough your apache runs with mod-rewrite. To fix this, you will need to edit the following file to make some changes.
nano /etc/apache2/sites-enabled/000-default
Find the following and change AllowOverride from None to All
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>
Upload the .htaccess file to your server and restart apache. /etc/init.d/apache2 restart
Make sure your .htaccess file has 644 permission as otherwise you get permission denied error.
NOTE: I have often experienced .htaccess remaining invisible or disappearing problem when i uploaded any dotted files in the server (like .htaccess .ftpquota). Actually FTP clients do write .htaccess file but they do not show up when you upload. This happened with me using VSFTP. Here is how you fix (http://mysql-apache-php.com/#dotfix)
2. Installing MySQL Database Server
Installing mysql database server is always necessary if you are running a database driven ecommerce site. Remember running mysql server to a fair extend requires atleast 256mb of RAM in your server. So unless you are running database driven sites you dont absolutely need mysql. The following commands will install mysql 5 server and mysql 5 client.
apt-get install mysql-server mysql-client php5-mysql
Note: If you have already installed php4, you should make a slight change like this.
apt-get install mysql-server mysql-client php4-mysql
The configuration file of mysql is located at: /etc/mysql/my.cnf
Creating users to use MySQL and Changing Root Password
By default mysql creates user as root and runs with no passport. You might need to change the root password.
To change Root Password
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('new-password') WHERE user='root';
mysql> FLUSH PRIVILEGES;
To Create User
You must never use root password, so you might need to create a user to connect to mysql database for a PHP script. Alternatively you can add users to mysql database by using a control panel like webmin or phpMyAdmin to easily create or assign database permission to users. We will install Webmin (http://mysql-apache-php.com/#webmin) and phpmyadmin (http://mysql-apache-php.com/#phpmyadmin) during later once we complete basic mail LAMP installation.