Installation CentOS 7

From DreamFactory
Jump to: navigation, search
DreamFactoryYumCentOS 7Installation CentOS 7

Important Notes

This tutorial walks you through installing a web server stack (LAMP/LEMP) and assumes a more or less blank server. If you have existing resources installed on the server you will need to work around them. For example this tutorial assumes that DreamFactory will be the only/default web app on this server. If you have other sites (virtual hosts) you will need to adjust the configuration accordingly.

Prerequisites

DreamFactory requires certain applications for install and other functionality.

  1. Install git, curl, zip, unzip
    • $ sudo yum install git curl zip unzip

PHP

These instructions will install PHP 7 with various modules. Centos/RHEL do not ship with up to date PHP versions in their repos, so we will be installing via third party repos. 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

  1. $ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  2. $ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  3. $ sudo yum install php71w php71w-common php71w-mbstring php71w-mysqlnd php71w-pdo php71w-pecl-mongodb php71w-mcrypt php71w-bcmath

Install for Nginx

Install

  1. $ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  2. $ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  3. $ sudo yum install php71w-fpm php71w php71w-common php71w-mbstring php71w-mysqlnd php71w-pdo php71w-pecl-mongodb php71w-mcrypt php71w-bcmath

Configure PHP FPM

You will need a text editor for this task. The instructions use Nano which you may need to install with yum.

  1. Edit the php-fpm php.ini file
    • sudo nano /etc/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>)
  2. Restart php-fpm
    • $ sudo systemctl restart php-fpm
  3. Enable php-fpm to run on boot
    • $ sudo systemctl enable php-fpm

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.

  1. Make a bin directory in your home directory if it doesn't already exist.
    • $ cd ~
    • $ mkdir bin
  2. Get the setup file from composer
    • $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  3. Install composer to your bin directory
    • $ php composer-setup.php --install-dir=/home/dfuser/bin --filename=composer
  4. Restart your terminal app (if using Linux with a GUI) or log out and log back in.

Database

You'll need a database for the system to store configuration information. This tutorial will walk you through installing and using MariaDB (a MySQL clone.) Other supported system databases are SQLite, PostgreSQL, and Microsoft SQL (requires a product subscription.) If you intend to use one of these other databases, you can skip this section. When it comes time to install DreamFactory, just give the install the appropriate connection information for your other database (during php artisan df:env.)

MariaDB

Install

  1. Install the server and client from Yum
    • Please follow the instructions on the MariaDB Website to get the version you want.

Setup

  1. Start MariaDB
    • $ sudo systemctl start mariadb
  2. Enable MariaDB to run on boot
    • $ sudo systemctl enable mariadb
  3. Login to the database
    • $ sudo mysql
  4. 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;
  5. 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';
  6. 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.

  1. 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
  2. Navigate to the working directory and use git to clone the dreamfactory repo
    • $ cd /opt/dreamfactory
    • $ git clone https://github.com/dreamfactorysoftware/dreamfactory.git ./
  3. You may need to use the following command in order to ensure you have upgraded to stronger ciphers
    • $ sudo yum update -y nss curl libcurl
  4. 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 --ignore-platform-reqs
  5. Setup the DreamFactory system database connection
    • Note: Previously this command was dreamfactory:setup or df:setup. As of DF 2.7.0 the command is changed to df:env
    • $ php artisan df:env
      • Select option 1 for MySQL. Answer the onscreen prompts regarding database connection and credentials (which you set in the Database section.)
    • IMPORTANT. Before running the df:setup command again you need to edit the .env file.
      • $ nano .env
      • Uncomment (remove the ##) the two lines that read ##DB_CHARSET=utf8 and ##DB_COLLATION=utf8_unicode_ci
      • Save and exit (Ctrl+x, Y, <Enter>)
    • $ php artisan df:setup
      • Answer the onscreen prompts to create your first admin user for the system.
  6. Reset permissions on the storage and cache directories.
    • NOTE for Apache users: Perform this step after you install Apache.
    • $ sudo chown -R apache:dfuser storage/ bootstrap/cache/
    • $ sudo chmod -R 2775 storage/ bootstrap/cache/
  7. 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.

  1. Turn off selinux.
    • If you are comfortable configuring selinux, you may choose to do so, but for the purposes of this tutorial, we will simply turn it off.
    • $ sudo setenforce 0

Nginx

  1. Install Nginx from Yum
    • $ sudo yum install nginx
  2. Start Nginx
    • $ sudo systemctl start nginx
  3. Enable Nginx to start on boot
    • $ sudo systemctl enable nginx
  4. Navigate to the configuration directory
    • $ cd /etc/nginx
  5. Backup the default config
    • $ sudo cp nginx.conf nginx.conf.bak
  6. 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 nginx.conf
    • Locate the section that begins with
      server {
          listen 80 default_server;
      ...
      . Edit is so that is looks like this below.
      • 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 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }
        }
    • Save the file and exit.
  7. Restart PHP-FPM and Nginx
    • $ sudo systemctl restart php-fpm && sudo systemctl restart nginx
  8. 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

  1. Install Apache from Apt
    • $ sudo yum install httpd
  2. Start Apache
    • $ sudo systemctl start httpd
  3. Enable Nginx to start on boot
    • $ sudo systemctl enable httpd
  4. Navigate to the site configuration and backup the default config
    • $ cd /etc/httpd/conf/
    • $ sudo cp httpd.conf httpd.conf.bak
  5. Edit the default config.
    • $ sudo nano httpd.conf
    • Edit the file.
    • Set the DocumentRoot to /opt/dreamfactory/public
    • Find the area marked <Directory "/var/www">. Delete it.
    • Find the area marked <Directory "/var/www/html">. Edit it so it reads:
      • <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>
    • Save the file and exit
  6. Restart Apache
    • $ sudo systemctl restart httpd
  7. Go back to /opt/dreamfactory and perform the permissions edit step that was previously skipped.
  8. Confirm that Apache is properly configured by loading the server's IP or hostname in your browser.