kiswa / TaskBoard

A Kanban-inspired app for keeping track of things that need to get done. (Don't forget to read the Wiki page!)
http://taskboard.matthewross.me
MIT License
1.38k stars 303 forks source link

How to run TaskBoard in IIS/Windows #310

Closed zipelkopf closed 8 years ago

zipelkopf commented 8 years ago

Hi,

I would like to share a step-by-step process on how to install and run TaskBoard under IIS in a Windows environment... at least it worked for me: #306

  1. Download and copy the TaskBoard installation folder in your wwwroot.

image

  1. Install PHP for ISS image
  2. Open IIS, right click on the TaskBoard folder and Convert into Application . The TaskBoard icon should change from a plain yellow folder into an app one.

image

  1. Right click and Edit Permissions for the api folder. Be sure to grant full control to the IUSR user and the IIS_ISURS user group.

image

  1. If you cannot run the install script or you don't have the vendor folder under your TaskBoard one, then download the attached folder. vendor.tar.gz
  2. Install the module URL Rewrite for IIS because we need to import and convert the .htaccess files in IIS, in order to rewrite the requested URLs. image
  3. In IIS, go to the api folder, open URL Rewrite and click on Import rules Copy and paste the following rules, taken and amended from the source .htaccess file. Be sure that /TaskBoard/api/api.php matches the location in your wwwroot.
ExpiresActive Off
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^taskboard.db$ /TaskBoard/api/api.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /TaskBoard/api/api.php [QSA,L]
  1. In IIS, go to the 2nd slim folder in the vendor one, open URL Rewrite and click on Import rules. Copy and paste the following rules, taken and amended from the source .htaccess file.

image

RewriteEngine On
# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /

That's all! Browse to your localhost/TaskBoard and enjoy!

image

@kiswa, feel free to do anything you like with the present topic, wishing it might help. Cheers! :-)

kiswa commented 8 years ago

Thanks for taking the time to write this up!

At the very least, I'll make this a wiki page.

zipelkopf commented 8 years ago

You're welcome! ...you did the best by making TaskBoard :+1:

Yomark1 commented 7 years ago

Thank you! Works fine for me!

zipelkopf commented 7 years ago

Cheers :-)

Just a little note... Taskboard was a bit slow when doing any insert/update under IIS... Initially I thought it was normal but then I did a bit of investigation and the issue can be simply fixed by changing the default SMTP settings in the api/mailConfig.php file.

I didn't need to send any email so I simply ignored the step to configure the mail... but if you do so IIS tries to connect to a fake SMTP server which of course does not exist... resulting in slowing the visual rendering on screen.

Just set your SMTP provider and Taskboard will fly fast again!

d00dsjr commented 7 years ago

Hi, I completed setup my Taskboard in Windows, but I cannot login using admin/admin. Anyone can help? Thanks.

kiswa commented 7 years ago

What errors do you get in dev tools (F12 on most setups).

d00dsjr commented 7 years ago

I got after press F12. POST http://localhost/task board-master/api/login 405 (Method Not Allowed) -- angular.js:9866, in which it points inside the .js file --> xhr.send(post || null);

kiswa commented 7 years ago

Sounds like PHP may not be working right. What happens if you go to localhost.taskboard-master/api/login directly? (or just api/)

shwetanshu21 commented 7 years ago

Hi,

@kiswa @Zipelkopf

I have deployed this is Windows 7 using IIS 7.5 and PHP and SQLLite are installed/configured.

I followed the above steps. Still receiving an issue. The site opens and I log in but when I got to settings it just keeps loading users/boards and then gives cannot load. Please refresh.

On Pressing F12 I get .The error I am getting is

Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users/current Failed to load resource: the server responded with a status of 404 (Not Found) fontawesome-webfont.woff2 Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/authenticate Failed to load resource: the server responded with a status of 404 (Not Found) angular.js:11655 TypeError: fn is not a function at angular.js:9415 at processQueue (angular.js:13248) at angular.js:13264 at Scope.$eval (angular.js:14466) at Scope.$digest (angular.js:14282) at Scope.$apply (angular.js:14571) at done (angular.js:9698) at completeRequest (angular.js:9888) at XMLHttpRequest.requestLoaded (angular.js:9829) (anonymous) @ angular.js:11655 fontawesome-webfont.woff Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/boards Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users/current Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/authenticate Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users Failed to load resource: the server responded with a status of 404 (Not Found) angular.js:11655 TypeError: fn is not a function at angular.js:9415 at processQueue (angular.js:13248) at angular.js:13264 at Scope.$eval (angular.js:14466) at Scope.$digest (angular.js:14282) at Scope.$apply (angular.js:14571) at done (angular.js:9698) at completeRequest (angular.js:9888) at XMLHttpRequest.requestLoaded (angular.js:9829) (anonymous) @ angular.js:11655 2:84/api/autoactions Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/boards Failed to load resource: the server responded with a status of 404 (Not Found) 2:84/api/autoactions Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/boards Failed to load resource: the server responded with a status of 404 (Not Found) 3:84/api/autoactions Failed to load resource: the server responded with a status of 404 (Not Found) :84/api/users Failed to load resource: the server responded with a status of 404 (Not Found)

image

Any help would be appreciated.

Thanks

zipelkopf commented 7 years ago

@shwetanshu21

Hi, You have a lot of 404 (not found) in your log... I would start by double checking the ReWrite rules in IIS... including the port number. The Rewrite rules I posted above were about having the root folder under the TaskBoard one, but it looks like you moved your root folder to the upper level.

http://localhost/TaskBoard/api/... VS http://localhost:83/api/...

You can move TaskBoard under any root folder you like but you need to amend the ReWrite rules accordingly. Do you want to post a screenshot of your folder structure and the ReWrite rules you have imported?

Cheers

shwetanshu21 commented 7 years ago

@Zipelkopf

Hi,

These are the rules. I modified them as per your instruction only (Thanks a lot by the way for those. Really helpful)

image

This is the directory

image

And this is how the IIS is configured. It directly points to the folder as the site (C:\Users\smehta30\Documents\Website\Taskboardmaster).

image

I think (maybe?!) I configured it wrong.

So as you suggested, I tried the rules without /taskboardmaster/ (See Edit) Like This

image

And I got these error

image

The IISUSR and IIS_IUSR has full control to api folder (and even the taskboardmaster folder) so the unauthorized error seems strange. The username and password that I tried are admin and admin, and demo and demo. Still no luck.

I am not sure if the earlier issue is fixed and this is a new issue though.

Appreciate your help.

Thanks

Edit1: I conifgured the rule as :84/api/api.php

image

It does not work. Back to Error 404. Same error with :84/Taskboardmaster/api.php

image

Which brings me to the error

TypeError: fn is not a function at angular.js:9415 at processQueue (angular.js:13248) at angular.js:13264 at Scope.$eval (angular.js:14466) at Scope.$digest (angular.js:14282) at Scope.$apply (angular.js:14571) at done (angular.js:9698) at completeRequest (angular.js:9888) at XMLHttpRequest.requestLoaded (angular.js:9829)

I dont think this error should be occurring. I will keep checking on it.

rvonlant commented 6 years ago

Hi @kiswa and @Zipelkopf

First of all, thanks a lot for the installation instructions!

The instructions worked for me to the point where I can access the login screen on localhost. However, when I try to login with admin/admin nothing happens, i.e. the login screen blinks and is shifted a little bit, but it is essentially the same.

The console prints "Failed to load resource: the server responded with a status of 500 (Internal Server Error)"

When I try to access localhost/TaskBoard/api/login I get the following (not sure if this is actually useful):

{"message":"API Error.","data":"Could not connect to database (?).","alerts":null,"trace":[{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Driver\RPDO.php","line":139,"function":"connect","class":"RedBeanPHP\Driver\RPDO","type":"->","args":[]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Driver\RPDO.php","line":312,"function":"runQuery","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Driver\RPDO.php","line":349,"function":"GetAll","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Adapter\DBAdapter.php","line":164,"function":"GetOne","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\QueryWriter\AQueryWriter.php","line":988,"function":"getCell","class":"RedBeanPHP\Adapter\DBAdapter","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Repository.php","line":526,"function":"queryRecordCount","class":"RedBeanPHP\QueryWriter\AQueryWriter","type":"->","args":["user",[],"",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\OODB.php","line":457,"function":"count","class":"RedBeanPHP\Repository","type":"->","args":["user","",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Facade.php","line":1171,"function":"count","class":"RedBeanPHP\OODB","type":"->","args":["user","",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\api\helpers.php","line":386,"function":"count","class":"RedBeanPHP\Facade","type":"::","args":["user"]},{"file":"C:\inetpub\wwwroot\TaskBoard\api\api.php","line":30,"function":"createInitialUser","args":[]}]}

I browsed many of the issues posted here, but so far nothing helped (vendor folder is present, api permissions are set to full access, sqlite is enabled in php). I am a complete web programming newbie and have no clue what could be wrong nor how to fix this. Any help is highly appreciated!

Thanks a lot in advance!

Cheers, Richard

zipelkopf commented 6 years ago

Hi Richard,

check first you have SQLite and the PHP5 SQLite module installed in your IIS.

Cheers

On 13 June 2018 at 15:15, rvonlant notifications@github.com wrote:

Hi @kiswa https://github.com/kiswa and @Zipelkopf https://github.com/Zipelkopf

First of all, thanks a lot for the installation instructions!

The instructions worked for me to the point where I can access the login screen on localhost. However, when I try to login with admin/admin nothing happens, i.e. the login screen blinks and is shifted a little bit, but it is essentially the same.

The console prints "Failed to load resource: the server responded with a status of 500 (Internal Server Error)"

When I try to access localhost/TaskBoard/api/login I get the following (not sure if this is actually useful):

{"message":"API Error.","data":"Could not connect to database (?).","alerts":null,"trace":[{"file":"C:\inetpub\wwwroot\ TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Driver\ RPDO.php","line":139,"function":"connect","class":" RedBeanPHP\Driver\RPDO","type":"->","args":[]},{"file":"C:\ inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\ RedBeanPHP\Driver\RPDO.php","line":312,"function":" runQuery","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\Driver\RPDO.php","line":349,"function":"GetAll","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\ inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\ RedBeanPHP\Adapter\DBAdapter.php","line":164,"function":" GetOne","class":"RedBeanPHP\Driver\RPDO","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\RedBeanPHP\QueryWriter\AQueryWriter.php","line":988,"function":"getCell","class":"RedBeanPHP\Adapter\DBAdapter","type":"->","args":["SELECT COUNT() FROM user -- keep-cache",[]]},{"file":"C:\ inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\ RedBeanPHP\Repository.php","line":526,"function":" queryRecordCount","class":"RedBeanPHP\QueryWriter\ AQueryWriter","type":"->","args":["user",[],"",[]]},{" file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\ redbean\RedBeanPHP\OODB.php","line":457,"function":"count"," class":"RedBeanPHP\Repository","type":"->","args":["user","" ,[]]},{"file":"C:\inetpub\wwwroot\TaskBoard\vendor\gabordemooij\redbean\ RedBeanPHP\Facade.php","line":1171,"function":"count"," class":"RedBeanPHP\OODB","type":"->","args":["user","",[ ]]},{"file":"C:\inetpub\wwwroot\TaskBoard\api\helpers. php","line":386,"function":"count","class":"RedBeanPHP\ Facade","type":"::","args":["user"]},{"file":"C:\inetpub\ wwwroot\TaskBoard\api\api.php","line":30,"function":" createInitialUser","args":[]}]}

I browsed many of the issues posted here, but so far nothing helped (vendor folder is present, api permissions are set to full access, sqlite is enabled in php). I am a complete web programming newbie and have no clue what could be wrong nor how to fix this. Any help is highly appreciated!

Thanks a lot in advance!

Cheers, Richard

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kiswa/TaskBoard/issues/310#issuecomment-396952891, or mute the thread https://github.com/notifications/unsubscribe-auth/AUUlJijBLhZYjDfhUO9iyV9o6JL1Kk7Lks5t8R5vgaJpZM4J1HFo .

-- l.bruni@gmail.com

This email and any file transmitted is strictly confidential. You have not to copy or deliver it to any other person or use the content in any unauthorized manner without the express permission of the sender. If you are not the intended addressee of this e-mail, please delete it.

rvonlant commented 6 years ago

Hi @Zipelkopf

Thank you for your quick reply! I checked that 1) php_sqlite3.dll and php_pdo_sqlite.dll are in the ext folder of my PHP installation folder and 2) both extensions are enabled in php.ini.

Then I installed sqlite3 (3 precompiled binary files from sqlite.org) and added the location to the system path. Are these binaries actually required?

By the way, I followed these instructions here for manually installing PHP: https://www.windowspro.de/wolfgang-sommergut/php-fuer-iis-windows-10-installieren. Maybe that is not an appropriate installation?

To test the PHP installation I run a script that just calls <?php phpinfo(); ?>. The output is as expected, i.e. it displays a long list of info about the php installation.

When trying to log in with admin/admin the error message looks a bit different, but I cannot tell why it does: image

Anything else I can check or try?

Again, thanks a lot for your assistance!

Cheers, Richard

kiswa commented 6 years ago

I'm not sure where to look for this, but check the server logs. You should have a more descriptive log of the error(s) PHP is having.

Have you made sure the api directory is writable for PHP?

rvonlant commented 6 years ago

Hi @kiswa and @Zipelkopf

Thank you for your responses.

Yes, api (in fact, the entire TaskBoard folder) has Full Access privileges for IUSR and IIS_IUSRS - if this is what you meant.

I think I made a small step forward. The default value for extension_dir displayed by phpinfo() pointed to a non existing directory, i.e. c:\php\ext instead of c:\Program Files (x86)\PHP\ext. So I fixed that by moving the PHP installation directory to c:\php and corrected the path to the php-cgi.exe in the IIS handler. (Probably one could have set the correct value for extension_dir instead.)

The login behavior and error messages are now different. It depends on the Authentication settings as follows:

  1. Windows Authentication enabled keeps me looping on the Windows Sing in window without accepting any credentials (which work for other sites on localhost): image image

  2. Anonymous Authentication enabled keeps me looping on the TaskBoard login window: image

In both cases the console prints 401 (Unauthorized) errors.

Any ideas what I did wrong?

Thanks a lot for your time and help!

Chers, Richard

rvonlant commented 6 years ago

Sigh... I give up. After hours of reinstalling from scratch and trying different Windows Authentication settings I could not find a solution. What a pity! Thanks anyway. Cheers, Richard

Ahmad-Zaklouta commented 4 years ago

when I put RewriteEngine On i cannot apply the rule because the apply is grayed. how to solve that

zipelkopf commented 4 years ago

when I put RewriteEngine On i cannot apply the rule because the apply is grayed. how to solve that

Hi, do you have a screenshot to post? Also, can you post the Web.config taken from the folder you are looking at? It might be a simple XML syntax error...

Cheers