Originally published at: https://www.sitepoint.com/how-to-deploy-and-host-a-joomla-website-on-alibaba-cloud-ecs/
This article was originally published on Alibaba Cloud. Thank you for supporting the partners who make SitePoint possible.
Joomla! is a free and open source content management system (CMS), and is one of the most popular among them. According to the official website, Joomla! is built on a model-view-controller web application framework that can be used independently of the CMS, allowing you to build powerful online applications.
One of my personal favorite features of Joomla! is the multi-language support with its large library of language packs. You can also translate the website admin backend with language extensions, helping you to easily localize your website.
This step-by-step guide will walk you through setting up and deploying a Joomla! website on an Alibaba Cloud Elastic Compute Service (ECS) instance with Ubuntu 16.04.
Requirements and Prerequisites
Before we deploy our Joomla! instance, we need to fulfill the following requirements. We need to set up an Alibaba Cloud Elastic Compute Service (ECS) Linux server (Ubuntu 16.04) with basic configurations. You should also allocate administrator (sudo) privileges to a non-root user.
Installing Joomla on an Ubuntu 16.04 ECS Instance
To install Joomla on our server, we need to first install a LAMP (Linux, Apache, MySQL, PHP) stack.
Step 1: Connect to Your Server
There are many ways to connect to your server, but I will be using the Alibaba Cloud console for simplicity. To do this, go to your instance section and click connect from your created instance. You will be redirected to the Terminal.
Enter username as Root and the password you created. If you didn't create a password, just continue by hitting enter. You are logged in to your server as system administrator.
All the commands in the following sections should be typed in this terminal.
Step 2: Install Apache
To install Apache, update your server repository list by typing command below.
sudo apt-get update
Then install the Apache web server.
sudo apt-get install apache2
Step 3: Install MySQL
Joomla, like most other content management systems, requires MySQL for its backend. So we need to install MySQL and link it to PHP.
To do this, add the following command.
sudo apt-get install mysql-server php7.0-mysql
You'll be asked to enter a MySQL password. Keep the password secure because you will need it later.
Complete the installation process of MySQL with the command below.
You'll be asked to enter the MySQL password you just created. Continue with the installation process by making the following selections.
Would you like to setup VALIDATE password plugin ? [Y/N] N Change the root password ? [ Y/N ] N Remove anonymous users ? [Y/N] Y Disallow root login remotely ? [Y/N] Y Remove test database and access to it ? [Y/N] Y Reload privilege tables now ? [Y/N] Y
Step 4: Install PHP
Joomla! requires PHP to be installed. Execute the following command to install PHP 7.0 and other required PHP modules.
sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-mcrypt php7.0-xml php7.0-curl php7.0-json php7.0-cgi
Step 5: Confirm LAMP Installation
To confirm LAMP stack has been installed on your Ubuntu 16.04 server, follow the procedures below.
Open the web browser and navigate to your server's IP address. You'll see the Apache2 Ubuntu Default page.
Note: To check your server's public IP address, check your ECS Instance dashboard. You'll see both private and public IP addresses. Use the public IP address to access your website. If you don't see the public IP address consider setting up an Elastic IP address.
In order to confirm the PHP installation on your server, remove the default page and replace it with the PHP code below. To do this use the commands below.
Replace with a new file:
touch /var/www/html/index.php nano /var/www/html/index.php
Enter a sample PHP code below:
<?php phpinfo(); ?>
To check your page, navigate to your web browser and enter the public IP address. You should see information about PHP installation if the LAMP stack is correctly installed on your server.