Unmanaged Ubuntu 12.10 VPS - Easy Start With a LAMP Server and Webmin.

Having an unmanaged vps server is not always a bad thing if you are not too  ambitious and know what you are doing.It certainly saves a lot of money as they come cheaper compared to managed ones.

One of the easiest and most flexible way to get started with an Unmanaged server is to install a Linux os called Ubuntu (12.10)  + Apache + Mysql + Php thus called LAMP Server. These are four basic components that make a webpage work.

Working with these components can be hard unless you have a descent UI to deal with.Thus we are going to install Webmin .

We will also try to install some other useful tools for the server that can make your life less painful.

First things first: update

sudo apt-get update && sudo apt-get upgrade

LAMP Stack (Apache, Mysql, PHP)

This will install the LAMP stack in one command
sudo apt-get install lamp-server^


sudo apt-get install phpmyadmin
Choose Apache and then YES for dbconfig-common. If you ever need to edit phpMyAdmin config:
sudo nano /etc/dbconfig-common/phpmyadmin.conf


First install the required components for webmin to work-
apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Install webmin -
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb 

then run the command : dpkg --install webmin_1.660_all.deb 

The install will be done automatically to /usr/share/webmin, the administration username set to root and the password to your current root password. You should now be able to login to Webmin at the URL http://localhost:10000/. Or if accessing it remotely, replace localhost with your system's IP address. 


sudo apt-get install proftpd
(I always select “standalone”) Turn on Passive FTP via Webmin: Servers –> ProFTPD server –> Virtual Servers –> Default Server –> Networking Options
Masquerade as address = your-server-outside-ip
PASV Port Range: 1024-1088


sudo apt-get install sendmail

PostFix Mail

sudo apt-get install postfix
Select “Internet Site” and then enter the domain name you want the Reverse DNS entry to be. BTW: To avoid your server being blacklisted, get a reverse DNS entry!

Alternative PHP Cache (APC)

APC is the de-facto in PHP acceleration. It’s a PHP opcode cacher and works by caching PHP objects, functions, and database queries into your server’s RAM. If you run a WordPress web site – then it takes full advantage of APC out-of-the-box. See my post on The Perfect APC Configuration
sudo apt-get install php-apc
By default, Ubuntu will install this from a repository which has an outdated version. To install the latest version of APC:
sudo apt-get install make
sudo apt-get install libpcre3-dev
sudo apt-get install php-pear
sudo pecl install apc
sudo /etc/init.d/apache2 restart
Uninstall APC
sudo pecl uninstall apc


Like APC, Memcached is a high-performance, distributed memory object caching system. However, it can work together with multiple servers (unlike APC).
sudo apt-get install memcached
sudo apt-get install php-pear
sudo pecl install memcache
Check to see if Memcached is running
ps aux | grep memcached

Image Magick

sudo apt-get install imagemagick


Icecast is a streaming audio server. If you ever wanted to have your own web radio station (like Shoutcast) here it is:
sudo apt-get install icecast2
Configure Icecast2. Mainly, setting up your passwords and default port.
sudo nano /etc/icecast2/icecast.xml
Enable init.d script. Scroll to the bottom and change enable=true
sudo nano /etc/default/icecast2/
Start icecast2
sudo /etc/init.d/icecast2 start
If you left the default port as 8000 then you can view your Icecast2 Server

Munin – Graphical Server Monitor

Munin requires PHP-CLI
sudo apt-get install php-cli
Now, this is a single server setup, so let’s install munin and munin-node
sudo apt-get install munin munin-node
Configure Munin:
sudo nano /etc/munin/munin.conf
The first thing you should see is the operating directories. We need to change one of them:
# dbdir   /var/lib/munin
# htmldir /var/cache/munin/www
# logdir /var/log/munin
# rundir  /var/run/munin
# dbdir   /var/lib/munin
htmldir /var/www/munin
# logdir /var/log/munin
# rundir  /var/run/munin
Now let’s edit apache.conf
sudo nano /etc/munin/apache.conf
Delete everything inside apache.conf  and just add:
Alias /munin /var/www/munin
Move the web files to /var/www/munin
sudo mv /var/cache/munin/www/ /var/www/munin
Set permissions
sudo chown munin.munin -R /var/www/munin
Restart Munin
sudo /etc/init.d/munin-node restart
Finally, restart Apache
sudo /etc/init.d/apache2 restart

Cacti – Graphical Server Monitor

sudo apt-get install cacti-spine
Choose YES for dbconfig-common and Apache2. When finished you need to configure:
Default user & pass: admin / admin Remove cacti
sudo apt-get remove cacti

BMON – Simple CLI Bandwidth Monitor

sudo apt-get install bmon
When it’s finished installing:

Zip and Unzip

In my experience ZIP is great for creating archives for sharing via email or ftp. It’s a universal format that almost everyone can open. I would NOT use ZIP for file backups. For large backups, see 7ZIP or TAR below.
sudo apt-get install zip
Zip up a folder:
zip uploads-backup.zip /wp-content/uploads
Unzip (extract) an archive:
unzip uploads-backup.zip /wp-content/uploads


7ZIP is a very popular archiving program with excellent compression. Plus, it’s open source and supports multiple operating systems.
sudo apt-get install p7zip
Create an archive
7za a uploads-backup.7z /wp-content/uploads
Extract an archive
7za e uploads-backup.7z /wp-content/uploads

TAR (Tape Archive)

TAR –  is the prefered way to handle large file backups. I’ve read, the maximum allowed file size only depends on your hard drive. A disk formated with FAT32 for example, only allows 2GB. You can also compress TAR using GZIP or BZ2.
tar -cvf uploads-backup.tar /wp-content/uploads
GZIP – good compression, is very fast. Note: .tar.gz and .tgz are the same:
tar -cvzf uploads-backup.tgz /wp-content/uploads
BZ2 – excellent compression, but slower. I find BZ2 works best if you’re archiving a smaller directory. Note: .tar.bz2 and .tbz are the same:
tar -cvfj plugins-backup.tbz /wp-content/plugins
Untar (extract) an archive:
tar -xvf uploads-backup.tar /wp-content/uploads

Other handy related commands:

Download files
wget http://example.com/wp-content/uploads/uploads-backup.tar
Set a password
sudo passwd ubuntu
Edit PHP.ini
sudo nano /etc/php5/apache2/php.ini
Restart Apache
sudo /etc/init.d/apache2 restart
Set Recursive Permissions for your websites direcotry
sudo chmod -R 775 /var/www/
cd /var/www/ sudo chmod -R www-data:www-data FOLDER NAME

Block IP addresses/hackers using IPTABLES

Single IP
iptables -A INPUT -s -j DROP
IP Range
iptables -A INPUT -s -j DROP
You can also manage IPTABLES (e.g., the linux firewall) via Webmin under “Networking”.

Manage packages

sudo apt-get update && sudo apt-get upgrade
sudo apt-get autoremove

Remove LAMP

sudo apt-get purge libapache2-mod-auth-mysql phpmyadmin
sudo apt-get purge mysql-server mysql-server-5.1 mysql-server-core-5.1
sudo apt-get purge apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5
sudo apt-get autoremove

Serve your websites from an EBS volume

This practice has saved my butt on more than one occasion. Rather than use the given storage attached to the EC2 instance, I always create a 1TB EBS volume and mount it as /public_html/. That way, if your EC2 instance crashes…you’re web site files will not. For this, we’ll assume our attached EBS volume is /xvdf/. First you must be logged in as root:
Make sure you’re in the file system root:
Now, let’s list all the attached drives. You should see /dev/xvda1, /dev/xvdb, /dev/xvdf/ etc…
sudo fdisk -l
Let’s make a directory (such as /public_html/)
mkdir /public_html/
Finally, let’s mount our EBS volume:
mount -t ext4 /dev/xvdf /public_html/
Now you can serve your websites from an EBS volume!

Benchmark the CPU

time for i in {0..10000}; do for j in {0..1000}; do :; done; done

Popular posts from this blog

Free 2TB of storage space on Baidu Yun 2017 - 2018

Here's how to extend Reliance Jio Prime membership for another one year for free - Steps / Video

How to Delete all Gmail emails at once !