====== 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 ===== * If you are still running a Ubuntu install prior to 22.04 you will need to install CakePHPv8.1 for the latest RADIUSdesk to work. * You can follow these instructions: https://www.cloudbooklet.com/how-to-install-or-upgrade-php-8-1-on-ubuntu-20-04/ * You can then consult the current install instructions to see which extensions you have to install. #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 * Do a new install of RADIUSdesk using this section as reference: https://radiusdesk.com/wiki/getting_started/22_install_ubuntu_nginx#install_radiusdesk * Remove the old rd SQL database and create a new one using the latest sample SQL database. 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