NolaPro Login

NolaPro Ubuntu 24 Installation

1. Installation Intro

NolaPro runs on Apache, PHP and MySQL. It's possible to run under Nginx, or other web servers, but this tutorial will only cover the Apache setup. Database server of both MariaDB and MySQL are support.

The first thing to do is make sure you system is fully up-to-date before.

sudo apt update -y Hit:1 http://us.archive.ubuntu.com/ubuntu noble InRelease Get:2 http://us.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB] Hit:3 http://security.ubuntu.com/ubuntu noble-security InRelease Hit:4 http://us.archive.ubuntu.com/ubuntu noble-backports InRelease Fetched 126 kB in 1s (112 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done ...

2. Installing Apache

This tutorial will only cover the basics. You can find a more detailed guide to apache for Ubuntu here: Install and Configure Apache (ubuntu.com)

Apache can be installed on Ubuntu using this command

sudo apt install apache2 -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaprutil1t64 libjansson4 liblua5.4-0 ssl-cert Suggested packages: apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser ufw The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaprutil1t64 libjansson4 liblua5.4-0 ssl-cert ...

Confirm that Apache was installed, running and starts by default.

systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled) Active: active (running) since Tue 2024-09-24 20:06:44 UTC; 14s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 1863 (apache2) Tasks: 55 (limit: 19108) Memory: 5.7M (peak: 5.8M) CPU: 111ms CGroup: /system.slice/apache2.service ├─1863 /usr/sbin/apache2 -k start ├─1866 /usr/sbin/apache2 -k start └─1867 /usr/sbin/apache2 -k start ...

If the "Loaded" line doesn't read as "enabled", then Apache is not configured to auto start on boot. You can fix this with this command:

sudo systemctl enable apache2

If the "Active" line doesn't read as "running", then Apache may need to be started manually. You can fix this with this command:

sudo systemctl start apache2

3. Installing MySQL/MariaDB

This tutorial will only cover the basics. You can find a more detailed guide to apache for Ubuntu here: How To Install MySQL on Ubuntu 20.04 (digitalocean.com)

sudo apt install mysql-server -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-core-2.1-7t64 libevent-pthreads-2.1-7t64 libfcgi-bin libfcgi-perl libfcgi0t64 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite32t64 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0 psmisc Suggested packages: libdata-dump-perl libipc-sharedcache-perl libio-compress-brotli-perl libbusiness-isbn-perl libregexp-ipv6-perl libwww-perl mailx tinyca The following NEW packages will be installed: libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-core-2.1-7t64 libevent-pthreads-2.1-7t64 libfcgi-bin libfcgi-perl libfcgi0t64 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite32t64 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0 psmisc ...

Confirm that MySQL was installed, running and starts by default.

sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Tue 2024-09-24 20:16:06 UTC; 13s ago Process: 2801 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 2810 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 19108) Memory: 365.4M (peak: 380.0M) CPU: 4.068s CGroup: /system.slice/mysql.service └─2810 /usr/sbin/mysqld ...

If the "Loaded" line doesn't read as "enabled", then MySQL is not configured to auto start on boot. You can fix this with this command:

sudo systemctl enable mysql

If the "Active" line doesn't read as "running", then MySQL may need to be started manually. You can fix this with this command:

sudo systemctl start mysql

Set Root MySQL Password

sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'YOUR_PASSWORD_HERE';"

Start MySQL Configuration

sudo mysql_secure_installation

Type N then [Enter] to when asked to enable the validate password component.

Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: N

Unless wanted, you can skip the step to set a new root password.

Change the password for root ? ((Press y|Y for Yes, any other key for No). N

Always choose to remove anonymous users.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

It is highly recommended to disallow the root login.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

It is recommended to remove the uneeded test database.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

Always choose to reload the privilege table.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

At the end you should get this message.

Success. All done!

Next you will need to add some specfic setting for NolaPro.

echo 'sql_mode=' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf > /dev/null

The MySQL service will need to be restarted to pick up the new settings.

sudo systemctl restart mysql

Lets create the NolaPro MySQL User

sudo mysql -u root -p

Enter your root mysql password

Enter password:

You should now be at the MySQL command prompt

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

Create a new database for NolaPro

mysql> CREATE DATABASE IF NOT EXISTS nolapro;

Create the NolaPro user and password. Change the user and password below to something unique and hard to guess. Make sure to write this down, as you will need this username and password later in this guide.

mysql> CREATE USER 'SET_USERNAME_HERE'@'127.0.0.1' IDENTIFIED BY 'SET_NEW_PASSWORD_HERE';

Give your new MySQL user access to the NolaPro database

mysql> GRANT ALL ON nolapro.* TO 'SET_USERNAME_HERE'@'127.0.0.1';

Close the MySQL prompt with the exit command.

mysql> exit;

4. Installing PHP

sudo add-apt-repository ppa:ondrej/php -y

A number of different version of PHP are supported. This guide will cover PHP 8.2 using FPM.

The PPA repository ondrej/php is required to install PHP v8.2.

sudo add-apt-repository ppa:ondrej/php -y PPA publishes dbgsym, you may need to include 'main/debug' component Repository: 'Types: deb URIs: https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ Suites: noble Components: main ...

Install PHP v8.2 using apt.

sudo apt install php8.2 php8.2-fpm php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-mysql php8.2-zip -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: debsuryorg-archive-keyring libonig5 libsodium23 libxslt1.1 libzip4t64 php-common php8.2-cli php8.2-common php8.2-opcache php8.2-readline Suggested packages: php-pear The following NEW packages will be installed: debsuryorg-archive-keyring libonig5 libsodium23 libxslt1.1 libzip4t64 php-common php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml php8.2-zip ...

Confirm that PHP-FPM was installed, running and starts by default.

systemctl status php8.2-fpm ● php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled) Active: active (running) since Tue 2024-09-24 20:36:42 UTC; 40s ago Docs: man:php-fpm8.2(8) Process: 13784 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS) Main PID: 13780 (php-fpm8.2) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0.00req/sec" Tasks: 3 (limit: 19108) Memory: 10.0M (peak: 10.5M) CPU: 94ms CGroup: /system.slice/php8.2-fpm.service ├─13780 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)" ├─13782 "php-fpm: pool www" └─13783 "php-fpm: pool www" ...

If the "Loaded" line doesn't read as "enabled", then PHP-FPM is not configured to auto start on boot. You can fix this with this command:

sudo systemctl enable php8.2-fpm

If the "Active" line doesn't read as "running", then PHP-FPM may need to be started manually. You can fix this with this command:

sudo systemctl start php8.2-fpm

Run these commands to configure Apache to use PHP.

sudo a2enmod proxy_fcgi setenvif; sudo a2enconf php8.2-fpm; sudo rm /var/www/html/index.html; sudo systemctl reload apache2;

Let's now configure the PHP installation to better operator for NolaPro.

sudo nano /etc/php/8.2/fpm/conf.d/99-nolapro.ini;

Here are required settings that you must have in the file. Replace the timezone below with a entry from this list of timezones that fits your region.

short_open_tag = On date.timezone = America/New_York

Here are recommended settings you can add to the file. Adjust these as you feel fit.

max_input_vars = 99999 upload_max_filesize = 32M post_max_size = 32M memory_limit = 1G max_execution_time = 300

The PHP service will now need restarted to apply the new settings.

sudo systemctl restart php8.2-fpm

5. Installing IonCube

NolaPro Requires that IonCube support be added to your PHP installation to operate.

The installation wizard that IonCube offers is the simplest way to get this software ready.

cd /var/www/html; sudo wget https://www.ioncube.com/loader-wizard/loader-wizard.tgz; sudo tar -xf loader-wizard.tgz; sudo rm loader-wizard.tgz;

Now, access your server via your browser to complete the IonCube installation: http://127.0.0.1/ioncube/loader-wizard.php . If you are accessing your server from another machine, replace the 127.0.0.1 with the needed IP or domain.

After you complete the ioncube installation, don't forget to delete the ioncube directory from your web folder.

sudo rm /var/www/html/ioncube -R

Here are a few tips if you get stuck.


In "Step 1)" you can download a file like this, but replace the URL below with the URL given by the wizard.

sudo wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

After downloading, you can extract the tar like this, but replace the filename shown with the one that you had downloaded.

sudo tar -xf ioncube_loaders_lin_x86-64.tar.gz

In "Step 2)" you can move a file from location to another like this, but replace the path highlighted with the path shown by the wizard.

sudo mv ./ioncube/ioncube_loader_lin_8.2.so /usr/lib/php/20190902

In "Step 3)" it's simplest to copy and paste the file instead of downloading it directly the needed location. Replace the path below with the path that is shown by the wizard.

sudo nano /etc/php/8.2/fpm/conf.d/00-ioncube.ini

Paste the contents of the file and then use Ctrl + X Shift + Y [Enter] to save & exit


In "Step 4)" you can restart your php-fpm service with this command.

sudo systemctl restart php8.2-fpm

6. Installing NolaPro

The final steps are to download and extract the NolaPro files into your web accessible folder.

We will need the zip tool to complete this task. Use this command to install zip into Ubuntu.

sudo apt install zip -y Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: unzip The following NEW packages will be installed: unzip zip ...

Now download and extract the installation files

cd /var/www/html; sudo wget https://www.nolapro.com/download/nolapro_release_php_82.zip; sudo unzip nolapro_release_php_82.zip; sudo chown www-data:www-data /var/www/html -R;

You will need to enter your database connection information into the my_defines.php file. Start by install nano.

sudo apt install nano -y Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: hunspell The following NEW packages will be installed: nano ...

Open the my_defines.php file to edit.

sudo nano /var/www/html/includes/my_defines.php; <?php // ******************** WARNING ******************** // * Only experienced users should change settings * // ************************************************* // ************************************************* // * Database Section * // ************************************************* @define('DB_SERVER', 'p:127.0.0.1'); @define('DB_SERVER_USERNAME', 'root'); @define('DB_SERVER_PASSWORD', ''); @define('DB_DATABASE', 'nolapro'); @define('DB_SSL', false); @define('DB_CONN_TIMEOUT', 3); @define('IMAGE_UPLOAD_DIR', 'uploads/'); @define('INTERNAL_SERVER_URL', ''); @define('EXTERNAL_SERVER_URL', ''); ...

Cursor to the DB_SERVER_USERNAME and DB_SERVER_PASSWORD values and enter your username and password.

<?php // ******************** WARNING ******************** // * Only experienced users should change settings * // ************************************************* // ************************************************* // * Database Section * // ************************************************* @define('DB_SERVER', 'p:127.0.0.1'); @define('DB_SERVER_USERNAME', 'ENTER_USER_HERE'); @define('DB_SERVER_PASSWORD', 'ENTER_PASSWORD_HERE'); @define('DB_DATABASE', 'nolapro') @define('DB_SSL', false); @define('DB_CONN_TIMEOUT', 3); @define('IMAGE_UPLOAD_DIR', 'uploads/'); @define('INTERNAL_SERVER_URL', ''); @define('EXTERNAL_SERVER_URL', ''); ...

Once ready, you can exit and save by pressing Ctrl+X, then Shift+Y, and then Enter.

The final parts of the NolaPro installation can be completed via your browser: http://127.0.0.1/ . If you are accessing your server from another machine, replace the 127.0.0.1 with the needed IP or domain.

If you have any troubles completing the installation, please feel free to contact us with questions.