Package Exports
- impress
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (impress) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Impress Application Server for node.js. All decisions are made. Solutions are scaled. Tools are provided and optimized for high load.
Impress (Impress Application Server) way:
- Application can't include Application Server, quite the opposite, Application Server is a container for Applications;
- Separate business logic and system code;
- Applied code simplicity;
- Support for both Stateful and Stateless approach;
- No I/O is faster even then async I/O, so maximum memory usage and lazy I/O is the choice;
Features
- Can serve multiple applications;
- Support multiple domains;
- Serves multiple ports, network interfaces, hosts and protocols;
- Can scale on multiple processes and servers;
- Supports application sandboxing (configuration, file system, database and memory access isolation);
- Utilize multiple CPU cores with instances/workers:
- Inter-process communication (not using built-in node.js cluster library);
- State synchronization mechanism with transactions and subscription;
- No need to write routing manually in code, just create handler files and put sync or async lambdas there;
- File system watching for cache reloading when file changes on disk;
- Cache server-side executable JavaScript in memory;
- API development support (simple JSON-based WEB-services development):
- RPC-style API (Stateful, state stored in memory between requests);
- REST-style API (Stateless, each call is separate, no state in memory);
- JSTP (long-live and full duplex RPC/MQ over TCP or websockets);
- Serving static files from memory with in-memory preprocessing;
- Built-in sessions support with authentication, groups and anonymous;
- Multiple protocols support:
- JSTP (JavaScript Transfer Protocol) for RPC and messaging; See https://github.com/metarhia/jstp for details;
- HTTP and HTTPS (node native libraries);
- WebSockets support;
- TCP and UDP sockets support;
- Server-wide or application-specific logging, with log buffering (lazy write) and rotation (keep logs N days);
- Connection drivers for database PostgreSQL, Relational schema generator from JSON database schemas;
- File utilities: upload, download, streaming;
- Built-in simple testing framework;
- Server health monitoring;
- Built-in data structures validation and preprocessing library;
- Long workers with
clientobject forwarding to separate process; - Task scheduling (interval or certain time);
Installation and upgrade
- Install to the current folder:
npm install impress - Install using package.json: add to
dependenciesand runnpm install - Installation scripts for an empty server (from the scratch)
- For CentOS 7 x64
/deploy/centos7x64.sh - For Ubuntu 14, 16 and 18
/deploy/ubuntu.sh - For Debian 8 and 9
/deploy/debian.sh - For Fedora 27, 28, 29 for x64
/deploy/fedora.sh
- For CentOS 7 x64
You can prepare scripts based on examples above and run at a target server
shell:
curl http://.../install.sh | sh or wget http://.../install.sh -O - | sh
If Impress Application Server is already installed in directory you want to
install/update it using npm, /applications directory contains applications
and /config contains configuration, Impress will safely detect previous
installation and update libraries and dependencies.
Impress CLI commands
You can use following commands from any directory:
impress path <path>to display or change path to IASimpress startto start IAS serverimpress stopto stop IAS serverimpress restartto restart IAS serverimpress statusto display IAS statusimpress updateto update IAS versionimpress autostart [on|off]to add/remove IAS to autostart on system rebootimpress listto see IAS applications listimpress add [path]to add applicationimpress remove [name]to remove applicationimpress new [name]to create application
Contributors
- Timur Shemsedinov (marcusaurelius)
- See github for full contributors list
License
Dual licensed under the MIT or RUMI licenses. Copyright (c) 2012-2019 Metarhia contributors. Project coordinator: <timur.shemsedinov@gmail.com>
RUMI License: Everything that you want, you are already that. // Jalal ad-Din Muhammad Rumi
