Hosting a website on a server with a control panel is one of the easiest tasks and can be accomplished in several clicks. Control panels are great for easy management of your server, but they require hardware resources and they set up your server with pre-setups which is drawback if you want to customize your server. Today we will learn how to host a website on VPS without any control panel installed.
Prerequisites
To follow this tutorial, you will need the following requirements:
- a VPS
- a domain name pointed to your server
Install Web Server
On Ubuntu
apt update apt install apache2 php-{bcmath,bz2,gd,intl,mcrypt,mbstring,mysql,xml,xmlrpc,zip} apt install libapache2-mod-php
On CentOS
yum update yum groupinstall 'Web Server' yum install apache2 php-{bcmath,bz2,gd,intl,mcrypt,mbstring,mysql,xml,xmlrpc,zip}
Enable Apache at boot then start it now, navigate to your IP address on your web browser, you will see the default page.
On Ubuntu
systemctl enable apache2 systemctl start apache2
On CentOS
systemctl enable httpd systemctl start httpd
Create Virtual Host
To host only one website on a server, we don’t have to create a virtual host, we can simply make sure that Apache is running and upload our files to /var/www/html and the site will be online at once. But, in this tutorial, we will create a virtual host with domain name domain1.com, please replace it with your actual domain name.
Let’s create a file for the virtual host configuration with the following command:
On CentOS:
nano /etc/httpd/conf.d/domain1.com.conf
On Ubuntu:
nano /etc/apache2/sites-available/domain1.com.conf
Insert the following lines to the configuration file.
<VirtualHost *:80> ServerAdmin [email protected] ServerName www.domain1.com ServerAlias domain1.com DirectoryIndex index.php index.html DocumentRoot /var/www/html/domain1.com/public_html LogLevel warn ErrorLog /var/log/httpd/domain1.com_error.log CustomLog /var/log/httpd/domain1.com_access.log combined </VirtualHost>
Since /etc/httpd/conf.d/*.conf files are already included in /etc/httpd/conf/httpd.conf, there is no more step in CentOS
On Ubuntu/Debian, we have to enable the virtual host first by performing this command:
a2ensite domain1.com
Restart apache
On CentOS:
systemctl restart httpd
On Ubuntu:
systemctl restart apache2
Now, let’s create a file in /var/www/html/domain1.com/public_html, don’t forget to replace the domain1.com with your actual domain name.
mkdir -p /var/www/html/domain1.com/public_html
nano /var/www/html/domain1.com/public_html/home.html
Then, insert the following line to the home.html file
<html><center><h1>This is loaded from domain1.com</h></center></html>
Verify the setup
Navigate you domain1.com on your web browser, you will see a page like this
Install CMS
Now that you have a simple website running on Let’s continue to another step, install a CMS on your domain.
In this tutorial, we are going to install WordPress, the most popular CMS built on PHP and MySQL.
Download WordPress
To download WordPress, execute the following commands:
wget wordpress.org/latest.tar.gz tar -xzvf latest.tar.gz mv wordpress/* .
On Ubuntu:
chown -R apache: /var/www/html/domain1.com/public_html
On CentOS:
chown -R www-data: /var/www/html/domain1.com/public_html
Install MySQL
The official WordPress distribution only supports MySQL and MariaDB database storage engine. We will install MySQL/MariaDB on our server now.
Ubuntu:
apt install mysql-server
CentOS:
yum install mariadb-server
When installing WordPress, a new MySQL database is required with username and password. We will create it using the following details:
username: rose_wpuser
database name: rose_wpdb
database password: DkaYrbfLH4Dubc2B
In this tutorial, we assume that your MySQL root user is not having a password, so you need to invoke “mysql” command to get into MySQL shell
If your MySQL instance is having a password, you need to invoke this command:
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE rose_wpdb; Query OK, 1 row affected (0.67 sec) MariaDB [(none)]> GRANT ALL ON rose_wpdb.* to rose_wpuser@localhost IDENTIFIED BY 'DkaYrbfLH4Dubc2B'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.06 sec) MariaDB [(none)]> quit
At this point, we are ready to continue with the WordPress installation. Let’s navigate to our domain name in a web browser, enter the database details in the installation, like in the screenshot below.
Follow the instructions and you should have WordPress installed on your VPS server, and pointed to your domain. If you are one of our Linux Support clients we can set up your VPS by your requirements and we can install configure and optimize your favorite CMS or any other self-hosted application. We are available 24/7/365!
If this article was useful for you and you liked it, please share with your friends via social media networks. Thanks!
This is quite comprehensive and informative, especially for beginners. Thanks for sharing. Btw, since hardware resorces is the concern for using a control panel, why not try a client control panel, like this VPSrobots, it is something like a graphical PuTTY, a quite interesting staff.