Getting Started#
How to run Shapelets server#
Once you have installed shapelets, in order to get started you need user credentials to access the UI, and you need to start the server.
There is an administrator user created directly so that you can log in right after installation. Your credentials are username admin
with password admin
You can create new users directly on Python.
>>> import shapelets as sh
>>> sh.register(
>>> user_name = "usernew",
>>> password = "your_pass",
>>> default = True # If you want to set admin user as default for register DataApps with that user.
>>> )
Now, in order to execute the server, run the following command. We will add the --daemon
parameter to keep the server running in the background.
>>> shapelets server run --daemon
Note
–daemon param only works on linux systems.
Now you can go to localhost and login.
You can know more about this built-in tool in Configuration wizard.
Configuration wizard#
Shapelets have a toml configuration file called settings.toml. This configuration file have the params to configure the shapelets server.
The shapelets software have a configuration wizard to configure this file. You can execute this wizard by:
>>> shapelets -h
usage: shapelets [-h] {server,client} ...
Shapelets Platform Tools
positional arguments:
{server,client}
server Server tools
client Client Defaults
optional arguments:
-h, --help show this help message and exit
Server#
Shapelets includes a wizard to manage all aspects related to the shapelets server, such as its configuration or its correct execution. You can execute the shapelets server configuration using:
>>> shapelets server -h
usage: shapelets server [-h] {show,config,run,systemd} ...
positional arguments:
{show,config,run,systemd}
show Shows current configuration
config Configures server settings
run Runs the server
systemd Generates daemon configuration for systemd
optional arguments:
-h, --help show this help message and exit
What do you can do with this wizard? Check this out!
Check the actual config#
You can check the actual settings using:
>>> usage: shapelets server show [-h] [--plain-passwords] path
positional arguments:
path Working folder where the settings will be loaded from
optional arguments:
-h, --help show this help message and exit
--plain-passwords Show plain passwords
For example, checking the default settings:
>>> shapelets server show .
[server]
host = "0.0.0.0"
port = 4567
static = "/home/shapelets/lib/python3.8/site-packages/shapelets/svr/www"
loop = "auto"
secret = "**********"
salt = "csAz7ZXZHdLYQZcEpR6rcg=="
[server.http]
protocol = "auto"
[server.ws]
protocol = "auto"
[server.reload]
enabled = false
[database]
path = "~/.shapelets/data.db"
db_schema = "shapelets"
Modify the config#
The shapelets configuration takes into account a lot of important aspects for a correct and safe deployment, you can see here:
>>> shapelets server config -h
usage: shapelets server config [-h] [--host HOST] [--port PORT] [--uds UDS] [--fd FD] [--limit-concurrency LIMIT_CONCURRENCY]
[--backlog BACKLOG] [--timeout-keep-alive TIMEOUT_KEEP_ALIVE] [--ssl-keyfile SSL_KEYFILE]
[--ssl-certfile SSL_CERTFILE] [--ssl-keyfile-password SSL_KEYFILE_PASSWORD] [--ssl-version SSL_VERSION]
[--ssl-cert-reqs SSL_CERT_REQS] [--ssl-ca-certs SSL_CA_CERTS] [--ssl-ciphers SSL_CIPHERS]
[--database-path DATABASE_PATH] [--database-temp-directory DATABASE_TEMP_DIRECTORY]
[--database-threads DATABASE_THREADS] [--database-memory-limit DATABASE_MEMORY_LIMIT]
destination
Creates a configuration file for a server
positional arguments:
destination Folder where the settings will be saved
optional arguments:
-h, --help show this help message and exit
--host HOST Address to bind the server
--port PORT Port number of the server
--uds UDS Unix domain socket
--fd FD Bind to socket from this file descriptor
--limit-concurrency LIMIT_CONCURRENCY
Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses.
--backlog BACKLOG Maximum number of connections to hold in backlog.
--timeout-keep-alive TIMEOUT_KEEP_ALIVE
Close Keep-Alive connections if no new data is received within this timeout.
--ssl-keyfile SSL_KEYFILE
SSL key file
--ssl-certfile SSL_CERTFILE
SSL certificate file
--ssl-keyfile-password SSL_KEYFILE_PASSWORD
SSL keyfile password
--ssl-version SSL_VERSION
SSL version to use
--ssl-cert-reqs SSL_CERT_REQS
Whether client certificate is required
--ssl-ca-certs SSL_CA_CERTS
CA certificates file
--ssl-ciphers SSL_CIPHERS
Ciphers to use
--database-path DATABASE_PATH
Path to the file containing the configuration database
--database-temp-directory DATABASE_TEMP_DIRECTORY
Temporal directory for result handling and buffering
--database-threads DATABASE_THREADS
Maximum number of threads to use in data processing operations
--database-memory-limit DATABASE_MEMORY_LIMIT
Maximum memory to use during memory operations.
These settings may be also loaded from the environment, using the same
names of these settings with `shapelets_server` prefix.
For example, if host is not provided by the configuration file,
it will try to resolve its value by reading an environment variable
called `shapelets_server__host` (dashes are converted to
underscores).
Database settings can also be set through environment settings; for
each of the options offered, the prefix will be `shapelets_database__`,
followed with the name of the property (without `database`). For
example, `--database-memory-limit` will be looked up in the environment
as `shapelets_database__memory_limit`.
Environment values have lower priority over settings found in
configuration files.
Run the server#
To run the server you can execute run command and server will start with the settings in settings.toml file:
>>> shapelets server run
INFO: Started server process [1653903]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:4567 (Press CTRL+C to quit)
In addition, you can launch the shapelets server in daemon mode, so that the server will run even if you close your terminal.
>>> shapelets server run --daemon
Running Shapelets as a daemon:
Lock file: /home/shapelets/shapelets.lock
Log file : /home/shapelets/shapelets.log
Pid file : /home/shapelets/shapelets.pid
To stop it:
cat /home/shapelets/shapelets.pid | xargs kill
Note
–daemon param only works on linux systems.
Create a unix service#
- Shapelets has a wizard that allows you to quickly set up a unix service to deploy the server.
It also shows you the exact commands to install the service without any problems. You can run it by launching:
>>> shapelets server systemd -h usage: shapelets server systemd [-h] [-n NAME] [-w WRK] [-u USR] [-g GRP] [-d DST] Generates a service template that runs a shapelets server using systemd. optional arguments: -h, --help show this help message and exit -n NAME, --name NAME Name of the service template -w WRK, --wrk WRK Working directory -u USR, --usr USR User running the server -g GRP, --grp GRP Group to run the server -d DST, --dst DST Folder to store the service template (/etc/systemd/system/). Creating service templates may require sudo permissions, since it will try to write the template to /etc/systemd/system/ You may change the template destination using argument -d, providing a folder where to store the template. To start a server ----------------- If the service has been named `shapelets`: systemctl enable shapelets systemctl daemon-reload systemctl start shapelets To query a server ----------------- systemctl status shapelets To stop a server ---------------- systemctl stop shapelets To remove a server ------------------ systemctl disable shapelets rm /etc/systemd/system/shapelets.service rm /usr/lib/systemd/system/shapelets.service systemctl daemon-reload systemctl reset-failed
Client#
Shapelets has a complete logging system, which allows you to connect from the same machine to different instances of Shapelets. The shapelets client wizard allows you to interact with these configuration features.
You can execute the shapelet client configuration using:
>>> shapelets client -h
usage: shapelets client [-h] (--local | --url URL) [-u USR]
[-p PWD] [--create] [--remember-me]
optional arguments:
-h, --help show this help message and exit
--local Use Local server
--url URL URL of the server to connect to
-u USR, --usr USR User Name
-p PWD, --pwd PWD User Password
--create Create user if not exists
--remember-me Logon and remember credentials
What do you can do with this wizard? Check this out!
Create a new user#
In your local machine.
>>> shapelets client --local -u new_user -p new_user_pass --create
In a remote server
>>> shapelets client --url my_server_remote:myport -u new_user -p new_user_pass --create
Configure the autologin#
In your local machine.
>>> shapelets client --local -u new_user -p new_user_pass --remember-me
In a remote server
>>> shapelets client --url my_server_remote:myport -u new_user -p new_user_pass --remember-me