Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Orion/Node/Getting started"

< Orion‎ | Node
(small formatting changes)
(Update features table and bugs link)
(60 intermediate revisions by 7 users not shown)
Line 1: Line 1:
Orionode is a minimal, single-user sever deployment of Orion used for Node development with Orion's editing environment.
+
Orion provides a minimal, single-user server deployment of Orion written in JavaScript that runs on [http://nodejs.org Node.js]. This implementation of Orion supports developing your own Node applications with Orion's editing environment.
  
 
==Features==
 
==Features==
 +
The JavaScript Orion server implementation is still very early access. There are many rough edges and missing features compared to the full Java-based Orion server. The JavaScript-based Orion server currently supports:
 +
 
* Basic Navigator operations (Create file/folder, delete file/folder, copy/move/rename a file)
 
* Basic Navigator operations (Create file/folder, delete file/folder, copy/move/rename a file)
 
* Basic Editor operations (Edit file, save file, ETags)
 
* Basic Editor operations (Edit file, save file, ETags)
* Plugin operations
+
* Plugin operations (Install/uninstall plugins)
* Shell command for launching a node app (type <code>help node</code> in the Shell page to find out more)
+
* Shell command for supporting npm. You use it the same way as you do in Bash.
+
* Client caching for static content (cache time: 2 hours)
+
 
* Gzip on server traffic to reduce download times
 
* Gzip on server traffic to reduce download times
* [[#Concatenation and Minification|Concatenation and Minification]] of pages (requires a manual step)
+
* Concatenation and minification of pages (requires a manual step)
 +
 
 +
==== Feature comparison ====
 +
This table compares features between the Java and Node.js servers.
 +
 
 +
{| class="wikitable" style="text-align: center;"
 +
! || Java || Node
 +
|-
 +
| style="text-align:left;" | Users || multiple || single
 +
|-
 +
| style="text-align:left;" | Login API (<tt>/login</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | File operations (<tt>/file</tt>) || ✔ || ✔
 +
|-
 +
| style="text-align:left;" | Import zip/HTTP/SFTP (<tt>/import</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | Export zip/SFTP (<tt>/export</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | Persistent user preferences (<tt>/prefs</tt>) || ✔ || ✔
 +
|-
 +
| style="text-align:left;" | Git (<tt>/gitapi</tt>) || ✔ || *
 +
|-
 +
| style="text-align:left;" | Deploy to Cloud Foundry (<tt>/cfapi</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | Sites (<tt>/sites</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | Long running tasks (<tt>/task<tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | User API (<tt>/users</tt>) || ✔ ||
 +
|-
 +
| style="text-align:left;" | Integrated system shell (pty) || || <nowiki>**</nowiki>
 +
|-
 +
|}
 +
 
 +
<nowiki>*</nowiki> Orion Node server has partial support for Git features
 +
<nowiki>**</nowiki> Orion Node server offers system shell on OS X and Linux only
  
 
== Requirements ==
 
== Requirements ==
* node.js and npm.
+
* Node.js
* A modern web browser with Web Socket support (for example: Firefox 15, Chrome 22, Internet Explorer 10, Safari 6).
+
* A modern web browser.
  
 
== Getting Orionode and starting it ==
 
== Getting Orionode and starting it ==
#[[Orion/Getting_the_source#Getting_the_source_onto_your_computer|Get the Orion source]]. You only need to get the [http://git.eclipse.org/c/orion/org.eclipse.orion.client.git client source].
+
You can obtain Orionode through npm (the easiest way) or by checking out its source repo and running it. Checking out the source is mainly of interest to developers wishing to work on or extend the Orion node server. For details on this approach see the Orion developer [[Orion/Getting_the_source#Node.js_on_local_computer| wiki page]].
#Open a command shell and change directory to '''org.eclipse.orion.client/modules/orionode'''.
+
#Run <code>npm install</code> command to automatically download Orionode's dependencies. This will take a few minutes.
+
#Verify the default path of npm-cli.js.
+
##In the same directory, open the server.conf file. The default value of npm_path is <code>../lib/node_modules/npm/bin/npm-cli.js</code>. This is the npm module path to support npm command. Make sure if this default path is correct, relative to the node executable in your environment.
+
##If you installed a recent version of Node.js, npm should be installed automatically. The default value of npm_path should work in most cases.
+
##How to confirm: For instance, if you are using Bash just type <code>which npm</code> and see where the command is. The command should eventually use the npm-cli.js file. Make sure your npm-cli.js matches the npm_path value. If not, then change the npm-path value to match your environment. It can be either an absolute path or a path relative to your node executable.
+
#Create a one-line "password.txt" file containing a secret password. If you do not want a separate file for password, you can still define that in the server.conf or just leave the pwd value as empty.
+
#Launch the Orionode server.
+
#* If you installed by checking out the Git repo, run this command from a shell <code>node server.js [-p port] [-w directory] [-password password.txt]</code>.
+
#* If you're not passing any command-line arguments to the server, you can just use <b>npm start</b>.
+
#Go to http://localhost:8081 (or whatever port you chose) in your web browser to start using Orionode.
+
  
== Use Orionode to develop a Node.js application ==
+
=== Installing with npm ===
Now in the browser you can start to develop your node.js applications. Orionode uses the same client code as Orion does. Refer to [[Orion/Documentation/User_Guide|Orion user guide]] for the client usage. Please note that the sites and git pages are not available in Orionode. Here is a typical workflow:
+
To install Orion with the Node Package Manager (npm), simply run the following command from the shell:
#Use navigator and edit pages to create and edit your folders and node applications.
+
<code> npm install orion</code>
#Go to shell page.
+
This will install Orionode into a <code>node_modules</code> subdirectory of your working directory.
#<code>cd</code> to the folder where your application lives.
+
* If you're not interested in developing the Orionode server, add the <code>--production</code> flag for a slightly smaller download.
#Use <code>npm install</code> to install your dependency packages if needed. You can basically use all the npm arguments here.
+
#Use <code>node start yourApp.js</code> to start your application.
+
#Use <code>node list</code> to monitor all the applications you've started and still running.
+
#Use <code>node stop PID</code> ot stop an application if you want to force it to stop.
+
  
== Optional command line arguments ==
+
=== Starting and stopping the server ===
 +
# Launch Orion by running:<br><code>npm start orion</code>
 +
#* If you need to pass [[#Server_command_line_arguments|command line arguments]] to the server, run the server.js file directly:<br><code>node node_modules/orion/server.js [arguments]</code>
 +
# Go to http://localhost:8081 (or whatever port you provided in the server arguments) in your web browser to start using Orionode.
 +
# Stop the server by sending a kill signal from the console (typically Ctrl+C)
 +
 
 +
=== The orion.conf file ===
 +
You can pass arguments to the server by editing the <code>orion.conf</code> file. It is found in the directory where you installed Orion (when installing from npm, this is typically <code>node_modules/orion/</code>). An alternate configuration file can be specified via [[#Server_command_line_arguments|command line arguments]].
 +
 
 +
===== Password =====
 +
Add a line in your <code>orion.conf</code> file that looks like this:
 +
  pwd=mysecretpassword
 +
 
 +
===== Workspace =====
 +
Edit the <code>orion.conf</code> file and change the <code>workspace</code> option to point to a directory in your user space. If not specified, a default <code>.workspace</code> directory will be created in the Orion install directory. For example:
 +
  workspace=/home/pi/Workspace/
 +
 
 +
== Using a global installation of Orionode ==
 +
 
 +
=== Installing with npm ===
 +
To install Orion with the Node Package Manager (npm), simply run the following command from the shell:
 +
<code> npm install -g orion</code>
 +
This will install Orionode as a global package, enabling you to run from any directory.
 +
* If you're not interested in developing the Orionode server, add the <code>--production</code> flag for a slightly smaller download.
 +
* If you run into permissions problems, you may need to run with sudo, e.g. <code>sudo npm install -g orion</code>. (A global installation attempts to install in <code>bin</code> so that the command <code>orion</code> can be run in the shell.)
 +
 
 +
=== Starting and stopping the server ===
 +
# Launch Orion by running:<br><code>orion</code>
 +
#* There are a few different options for the global installation:
 +
#** <code>orion</code>: launches Orion on port 8081 using current working directory
 +
#** <code>orion <workspaceDir></code>: launches Orion on port 8081 using <workspaceDir>
 +
#** <code>orion -p <portno></code>: launches Orion on <portno> using current working directory
 +
#** <code>orion <workspaceDir> -p <portno></code>: launches Orion on <portno> using <workspaceDir>
 +
#** <code>orion -w <workspaceDir> -p <portno></code>: same as above, except order can be switched
 +
#* The global installation of Orion currently only supports the [[#Server_command_line_arguments|command line arguments]] -p and -w. It does not read from the orion.conf file.
 +
# Go to http://localhost:8081 (or whatever port you provided in the server arguments) in your web browser to start using Orionode.
 +
# Stop the server by sending a kill signal from the console (typically Ctrl+C)
 +
 
 +
== Server command line arguments ==
 +
When launching the server manually through node.js (<code>node [orion install dir]/server.js</code>), a number of optional arguments can be provided:
 +
; <code>-c</code> or <code>-config</code>
 +
: Path to an alternate orionode configuration file. Defaults to orion.conf. This is useful to run orionode from git sources without modifying the version controlled orion.conf file in the git working tree.
 
; <code>-p</code> or <code>-port</code>
 
; <code>-p</code> or <code>-port</code>
 
: The port that the Orion server will listen on. Defaults to 8081.
 
: The port that the Orion server will listen on. Defaults to 8081.
 
; <code>-pwd</code> or <code>-password</code>
 
; <code>-pwd</code> or <code>-password</code>
: Path to a file containing a password. If provided, Orionode will enforce HTTP Basic Authentication with the password (the auth 'User' field is ignored -- Orionode only verifies the password). Use caution: if you don't provide a password file, '''no authentication''' is used (so anyone request can read and write your files!).
+
: Path to a file containing a password. If provided, Orionode will enforce HTTP Basic Authentication with the password (the auth 'User' field is ignored -- Orionode only verifies the password). Use caution: if you don't provide a password file, '''no authentication''' is used (so anyone can access your Orionode server and read and write your files!).  
 
; <code>-w</code> or <code>-workspace</code>
 
; <code>-w</code> or <code>-workspace</code>
: The target directory for reading and writing files. Will be created if it doesn't exist. Defaults to a subdirectory named .workspace in the repository folder.
+
: The target directory for reading and writing files. Will be created if it doesn't exist. Defaults to a subdirectory named <code>.workspace</code> in the server directory. This option can also be set in your [[#The orion.conf file|orion.conf file]].
 
; <code>-dev</code>
 
; <code>-dev</code>
 
: Starts the server in development mode. In this mode, some client-side code is not cached by the browser, to ease development.
 
: Starts the server in development mode. In this mode, some client-side code is not cached by the browser, to ease development.
 
; <code>-log</code>
 
; <code>-log</code>
 
: Logs each request served to standard output.
 
: Logs each request served to standard output.
 +
Arguments passed on the command line override arguments set in the orion.conf file, when both are provided.
  
== Use Orionode to debug your node.js application ==
+
== Developing a node.js application ==
You can use Orionode to debug your node.js application. If you have exisiting node.js applications, make sure the code is under a subfolder in the -w option when you start Orionnode. This will give you easy access to your node.js apps from within Orionode.
+
Now in the browser you can start to develop your node.js applications. Orionode uses largely the UI you're accustomed to from Orion. (Refer to [[Orion/Documentation/User_Guide|Orion user guide]] for basic instructions).
You can also create a new node.js application in your workspace.
+
#Use the Navigator and Edit pages to create and edit your folders and node applications.
#After Orionode starts, open the shell page and use help to see what commands are available.
+
#Use the '''Console''' page to start, stop and manage your application.
#'cd' to the folder where your application lives.
+
#Use 'node debug yourApp.js givenPort' to start your app in debug mode. You can start multiple apps in debug mode by repeating this step.
+
#In the return value of the 'node debug' command, you will see a "debugURL" string.
+
#Copy and paste the debug URL into a webkit browser (e.g., Chrome, Safari) and start debugging. The URL normally looks something like: http://yourOrionNodeServer:8900/debug?port=theGivenPort`.
+
 
+
== Concatenation and Minification ==
+
By default the pages served up by Orionode are not concatenated or minified, so they will load rather slowly. You can mitigate this by running the client-side build. To do this, just run `build.js`, found in the `build` directory:
+
 
+
    orionode $ node ./build/build.js
+
    -------------------------------------------------------
+
    [lots of output]
+
    orionode $
+
 
+
Clear your browser cache. The next time you load Orionode, it should be much faster.
+
  
 
== Other ways of using Orionode ==
 
== Other ways of using Orionode ==
Line 84: Line 131:
  
 
== Known Issues ==
 
== Known Issues ==
* See the [https://bugs.eclipse.org/bugs/buglist.cgi?list_id=4064489&classification=Eclipse&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Node&product=Orion list of open bugs].
+
* See the [https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&classification=ECD&component=Node&list_id=13951195&product=Orion&query_format=advanced list of open bugs].
* In particular, the Orionode features are work in progress. Current limitations are:
+
 
** There's no way to provide standard input to a running node app.
+
== See also ==
** No source control integration yet. E.g.: git support.
+
* [[Orion/Node/Developing|Developing the Node server]]
  
[[Category:Orion|Getting Started with Orion node]]
+
[[Category:Orion|N]]
 +
[[Category:Orion/Node|G]]

Revision as of 10:59, 3 March 2016

Orion provides a minimal, single-user server deployment of Orion written in JavaScript that runs on Node.js. This implementation of Orion supports developing your own Node applications with Orion's editing environment.

Features

The JavaScript Orion server implementation is still very early access. There are many rough edges and missing features compared to the full Java-based Orion server. The JavaScript-based Orion server currently supports:

  • Basic Navigator operations (Create file/folder, delete file/folder, copy/move/rename a file)
  • Basic Editor operations (Edit file, save file, ETags)
  • Plugin operations (Install/uninstall plugins)
  • Gzip on server traffic to reduce download times
  • Concatenation and minification of pages (requires a manual step)

Feature comparison

This table compares features between the Java and Node.js servers.

Java Node
Users multiple single
Login API (/login)
File operations (/file)
Import zip/HTTP/SFTP (/import)
Export zip/SFTP (/export)
Persistent user preferences (/prefs)
Git (/gitapi) *
Deploy to Cloud Foundry (/cfapi)
Sites (/sites)
Long running tasks (/task<tt>)
User API (<tt>/users)
Integrated system shell (pty) **

* Orion Node server has partial support for Git features ** Orion Node server offers system shell on OS X and Linux only

Requirements

  • Node.js
  • A modern web browser.

Getting Orionode and starting it

You can obtain Orionode through npm (the easiest way) or by checking out its source repo and running it. Checking out the source is mainly of interest to developers wishing to work on or extend the Orion node server. For details on this approach see the Orion developer wiki page.

Installing with npm

To install Orion with the Node Package Manager (npm), simply run the following command from the shell: npm install orion This will install Orionode into a node_modules subdirectory of your working directory.

  • If you're not interested in developing the Orionode server, add the --production flag for a slightly smaller download.

Starting and stopping the server

  1. Launch Orion by running:
    npm start orion
    • If you need to pass command line arguments to the server, run the server.js file directly:
      node node_modules/orion/server.js [arguments]
  2. Go to http://localhost:8081 (or whatever port you provided in the server arguments) in your web browser to start using Orionode.
  3. Stop the server by sending a kill signal from the console (typically Ctrl+C)

The orion.conf file

You can pass arguments to the server by editing the orion.conf file. It is found in the directory where you installed Orion (when installing from npm, this is typically node_modules/orion/). An alternate configuration file can be specified via command line arguments.

Password

Add a line in your orion.conf file that looks like this:

 pwd=mysecretpassword
Workspace

Edit the orion.conf file and change the workspace option to point to a directory in your user space. If not specified, a default .workspace directory will be created in the Orion install directory. For example:

 workspace=/home/pi/Workspace/

Using a global installation of Orionode

Installing with npm

To install Orion with the Node Package Manager (npm), simply run the following command from the shell: npm install -g orion This will install Orionode as a global package, enabling you to run from any directory.

  • If you're not interested in developing the Orionode server, add the --production flag for a slightly smaller download.
  • If you run into permissions problems, you may need to run with sudo, e.g. sudo npm install -g orion. (A global installation attempts to install in bin so that the command orion can be run in the shell.)

Starting and stopping the server

  1. Launch Orion by running:
    orion
    • There are a few different options for the global installation:
      • orion: launches Orion on port 8081 using current working directory
      • orion <workspaceDir>: launches Orion on port 8081 using <workspaceDir>
      • orion -p <portno>: launches Orion on <portno> using current working directory
      • orion <workspaceDir> -p <portno>: launches Orion on <portno> using <workspaceDir>
      • orion -w <workspaceDir> -p <portno>: same as above, except order can be switched
    • The global installation of Orion currently only supports the command line arguments -p and -w. It does not read from the orion.conf file.
  2. Go to http://localhost:8081 (or whatever port you provided in the server arguments) in your web browser to start using Orionode.
  3. Stop the server by sending a kill signal from the console (typically Ctrl+C)

Server command line arguments

When launching the server manually through node.js (node [orion install dir]/server.js), a number of optional arguments can be provided:

-c or -config
Path to an alternate orionode configuration file. Defaults to orion.conf. This is useful to run orionode from git sources without modifying the version controlled orion.conf file in the git working tree.
-p or -port
The port that the Orion server will listen on. Defaults to 8081.
-pwd or -password
Path to a file containing a password. If provided, Orionode will enforce HTTP Basic Authentication with the password (the auth 'User' field is ignored -- Orionode only verifies the password). Use caution: if you don't provide a password file, no authentication is used (so anyone can access your Orionode server and read and write your files!).
-w or -workspace
The target directory for reading and writing files. Will be created if it doesn't exist. Defaults to a subdirectory named .workspace in the server directory. This option can also be set in your orion.conf file.
-dev
Starts the server in development mode. In this mode, some client-side code is not cached by the browser, to ease development.
-log
Logs each request served to standard output.

Arguments passed on the command line override arguments set in the orion.conf file, when both are provided.

Developing a node.js application

Now in the browser you can start to develop your node.js applications. Orionode uses largely the UI you're accustomed to from Orion. (Refer to Orion user guide for basic instructions).

  1. Use the Navigator and Edit pages to create and edit your folders and node applications.
  2. Use the Console page to start, stop and manage your application.

Other ways of using Orionode

You can use Orionode as a file server, to access your local files from http://www.orionhub.org/ (or any other Orion installation). All you need is Orionode and a publicly-accessible URL pointing to your local Orionode server.

  1. Visit this page on your Orionode server (the hostname will differ from this example) and copy its URL:http://yourOrionNodeServer:8081/plugins/fileClientPlugin.html
  2. Log in to Orionhub.
  3. Click the user menu in the top right-hand corner of the page, then click Settings.
  4. Select the Plugins category, click Install, paste in the URL, click Submit.
  5. Return to the Navigator page. Your Orionode files should appear as a new filesystem in the left-hand sidebar.

Security Concerns

No security is guaranteed or even implied at this moment. Always run Orionode with the -pwd flag to prevent unauthorized access to your files.

Known Issues

See also

Back to the top