Hey there!
Ok, this will be a first technical oriented post on this blog and it will be related to DreamFactory deployment, because that’s what I did recently.
A bit of a background…
DreamFactory is a free, open source software package that provides a complete REST API for mobile, web, and IoT applications. And we think DF is a great tool which makes easier to develop any web-based or mobile applications.
So I’ve received a request to (re)build a DreamFactory environment from scratch in a kind of “secure” way.
Current situation
The current environment was installed using Bitnami, which is a package containing all the (un)neccessary packages, software, libraries to easily get DF up and running. I decided to install the software on CentOS because it’s popular and the original server was CentOS, too. At the time I did not know what a pain it’s going to be to use CentOS 7 as OS running DF.
New installation
To successfully install DF, you need to have c++, gcc, python, git, php and few other packages installed. For CentOS 7, most of them are older versions in repo than what’s required, so the compilation part had to happen. It took so much time and the result still did not look promising. E.g. v8js was almost impossible to get installed properly.
So after few days I gave up and went for Debian, my favorite one. The installation was very smooth and quick, my decision was to install it on Apache. I installed all the packages from repo, got the DF up and running within an hour. So when you’re considering what OS to build DreamFactory platform on, Debian is a hot candidate.
Here’s my procedure
I will quickly describe steps I have taken to install DF including some of the tools.
1. Install packages that we will need to run DF platform
apt-get install -y apache2 binutils python git curl php5 php5-mysqlnd php5-common php5-cli php5-curl php5-json php5-gd php5-sqlite php5-mssql
2. Enable mod rewrite, and restart Apache
a2enmod rewrite ssl service apache2 restart
3. Install composer, that we will need, too
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
4. If you are planning to run server side JS scripts, install v8js and restart Apache again
apt-get install -y php-pear php5-dev libv8-dev g++ cpp pecl install v8js-0.1.3 echo "extension=v8js.so" > /etc/php5/mods-available/v8js.ini php5enmod v8js service apache2 restart
5. Now we will get the DF from git repo, install all the dependencies. I will install the DF into /opt/dreamfactory. I’m not going to need MongoDB, so I will use “–ignore-platform-reqs” switch.
cd /opt git clone https://github.com/dreamfactorysoftware/dreamfactory cd dreamfactory composer install --no-dev --ignore-platform-reqs
6. Run commands below on the server where you plan to place your database. Can be either the same server (not recommended) or another one.
apt-get install -y mariadb-server
You will be asked for root password, make sure it’s a secure one!
Now create MySQL DB and user
mysql -u root -p mysql> create database dreamfactory; mysql> grant all privileges on dreamfactory.* to 'new_user'@'localhost' identified by 'YourNewPassword'; mysql> flush privileges; mysql> quit;
7. Following command you will run twice, for the first time, you will enter all the information about DB, user etc and then re-run
php artisan dreamfactory:setup
8. Ok, so far so good! Now we will just create a virtual host on the Apache pointing to our DF and we should be ready!
touch /etc/apache2/sites-available/001-dreamfactory.conf
Insert following content inside the file
<VirtualHost *:80> DocumentRoot /opt/dreamfactory/public ServerName your-server.com <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>
And create a symlink
ln -s /etc/apache2/sites-available/001-dreamfactory.conf /etc/apache2/sites-enabled/001-dreamfactory.conf
9. Now restart Apache, visit the URL of your server and your DF should appear right there!
service apache2 restart
Have a good day,
Robot(ICT) guy