Implementation of the Moodle e-learning platform from server selection to configuration

Through this article which concerns the implementation of the Moodle e-learning platform in a server, we will first present an example of a Web server architecture, then we propose the adopted architecture which is based on Linux containers. Afterwards, we propose a description of all the necessary tools chosen for the implementation of the platform in a Web server. Then, we propose through figures the installation of the different technological tools and the Moodle platform. Finally, we propose the configuration of our Moodle platform according to our needs


Introduction
Docker is an open-source platform that run applications and makes the process easier to develop, distribute. The applications that are built in the docker are packaged with all the supporting dependencies into a standard form called a container. These containers keep running in an isolated way on top of the operating system's kernel (1). The extra layer of abstraction might affect in terms of performance. Container technology has a history of more than 10 years, but Docker now has new hope because it has new capabilities that priority technology does not have. Therefore, Docker is a technology that stands out among the best innovations. Initially, it facilitated the creation and control of containers. In addition, developers can easily package applications into lightweight Docker containers. These virtualized applications can be easily performed anywhere without any changes. In addition, compared to different innovations on the same device, Docker can convey more virtual situations. Container images become containers at runtime. For Docker containers, they become images-when they run on Docker Engine they become containers, In our case, we need to use Docker technology to install the moodle platform on the Linux server, so to achieve this purpose, we need to install Docker after the Moodle platform, then install a database management system, and finally install another for MySQL database Web-based management application for the management system.

Web server architecture
A web server is either a web resource service software (HTTP server) or a computer server (computer) that responds to requests from the World Wide Web on a public (Internet) or private (intranet) network, primarily using the HTTP protocol.

Container-based Web server architecture
The following figure shows an example of a Web server architecture based on Linux containers. Indeed, a Linux container is a process or a set of processes isolated from the rest of the system. All the files needed to run them are provided by a separate image, which means that Linux Containers are portable and work the same way in development, test and production environments [3]. As a result, they are much faster than development pipelines that rely on replication of traditional test environments. Because of their popularity and ease of use, containers are also an essential component of IT security.

Figure 2
Web server architecture based on docker Our choice was based on the use of containers with several characteristics. Among these characteristics are efficiency, simplicity, speed, stability, isolation and efficiency in the management of resources.

Choice of VPS server
The servers integrate a remote management and supervision solution, more or less advanced. We have chosen a VPS Virtual Private Server is an IaaS (infrastructure as a service) very widespread among the various offers of web hosting companies [4]. The VPS works in the same way as a Cloud or a Virtual Box so it is a virtual environment that is hosted on a server completely independent of the computer and the user. The VPS has similar characteristics to the dedicated server, but its architecture is quite different. among its characteristics we can mention: • A dedicated server housed within a physical machine: VPS is a dedicated virtual host located in the server, using the virtualized system and other physical resources, which can run the VPS normally. Therefore, the initial server is divided into several servers. Each of them uses its own operating system and can be rebooted independently from other operating systems; • The VPS implies an independent management: VPS allows users to manage their servers from the root directory of the computer. This allows independent and secure management of servers in the same way as dedicated servers; • The virtual server is managed by a hypervisor: The virtual machine manager allows allocating part of the resources to each server, processor, memory space or disk space; • The VPS is able to support the use of applications and other software: Each user will be able to install the required applications, depending on the operating system installed. VPS can provide mailboxes and specific services for e-commerce sites, and also allows the creation of blogs. Similarly, private hosting has similar features.

Choice of the Linux operating system:
In the field of web hosting, Linux is generally considered the best operating system for server hosting.
Since 1992, opensource software has been accessible to everyone, and thanks to its simple modular architecture, it can be adjusted to personal needs and knowledge. The advantages of using Linux are numerous. We offer a revenue from what we believe to be substantial and appreciable gains: • Robustness: GNU/Linux provides a solid foundation because it continues to provide good services: it will not cause "unexpected system crashes" or overall instability due to errors in certain programs, so Linux is inherently more stable than Windows and less vulnerable to attacks. • The distribution: Technically, there is only one official Linux kernel. Dozens of distribution versions have been designed around this kernel, and each version brings the know-how and philosophy of the community involved. each community can develop its tools and fill in the required components. • Security: The security of Linux has been recognized and is inherent in its architecture. The management of permissions, users and their structures reinforce the security of the system. Compared to Windows, the number and importance of security vulnerabilities under Linux are much lower. In addition, most viruses, Trojans and spyware are designed to attack Windows systems and have little effect on Linux systems. And, if an invasion occurs, the damage will be very limited. The core of the system and the data of other users are protected.

Choice of CentOS distribution
The CentOS (Community Enterprise Operating System) distribution is one of the best-known Linux distributions for Web servers, derived from the Linux-based Red Hat Enterprise Server. In the enterprise version, CentOS distinguishes features that are invaluable for the company. CentOS distinguishes features that as with RHEL are invaluable for companies: • Stability: As part of its stability, CentOS will continue to improve, making it the most appropriate platform for today's software. However, always consider compatibility with older applications. Therefore, more and more evolutionary development steps are carried out to ensure the stability of the active ingredients. Most importantly, the powerful performance and high availability of the system in the area of virtualization (KVM for Kernel-based Virtual Machine) has left a deep impression. This explains why distribution also plays an important role in virtualization and the development of Cloud servers; • Security: Today, the topic of security is more important than ever. Therefore, CentOS is an excellent choice for RHEL-based enterprise solutions at this time. Red Hat's core source code has achieved a high level of security. This is due to the active detection of the software company's security team. In addition, in all CentOS updates, especially in the integration of new programs, security and error checking are essential; • Speed: CentOS runs much faster than similar Linux operating systems. Because this only applies to the basic version of the software. This way, the processor running CentOS will not have any problems trying to run a lot of different applications. It is also unlikely that CentOS programs will have security or blocking errors. This will slow down the computing speed and even cause other systems to crash; • Long maintenance and support cycles: Since the first version of CentOS, the small and large versions have been closely linked to the corresponding RHEL versions. The development team needs 2 to 6 weeks (or a few hours of reduced update time) for the code adaptation process, which is now established. Starting with version 7, a timestamp indicating the release of the core code is also attached. In addition to version management, CentOS has also adopted maintenance period guidelines.

Choice of Docker container creation tool
Just as in the field of transportation, computer containers store objects for transportation. They allow applications and their dependencies to be shipped on multiple operating systems, whatever they may be. They ensure that their contents are identical on departure and arrival, and that they are secure, through their isolation.
Containerization provides a way to virtualize resources in a lightweight manner and ensures isolation via the operating system. As a result, these resources are easier to migrate from one system to another. It is a powerful gas pedal for application development.
Docker is the first company in the market to introduce the concept of application containers that preserve their life cycle in 2013. This changes the way you display the containers and until now they were considered lightweight virtual machines. Docker has developed open-source software that allows you to manage containers. In other words, it has created an image rendering and runtime format, which is the subject of the Open Container Initiative (OCI) standardization process, which is an open reference standard for containers established by a group of companies.
Container tools, including Docker, have an image-based deployment model. This makes it easy to share all dependent applications or a set of services across multiple environments. Docker also automatically deploys applications (or a set of combined processes that make up an application) within a container environment. These Linux container-based tools (hence their ease of use and uniqueness) provide users with unprecedented application access, accelerated deployment, and version control and version assignment capabilities.
Traditional Linux containers use an initialization system capable of handling multiple processes. As a result, the entire application can be run as a block. Docker technology encourages the decomposition of applications into separate processes and provides the tools to do so. This fine-grained approach has many advantages.
• Modularity: Docker's containerization method is based on application decomposition: that is, the functions of certain applications can be repaired or updated without disabling the entire application. In addition to this micro-service approach, Docker also allows processes to be shared between different applications as if using a service-oriented architecture (SOA); • Layers and image version control: Each Docker image file consists of a series of layers. These layers are assembled into a single image. Each modification of the image will generate a layer. Each time the user executes a command (such as run or copy) a new layer is created. Docker reuses these layers to create new containers, speeding up the building process. Share intermediate changes between images to maximize speed, size, and efficiency. So, when you say overlay, you mean version control. An update log is updated with each change so you have full control over the images in the container; • Restoration: Perhaps the most interesting function of the overlay is restoration. Each image is composed of layers. Moreover, if you are not satisfied with the current iteration of the image, you can restore the previous version. This feature promotes agile development and helps you implement continuous integration and deployment practices (CI / CD) at the tool level; • Rapid deployment: Before that, it took a few days to install the new equipment, get it up and running, deploy it and make it available. It's a complicated and tedious process. Today, with a Docker Container, all operations can be completed in seconds. By creating a container for each process, you can quickly share similar processes with new applications. In addition, since containers can be added or moved without rebooting the operating system, deployment time is further reduced. Not only that, the deployment speed is so fast that one can easily create and destroy data in a container without any problems.
In short, Docker technology offers a more granular and controllable approach based on microservices that considers efficiency as the core of its objectives.

Choice of the Bitnami library
Bitnami is famous for creating virtual machines and automatic installation processes for various applications. In addition to executable files, Bitnami also provides virtual images for VMware hypervisors, VirtualBox, major Cloud services such as Amazon Web Services, Google Cloud Platform and Microsoft, and even recently for Docker containers.
These are mainly Open-Source applications, and WordPress is clearly reflected in Bitnami's catalog.
Thus, Bitnami is a library of installers or software packages for web applications, solution stacks and virtual devices in image form. Bitnami is sponsored by Bitrock, a company founded in 2003 in Seville, Spain by Daniel Lopez Ridruejo and Erica Brescia [5]. We chose Bitnami because it offers features such as: • It pays particular attention to changes in upstream resources and uses an automated system to quickly publish a new version of this image.; • It offers the latest bug fixes and functions as soon as possible; • It makes it easy to switch between formats according to project requirements since Bitnami containers, virtual machines and cloud images use the same components and configuration methods.; • It publishes daily with the latest available distribution packages all Bitnami container images.

Choice of the MariaDB database
MariaDB is an Open-Source relational database system that is fast, reliable, scalable and easy to use. MariaDB Server is designed for high load, mission-critical production systems and embedded software in large-scale deployments.
MariaDB is a project born following the indirect acquisition of the MySQL solution by the Oracle Corporation. It is a branch based on the current MySQL code (currently 5.5), which includes all its history and functions. One of the initial goals of MariaDB is to become an "embedded" alternative, which means that it is not necessary to change applications while offering other features, better performance and greater transparency in development [6].
Unlike MySQL development, which has always been led by one company (MySQL AB, then Sun Microsystems Inc., and now Oracle Corporation), MariaDB is led by Michael Widenius, the original author of MySQL. Because of this community philosophy and the improved responsiveness and transparency of the project to external contributors, MariaDB will eventually be integrated into most major Linux distributions, replacing MySQL. MariaDB is mainly developed in C language and provided under GPL-2 license (the client library is LGPL-2).

Choice of the MySQL administration web application, PhpMyAdmin
PhpMyAdmin is a free software written in PHP designed to manage MySQL administration on the Web. It is one of the best-known interfaces to manage MySQL databases on PHP servers. Many free and paid hosting providers provide it, so users don't have to install it |7].
This convenient interface allows very easy execution and without having to master much knowledge of the database, one can perform queries, such as creating, inserting, updating, deleting and modifying the database structure, as well as transferring and revoking rights and importing and exporting. Using this system, one can easily save the database as a file and transfer data to it without any knowledge of SQL.
PhpMyAdmin supports several operations on MySQL and MariaDB. Common operations (manage databases, tables, columns, relationships, indexes, users, permissions, etc.) can be performed through the user interface, and we can always choose to execute any SQL statement directly.

Installation of Docker
The following command illustrates the installation of the Docker under the Linux operating system.
The following command illustrates the Docker boot command under the Linux operating system.

Installation of the platform:
The recommended method of obtaining the Bitnami Docker image for Moodle is to extract the predefined image from the Docker Hub registry. The following command illustrates the installation of Moodle.
Since we need to link the Moodle container with the MariaDB container, we need to create a network to achieve this result, our network called Moodle-network will act as a bridge between the two containers. The following command illustrates the creation of a Moodle-network.

Installation of the MariaDB database
For the installation of the MariaDB database, the recommended method to obtain the Docker Bitnami image, MariaDB is to extract the predefined image from the Docker Hub registry. The following command illustrates the installation of MariaDB.
After installing Moodle and MariaDB, you need to create a volume for MariaDB persistence and MariaDB container creation. Indeed, program data persistence management refers to the mechanism responsible for backing up and restoring data [8]. The following command illustrates the creation of a volume for MariaDB persistence.
The following command illustrates the startup of the MariaDB container.
The following command, illustrates the creation of volumes for Moodle persistence.
The following command, illustrates the startup creation of the Moodle container.
The following command illustrates that the containers of Moodle and MariaDB are well connected.

Installation of the PhpMyAdmin
The following command illustrates the installation of PhpMyAdmin.
To specify the MySQL host in the PMA_HOST environment variable, use PMA_PORT to specify the server port. The following command illustrates the specifications of PMA_HOST and PMA_PORT.

Platform configuration
Once the platform is installed, you have to log in as an administrator on the platform by entering the IP address of the web server. We will get the screen illustrated by the following figure on the left side.
To be authenticated, i.e., getting the username and password, it is necessary to access the following site: Hub.docker.com/r/bitnami/moodle and look for the block concerning the user and site configuration. During this first connection, the default name of the account is: user and for the password is: bitnami. The following figure on the right illustrates the user and site configuration. After displaying the dashboard, for security reasons, it is necessary to change the default name and password and adapt them to the user's requirements. To do this, it is necessary to click on the name of the user: User1 (at the top right of the interface), a scrolling bar will appear, it is necessary to choose the command Profile. The following figure on the right shows this action. Once clicking on the Profile command, the user interface is displayed (User1). To modify Just click again on the link: Edit profile. The following figure on the right is displayed which concerns the user's parameters through which we can change the user name, the password as well as data about the user (name and surname, e-mail address, city, country, ...) and insert an image for the user avatar. Once the different data have been entered and saved, it is advisable to log out and then log in with the new contact information.   For the setting of the home page, i.e., changing the name of the site and its abbreviation. To do this, simply use the settings link on the first page (Front page settings).

Figure 12 First page settings
Before changing the interface, a theme must be downloaded from the Moodle platform. To do this, it is enough to make a small search at the level of a navigator concerning the themes of Moodle. Once the theme is chosen, you must download it.
To change the graphical interface of the proposed theme, a plugin must be installed which is in the form of themes, to apply this, we must go to the administration site and choose the Plugins tab. Once clicking on this tab, we must click on the link Install plugins.
The next figure on the right appears, simply import the file already downloaded from the Moodle platform library for themes by clicking on open file. Then proceed as described in the instructions below.   Once clicked on the Use theme button, it is necessary to return to the administration site and choose the Appearance tab, then click on the link of the chosen theme, in this case it is the Degrade theme. The figure Gradient theme appears, you just have to choose the colors according to your needs. Indeed, since the perception of colors changes with the country and the city, and that each color has a meaning, we chose the color blue because it is the most dominant color in our environment and this color is the best choice for information technology. Thus, the figure Gradient Theme, represents our choices of colors.

Figure 18
Appearance Figure 19 Degraded theme

Conclusion
As a guide conclusion of this article which concerns the implementation of the Moodle platform, this implementation which consists of several steps. Indeed, the first step concerned the choice of the architecture of the Web server to be used, thus, after having defined an architecture of a Web server in a general way, we chose for our case an architecture of a Web server which is based on Linux containers.
The second step concerned the choice of technological tools; therefore, we chose: • The VPS server (Virtual Private Server) is a very widespread IaaS among the various offers of web hosting companies; • The Linux operating system which Linux is generally considered as the best operating system for server hosting in the field of web hosting; • The CentOS (Community Enterprise Operating System) distribution which is one of the best-known Linux distributions for web servers, • The technology Docker container creation tool that is the first company in the market to introduce the concept of application containers; • The Bitnami library which is famous for creating virtual machines and automatic installation processes for various applications; • MariaDB database which is a fast, reliable, scalable and easy to use Open-Source relational database system; The MySQL administration web application, PhpMyAdmin which is a free software written in PHP designed to manage MySQL administration on the web. The third was the installation of the Moodle platform and various technology tools. So, after installing Docker, we installed the Moodle platform following the recommended method to get the Bitnami Docker image for Moodle which is to extract the predefined image from the Docker Hub registry. Similarly, we have installed the Moodle-network will act as a bridge between the Moodle container and the MariaDB container. For the installation of the MariaDB database, we have chosen the recommended method to get the Docker Bitnami image, which allows MariaDB to extract the predefined image from the Docker Hub registry. After installing Moodle and MariaDB, we created a volume for MariaDB persistence and MariaDB container creation. Indeed, program data persistence management refers to the mechanism responsible for backing up and restoring data. Finally, we installed PhpMyAdmin and to specify MySQL host in the environment variable PMA_HOST, we need to use PMA_PORT to specify the server port.
The fourth and final step is the configuration of the Moodle platform. To authenticate ourselves, i.e., to have the username and password, we went to Hub.docker.com/r/bitnami/moodle and look for the block concerning the user and site configuration (user and site configuration). During this first connection, the default name for the account is: user and for the password is: bitnami. After displaying the dashboard, for security reasons, we have changed the default name and password and adapted them to our requirements.
For adding other languages, the choice of the default language and the setting of the home page (change of the name of the site and its abbreviation). We went through the administration of the site. By performing several actions, we managed to add other languages for our site, we added the French language and Arabic language, then we chose the French language as the default language and we changed the name of the site and its abbreviation according to our needs.
To change the graphical interface of the proposed theme, we installed a plugin that is in the form of themes, which we downloaded from the library of the Moodle platform. Then, by following the instructions, we managed to change the default theme and replace it with the chosen theme.

Disclosure of conflict of interest
All authors declare that no conflict of interest is exist.