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 #
1 2 3 4 5 6 7 8 9 | 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 #
1 2 3 4 5 | 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
1 2 3 4 5 | 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 #
1 | nano /etc/httpd/conf.d/controller.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <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
1 2 3 | mkdir /var/www/controller mkdir /var/www/controller/public systemctl restart httpd |
Configuring Let’s Encrypt #
Let’s encrypt requires snap now.
1 2 3 4 5 6 7 8 9 10 11 12 | 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 #
1 2 | wget https://getcomposer.org/installer -O composer-installer.php php composer-installer.php --filename=composer --install-dir=/usr/local/bin |
MariaDB Installation #
1 2 3 | dnf install mariadb mariadb-server systemctl enable --now mariadb mysql_secure_installation |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 #
1 2 3 | cd /var/www/controller wget https://repo.nixpal.com/controller/zcloud-controller-latest.zip unzip zcloud-controller-latest.zip |
Import Database:
1 | mysql -p controller < db.sql |
Edit .env config file, complete DB credentials, URL and License Information Like this example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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: #
1 | crontab -e |
1 | * * * * * cd /var/www/controller/ && php artisan schedule:run |
SELinux Configuration #
1 2 3 4 5 | 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).