How to Install Linux, Apache, MySQL, and PHP LAMP Stack on Ubuntu 24.04LTS Server

Image : How to Install Linux, Apache, MySQL, and PHP LAMP Stack on Ubuntu 24.04LTS Server

In this article we cover taking an Ubuntu 24.04LTS server and expanding it into a full blown Linux, Apache, MySQL, and PHP (LAMP) web server.

What is a LAMP Stack

A LAMP stack is a popular framework for building and deploying web applications. The acronym stands for:

Linux serves as the operating system.

Apache handles the HTTP/HTTPS web requests.

MySQL manages and stores data – the data engine.

PHP is a programming language that processes the business logic and generates dynamic content.

A LAMP stack is a comprehensive web server that is very popular today, and has been so for 20-plus years.

The LAMP stack is widely used because it provides a robust and reliable platform with open-source components, meaning it’s cost-effective and highly customizable.

My LAMP Development Configuration

I have a Windows 10 laptop that runs VirtualBox virtualization software.

I created an Ubuntu 24.04LTS guest on VirtualBox in preparation for creating a complete LAMP server.

If you have been following along on my YouTube channel or on my blog, you have an idea of what we are doing and where we are going.

I use these local LAMP servers for developing and testing PHP programs.

Ultimately these PHP applications will be moved to a commercial LAMP server.

Prerequisites

You will need to have access to an Ubuntu 24.04LTS server and you will need to have sudo privileges.

I have created a clone of a Ubuntu 24.04LTS server in preparation for creating a LAMP server.

In this article and, associated YouTube video, I will demonstrate all the Linux command line commands necessary to take a bare Ubuntu 24.04LTS server into a full featured LAMP server.

Step 1 is to Update and Upgrade System Packages

The first thing you need to do is update the server to the latest package index. And then upgrade any local packages that need to be updated. And finally remove any non-used packages and Kernels.

This consists 3 commands:

1. sudo apt update

2. sudo apt upgrade

3. sudo apt autoremove

The command sudo apt update – is used to update the list of available packages and their versions from the repositories defined in your system’s configuration files. It doesn’t actually install or upgrade any packages; it simply fetches the latest package information so that you can later install or upgrade packages with up-to-date information or code.

Running apt update regularly ensures that your system has the latest package information.

The sudo apt upgrade command is used to upgrade installed packages.

At this point run the 4 below commands:

1. sudo apt update

2. sudo apt upgrade

3. sudo apt autoremove

4. sudo reboot

sudo apt autoremove is used to remove any old packages and old Kernels.

After running sudo apt autoremove, I would recommend a reboot to ensure everything is loaded properly.

Run sudo reboot to reboot your server.

Step 2 Install the Apache Web Server

This consists 5 commands:

1. sudo apt install apache2

2. sudo systemctl start apache2

3. sudo systemctl stop apache2

4. sudo systemctl enable apache2

5. sudo systemctl status apache2

Run the command sudo apt install apache2 to download and install the Apache2 HTTP server along with any dependencies it requires.

1. sudo systemctl start apache2 – Starts Apache.

2. sudo systemctl stop apache2 – Stops Apache.

3. sudo systemctl enable apache2 – Sets Apache to be started when the server starts up.

4. sudo systemctl status apache2 – Provides the status of Apache.

systemctl is responsible for initializing and managing system services and resources during boot and runtime.

The output of sudo systemctl status apache2 will look something like this:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-09-06 21:49:22 UTC; 17min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 799 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 968 (apache2)
      Tasks: 6 (limit: 4614)
     Memory: 19.7M (peak: 19.9M)
        CPU: 437ms
     CGroup: /system.slice/apache2.service
             ├─968 /usr/sbin/apache2 -k start
             ├─995 /usr/sbin/apache2 -k start
             ├─996 /usr/sbin/apache2 -k start
             ├─997 /usr/sbin/apache2 -k start
             ├─998 /usr/sbin/apache2 -k start
             └─999 /usr/sbin/apache2 -k start

Sep 06 21:49:15 firstinstall systemd[1]: Starting apache2.service - The Apache HTTP Server...
Sep 06 21:49:22 firstinstall apachectl[859]: AH00558: apache2: Could not reliably determine the server's full>
Sep 06 21:49:22 firstinstall systemd[1]: Started apache2.service - The Apache HTTP Server.


Verify Apache is configured properly by entering the following command in a browser URL http://<your server's IP Address>/

Step 3 Activate and Configure the Uncomplicated Firewall (UFW)

This consists of 6 commands:

1. sudo ufw enable

2. sudo ufw disable

3. sudo ufw status

4. sudo ufw app list

5. sudo ufw allow ‘Apache Full’

6. sudo ufw allow ‘OpenSSH’

Ubuntu uses the Uncomplicated Firewall (UFW).

The Uncomplicated Firewall is a wrapper that makes it easier to manage the Linux built-in iptables firewall. In other words, iptables is the actual firewall.

For our purposes, we will use a subset of the UFW commands. Basically, all we need from UFW is to open the Apache server’s ports, along with opening the OpenSSH ports. UFW can do a lot more than we will cover here.

Enable and start UFW: sudo ufw enable This activates the firewall with default settings.

1. sudo ufw disable turns off the firewall.

2. sudo ufw status shows whether UFW is active and displays the rules currently in place.

In Ubuntu, the Uncomplicated Firewall (UFW) simplifies the process of managing firewall rules. UFW has predefined application profiles for commonly used services.

To allow the Apache web server port 80 (not secured/HTTP) and port 443 (secured/ HTTPS) issue the command sudo ufw allow ‘Apache Full’

To allow the OpenSSH port to be opened, issue the command sudo ufw allow ‘OpenSSH’

At this point you can run sudo ufw status to verify how UFW is configured.

To verify Apache is still available access http://<your server’s IP>/ in your web browser.

Step 4 Install the MySQL Data Server

We will cover 6 commands:

1. sudo apt install mysql-server

2. sudo systemctl start mysql

3. sudo systemctl stop mysql

4. sudo systemctl enable mysql

5. sudo systemctl status mysql

6. sudo mysql_secure_installation

To install the MySQL package and all of its dependencies run ”sudo apt install mysql-server“.

Run sudo systemctl enable mysql to ensure MySQL starts on every reboot.

The command sudo systemctl start mysql starts the data engine.

The command sudo systemctl stop mysql stops the data engine.

sudo systemctl enable mysql sets MySQL to start on boot.

sudo systemctl status mysql provides the status of the MySQL data engine.

sudo mysql_secure_installation is a shell script that secures your MySQL installation. We will not cover this in this article.

Step 5 Install PHP

We will cover 2 commands:

1. sudo apt install php libapache2-mod-php php-mysql

2. php -v

To install PHP run the command sudo apt install php libapache2-mod-php php-mysql

on the command line.

To verify the PHP programming language has been installed, run the command php -v.

Step 6 Install Command-Line PHP

We will cover 2 commands:

1. sudo apt install php-cli

2. php -v

To install the PHP command line package issue the command sudo apt install php-cli.

To verify issue the command php -v

Step 7 Test Your LAMP Stack

Test PHP

Vi instructions:

1) To utilize vi issue the command “vi <file-name>”.

2) Once a file is opened using vi, press the “i” to go into insert mode.

3) Then copy the below-provided code and then place your cursor into vi and press the CTRL P keyboard combination. This will insert the text into the file being edited by vi.

4) Press the “esc” key to put vi into command mode.

5) Then press the colon key “:” Look to the lower left of the vi editor.

6) Then press the “w” key followed by the “q” key. The lowercase “w” is for write and the lowercase “q” is for quit.

Enter the command sudo vi /var/www/html/info.php

Cut and paste the following code into the file being edited.

<?php
phpinfo();
?>

Test using a browser by entering the following in the URL of the browser and then press the enter key. http://<your-ip-address>/info.php

Test PHP/MySQL Connection

Enter the command sudo mysql

Enter the command ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

Enter the command exit;

Enter the command sudo vi /var/www/html/test-db-connection.php

Cut and paste the following into the file test-db-connection.php

<?php
$servername = "localhost";
$username = "root";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

Test the connection using a browser by entering the following in the URL of the browser and then pressing the enter key. http://<your-ip-address>/test-db-connection.php

If you would like to check the status of MySQL enter the command sudo systemctl status mysql

Test Command line PHP

Cut and paste the following 3 lines into the file test-cli.php

Enter the command sudo vi /var/www/html/test-cli.php

Cut and paste the following.

<?php
    echo "PHP CLI is working!\n";
?>

On the command line issue the command “php /var/www/html/test-cli.php”.

Troubleshooting

The command sudo systemctl status mysql will display the current status of the MySQL service, including whether it is active, inactive, or failed. If MySQL is running properly, you should see an output indicating that the service is active and running. If it’s not running or has issues, the status output will provide some details on the problem.

Conclusion

In this article, I covered how to install Apache, MySQL, and PHP on Linux, a LAMP Stack on Ubuntu 24.04LTS Server. Then we test that the configuration to verify it is working correctly. I use Ubuntu 24.04 LTS, Apache2, MySQL and PHP to build web apps.

How to Clone a VirtualBox Virtual Machine| Clone Ubuntu 24.04 server VirtualBox

This article will cover the steps necessary to clone a virtual machine (VM) on VirtualBox.

I am a PHP developer and use virtual machines running Linux for development and testing.

My configuration consists of a Windows 10 laptop with VirtualBox running on it. VirtualBox is virtualization software that allows one the ability to add guest virtual machines (VMs).

In my case, I use this configuration to build website hosting configurations. I create these web hosting servers using Linux, Apache, MySQL, and PHP (LAMP).

I start by creating a Ubuntu 24.04LTS server as a VM on VirtualBox. Then I create a LAMP setup as a VM and then clone it for a project.

LAMP stands for Linux, Apache, MySQL, and PHP.

There are 7 steps to create a clone.

Step 1 is to stop the VM to be cloned, if it is running.

Step 2 Right mouse click on the VM to be cloned

Step 3 Click on Clone from the drop-down menu

Step 4 Give the clone a name. Fill in the path. And in the MAC address policy drop-down select “Generate new MAC address for all network adapters”. For the clone to be a viable server on your network it needs a different MAC address from the server that is being cloned. The clone will also need a different IP address from the server that is being cloned.

Step 5 Select Full clone for “Clone type” as full.

How to Determine What IP Address Your Server is Using

If you are using VirtualBox, once the VM is activated, you will have the opportunity to log in. Once logged in you can use the commands “ip a” and/or ifconfig”. Both provide the same information.

Ifconfig was not available on my server so I had to install it by installing “net-tools”.

To install net-tools issue the command:

sudo apt install net-tools

After installing net-tools you will be able to issue the command ifconfig.

The output from ifconfig:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.80  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe9a:8638  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:9a:86:38  txqueuelen 1000  (Ethernet)
        RX packets 2461  bytes 2039625 (2.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 700  bytes 92619 (92.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 114  bytes 9992 (9.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 114  bytes 9992 (9.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The output from ip a :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:9a:86:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.80/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe9a:8638/64 scope link 
       valid_lft forever preferred_lft forever

This output gives us the same information.

An Example of a Dynamic (DHCP) IP Address Configuration

Log into your server.

Issue the following command: “cd /etc/netplan” and press the enter key.

Then issue the command “vdir” and press the enter key.

There should be a file that end in .yaml in that directory.

Mine is : 50-cloud-init.yaml

At that point enter “sudo vi 50-cloud-init.yaml”. Make sure you use your file’s name in place of mine.

Sudo allows you to become the root user/superuser. Vi is my Linux command line editor of choice.

At this point, the configuration file will be opened in vi.

Your file should look very similar to the following:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            dhcp4: true
    version: 2

If your file looks like this one your network is configured for dynamic IP allocation or Dynamic Host Configuration Protocol (DHCP). This means you will need to read and follow this article: https://www.phpcoderusa.com/how-to-change-ip-address-from-dhcp-to-static-in-ubuntu/

An Example of a Static IP Address Configuration

Log into your server.

Issue the following command: “cd /etc/netplan” and press the enter key.

Then issue the command “vdir” and press the enter key.

There should be a file that end in .yaml in that directory.

Mine is: 50-cloud-init.yaml

At that point enter “sudo vi 50-cloud-init.yaml”. Make sure you use your file’s name in place of mine.

Sudo allows you to become the root user/superuser. Vi is my Linux command line editor of choice.

At this point, the configuration file will be opened in vi.

Your file should look very similar to the following:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.80/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

This is the configuration for a static IP address.

Backup Current Network Configuration before Starting

Backing up your configuration files before changing them is a good habit to get into.

This is easy to do. For example, file 50-cloud-init.yaml is easily backed up by just making a copy of the file with a change to the file name. Here is the command :

sudo cp 50-cloud-init.yaml 50-cloud-init.yaml-original

Cp is the copy command. Notice I added “-original” to the file name.

So now we should have two files in the directory :

1) 50-cloud-init.yaml – the working configuration file

2) 50-cloud-init.yaml-original – a backup of the original configuration file.

You can verify by using the vdir command, which lists the contents of the directory we are in.

Making a backup of the original backup file could save you some pain if you need to figure out how the server was originally configured.

Changing a Static IP Address

This is a two step process assuming your server is already configured with a static IP.

Step 1 :

Issue the command “sudo vi /etc/netplan/50-cloud-init.yaml” on the command line. Replace your file’s name for my file’s name.

You can make several changes to this file:

network:
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.80/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

1) Change the IP of the server by replacing the current IP address. This file shows an IP address of 192.168.1.80. Change it to what you would like it to be.

2) Change the name servers. This file shows Google’s name servers of 8.8.8.8 and 8.8.4.4. You can change them to other name server values.

3) Change the gateway which in this file is 192.168.1.1. Change it to another gateway if need be.

4) The subnet can be modified by editing the subnet that is part of the IP address. In this case the IP along with the subnet is 192.168.1.80/24. Notice the “/24”. That is the subnet for this configuration. You can modify the “/24” to increase or decrease the number of IP addresses that are available in the configured network.

Step 2 :

In the static configuration file “/etc/netplan/50-cloud-init.yaml” you will notice that there is some notes. These notes must be followed. They are listed as follows:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}

The notes say we must create a file “/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg” and write the following into it: “network: {config: disabled}”, in the folder /etc/cloud/cloud.cfg.d/.

This can be accomplished by issuing the command “sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg”.

If the file is empty add the line: “network: {config: disabled}” and save it.

If you are using vi press the “i” key to place vi into insert mode, then copy and paste the line. Then press the escape key to move vi into command mode. Then press the colon key followed by “wq”. Then press the enter key.

The “wp” are for write and quite.

At this point issue the command “sudo netplan try”. If there are no errors you can issue “sudo netplan apply”.

If there are no errors you have success.

Potential Error That Might Occur During This Process

If your configuration file is not indented properly, you will get an error.

Here is what it might look like :

Error in network definition: expected mapping (check indentation)

ethernets:

The error tells you where the error is located. In this case, it is an indentation error.

Edit the configuration file and verify it is configured correctly.

Then issue the command “sudo netplan try”. If all is correct you might see a message that the configuration will automatically be accepted.

If not issue the command “sudo netplan apply”.

Verifying the IP Has Been Changed

To verify the configuration has taken place you can issue the commands “ip a” and/or “ifconfig”.

I would recommend that you power off your server and then power it back on and then verify the IP is correct.

Conclusion

In this article, we learn how to clone an existing guest on VirtualBox. We learn how to give the clone a unique MAC address and a unique IP address. We learn what an IP is, why it is important, and how to manage IP addresses on an Ubuntu 24.04LTS Server. We learn how to identify a static IP address configuration and a dynamic IP address configuration. Then we learn how to change the static IP from one address to another. We learn the Linux commands “ip a”, “ifconfig” and learn a bit about the Linux editor vi. And finally, we learn it is a good practice to back up a configuration file before we modify it.

Change a Static IP Address in Ubuntu Using the Command Line | Change the IP Address in Ubuntu 24.04

Image of Change a Static IP Address in Ubuntu Using the Command Line

This article will cover the steps necessary to change a static IP to another static IP.

I am a PHP developer and use virtual machines running Linux for PHP development and testing.

My configuration consists of a Windows 10 laptop with VirtualBox running on it. VirtualBox is virtualization software that allows one to add guest virtual machines (VMs).

In my case, I use this configuration to build website hosting configurations. I create these web hosting servers using Linux, Apache, MySQL, and PHP (LAMP).

What is an IP Address

Simply stated an IP address is the address of a device on a network and/or internet. An IP is like the address of your house or your phone number on your phone.

What Is a Static IP Address

A static IP is an IP address that does not change. There are two types of IP addresses. 1) There is dynamic which is given by the router and 2) static which is configured never to change.

The Benefits of a Static IP

In the case of web servers, they must have static IP addresses. The static IP is required because of how servers work and how other devices interact with them.

This article is about changing a static IP address on the Ubuntu 24.04LTS server.

Step 1 is to identify how the server is configured.

How to Determine What IP Address Your Server is Using

If you are using VirtualBox, once the VM is activated, you will be able to log in.  Once logged in you want to use the commands “ip a” and ifconfig”. Both provide the same information.

Ifconfig was not available on my server so I had to install it by installing “net-tools”.

To install net-tools issue the command:

sudo apt install net-tools

After installing net-tools you will be able to issue the command ifconfig.

The output from ifconfig :

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.80  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe9a:8638  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:9a:86:38  txqueuelen 1000  (Ethernet)
        RX packets 478  bytes 330373 (330.3 KB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 165  bytes 18169 (18.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 96  bytes 7624 (7.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96  bytes 7624 (7.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The command “ip a” will provide the same information, just in a different format.

An Example of a Dynamic (DHCP) Configuration

Log into your server.

Issue the following command: “cd /etc/netplan” and press the enter key.

Then issue the command “vdir” and press the enter key.

There should be a file that ends in .yaml in that directory.

Mine is :  50-cloud-init.yaml

At that point enter “sudo vi 50-cloud-init.yaml”. Make sure you use your file’s name in place of mine.

Sudo allows you to become the root user/superuser. Vi is my editor of choice.

At this point, the configuration file will be opened in vi.

Your file should look very similar to the following:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            dhcp4: true
    version: 

If your file looks like this one your network is configured for dynamic IP allocation or Dynamic Host Configuration Protocol (DHCP). This means you will need to read and follow this article : How to Change IP Address From DHCP to Static in Ubuntu

An Example of a Static Configuration

Log into your server.  

Issue the following command : “cd /etc/netplan” and press the enter key.

Then issue the command “vdir” and press the enter key.

There should be a file that ends in .yaml in that directory.

Mine is :  50-cloud-init.yaml

At that point enter “sudo vi 50-cloud-init.yaml”. Make sure you use your file’s name in place of mine.

Sudo allows you to become the root user/superuser. Vi is my editor of choice.

At this point, the configuration file will be opened in vi.

Your file should look very similar to the following:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.80/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

This is the configuration for a static IP address.

Backup Current Network Configuration Before Starting

It is a good habit to get into – backing up your configuration files before changing them.

This is easy to do. For example, file 50-cloud-init.yaml is easily backed up by just making a copy of the file with a change to the file name. Here is the command :

sudo cp 50-cloud-init.yaml 50-cloud-init.yaml-original

Cp is the copy command. Notice I added “-original” to the back up file name.  

So now we should have two files in the directory :

1) 50-cloud-init.yaml – the working configuration file

2) 50-cloud-init.yaml-original – the original configuration file that is a backup of the original configuration.

You can verify by using the vdir command, which lists the contents of the directory we are in.

Making a backup of the original backup file could save you some pain if you need to figure out how the server was originally configured.

Changing a Static IP

This is a two-step process assuming your server is already configured with a static IP.

Step 1 :

Issue the command “sudo vi /etc/netplan/50-cloud-init.yaml” on the command line. Replace your file name for mine.

You can make several changes to this file :

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.80/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

1) Change the IP of the server by replacing the current IP address. This file shows an IP of 192.168.1.80.  Change it to what you would like it to be.

2) Change the name servers. This file shows Google’s name servers of 8.8.8.8 and 8.8.4.4. You can change them to other name server values.

3) Change the gateway which in this file is 192.168.1.1. Change it to another gateway if need be.

4) The subnet can be modified by editing the subnet that is part of the IP address. In this case, the IP along with the subnet is 192.168.1.80/24. Notice the “/24”. That is the subnet for this configuration. You can modify the “/24” to increase or decrease the number of IP addresses that are available in the configured network.

Step 2 :

In the static configuration file “/etc/netplan/50-cloud-init.yaml” you will notice that there is some notes. These notes must be followed.

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}

This can be accomplished by issuing the command “sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg”.

If the file is empty add the line : “network: {config: disabled}” and save it.

If you are using vi press the “i” key to place vi into insert mode, then copy and paste the line. Then press the escape key to place vi into command mode. Then press the colon key followed by “wq”.

The “wq” is for write and quit.

At this point issue the command “sudo netplan try”. If there are no errors you can issue “sudo netplan apply”.  

If there are no errors you have success.

Potential Error That Might Occur During This Process

If your configuration file is not indented properly, you will get an error.

Here is what it might look like :

Error in network definition: expected mapping (check indentation)

ethernets:”

The error tells you where the error is located. In this case, it is an indentation error.

Edit the configuration file and verify it is configured correctly.  

Then issue the command “sudo netplan try”. If all is correct you might see a message that the configuration will automatically be accepted.

If not issue the command “sudo netplan apply”.

Verifying the IP Has Been Changed

To verify the configuration has taken place you can issue the commands “ip a” and/or  “ifconfig”.

I would recommend that you power off your server and then power it back on and the verifying the IP is correct.

Conclusion

In this article, we learn what an IP is, why it is important, and how to manage IP addresses on an Ubuntu 24.04LTS server. We learned how to identify a static and a dynamic configuration. Then we learned how to change the static IP from one address to another.

How to change IP address from DHCP to static in Ubuntu

How to Change a Dynamic IP Address to a Static IP Address

I am a PHP programmer using Ubuntu for Linux, Apache, MySQL, and PHP (LAMP ) servers, and I need a static IP address on that server.

If for some reason the server is configured with Dynamic Host Configuration Protocol (DHCP) I will need to convert the IP configuration to static.

Under DHCP the router assigns an IP address to the device. This IP may change on subsequent reboots.

In this article, I will show you how to convert a DHCP configuration to a static IP configuration on Ubuntu server 24.04LTS.

I have a Windows laptop that runs VirtualBox and the Ubuntu server is a guest on VirtualBox.

The first thing to do is to determine the network interface name.

To do so I need to ensure VirtualBox and the Ubuntu server are up and running.

To access a Ubuntu server I use PuTTY to Secure Shell (SSH) into the server. This will require you to know the existing IP address or domain name of the server.

Since I created the server as a VirtualBox guest it is easy for me to gain (SSH) access by simply launching the server.

Step 1 is to log into the Ubuntu Server on the command line. Since this is a server it will not have a Graphical user interface (GUI).

Step 2 is to update the server’s repository. We do so by entering the below command on the command line.

sudo apt update

Step 3 is upgrading those packages. This means if there are packages that can be upgraded to a newer version they will be upgraded.

sudo apt upgrade

Step 4 is to remove any old and non-used packages and any old Kernels.

sudo apt autoremove

Step 4 is to install net-tools. Net-tools is a collection of networking utilities.

  • arp
  • hostname
  • ifconfig
  • ipmaddr
  • iptunnel
  • mii-tool
  • nameif
  • netstat
  • plipconfig
  • rarp
  • route
  • slattach

Of which we will be only using ifconfig.

sudo apt install net-tools

Step 5 is to run ifconfig on the command line.

This is the output from my Ubuntu server:

$ ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.1.112  netmask 255.255.255.0  broadcast 192.168.1.255
       inet6 fe80::a00:27ff:fefd:65fc  prefixlen 64  scopeid 0x20<link>
       ether 08:00:27:fd:65:fc  txqueuelen 1000  (Ethernet)
       RX packets 726  bytes 347718 (347.7 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 266  bytes 36629 (36.6 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Local Loopback)
       RX packets 96  bytes 7624 (7.6 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 96  bytes 7624 (7.6 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

We need two bits of information 1) the network device is enp0s3, and 2) the IP address of this server is 192.168.1.112.

We can also use the command “ip a”. It will return something like this:

$ ip a

: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:fd:65:fc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.112/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fefd:65fc/64 scope link 
       valid_lft forever preferred_lft forever

This tells us the same two things:

  1. For this server, the network device is enp0s3. Yours might be eth0 or something to that effect.
  2. The IP of this server is 192.168.1.112

Netplan is the default network management tool. Netplan was introduced to Ubuntu in 2016.

In the directory /etc/netplan/ we will find a file named something like “50-cloud-init.yaml”

From a DHCP configuration:

File: /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            dhcp4: true
    version: 2


Notice the line “ This file is generated from information provided by the datasource Changes to it will not persist across an instance reboot.”.

Then there is the second to the last line that says we must create a file /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg. And the last line says we must write “network: {config: disabled}” into that file and save it.

From a static configuration :

File: /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    version: 2
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.83/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1

We change the server to a static IP by editing it’s configuration. To do so enter the following command: (not the file name might be different)

sudo vi /etc/netplan/50-cloud-init.yaml, and create a configuration like this:

network:
    version: 2
    ethernets:
        enp0s3:
            addresses:
            - 192.168.1.83/24
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
            routes:
            -   to: default
                via: 192.168.1.1

Replace:

  • 192.168.1.83/24 with your server’s IP and submask
  • 8.8.8.8 and 8.8.4.4 are Google’s name servers, which you can keep or use your own.
  • 192.168.1.1 is the gateway and you need to replace it with your own.

Then create the file /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg and add to it “network: {config: disabled}” and save it.

Once you have completed these steps test the configuration with the command “netplan try”. If there are no errors, issue the command “netplan apply”.

To confirm the configuration is working, issue the command “ip a”. If this shows the correct IP address then power down your server and then power it on again. Issue the command “ip a”. If this shows the correct IP address, you have successfully changed your Ubuntu 24.04LTS network configuration from dynamic to static.

Note if your remote connection loses its connection, the changes you have made may have taken effect and you will need to establish a new remote connection.

Conclusion

In this article, we have taken an Ubuntu 24.04LTS server that was initially configured with a dynamic network connection configuration (DHCP) to a static IP. This required editing the network configuration and changing it to a static configuration. We also created a file that disabled the network from automatically reverting back to the original configuration.

Why Use VPS Hosting?

Featured Image for Why Use Virtual Private Server Hosting

In this article I am going to focus on Virtual Private Servers (VSP), Business Class Hosting, and Plesk.  I share with you what I experienced out in the wild while working at 2 of the largest domain registrars and hosting providers.   Add to this what I learned and saw while being a PHP Programmer since 2006.

Types of Servers

Shared Hosting – This is a hardware server that hosts multiple websites.  I’ve seen upwards of 500 websites on one physical server.  I would not recommend this.  Some shared hosting providers have automated systems that move websites around so the servers will be balanced and not become overloaded.  Mostly this is the big hosting providers.

Virtual Private Server (VPS) – This is my favorite.  If you own a business class website, this is the best solution as far as I am concerned.  VPS can be configured with a few server resources such as CPU power and memory.  You can have a “small”, “medium”, “large”, or an “extra large” VPS.  You only need to have the size that meats your needs.  Add Plesk, which I cover below) and you have a rockin’ setup.

Hardware Servers – These are in much less demand now that everyone is using Solid State Device (SSD) drives in place of spinning drives.  SSD makes a ton of difference and removed the bottle neck on the server.  These is some need for hardware servers though.  If a website has a lot of servers are is running a resource intensive application a hardware server might be needed.  In the old days even the smaller businesses were utilizing hardware servers.  Not so much now since SSD drives are so more more affordable and hardware is getting so much more powerful.

Different Sever Operating Systems

Linux – Linux is open source and is widely used.  There is a whole community out there that supports Linux and keeps it free.  You can download a copy of Linux for free.  Install that Linux on an old laptop or desktop, do a small amount of configuration, connect it to the Internet, and you have a web server.

Unix – Not so widely used for hosting since most Unix operating systems are licensed.

Windows – You will find Windows servers out there in the wild.  These are mostly used for web applications written in Dot Net – A Microsoft programming language.

Hosting Support

This is the support you will receive from those big companies that offer cheap hosting and you probalby experience the same level of support if you have one of their VPS servers or a dedicated server.

Level 1 Support –  When you call the big hosting companies you talk with a level 1 support tech.  This person has limited authority to make many changes, is limited in access to they hosting system, and is probably not a server administrator.

Level 2 Support – This is the person the level 1 tech expedites problems to that the level 1 lacks the skills or access to resolve.  The level 2 tech is probably not a server administrator.  He or she probably has more experience that the Level 1 and has more access to the system, and is limited in what he or she can do.  You will probably never talk with a level 2 at one of these cheap hosting companies.

Server Administrator – These are the folks that have the skills to work on hosting and email servers and have access to do so.  If the problem is such that the level 2 cannot resolve the server admin will be given the task.  In a perfect world you would want to talk directly with this person.  If you are hosting with one of these large / cheap hosting companies you will never talk with a server admin.

Email Support – More than likely you will have access to a support form where you enter your hosting account information, the issue you are experiencing or your question.  When submitted a ticket will be created and it will be added to a queue.  Your ticket may remain in this queue for 24 to 72 hours before it is read by a level 1 support technician.

The Queue – No mater how you enter the system, via phone or by completing a form, you will enter a queue if the level 1 cannot immediately address your problem, and escalating your ticket will take even more time.

Specialized Hosting Companies

I’ve worked with 2 specialty web hosting houses. One was for Drupal and they other was for Magento 2.  These types of hosting vendors are unique in that they specialize in the application or applications they specialize.  The Drupal host was much better than the Magento host.  I had two ways to interact with the Drupal host, by phone or by opening a ticket.  Above I covered te type of support you will probably find out there.  In the case of the hosting company that specialized in Drupal, I could call and talk with a server administrator and he or she could answer my question or solve my problem in real time.  No queue. If I opened a ticket, I would hear back in about 15 minutes, and the issue would be resolved by a system administrator. No level 1, and no queue.  This type of hosting is very expensive.  They provide two types of servers.  1) a VPS hosting server that was rather healthy with something like 8 cores and 12G of RAM that would run about $450 a month.  2) they provided a hardware server with 16 cores and 32G of RAM for $750 a month.  Giving an application a lot of resources solves a lot of issues.  What your paying for here is the concierge service and access to a server admin not the hardware.

Business Class Hosting

This is the missing hosting class.  You may pay more for business class hosting, however it is well worth it.  These hosting providers will cost more than those big guys with there level 1’s, however they provide a inexpensive alternative to the specialty hosting providers.  With a business class hosting provider you will get access to a system administrator via phone or email and not have to get stuck in a queue.  You will get better guidance as well.

For more information read :   Business Class Hosting

Plesk

I’ve supported servers that do not have a control panel and I have a VPS with Plesk installed. Plesk is feature rich and gives the webserver

Plesk is a web server control panel that makes it possible for a website owner or a developer to manage their own server.

you’ll ever need to build, secure and run websites and applications in the Cloud! Get Plesk Hosting Platform!

Pricing Plans

Shared Hosting – The big guys might start at $10 a month while the business class folks might want $15 or $20 a month.

Reseller Hosting – These guys are all over the board.  You might be able to find a reseller account for $5 however the savings is not worth it.  If you are going to spend $25 for a reseller account why not spend $50 a month for a VPS running Plesk?

VPS Hosting – If you have read this far you know that a VPS plus Plesk is my favorite. For good reason.  If you are a business person, why take a chance on cheap hosting or worse yet allow yourself to get caught up in a queue while trying to do business on the web.  With a VPS and Plesk you have your own server and a world class control panel.  Plesk will make your life easier.  The bug guys with the support queues might run $80 a month for a VPS and the business class hosing providers might charge as little as $50 a month for a very nice VPS hosting account that has Plesk installed.

Hardware Servers – Do your research before you go with a hardware server.  You probably do not need a hardware server.  If you do, I would not go with the big guys.  They will charge more and they are the ones with the level 1 support queues.  Go with a business class host and save a few bucks while having access to a real system administrator without the queue.

Managed Hosting Accounts –  This is really an add on service. Your host will watch your server closer and will handle all updates to the operating system as well.  We worth it if you can afford it.

Business Class Hosting – I’ve talked about this already.  This is the only way to go.  The big guys charge more and give less.  As you have read the business class hosting providers cost less while giving you direct access to they system administrator.  No queue and better advice.

VPS Server Resources

Virtual Private Servers are measured by tow basic resources.

  1. CPU cores which they refer to as vCPU.  More cores more CPU power.
  2. Random Access Memory or RAM.  More RAM more power.

Most of us can do well with 2 cores and 4G of RAM.  It is relatively easy to change your server’s configuration so talk with your vendor and start where they say to start.  Then you can make an adjustment after you set up and running, if need be.

Conclusion

We have covered shared hosting, VPS hosting, hardware servers, the big guys and their support with queues, and  business class hosting.  By now you probably have figured out I like VPS hosting with Plesk from business class hosting.  If you are running a business I would recommend becoming familiar with what I write about here. I recommend finding a business class hosting provider and talk with them about your needs.

best vps hosting

linux vps hosting
managed vps hosting
vps web hosting
vps hosting provider
cheap vps hosting
vps hosting plans
vps hosting services
vps website hosting

Why You Should Backup Your Website

Image : Why You Should Backup Your Website

If you are a website owner and value your website or blog, backing up your website content and data is important. 70% of small businesses fail after a data loss. All the more reason to backup your data. I use Amazon Web Services S3 for storage of my website data. S3 stands for Amazon Simple Storage Service.

Why You Should Backup Your Website

Think about this if you will. You have a website. Your website contains 40 pages of content. Lets say writing, proofing, editing, and posting takes 4 hours per article. That is 160 hours or one man month. That is just the amount of time you spent creating content. You probably spent a lot of time on the design and layout as well. Losing your website could be very costly and might even be the catalyst for you going out of business.

10 Reasons You Should Backup Your Data

  1. Human Error – I was working a website project when another developer completely deleted the web application from the production machine. It took years to develop that application so recreating it was not an option. We had a copy on another server, however that was a test and development environment. It would have taken months to update the development copy. Several years earlier I had configured a script that ran daily to backup all the data and files on the server. Because I had been backing up the production server, I was able to upload the latest copy of the web application and it’s associated data within a couple hours.
  2. Viruses & Malware – A friend of mine that owns a data center tells me his biggest concern is someone opening an email that contains a virus. Interesting insight. He says all other possible points of hacking are secure.
  3. Hard Drive Damage – Damage to hard drives can caused by a number of factors, such as a computer fan failure that allows the computer to overheat or power surges, to name just a few. Hard drives often crash leaving the data on the drive unattainable.
  4. Power Outages – This can be a real problem for hard drives and all the components within the computer. An unexpected power outage can create power surges that are deadly to computer components and may cause damage to the hard drive and / or corrupted data.
  5. Computer Theft – This happened. Think employee or a burglar.
  6. Liquid Damage – Soda, water, fire sprinklers, floods, etc.
  7. Disasters – Hot weather causing strain on the electrical grid that could cause a brown out that could kill computer equipment. Fires that burn electrical lines, etc.
  8. Software Corruption – Software that gets corrupted which can cause data to become corrupted. Power outages, brownouts, and improper shutdown are among the causes of software corruption.
  9. Hard Drive Formatting – Accidentally formation a drive that contained business data can be the source of data loss.
  10. Hackers – Security breaches by hackers is almost a daily news staple. While most of the data breaches we hear of are someone stealing data while leaving the hacked data intact. Hackers can be destructive.

Data loss can happen for may other reasons as well.

70% of Small Companies Fail After Major Data Loss

With a 70% failure rate of those small businesses that lost data, one would think making regular backups would be important. Data is important to the survival of the small business. I recommend you backup your website daily.

I Recommend AWS S3 Backups

I’ve been backing up to Amazon S3 for maybe a decade. I’ve used those backups several times. And the best part is the price. I personally spend less than a dollar a month to backup to Amazon S3. Cheap insurance.

Conclusion

It takes time and effort to build a website. It takes just a moment to cause it to disappear. I listed 10 causes of data loss and there are more. I shared that backing up to AWS S3 is what I prefer. And I shared that the price is right. You might spend much less than a dollar a month to backup a small website on a daily basis. If you are not backing up your website daily, I would recommend making that a priority.

Different Types of Hosting and Hosting Providers

Image : Different Types of Hosting and Hosting Providers

In this article I will cover PHP hosting platforms, types of hosting, types of hosting providers and their differences. I will also cover the advantages and disadvantages of each. This article is based on my experience in the industry and having been employed by two of the largest hosting providers in the world. I will reveal the truth about the hosting industry.

Hosting Platform

There is both Linux and Windows hosting. If you are hosting a PHP based website such as WordPress, Drupal, Magento, or a custom PHP website I recommend you stay with Linux hosting because PHP is native to Linux and Linux makes for a better server.

Types of Hosting

Shared Hosting

Shared hosting is by far the most popular, the least expensive, and the least reliable for the serious small business. Later in this article I will share 2 incidents where small businesses were negatively impacted by shared hosting.

While working for several of the top hosting companies in the world I saw things that shaped my opinion that shared hosting is not a solution for small business.

The hosting providers I worked for had a very structured process for interacting with website owners. If a website owner had an issue he or she would enter this process in one of two ways. The first would be to call customer service. The customer service agent is a level one tech. They are limited in what they can do and they may not have the skills to fix a problem. If the level one cannot resolve the problem within a few minutes they will escalate the problem to a level 2 tech. This may mean a delay of upto 72 hours. This means an issue can linger for days. Website down? Not able to communicate via email? You have to wait. The second way to enter the system is through completing an online form which goes into a queue. It may take minutes to many hours before a level one tech responds to this open ticket. If the level one tech is unable to reselve the issue at his or her level, the ticket will be escalated to a level 2 tech. Resolution could take 24 to 72 hours.

This could mean a website that is down or no ability to communicate via email.

Not a situation I would want for a small business. When you see the alternatives you will understand why I express this opinion.

Reseller Hosting

If reseller hosting works as planned this could be a viable option for the small business. The problem is it does not. I experienced this first hand when my website screeched to a halt. After weeks of my website being unusable, I moved to another provider.

These plans are great. They give you the ability to host a great number of websites. The most popular is HostGator. The cost is good too. The problem is the same as the shard hosting technical issue resolution.

Virtual Private Servers (VPS)

In my opinion this is the way to go especially when adding the Plesk server management software into the mix. With Plesk things are just made easier. Plesk is so easy to learn and use, the average person could learn enough to run their own server. With the advent of the Solid State Drive (SSD) and as modern day server hardware becoming more powerful, a VPS running Plesk is the answer for most small businesses.

Modern day Plesk is very feature rich. Here are some of Plesk’s features :

  • Install a free Let’s Encrypt SSL Certificate.
  • Force your website to always be secured, which is a big plus for Search Engine Optimization, and website speed.
  • Force your website to the non- www or the www version of your website’s URL.
  • Update your server Operating System with the click of a link.
  • Edit files directly on the server.
  • Stop or restart your server from the control panel.
  • It allows you to manage your email accounts right on the server. Add, edit, and delete email accounts at will.

These are some of the main features that I think you will be interested in.

I am very impressed with Plesk on a VPS. This is the platform I recommend. As far as I am concerned there is no down side to running Plesk on a VPS as your hosting solution. I only see benefits from this arrangement.

Hardware Servers

Several years ago this was the way to go. Keep in mind that hardware is becoming more powerful and with SSD drives becoming affordable, servers fly making VPS’s viable. Hardware servers are no longer needed, for the most part.

The upside of having a hardware server is you have your own server all to yourself. The downside is a hardware server will more than likely be at least 2 times more expensive than a VPS.

Email

One of the things you should be aware of is some hosting configurations come with the ability to manage email and others do not. Shared hosting will provide the ability to manage your email, while a hardware server may or may not give you the ability to manage your email accounts, unless of course you are running Plesk on your hardware server.

Having the ability to manage one’s own email accounts is one of the reasons I like Plesk so much.

Types of Hosting Providers and Their Differences

There is three types of hosting providers.

1) Commodity or mom and pop hosting providers. The GoDaddys and the iPowers of the world. I do not recommend this type of hosting for any serious business.

2) Business class hosting providers. These providers may offer you shared hosting which may be viable because this class of provider is more service oriented and may fix your issues, if they should arise, within a reasonable amount of time. This class of hosting provider is the one I would recommend, and would recommend you obtain a VPS from them.

3) Specialty Hosting Providers. These guys are the best in class. They specialize in a certain software package such as WordPress, Drupal, or Magento. They are very responsive to tickets and phone calls. Tickets are usually acknowledged within a few minutes and if you call you will be taking with a real system administrator. I’ve worked with this type of hosting provider and they are topshelf. However this is not a solution for the small business mostly because of cost. These houses charge $400 plus for a VPS and hardware servers are going to be in the $700 plus range, per month.

Pricing, Service, and Reliability

Shared hosting and reseller hosting are in the same class. Rather inexpensive and not so reliable. I do not recommend these for the average small business.

A VPS running Plesk provided by a business class host is by far the best solution for the average business. This solution may cost a little bit more, however it is worth is.

Hardware servers are reserved for the client that needs extra horsepower and resources for their website. Add Plesk and a business class host and you have a nice combination. A hardware server may cost 2 or more times as much as a decent VPS from the same hosting provider.

2 Bad Experiences From Using Shared Hosting at One of Those Discount Hosting Companies

Example One – I had a friend who was hosting his website and blog with one of the world’s largest hosting providers. He was on shared hosting. His website got corrupted and it took days to get his website back on line and he lost his blog entirely. If you are doing any amount of Search Engine Optimization, you know blogs are important. Not only that, it take lots of time and effort to build a decent blog. His blog was completely gone.

Example Two – I was at work at one of the largest hosting providers when I became aware of a businessman who who was trying to get his website and email working again after the shared hosting server his website and email accounts were on, died. It took over a week to recover his website and email. Imagine your business website being off line for a week and all your emails, inbound and outbound, are stopped. Would your business survive?

This is the truth about shared hosting.

If something bad is going to happen… it is going to happen to someone. That someone could be you.

PHP Hosting Solution

If you are still reading you probably know what I am about to say. Please keep reading because I am going to make the point, a point we all need to hear. The point is we all like to save money. I like cheep shared hosting for that reason and that reason alone.

If you are using shared hosting you may go a lifetime without any issues. And then you could be the statistic who loses your website for a couple days or worse yet your email does not work for days. In the mean time you are losing business, risk losing customers, and risk bankrupts.

My solution is very simple. Find a business class hosting provider and host on a VPS that also is running Plesk. If your website requires more resources then get a hardware server running Plesk. And do so in a business class data center where you can talk with a real system administrator when you call or email.

I’d bet your business and your piece of mind are worth the extra $35 a month for a VPS.

Conclusion

We have covered many aspects of hosting, which is better and some of the gotchas. We covered the type of hosting plans and the type of providers. As you can see not all are created equal. And there is some real potential threats to your business if you are unaware.

I’m guessing you are probably a small business person not a techie. There is a lot to know about hosting. It is important that you as a business person understand this part of your business.

Hands down I make one simple recommendation. Find a business class hosting company and get a VPS or a hardware server running Plesk. If you do so you will minimize your risk while spending just a few more dollars each month.

Isn’t your business and peace of mind worth it?

Business Class Web Hosting

Image : Business Class Web Hosting

There is a real hole in website hosting.  You can buy what I refer to as commodity or mom-and-pop virtual hosting at places like Godaddy and iPower, however this is really not a long term solution for any serious business.  These hosting companies also offer virtual private servers (VPS) and hardware servers.  What is missing is business class web hosting.

I used to work in the domain and hosting industry which has given me much insight.

Some of the things that were a real eye opener:

Level 1 techs – These hosting providers have a customer service  hierarchy.  When you call or fill out a ticket you are communicating with a level 1 tech.  These folks know just enough to help you with some simple things.  If you are experiencing a real problem all they can help with is filling out a ticket that goes into a queue.  Depending on demand it might take your ticket up to 3 days to work it’s way through the queue.  In the meantime all you can do is wait.  If your email is down or your website has disappeared, all you can do is wait.

Ticket Queue – As mentioned above your ticket will stay in a queue for 1 to 3 days depending on demand. They are not trying to ignore you, it is just how cheap hosting works.  Think about it, if you are paying less than $10 and month for hosting, they really cannot spend much time with you or they lose money.

Lost data and lost websites – I’ve used this level of hosting in the past without any problems.  My friend was not so lucky.  His blog was lost and he had no backup.   Can you imagine spending hundreds of hours working on a blog to have it all disappear.

And of course if you move up to a VPS or a hardware server you will get more power and resources, however it is wrapped in the same old customer service hierarchy.

There is a solution.  Break free – find a hosting provider that will give you outstanding customer service and resolve your problems in a reasonable amount of time.  No ticket queue and no gatekeepers.  Look for a place where you will have access to the people working on the hardware – the system administrator.

If you are hosting your business website on cheap virtual hosting, I would recommend moving up to business class hosting.  It will cost more, however it is worth it.

I’ve been working with Pixelgate Networks for over 11 years and find their pricing to below those other guys and their service to be excellent.  When you call you talk with a real system administrator – the person who can resolve your issue.

If you would like peace of mind call Pixelgate at 805-446-6251 and tell them Keith sent you.