Installation
Contents
Deployment Planning
There are a few things to consider before installing DreamFactory Enterprise™ (DFE). The rest of this section will explain these considerations.
It goes without saying that if you are simply evaluating DFE, on a single instance, server and DNS planning are unnecessary. Skip ahead to the Installer Utility section.
Servers
DFE is a distributed system. Each component can operate and scale independently of each other. Conversely, the entire system can be contained on a single server. Therefore, the best server layout fully depends on your usage and needs. If you're just testing out DFE and not ready to deploy a production system, installing everything on a single server is the way to go (as it's mostly automated).
The servers required are:
- Application: Responsible for hosting/running the DFE Console, Dashboard, and/or the Reporting system.
- Database: Responsible for the databases of hosted instances
- Web: Responsible for (web) hosting the deployed instances
DNS
DFE operates each instance via [virtual hosting](https://en.wikipedia.org/wiki/Virtual_hosting) on one or more web servers. As such, you must determine the fully qualified domain name of your DFE installation before installing. **The system cannot be used fully until the DNS is in place**. Generally, clients will create a new subdomain within their DNS domain. This is the recommended practice. Using a new domain will eliminate any issues with DNS cross-contamination if troubleshooting an issue.
There are three records that need to be created for the DFE installation. These are:
- console.sub.domain.com (A/CNAME)
- dashboard.sub.domain.com (A/CNAME)
- *.sub.domain.com (A/CNAME)
The first two are straightforward. These point to the DFE Console and Dashboard. These can be either `A` or `CNAME` records. The final record is the [wildcard](https://en.wikipedia.org/wiki/Wildcard_DNS_record) entry. This allows all instances deployed on a server to share a single, common document root. For more information on how to set up your DNS with a wildcard record, please consult your DNS provider's documentation. Each provider has a different method for creating these records.
Please note that you **cannot** add a wildcard DNS entry to your local `/etc/hosts` file. It does not work.
Automated Additions
One of the features of the installation system is that several entries will be added to the installation system's `/etc/hosts` file. Here is an /etc/hosts file after the installer has completed:
# HEADER: This file was autogenerated at 2015-10-14 17:34:29 +0000 # HEADER: by puppet. While it can still be managed manually, it # HEADER: is definitely not recommended. 127.0.0.1 localhost ip-10-10-2-40 console console.local dashboard dashboard.local console.zone.domain.com dashboard.zone.domain.com zone.domain.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
You'll notice after the `localhost` entry, there are seven additional entries which reference the new DFE installation.
Installer Utility
To help with installation, a utility may be downloaded and run. This utility gathers the necessary information that then feeds into the main installation system, which is written using [Puppet](https://en.wikipedia.org/wiki/Puppet_(software)). [PHP](https://php.net) is required to run this utility. To use this utility you must first install the required packages, which differs depending on your operating system.
For Debian/Ubuntu:
ubuntu@server:~ $ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y install php5 puppet git
For Redhat/CentOS:
ubuntu@server:~ $ sudo yum update && sudo yum -y install php puppet git
Quick Look
Here's how to install the utility at a high level:
1. Update the system packages and install pre-requisites 2. Clone the utility's GitHub repository 3. Update composer dependencies 4. Start the installation utility 5. Open your browser and enter the configuration settings
Example:
ubuntu@server:~ $ sudo apt-get update <pre>&&</pre> sudo apt-get -y upgrade <pre>&&</pre> sudo apt-get -y install php5 puppet git ubuntu@server:/opt/dreamfactory/dfe $ git clone https://github.com/dreamfactorysoftware/dfe-installer.git ubuntu@server:/opt/dreamfactory/dfe $ cd dfe-installer ubuntu@server:/opt/dreamfactory/dfe/dfe-installer $ php -S 0.0.0.0:8000 -t public/ ^C
Port `8000` is used in the above example. You may use any port you prefer. However, you must ensure that whichever port you choose (including 8000!) is open to your browser from wherever the server is hosted. This is a temporary usage, so there will be no need for permanent port changes.
This utility has all the installation options available. Once completed, the entries are written to a file called `.env-install` in the root of the repository. This file is then read by the `install.sh` script also in the root directory. This script does all the heavy lifting.
Once you've run the utility and created the installation environment file, you're read to run the actual installation script. To do this, from the root of the installation directory, run the following:
ubuntu@server:/opt/dreamfactory/dfe/installer $ sudo ./install.sh
It may take up to 10 minutes depending on your network connection and server capacity.
Complete Walk-Through
This is a complete walk through of the installation process with all information returned.
ubuntu@ip-10-10-2-233:~$ sudo apt-get update && sudo apt-get -y upgrade ... # omitted/can vary ubuntu@ip-10-10-2-233:~$ sudo apt-get -y install php5 git puppet ... # omitted/can vary ubuntu@ip-10-10-2-233:~$ git clone [email protected]:dreamfactorysoftware/dfe-installer.git Cloning into 'dfe-installer'... The authenticity of host 'github.com (192.30.252.128)' cannot be established. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts. remote: Counting objects: 8666, done. remote: Compressing objects: 100% (84/84), done. remote: Total 8666 (delta 20), reused 2 (delta 2), pack-reused 8578 Receiving objects: 100% (8666/8666), 9.65 MiB | 0 bytes/s, done. Resolving deltas: 100% (2434/2434), done. Checking connectivity... done. ubuntu@ip-10-10-2-233:~$ cd dfe-installer/ ubuntu@ip-10-10-2-233:~/dfe-installer$ php -S 0.0.0.0:8000 -t public/ PHP 5.5.9-1ubuntu4.13 Development Server started at Wed Oct 7 23:51:19 2015 Listening on http://0.0.0.0:8000 Document root is /home/ubuntu/dfe-installer/public Press Ctrl-C to quit. [Wed Oct 7 23:51:57 2015] 76.97.26.128:45270 [200]: / [Wed Oct 7 23:51:57 2015] 76.97.26.128:45271 [200]: /static/bootstrap-3.3.5/css/bootstrap.min.css [Wed Oct 7 23:51:57 2015] 76.97.26.128:45273 [200]: /static/font-awesome-4.3.0/css/font-awesome.min.css [Wed Oct 7 23:51:57 2015] 76.97.26.128:45272 [200]: /css/style.css [Wed Oct 7 23:51:59 2015] 76.97.26.128:45254 [200]: /static/bootstrap-3.3.5/js/bootstrap.min.js [Wed Oct 7 23:51:59 2015] 76.97.26.128:45255 [200]: /static/jquery-2.1.4/jquery.min.js [Wed Oct 7 23:51:59 2015] 76.97.26.128:45276 [200]: /static/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2?v=4.3.0 [Wed Oct 7 23:51:59 2015] 76.97.26.128:45256 [200]: /img/apple-touch-icon.png [Wed Oct 7 23:51:59 2015] 76.97.26.128:45278 [404]: /public/img/apple-touch-icon.png - No such file or directory [Wed Oct 7 23:52:34 2015] 76.97.26.128:45295 [302]: / [Wed Oct 7 23:52:34 2015] 76.97.26.128:45297 [200]: / [Wed Oct 7 23:52:34 2015] 76.97.26.128:45298 [200]: /static/font-awesome-4.3.0/css/font-awesome.min.css [Wed Oct 7 23:52:34 2015] 76.97.26.128:45303 [200]: /static/bootstrap-3.3.5/css/bootstrap.min.css [Wed Oct 7 23:52:34 2015] 76.97.26.128:45302 [200]: /css/style.css [Wed Oct 7 23:52:34 2015] 76.97.26.128:45299 [200]: /static/jquery-2.1.4/jquery.min.js [Wed Oct 7 23:52:34 2015] 76.97.26.128:45301 [200]: /img/apple-touch-icon.png [Wed Oct 7 23:52:34 2015] 76.97.26.128:45300 [200]: /static/bootstrap-3.3.5/js/bootstrap.min.js [Wed Oct 7 23:52:35 2015] 76.97.26.128:45304 [200]: /static/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2?v=4.3.0 ^C ubuntu@ip-10-10-2-233:~/dfe-installer$ sudo ./install.sh ******************************************************************************** * DreamFactory Enterprise(tm) Linux Installer v1.1.0 ******************************************************************************** install.sh: Checking system requirements... install.sh: > Installed 6 required modules install.sh: Installing now... install.sh: Applying ./resources/assets/manifests/00-user.pp... install.sh: Applying ./resources/assets/manifests/10-filesystem.pp... install.sh: Applying ./resources/assets/manifests/20-percona.pp... install.sh: Applying ./resources/assets/manifests/30-packages.pp... install.sh: Applying ./resources/assets/manifests/40-dfe-console.pp... install.sh: Applying ./resources/assets/manifests/50-dfe-dashboard.pp... install.sh: Applying ./resources/assets/manifests/60-dfe-instance.pp... install.sh: Applying ./resources/assets/manifests/70-nginx_php-fpm.pp... install.sh: Complete! Output spooled to /tmp/dfe-installer.log ubuntu@ip-10-10-2-78:~/dfe-installer$
All output of the installation utility is directed to a log file located at `/tmp/dfe-installer.log`. If there is an error, the log will detail the issue.