Installation Ubuntu 16
Contents
Prerequisites
DreamFactory requires certain applications for install and other functionality.
- Install git, curl, zip, unzip
-
$ sudo apt-get install git curl zip unzip
-
PHP
These instructions will install PHP 7 with various modules. DreamFactory requires the mbstring, zip, curl, mongodb, and sqlite3 php modules. Additionally php-fpm is installed if you will be running Nginx as your web server (recommended.) Finally, the mysql php module needs to be installed if you will be using MySQL or MariadDB, which these instructions recommend for the system database. Other database types will require their php modules to be installed for use within DreamFactory. This is covered in the Drivers and Modules section.
Install for Apache
-
$ sudo apt-get install php php-mbstring php-zip php-curl php-mongodb php-sqlite3 php-mysql
Install for Nginx
Install
-
$ sudo apt-get install php-fpm php php-mbstring php-zip php-curl php-mongodb php-sqlite3 php-mysql
Configure PHP FPM
You will need a text editor for this task. The instructions use Nano which comes installed in Ubuntu
- Edit the php-fpm php.ini file
-
sudo nano /ect/php/7.0/fpm/php.ini
- Find the line that reads ;cgi.fix_pathinfo=1
- Change it to read cgi.fix_pathinfo=0
- Save and exit (Ctrl+x, Y, <Enter>)
-
Composer
Composer is a PHP dependency manager and is required for installing DreamFactory. In these instructions, we will assume you are logged in as a user named dfuser. Anywhere you see this username substitute your own.
- Install from Apt
-
$ sudo apt-get install composer
-
Database
You'll need a database for the system to store configuration information. We recommend MariaDB for this. Other supported system databases are SQLite, PostgreSQL, and Microsoft SQL.
MariaDB
Install
- Install the server and client from Apt
-
$ sudo apt-get install mariadb-server mariadb-client
-
Setup
- Login to the database
-
$ sudo mysql
-
- Create a database. You can name it whatever you like. Just make sure you save this information. For the example we called it dreamfactory.
-
CREATE DATABASE dreamfactory;
-
- Create a user with all privileges on that database. You can name the user and password whatever you like. Just make sure you save this information. For the example we used dfadmin for both the user and the password.
-
GRANT ALL PRIVILEGES ON dreamfactory.* to 'dfadmin'@'localhost' IDENTIFIED BY 'dfadmin';
-
- Flush privileges on the database and quit.
-
FLUSH PRIVILEGES;
-
quit
-
DreamFactory
Installing DreamFactory involves getting the required code via git and composer and then using the Laravel artisan command to set up the system. In these instructions, we will assume you are logged in as a user named dfuser. Anywhere you see this username substitute your own.
- Create a directory for installation and make your user the owner of the directory. This will be the working directory for the remainder of this section.
-
$ sudo mkdir /opt/dreamfactory
-
$ sudo chown -R dfuser /opt/dreamfactory
-
- Navigate to the working directory and use git to clone the dreamfactory repo
-
$ cd /opt/dreamfactory
-
$ git clone https://github.com/dreamfactorysoftware/dreamfactory.git ./
-
- Use composer to get dependencies
- Note for commercial users: Copy your commercial license files into the working directory before running this command.
-
$ composer install --no-dev
- Setup the DreamFactory system database connection
-
$ php artisan dreamfactory:setup
- Select option 1 for MySQL. Answer the onscreen prompts regarding database connection and credentials (which you set in the Database section.)
-
$ php artisan dreamfactory:setup
- Answer the onscreen prompts to create your first admin user for the system.
-
- Reset permissions on the storage and cache directories.
-
$ sudo chown -R www-data:dfuser storage/ bootstrap/cache/
-
$ sudo chmod -R 2775 storage/ bootstrap/cache/
-
- Clear the application cache
-
$ php artisan cache:clear
-
Web Server
DreamFactory relies on a web server application to serve the REST endpoints as well as the admin application to users. Options are Nginx and Apache.
Nginx
- Install Nginx from Apt
-
$ sudo apt-get install nginx
-
- Navigate to the configuration directory
-
$ cd /etc/nginx/sites-available
-
- Backup the default config
-
$ sudo cp default default.bak
-
- Edit the default site configuration
- If you have other websites running on your Nginx installation you will need to follow the standard procedure for creating a new virtualhost. Please consult the Nginx documentation for this.
-
$ sudo nano default
- The entire file should look like this when complete:
-
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /opt/dreamfactory/public; index index.php index.html index.htm; server_name server_domain_name_or_IP; 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; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
-
- Save the file and exit.
- Restart PHP-FPM and Nginx
-
$ sudo service php7.0-fpm restart && sudo service nginx restart
-
- Confirm your DreamFactory instance is installed by loading the IP address of your server in a browser. You should be directed to the login page of the admin application.
Apache
- Install Apache from Apt
-
$ sudo apt-get install apache2
-
- Enable the rewrite engine
-
$ sudo a2enmod rewrite
-
- Navigate to the site configuration and backup the default config
-
$ cd /etc/apache2/sites-available
-
$ sudo cp 000-default.conf 000-default.conf.bak
-
- Edit the default config.
-
$ sudo nano 000-default.conf
- Edit the file so that it looks like the following config
-
<VirtualHost *:80> DocumentRoot /opt/dreamfactory/public <Directory /opt/dreamfactory/public> AddOutputFilterByType DEFLATE text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript Options -Indexes +FollowSymLinks -MultiViews AllowOverride All AllowOverride None Require all granted RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ /index.php [L] <LimitExcept GET HEAD PUT DELETE PATCH POST> Allow from all </LimitExcept> </Directory> </VirtualHost>
- Save the file and exit
-
- Restart Apache
-
$ sudo service apache2 restart
-
- Confirm that Apache is properly configured by loading the server's IP or hostname in your browser.