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
...
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
...
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
...
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;
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"
...
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
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
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.