HOWTO
Install Nginx
sudo systemctl start apache2.service
sudo apt-get remove apache2
sudo apt-get install language-pack-en-base
sudo apt-get install nginx
sudo systemctl stop nginx.service
sudo systemctl start nginx.service
Navigate to the IP Address of the server where you installed
Nginx using a browser to ensure Nginx serves content e.g.
http://127.0.0.1
The default directory where Nginx serves its content from on Ubuntu is /var/www/html.
Since RADIUSdesk has been developed over a couple of years, it was traditionally served by Nginx from the /usr/share/nginx/html directory. (This was on Ubunut 14.04).
Edit the default server file:
sudo vi /etc/nginx/sites-enabled/default
#root /var/www/html;
root /usr/share/nginx/html;
php-fpm
The default install of Nginx does not support the serving of .php files.
We will install a program (actually a service) called php-fpm.
This service will listen for requests to interpret.
Install the php-fpm service:
sudo apt-get install php-fpm
Modify Nginx
sudo vi /etc/nginx/sites-enabled/default
#add index.php
index index.php index.html index.htm;
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
sudo systemctl reload nginx.service
sudo vi /usr/share/nginx/html/test.php
<?php
phpinfo();
?>
Install MySQL
sudo apt-get install mysql-server php-mysql
Disable strict mode
With the 16.04 release of MySQL there were some changes to the MySQL configuration which causes problems on the current RADIUSdesk database implementation.
We will disable Strict SQL Mode in MySQL 5.7.
sudo vi /etc/mysql/conf.d/disable_strict_mode.cnf
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sudo systemctl restart mysql.service
Modify expiry date for certain files
sudo vi /etc/nginx/sites-available/default
location ~ ^/cake2/.+\.(jpg|jpeg|gif|png|ico|js|css)$ {
rewrite ^/cake2/rd_cake/webroot/(.*)$ /cake2/rd_cake/webroot/$1 break;
rewrite ^/cake2/rd_cake/(.*)$ /cake2/rd_cake/webroot/$1 break;
access_log off;
expires max;
add_header Cache-Control public;
}
sudo systemctl reload nginx.service
Compress the text before sending it to client
sudo vi /etc/nginx/nginx.conf
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
sudo systemctl restart nginx.service
Install RADIUSdesk
Install CakePHP
As from December 2016 we started a migration process of migrating from CakePHP v2 to CakePHP v3.
The ORM component of CakePHP v3 is completely new and different which makes the migration fairly involved.
Since the architecture of RADIUSdesk is following modern design principles it allows us to run both CakePHP v2 and CakePHP v3 simultaneously.
We can then do the migration gradually over time.
Required packages
sudo apt-get install php-cli php-gd php-curl php-xml php-mbstring php-intl
Install CakePHP v2
-
There are two formats to choose from when selecting to download, Zip or Tar.gz. Select Tar.gz.
Copy and extract it inside the directory that Nginx is serving its content from (/usr/share/nginx/html)
sudo cp 2.9.7.tar.gz /usr/share/nginx/html
cd /usr/share/nginx/html
sudo tar -xzvf 2.9.7.tar.gz
sudo ln -s ./cakephp-2.9.7 ./cake2
sudo systemctl reload php7.0-fpm.service
Install the RADIUSdesk CakePHP v2 Application
sudo apt-get install subversion
cd /usr/share/nginx/html/cake2
sudo svn checkout svn://dvdwalt@svn.code.sf.net/p/radiusdesk/code/trunk/rd_cake ./rd_cake
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/tmp
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/Locale
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/img/flags
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/img/nas
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/img/realms
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/img/dynamic_details
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/img/dynamic_photos
sudo chown -R www-data. /usr/share/nginx/html/cake2/rd_cake/webroot/files/imagecache
Install the RADIUSdesk CakePHP v3 Application
cd /usr/share/nginx/html/
sudo svn checkout svn://dvdwalt@svn.code.sf.net/p/radiusdesk/code/trunk/cake3 ./cake3
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/tmp
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/logs
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/webroot/img/realms
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/webroot/img/dynamic_details
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/webroot/img/dynamic_photos
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/webroot/img/access_providers
sudo chown -R www-data. /usr/share/nginx/html/cake3/rd_cake/webroot/files/imagecache
The Database
sudo su
mysql -u root
create database rd;
GRANT ALL PRIVILEGES ON rd.* to 'rd'@'127.0.0.1' IDENTIFIED BY 'rd';
GRANT ALL PRIVILEGES ON rd.* to 'rd'@'localhost' IDENTIFIED BY 'rd';
exit;
sudo mysql -u root rd < /usr/share/nginx/html/cake3/rd_cake/setup/db/rd.sql
USE rd;
DELETE FROM phrase_values WHERE language_id=16 OR language_id=15 OR language_id=13 OR language_id=5 OR language_id=14;
sudo vi /etc/nginx/sites-enabled/default
location /cake2/rd_cake {
rewrite ^/cake2/rd_cake/(.*)$ /cake2/rd_cake/webroot/$1 break;
try_files $uri $uri/ /cake2/rd_cake/webroot/index.php?q=$uri&$args;
}
location /cake3/rd_cake {
rewrite ^/cake3/rd_cake(.+)$ /cake3/rd_cake/webroot$1 break;
try_files $uri $uri/ /cake3/rd_cake/index.php$is_args$args;
}
sudo systemctl reload nginx.service
Viewer component
cd /usr/share/nginx/html/
sudo svn checkout svn://dvdwalt@svn.code.sf.net/p/radiusdesk/code/trunk/rd ./rd
For the viewer component you need the ExtJS toolkit. We've added version 6.2.0 to the SVN repository for easy download
Checkout and unzip the
GPL version under the /usr/share/nginx/html/rd directory.
NOTE: This is a single big file which will take some time to download over slow connections.
cd /usr/share/nginx/html/
sudo svn checkout svn://svn.code.sf.net/p/radiusdesk/code/extjs ./
sudo mv ext-6-2-sencha_cmd.tar.gz ./rd
cd /usr/share/nginx/html/rd
sudo tar -xzvf ext-6-2-sencha_cmd.tar.gz
Cron Scripts
RADIUSdesk requires a few scripts to run periodically in order to maintain a healthy and working system.
To activate the cron scripts execute the following command, which will add RADIUSdesk's crons scripts to the Cron system
sudo cp /usr/share/nginx/html/cake2/rd_cake/Setup/Cron/rd /etc/cron.d/
Next steps