Install w/o Bitnami support

Dear community,
I’m trying to install Dreamfactory in an existing Windows Architecture.
I installed PHP in IIS and configurted the MS SQL server driver.
I already have git and I added Composer.
I followed the General instructions for install (https://wiki.dreamfactory.com/DreamFactory/Installation#General_Instructions) and all seems to be correct.

  • Cloned from GitHub
  • Start Composer
  • Start Setup
  • Re-Start Setup for DB seed (in SQL Server).
  • Check for rights (it’s a test environment, rights for everyone)

When I start “php artisan serve”, all seems to be right but after the inizial setup, the page is blank.
If I use IIS, the result is the same: blank page after first setup.
In the two cases, the error was a 404 and I think tath the problem is on URL rewtites.
I think that I’m not the first that is trying to integrate DreamFactory in IIS… Can someone help me?

I am trying to do the same thing same issue.

Not solved yet.
The first time I tried to use the latest PHP version (7). Now I tried to use the 5.6 version but, using the built in PHP server or IIS, the result is the same.

After the initial setup (main, name and so on), DF2 redirect the user to /dreamfactory/dist/index.html.
The first time, the page answer with a 404 in the script http://localhost:888/dreamfactory/dist/scripts/app.8b720b65.js
After reload (F5), the page answer with a 4040 on /api/v2/system/environment and the error remain the same (forever).

I don’t know what I can try to solve the problem: DF2 seems to be installed correctly, no errors on install. Permissions aren’t a problem (all open for everyone), the database was created successfully.

Dream Factory can be a very good tool for all developers but I think that many companies (like the one where I work) want an integration between existing infrastructure and new tools.

Please, any suggestions would be appreciated.

I investigated directly the GET that results in a 404 error.
If I call /api/v2/system/environment, the result is a “Could not find a service for user” error.
Maybe a problem with authentication handling?

This is the full message:
{“error”:{“context”:null,“message”:“Could not find a service for user”,“code”:404,“trace”:[“0 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Cache\Repository.php(292): DreamFactory\Core\Models\Service::DreamFactory\Core\Models\{closure}()”,“1 [internal function]: Illuminate\Cache\Repository->remember(‘service:user’, 300, Object(Closure))”,“2 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Cache\CacheManager.php(296): call_user_func_array(Array, Array)”,“3 X:\Root\df2\bootstrap\cache\compiled.php(6366): Illuminate\Cache\CacheManager->__call(‘remember’, Array)”,“4 X:\Root\df2\bootstrap\cache\compiled.php(6366): Illuminate\Cache\CacheManager->remember(‘service:user’, 300, Object(Closure))”,“5 X:\Root\df2\vendor\dreamfactory\df-core\src\Models\Service.php(294): Illuminate\Support\Facades\Facade::__callStatic(‘remember’, Array)”,“6 X:\Root\df2\vendor\dreamfactory\df-core\src\Models\Service.php(294): Illuminate\Support\Facades\Cache::remember(‘service:user’, 300, Object(Closure))”,“7 X:\Root\df2\bootstrap\cache\compiled.php(17211): DreamFactory\Core\Models\Service::getCachedByName(‘user’)”,“8 X:\Root\df2\bootstrap\cache\compiled.php(17156): DreamFactory\Http\Middleware\AccessCheck::setExceptions()”,“9 [internal function]: DreamFactory\Http\Middleware\AccessCheck->handle(Object(Illuminate\Http\Request), Object(Closure))”,“10 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“11 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“12 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“13 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“14 X:\Root\df2\bootstrap\cache\compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“15 X:\Root\df2\bootstrap\cache\compiled.php(9118): Illuminate\Pipeline\Pipeline->then(Object(Closure))”,“16 X:\Root\df2\bootstrap\cache\compiled.php(9105): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(DreamFactory\Http\Controllers\RestController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), ‘handleGET’)”,“17 X:\Root\df2\bootstrap\cache\compiled.php(8173): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), ‘DreamFactory\\Ht…’, ‘handleGET’)”,“18 X:\Root\df2\bootstrap\cache\compiled.php(8160): Illuminate\Routing\Route->runController(Object(Illuminate\Http\Request))”,“19 X:\Root\df2\bootstrap\cache\compiled.php(7874): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))”,“20 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“21 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“22 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“23 X:\Root\df2\bootstrap\cache\compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“24 X:\Root\df2\bootstrap\cache\compiled.php(7875): Illuminate\Pipeline\Pipeline->then(Object(Closure))”,“25 X:\Root\df2\bootstrap\cache\compiled.php(7866): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))”,“26 X:\Root\df2\bootstrap\cache\compiled.php(7856): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))”,“27 X:\Root\df2\bootstrap\cache\compiled.php(2400): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))”,“28 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))”,“29 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“30 X:\Root\df2\app\Http\Middleware\AuthCheck.php(178): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“31 [internal function]: DreamFactory\Http\Middleware\AuthCheck->handle(Object(Illuminate\Http\Request), Object(Closure))”,“32 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“33 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“34 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“35 X:\Root\df2\vendor\barryvdh\laravel-cors\src\HandleCors.php(34): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“36 [internal function]: Barryvdh\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))”,“37 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“38 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“39 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“40 X:\Root\df2\bootstrap\cache\compiled.php(17255): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“41 [internal function]: DreamFactory\Http\Middleware\FirstUserCheck->handle(Object(Illuminate\Http\Request), Object(Closure))”,“42 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“43 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“44 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“45 X:\Root\df2\bootstrap\cache\compiled.php(13048): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“46 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))”,“47 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“48 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“49 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“50 X:\Root\df2\bootstrap\cache\compiled.php(11594): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“51 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))”,“52 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“53 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“54 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“55 X:\Root\df2\bootstrap\cache\compiled.php(12787): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“56 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))”,“57 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“58 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“59 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“60 X:\Root\df2\bootstrap\cache\compiled.php(12724): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“61 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))”,“62 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“63 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“64 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“65 X:\Root\df2\bootstrap\cache\compiled.php(3250): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“66 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))”,“67 X:\Root\df2\bootstrap\cache\compiled.php(9609): call_user_func_array(Array, Array)”,“68 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))”,“69 X:\Root\df2\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“70 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))”,“71 X:\Root\df2\bootstrap\cache\compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))”,“72 X:\Root\df2\bootstrap\cache\compiled.php(2347): Illuminate\Pipeline\Pipeline->then(Object(Closure))”,“73 X:\Root\df2\bootstrap\cache\compiled.php(2331): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))”,“74 X:\Root\df2\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))”,“75 {main}”]}}

did you run php artisan dreamfactory:setup twice?

Yes. The first for configure the DB, the second to do the work.
The database is up and running… All the tables are created.

And no errors from that second run?

Here are some other things to look for
Make sure that bootstrap/cache/ and storage/ are writable by the web server process (or PHP process – I’m not really sure how IIS and PHP work together.)
Doublecheck your rewrite rules. They’re very important.

Other than that I’m not sure.
We do not currently support IIS implementation, however there has been some discussion about adding support for this product. If that occurs we will be sure to document heavily.

Perhaps someone else in the community has some IIS expertise?

1 Like

Support for IIS i feel is a necessary for enterprise. While we have plenty of linux where i am at this would put it into even more hands. Even if it was just the write up on getting it running that would be extremely helpful.

1 Like

No error on second run.
Directories are writable for everyone.
(Note: normally, in IIS you can configure rights for each application pool setting different identities/roles. This is not my case: the directories are opened for all. It’s only a test.)

I think I found the problem.
It is a rewriting rule:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
It’s the ONLY error in the environment. IIS does not support the “E” flag.
The only way to import .htaccess in IIS is to delete this line.
The problem is to create a workaround to emulate the unsupported rule.
An alternative can be a change in the URL Rewrite module, replacing the IIS default with a 3rd party component.

1 Like

We’re looking at better support for IIS on the short-term roadmap, potentially next sprint.

2 Likes

Hello community,
I found a small problem that creates problems for inattentive like me.
The presence of SQL Lite is a system REQUIREMENT even if you do not use SQL lite.
When it is not found, launching the second time the setup, does not complete and creates the white page error. Even if you use one other Db.
This was the first problem with IIS (but I’ve seen threads with the same problem in Apache).
I solved the problem installing and enabling SQL Lite 3 (a very little work on config files).
Now, the main problem…
The row
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
is needed to handle the authorizations and it does NOT work in IIS. The rule can’t be imported because IIS URLS rewrite does not support the flag “E”.
Instead you need to work with Rewrite maps and more complex rules. Unfortunately I do not have the necessary knowledge to do so. I’ll ask one of the guys on my team, more experienced, to help me when he can.
At the moment, I am at the login screen and the system is answering correctly (but the REST answers with a “not authorized” message when I log in).

1 Like

@alessio.oggioni Thanks for your patience! It’s definitely planned in the near future to include IIS Support.

I’ll keep you updated!

Thanks,
@AlexBowen

@alessio.oggioni @AlexBowen as Alex mentioned IIS support is around the corner. Working on it in this sprint which will ship July 11th.

1 Like

@alessio.oggioni
Just wanted to add that you don’t need to install sqlite server, just the sqlite php module. In windows this should just be a matter of enabling the dll in your php.ini file.
See http://php.net/manual/en/sqlite3.installation.php

1 Like

Is IIS now supported in DF 2.3? I want to use DF 2.3 bu tit needs to work with IIS on Windows Server 2008.

Thanks!

1 Like

Hey @Remi_Cote,

IIS has been supported, not tested thoroughly with PHP7 however.

Thanks,
@AlexBowen