Skip to main content

Nginx

This instruction based on a on standard Nginx installation on Ubuntu 20.04.1 LTS and has been double checked on Debian 10.

PHP installation

Standard setup of nginx doesn’t contain php installation. Here is a sample how to install php in a dedicated version (e.g. 7.4) with required modules (tested on Ubuntu 20.04.1):

apt update
apt -y install software-properties-common
add-apt-repository -y ppa:ondrej/php

systemctl disable --now apache2
apt -y install php7.4-fpm
apt -y install php7.4-mysql
apt -y install php7.4-mbstring
apt -y install php7.4-soap
apt -y install php7.4-xml
apt -y install php7.4-curl
apt -y install php7.4-zip

apt -y upgrade

On Debian 10 the current version (8.0) of php has been installed with at least required modules like this:

systemctl disable --now apache2

apt -y install software-properties-common
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ buster main" | tee /etc/apt/sources.list.d/php.list
apt update

apt -y install php php-fpm php-mysql php-mbstring php-soap php-xml php-curl php-zip
apt -y upgrade

Fusio site creation

It is recommended to create a own server block (site) for Fusio. Create a new folder path /var/www/fusio/html, download the desired version of Fusio from https://github.com/apioo/fusio/releases and unzip it to the new created path.

Caution: To ensure that Fusio can be installed via php script in browser, the Nginx user (default is www-data) temporary should have ownership on root folder and new server block. This has to be undo after finalization!

chown www-data:www-data /var/www
chown -R www-data:www-data /var/www/fusio
chmod 755 /var/www
chmod -R 755 /var/www/fusio

Site configuration

To configure the new site is recommended to copy the default configuration:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/fusio

Then this new configuration /etc/nginx/sites-available/fusio must be adapted to your server name and php version. Sample:

listen 80;
listen [::]:80;
root /var/www/fusio/html/public;
index index.html index.htm index.nginx-debian.html index.php;
server_name [your.domain];

location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;

fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}

error_log /var/log/nginx/fusio_error.log;
access_log /var/log/nginx/fusio_access.log;

The follwing entry must be enabled either in the standard nginx configuration file /etc/nginx/nginx.conf (for all your sites) or in the configuration file of the new Fusio site /etc/nginx/sites-available/fusio:

server_names_hash_bucket_size 64;

Finally the new available site must be enabled by creating a link:

ln -s /etc/nginx/sites-available/fusio /etc/nginx/sites-enabled/

Optionally: If you want to install a certificate to reach Fusio by https this is the right point of time to do it.

The Nginx configuration now can be tested and if successfully restarted:

nginx -t
systemctl restart nginx

Fusio setup

Now the installation script http://[your.doman]/install.php can be used in a browser to setup Fusio.

Cleanup

As mentioned above after installation the ownership should be corrected to limit extended permissions only to the public/apps and cache folder. For security reasons remove the installation script. Sample for default Nginx user:

systemctl stop nginx

rm /var/www/fusio/html/public/install.php
chown root:root /var/www
chown -R root:root /var/www/fusio
chown -R www-data:www-data /var/www/fusio/html/public/apps
chown -R www-data:www-data /var/www/fusio/html/cache

systemctl start nginx

Login to backend

Now you should be able to login to the backend at http://[your.doman]/apps/fusio with the user you have created at Fusio setup.