Before i forget smashing/centos7 2020 install

Mich hat ein Kollege zuletzt gefragt wie er denn Dashing in Betrieb nehmen könnte. Ich muss gestehen ich war etwas Baff weil man eigentlich im Jahr 2020 nicht mehr Dashing verwenden sollte (deprecated). Es gibt aber anscheinend noch genügend Leute welche die Leiche am Leben erhalten wollen (Ich mag so Zombie Software) nicht (Dashing).

Ich bin also wieder mal wieder in der Erklärbär Falle und erkläre mal wie man "smashing" für Dashboards relativ unkompliziert installiert auf einem Centos/7 & weil es 2020 ist auch ggf. auf einem Centos/8.

Wenn mich jemand lieb fragt werde ich es auch noch vielleicht für Debian/Ubuntu erklären.

Also lasst uns Anfangen. Frische Centos/7 minimal iso ist hier die Ausgangslage.

#> yum install -y epel-release && yum install -y centos-release-scl 
#> yum update -y
#> yum groupinstall -y "Development tools"
#> yum install -y nodejs.x86_64
#> yum install -y ruby-devel.x86_64
#> yum install -y rubygem-bundler

An der folgender Stelle muss man nun auf den RVM (Ruby Version Manager) umsteigen dies macht die folgenden Schritte etwas einfacher und nachvollziehbarer.

Wir haben schon zuvor etwas Ruby installiert. Das bildet aber nur eine Grundlage für die folgenden Schritte.

#> gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
#> curl -sSL https://get.rvm.io | bash -s stable --ruby
#> source /etc/profile.d/rvm.sh
#> rvm reload
#> rvm requirements run
#> rvm list
#> rvm install 2.5.7
#> rvm --default use 2.5.7

Wir haben an dieser Stelle RVM installiert und auf die Ruby Version 2.5.7 festgestellt. Smashing benötigt für einige Gems aktuell zumindest 2.5.7.

Nun kommen wir zu dem install von "smashing"

#> sudo -i
#> gem install smashing
...

Nachdem die Installation durchgelaufen ist legen wir ein kleines Test Dashboard an und erstellen einen Systemd Unit file um den Service zu starten und zu stoppen.

#> cd /usr/sbin
#> ln -s /usr/local/rvm/gems/ruby-2.5.7/bin/smashing /usr/sbin/smashing
#> cd ~
#> smashing new testdashboard
#> cd testdashboard
#> vi Gemfile
...
In dem Gemfile entfernen wir # Gem 'twitter' und ersetzen es mit 
gem 'thin'
gem 'rest-client'
gem 'json' <== nur wenn man json Daten abfragt. 

Danach verlassen wir das Gemfile per :wq

#> bundle
Nun werden die noch ausstehenden Gems installiert.
Abschliessend starten wir zum Test das Dashboard.

#> smashing start
...

Hier kommen wir nun zu dem Unit File für Systemd:

#> vi /etc/systemd/system/smashing.service
...
[Unit]
Description=Start Smashing Dashboard
After=network.target

[Service]
Environment="GEM_HOME=/usr/local/rvm/gems/ruby-2.5.7"
Environment="IRBRC=/usr/local/rvm/rubies/ruby-2.5.7/.irbrc"
Environment="MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.5.7"
Environment="PATH=/usr/local/rvm/gems/ruby-2.5.7/bin:/usr/local/rvm/gems/ruby-2.5.7@global/bin:/usr/local/rvm/rubies/ruby-2.5.7/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/root/bin"
Environment="GEM_PATH=/usr/local/rvm/gems/ruby-2.5.7:/usr/local/rvm/gems/ruby-2.5.7@global"
Environment="RUBY_VERSION=ruby-2.5.7"

Type=exec
RemainAfterExit=yes
WorkingDirectory=/root/testdashboard
ExecStart=/usr/local/bin/smashing start -d -p 3030 --pid /var/run/smashing.pid
ExecStop=/usr/local/bin/smashing stop

[Install]
WantedBy=multi-user.target

Teilerklärung des Unitfiles:

Die Enviroment Parts müssen für das jeweilige System ausgeben werden damit der Service sauber mit Systemd startet.
Ich habe mir die Enviroment Settings per folgenden Command geholt.

#>printenv | grep ruby
GEM_HOME=/usr/local/rvm/gems/ruby-2.5.7
IRBRC=/usr/local/rvm/rubies/ruby-2.5.7/.irbrc
MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.5.7
PATH=/usr/local/rvm/gems/ruby-2.5.7/bin:/usr/local/rvm/gems/ruby-2.5.7@global/bin:/usr/local/rvm/rubies/ruby-2.5.7/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/root/bin
GEM_PATH=/usr/local/rvm/gems/ruby-2.5.7:/usr/local/rvm/gems/ruby-2.5.7@global
RUBY_VERSION=ruby-2.5.7

Der Part mit dem WorkingDirectory ist der wo das Eigentliche smashing Dashboard liegt welches dann automatisch wenn der service gestartet wird geladen wird.. ggf. also hier den Pfad zu dem Ordner welcher mit 'smashing new dashboard' erstellt wurde hier angeben oder halt den eigenen Pfad.

Last but not Least ExecStart hier ist eine verlinkte Version von smashing angegeben. Welche mit den folgenden Schritt erstellt wurde.

#> cd /usr/local/bin
#> ln -s /usr/local/rvm/gems/ruby-2.5.7/bin/smashing /usr/local/bin/smashing

Abschliessend kann nun mit dem folgenden Kommando Smashing per Systemctl gestartet werden.

#> systemctl daemon-reload
#> systemctl enable smashing.service --now

Zu Fragen und Anregungen bin ich immer Ansprechbar.

Gruß

David