Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/niutech/node.php

Run node.js apps from PHP even on a shared hosting!
https://github.com/niutech/node.php

Last synced: 6 days ago
JSON representation

Run node.js apps from PHP even on a shared hosting!

Awesome Lists containing this project

README

        

Node.php
========

Ever wanted to deploy a node.js web app but didn't have money for a dedicated node.js hosting or didn't have time to set up a cloud PaaS? Have an existing PHP shared hosting based on the LAMP stack? Now you can run node.js on top of it!

Node.php originates from my ealier [answer on Stack Overflow](http://stackoverflow.com/questions/24777750/how-to-host-a-node-js-application-in-shared-hosting/27391738#27391738).

The node.php script installs an official node.js package, starts a hidden server on localhost:49999 with provided JS file and proxies all requests to it.

#### Warning! This is an alpha version, it may be insecure, run it at your own risk!

Requirements
------------

A PHP web hosting based on Linux with safe mode off and the following functions enabled: `curl_exec`, `exec`, `passthru`.

How to run
----------

1. Put the `node.php` file in your `public_html` (or similar) folder, then install node.js by browsing to: `http://example.org/node.php?install`.
2. When succeeded, install your node.js app by uploading its folder or using npm: `http://example.org/node.php?npm=install jt-js-sample`.
3. When everything goes fine, start your node.js instance by going to: `http://example.org/node.php?start=node_modules/jt-js-sample/index.js`.
4. Now you can request your app by browsing to: `http://example.org/node.php?path=optional/request/path`. This will return a response from the running node.js app at `http://127.0.0.1:49999/optional/request/path`.
5. Finally, stop your node.js server by loading: `http://example.org/node.php?stop`.

Commands
--------

`node.php[?path=some/path]` - serves an already running node.js app with an optional request path (no leading slash)

The following commands require the `ADMIN_MODE` set to `true` (line 13 of `node.php`):

`node.php?install` - downloads and extracts node.js into the `node` folder.

`node.php?uninstall` - removes the `node` folder

`node.php?start=node_modules/jt-js-sample/index.js` - starts a node.js server running the provided `index.js` file

`node.php?stop` - stops a running node.js server

`node.php?npm=install jt-js-sample` - runs `npm install jt-js-sample` (*may be dangerous!*)

Demo
----

[Here is a live demo](http://juvenia.info/node_modules/jt-js-sample/) on a dirt cheap PHP shared hosting.

Troubleshooting
---------------

In order to troubleshoot any problems with running node.php, connect to your host using SSH and run exact node.php commands manually:

1. Go to your document root directory (often `~/public_html/`) and check if `node` directory exists there.
2. If yes, go to step 3, otherwise download node for your architecture:

```
wget http://nodejs.org/dist/node-v5.7.0-linux-x86.tar.gz
tar -xzf node-v5.7.0-linux-x86.tar.gz
mv node-v5.7.0-linux-x86/ node/
rm -f node-v5.7.0-linux-x86.tar.gz
```

3. Run node on port 49999 (or other): `PORT=49999 node/bin/node [path/to/index.js] &`
4. Connect to node instance: `curl http://127.0.0.1:49999/[some/path]`
5. If you get the HTML response, the problem most probably lies in PHP and its permissions.
6. Kill node process: `killall node`

License
-------

Node.js is developed by Joyent et al. under the MIT License.

Node.php is developed by Jerzy Głowacki under the MIT License.