---
title: Almalinux / Rocky Linux 8 Example Installation
description: "In our example we will setup a Zonecloud controller under a Centos 8 server with FQDN (hostname) controller.nixpal.com   ## Required packages installation ### Installing Remi, Epel, Apache httpd, PHP 7.4, Ioncube and Let’s Encrypt certbot ``` dnf update -y…"
url: "https://zonecloud.io/documentation/almalinux-rocky-linux-8-example-installation/"
updated: "2022-11-14"
category: Controller (Web Interface)
---

# Almalinux / Rocky Linux 8 Example Installation

In our example we will setup a Zonecloud controller under a Centos 8 server with FQDN (hostname) controller.nixpal.com

 

## Required packages installation

### Installing Remi, Epel, Apache httpd, PHP 7.4, Ioncube and Let’s Encrypt certbot

```
dnf update -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
dnf install yum-utils wget curl epel-release -y
dnf module reset php
dnf module install php:remi-7.4
dnf install php74-php-ioncube-loader.x86_64
dnf install php-fpm php-mysqlnd php-zip php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
dnf install httpd-tools.x86_64 httpd.x86_64
dnf install php-ioncube-loader
```

### Enable, start and test Apache / PHP

```
systemctl enable php-fpm
systemctl enable httpd
systemctl start php-fpm
systemctl start httpd
echo '<?php phpinfo();' | sudo tee /var/www/html/info.php
```

 

At this point you should have a fully working Apache httpd with PHP and Ioncube. Test with php -v

```
php -v
PHP 7.3.16 (cli) (built: Mar 17 2020 10:18:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies
with the ionCube PHP Loader + ionCube24 v10.3.9, Copyright (c) 2002-2019, by ionCube Ltd.
```

 

## Apache Configuration

### Create Controller’s VirtualHost

```
nano /etc/httpd/conf.d/controller.conf
```

 

```
<VirtualHost *:80>
DocumentRoot "/var/www/controller/public/"
DirectoryIndex index.php
ServerName controller.nixpal.com

<Directory "/var/www/controller/public/">
Options -Indexes
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>

</VirtualHost>
```

Create the folder if it doesn’t already exists and restart httpd

```
mkdir /var/www/controller
mkdir /var/www/controller/public
systemctl restart httpd
```

 

### Configuring Let’s Encrypt

Let's encrypt requires snap now.

```
dnf install mod_ssl openssl
dnf install epel-release
dnf upgrade
dnf install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install core
snap refresh core
ln -s /var/lib/snapd/snap /snap
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --apache
```

 

### Install Composer

```
wget https://getcomposer.org/installer -O composer-installer.php
php composer-installer.php --filename=composer --install-dir=/usr/local/bin
```

 

## MariaDB Installation

```
dnf install mariadb mariadb-server
systemctl enable --now mariadb
mysql_secure_installation
```

 

```
mysql -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 16
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

MariaDB [(none)]> CREATE USER ‘controller’@’localhost’ IDENTIFIED BY ‘SuperStrongPassword!’;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> CREATE DATABASE controller CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON controller.* TO ‘controller’@’localhost’;
Query OK, 0 rows affected (0.001 sec)
```

 

 

## Zonecloud Controller Package installation

 

```
cd /var/www/controller
wget https://repo.nixpal.com/controller/zcloud-controller-latest.zip
unzip zcloud-controller-latest.zip
```

 

Import Database:

```
mysql -p controller < db.sql
```

Edit .env config file, complete DB credentials, URL and License Information Like this example:

```
APP_NAME=zCloud
APP_ENV=local
APP_KEY=ThisIsAStrongKeyButChangeItAnyWay
APP_DEBUG=false
APP_URL=https://controller.nixpal.com

ZCLOUD_LICENSE="ZCWeb-XXXXXXXXXXXX"

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=controller
DB_USERNAME=controller
DB_PASSWORD=SuperStrongPassword!

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MAIL_DRIVER=smtp
MAIL_HOST=mail.nixpal.com
MAIL_PORT=25
MAIL_USERNAME="zcloud@nixpal.com"
MAIL_PASSWORD="SuperStrongPassword"
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=zcloud@nixpal.com
MAIL_FROM_NAME="zCloud"
```

 

### Final Steps

 

php artisan key:generate
 Application key set successfully
 composer install --no-dev
 chown -R apache:apache /var/www/controller/

 

#### CronJob:

```
crontab -e
```

 

```
* * * * * cd /var/www/controller/ && php artisan schedule:run
```

 

#### SELinux Configuration

 

```
setsebool -P httpd_read_user_content 1
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db on
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/controller(/.*)?"
restorecon -RFv /var/www/controller
```

 

#### Finish setup in web interface

 

Now go to https://<server's hostname>/. In our example it’s https://controller.nixpal.com

**Default username is admin@example.com and password admin_!@**

You can start creating a Cluster. For example “Nixpal” and then Adding servers to this Cluster.

We recommend creating 2, or 3 or 4 DNS Servers Nodes first, and then add all of your Web Servers (Agents).

 
