RADIUSdesk

logo

Upgrading From CakePHP3 Based Install

Introduction

  • This page can be used as a reference when upgrading an older install of RADIUSdesk that is still using CakePHPv3 to the latest one using CakePHPv4.
  • There has been substantial changes in the database structure between the RADIUSdesk releases that use CakePHPv3 and those that user CakePHPv4.
  • We have created a script that will do a best effort in porting the older database structure to the new database structure.

Preparing A Fallback

  • You are advised to do these first on a clone / copy of the production system in order to establish everything will work as intended after the porting action.
  • As with any upgrade you need to prepare the fallback if things does not work out as intended.
  • Fallback points
    • Make a backup/sql dump of the CakePHPv3 based database.
    • Make a copy of the old /var/www/rdcore folder and all of its sub-folders.
    • Make a copy of the /etc/freeradius folder and all of its sub-folders.
  • Once this is taken care of we can start our migration attempt.

Install CakePHP 8.1

#Add php8.1-extension_name
sudo apt-get -y install php8.1-cli php8.1-mysql php8.1-gd php8.1-curl php8.1-xml php8.1-mbstring php8.1-intl php8.1-sqlite3 
  • Also remember to update the Nginx config file to use 8.1
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    #
    #       # With php-fpm (or other unix sockets):
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    #       # With php-cgi (or other tcp sockets):
    #       fastcgi_pass 127.0.0.1:9000;
}

Porting Actions

  • We assume you made the backup of the database and folders that was mentioned earlier.
  • Create a new database which we will use to migrate from:
sudo su
mysql -u root
create database rd_cake3;
GRANT ALL PRIVILEGES ON rd_cake3.* to 'rd_cake3'@'127.0.0.1' IDENTIFIED BY 'rd_cake3';
GRANT ALL PRIVILEGES ON rd_cake3.* to 'rd_cake3'@'localhost' IDENTIFIED BY 'rd_cake3';
exit;
  • Move the original /var/www/rdcore folder and to a new install using the latest code:
sudo mv /var/www/rdcore /var/www/rdcore_cake3
sudo su
mysql -u root
drop database rd;
create database rd;
exit;
sudo mysql -u root rd < /var/www/html/cake4/rd_cake/setup/db/rd.sql

Running the porting script

  • Everything is now in place to run the porting script.
  • Run the following as root user or www-data user.
cd /var/www/html/cake4/rd_cake && bin/cake migrate
  • If everything work as intended this script will create a cloud / realm.
  • It will also port existing RADIUS related things including Dynamic Login pages.

Finally you need to copy the older files from the old folders

  • The following of the original folders are important
/var/www/html/cake3/rd_cake/webroot/img/realms
/var/www/html/cake3/rd_cake/webroot/img/dynamic_details
/var/www/html/cake3/rd_cake/webroot/img/dynamic_photos
/var/www/html/cake3/rd_cake/webroot/img/access_providers
/var/www/html/cake3/rd_cake/webroot/img/hardwares
/var/www/html/cake3/rd_cake/webroot/files/imagecache