Feature : Ability to daemonize the SurrealDB server / Ubuntu / Debian Flavour Package and SystemD Service (#31)

This commit is contained in:
Mário Monteiro 2022-08-12 15:52:15 +01:00 committed by GitHub
parent 13d3d02dcf
commit 9a3b695c61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 177 additions and 1 deletions

View file

@ -39,3 +39,18 @@ surrealdb = { path = "lib" }
thiserror = "1.0.32"
tokio = { version = "1.20.1", features = ["macros"] }
warp = { version = "0.3.2", features = ["compression", "tls", "websocket"] }
[package.metadata.deb]
maintainer-scripts = "pkg/deb/"
maintainer = "Tobie Morgan Hitchcock <tobie@surrealdb.com>"
copyright = "2022, SurrealDB Ltd."
systemd-units = { enable = true }
depends = "$auto"
section = "utility"
priority = "optional"
assets = [
["target/release/surreal", "usr/share/surreal/surreal", "755"],
["pkg/deb/README", "usr/share/surreal/README", "644"],
]
extended-description = "A scalable, distributed, collaborative, document-graph database, for the realtime web."
license-file = ["LICENSE", "4"]

View file

@ -36,4 +36,4 @@ quick:
.PHONY: build
build:
cargo build --release
cargo build --release

134
pkg/deb/NOTES.md Normal file
View file

@ -0,0 +1,134 @@
# NOTES
used ubuntu 20.04 system
## Pre Requisites
```shell
$ rustup upgrade
$ sudo apt-get update && sudo apt-get install -y cmake g++ libprotobuf-dev protobuf-compiler
$ cargo install cargo-deb
```
## Optinal test build SurrealDB
```shell
$ make build
```
## Make Debian
```shell
$ make deb
# or
$ cargo deb
# outcome
...
info: Generating maintainer script postrm
info: compressed/original ratio 6274596/20791808 (30%)
target/debian/surreal_1.0.0~beta.5_amd64.deb
```
## Install local deb
```shell
$ sudo dpkg -i target/debian/surreal_1.0.0~beta.5_amd64.deb
```
## Some Service
```shell
$ sudo service surreal status
# outcome
● surreal.service - SurrealDB Service
Loaded: loaded (/lib/systemd/system/surreal.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-08-11 23:34:35 UTC; 5min ago
Main PID: 23177 (surreal)
Tasks: 5 (limit: 4605)
Memory: 3.2M
CGroup: /system.slice/surreal.service
└─23177 /usr/share/surreal/surreal start --log trace --user root --pass root
# other commands
$ sudo service surreal start
$ sudo service surreal stop
$ sudo service surreal enable
$ sudo service surreal disable
```
## Test Service
```shell
$ curl -k -L -s POST \
--header "Content-Type: application/json" \
--header 'NS: test' \
--header 'DB: test' \
--user "root:root" \
--data "INFO FOR DB" \
http://localhost:8000/sql
# outcome
[
{
"time": "75.653µs",
"status": "OK",
"result": {
"dl": {},
"dt": {},
"sc": {},
"tb": {
"account": "DEFINE TABLE account SCHEMALESS PERMISSIONS NONE"
}
}
}
]
```
## See logs with JournalCtl
```shell
$ sudo journalctl -f -u surreal
# or with log
$ tail -f /var/log/surrealdb.log
```
## Install online deb
```shell
$ curl --proto '=https' --tlsv1.2 -sSf https://deb.surrealdb.com | sh
```
upload `install.sh` to <https://download.surrealdb.com/debian/install.sh>
contents of `install.sh`
```shell
curl https://download.surrealdb.com/debian/surrealdb-latest.darwin-amd64.deb -o /tmp/surrealdb-latest.darwin-amd64.deb \
&& sudo dpkg -i /tmp/surrealdb-latest.darwin-amd64.deb
```
> always create a symbolic link to latest version, or replace surrealdb-latest.darwin-amd64.deb, this way latest will have always the same filename ex
```shell
$ ln -s surrealdb-v1.0.0-beta.5.darwin-amd64.deb surrealdb-latest.darwin-amd64.deb
```
## Build debian for Rasperry Pi
```shell
# preRequisites
$ sudo apt install gcc-arm-linux-gnueabihf
# check if armv7-unknown-linux-gnueabihf is installed
$ rustup component list | grep armv7-unknown-linux-gnueabihf
# install target armv7-unknown-linux-gnueabihf
$ rustup target add armv7-unknown-linux-gnueabihf
# check if armv7-unknown-linux-gnueabihf is installed
$ rustup component list | grep armv7-unknown-linux-gnueabihf
rust-std-armv7-unknown-linux-gnueabihf (installed)
# now make debian with
$ make debRpi
14 | include!(concat!("bindings/", bindings_env!("TARGET"), ".rs"));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `include` (in Nightly builds, run with -Z macro-backtrace for more info)
error: could not compile `rquickjs-sys` due to previous error
```

3
pkg/deb/README Normal file
View file

@ -0,0 +1,3 @@
README
SurrealDB - A scalable, distributed, collaborative, document-graph database, for the realtime web.

24
pkg/deb/service Normal file
View file

@ -0,0 +1,24 @@
[Unit]
Description=SurrealDB Service
[Service]
Type=simple
ExecStart=/usr/share/surreal/surreal start
WorkingDirectory=/usr/share/surreal
Restart=always
KillMode=process
LimitNOFILE=infinity
LimitCORE=infinity
; Environment variables:
; Environment=USER=root
; Environment=PASS=root
; Environment=BIND=0.0.0.0:8000
; Environment=LOG=debug
; Environment=STRICT=false
[Install]
WantedBy=multi-user.target