Loomio installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:


== Über ==
== Über ==
Loomio (https://www.loomio.org/) ist laut Wikipedia eine freie Software, geeignet um Gruppen im kollaborativen Entscheidungsfindungsprozess zu unterstützen.
Loomio (https://www.loomio.com/) ist laut Wikipedia eine freie Software, geeignet um Gruppen im kollaborativen Entscheidungsfindungsprozess zu unterstützen.


Ein kurzes 2 Minuten Video auf Englisch beschreibt es ganz gut: What is Loomio? https://www.youtube.com/embed/Zlzuqsunpxc
Ein kurzes 2 Minuten Video auf Englisch beschreibt es ganz gut: What is Loomio? https://www.youtube.com/embed/Zlzuqsunpxc
Zeile 32: Zeile 32:
Die Version ist in https://github.com/loomio/loomio/blob/master/.ruby-version zu finden.
Die Version ist in https://github.com/loomio/loomio/blob/master/.ruby-version zu finden.


    xyz00-loomio@h20:~$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~$ touch ~/.profile
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    xyz00-loomio@h20:~$ chmod u+x ~/.profile
touch ~/.profile
    xyz00-loomio@h20:~$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
chmod u+x ~/.profile
    xyz00-loomio@h20:~$ echo 'eval "$(rbenv init -)"' >> ~/.profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    xyz00-loomio@h20:~$ source ~/.profile
echo 'eval "$(rbenv init -)"' >> ~/.profile
    xyz00-loomio@h20:~$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
source ~/.profile
    xyz00-loomio@h20:~$ rbenv install 2.7.3
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    xyz00-loomio@h20:~$ rbenv rehash
rbenv install 2.7.3
    xyz00-loomio@h20:~$ rbenv global 2.7.3
rbenv rehash
rbenv global 2.7.3
</syntaxhighlight>


Als Test bitte aufrufen: ''ruby -v''
Als Test bitte aufrufen: ''ruby -v''
Zeile 54: Zeile 56:
Die Version ist in https://github.com/loomio/loomio/blob/master/Dockerfile#L28 zu finden.
Die Version ist in https://github.com/loomio/loomio/blob/master/Dockerfile#L28 zu finden.


    xyz00-loomio@h20:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
    xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
export NVM_DIR="$HOME/.nvm"
    xyz00-loomio@h20:~$ nvm install 14.0.0
source $NVM_DIR/nvm.sh
    xyz00-loomio@h20:~$ nvm alias default 14.0.0
nvm install 14.0.0
nvm alias default 14.0.0
</syntaxhighlight>


== Installation ==
== Installation ==
Zeile 67: Zeile 71:
Momentan ist das Version Loomio 2.7.5, siehe auf [https://github.com/loomio/loomio/blob/stable/lib/version.rb Github].
Momentan ist das Version Loomio 2.7.5, siehe auf [https://github.com/loomio/loomio/blob/stable/lib/version.rb Github].


    xyz00-loomio@h20:~$ source ~/.profile
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
source ~/.profile
    xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
export NVM_DIR="$HOME/.nvm"
    xyz00-loomio@h20:~$ git clone https://github.com/loomio/loomio.git
source $NVM_DIR/nvm.sh
    xyz00-loomio@h20:~$ cd loomio
git clone https://github.com/loomio/loomio.git
    xyz00-loomio@h20:~/loomio$ git checkout --track remotes/origin/stable
cd loomio
    xyz00-loomio@h20:~/loomio$ gem update --system
xyz00-loomio@h20:~/loomio$ git checkout --track remotes/origin/stable
    xyz00-loomio@h20:~/loomio$ bundle install
xyz00-loomio@h20:~/loomio$ gem update --system
    xyz00-loomio@h20:~/loomio$ cd vue && npm install && npm run build && cd ..
xyz00-loomio@h20:~/loomio$ bundle install
xyz00-loomio@h20:~/loomio$ cd vue && npm install && npm run build && cd ..
</syntaxhighlight>


=== Konfiguration von Loomio ===
=== Konfiguration von Loomio ===
Zeile 81: Zeile 87:
Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei ''config/database.yml''
Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei ''config/database.yml''


    xyz00-loomio@h20:~$ cd ~/loomio
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~/loomio$ cp config/database.example.yml config/database.yml
cd ~/loomio
xyz00-loomio@h20:~/loomio$ cp config/database.example.yml config/database.yml
</syntaxhighlight>


In der neuen Datei ''database.yml'' wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:
In der neuen Datei ''database.yml'' wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:


    production:
<syntaxhighlight lang=yaml line>
      adapter: postgresql
production:
      encoding: unicode
  adapter: postgresql
      host: localhost
  encoding: unicode
      database: xyz00_loomio (wie oben angegeben)
  host: localhost
      pool: 10
  database: xyz00_loomio (wie oben angegeben)
      username: xyz00_dbuser (wie oben angegeben)
  pool: 10
      password: meinPasswort (wie oben angegeben)
  username: xyz00_dbuser (wie oben angegeben)
  password: meinPasswort (wie oben angegeben)
</syntaxhighlight>


Bearbeite die Datei ''config/environments/production.rb'' und ergänze am Ende, vor dem ''end'':
Bearbeite die Datei ''config/environments/production.rb'' und ergänze am Ende, vor dem ''end'':
 
<syntaxhighlight lang=ruby line>
    config.force_ssl = false
config.force_ssl = false
    config.action_mailer.default_url_options = { :host => 'loomio.example.org' }
config.action_mailer.default_url_options = { :host => 'loomio.example.org' }
    config.action_mailer.raise_delivery_errors = true
config.action_mailer.raise_delivery_errors = true
    config.action_mailer.perform_deliveries = true
config.action_mailer.perform_deliveries = true
    config.action_mailer.delivery_method = :smtp
config.action_mailer.delivery_method = :smtp
    config.action_mailer.logger = ActiveSupport::Logger.new("/home/pacs/xyz00/users/loomio/supervisor/log/mailer.log")
config.action_mailer.logger = ActiveSupport::Logger.new("/home/pacs/xyz00/users/loomio/supervisor/log/mailer.log")
    config.action_mailer.logger.level = ActiveSupport::Logger::Severity::INFO
config.action_mailer.logger.level = ActiveSupport::Logger::Severity::INFO
    config.action_mailer.smtp_settings = {
config.action_mailer.smtp_settings = {
        :domain => 'example.org',
    :domain => 'example.org',
        :authentication => nil,
    :authentication => nil,
        :address => 'localhost',
    :address => 'localhost',
        :port => 25,
    :port => 25,
        :openssl_verify_mode => :none,
    :openssl_verify_mode => :none,
        :enable_starttls_auto => false
    :enable_starttls_auto => false
    }
}
</syntaxhighlight>


=== Einen geheimen Schlüssel erzeugen ===
=== Einen geheimen Schlüssel erzeugen ===


    xyz00-loomio@h20:~$ cd ~/loomio
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~/loomio$ EDITOR=vim ./script/rails credentials:edit
cd ~/loomio
xyz00-loomio@h20:~/loomio$ EDITOR=vim ./script/rails credentials:edit
</syntaxhighlight>


Den Editor vim mit Speichern verlassen: <code>Esc</code> Taste drücken, dann eingeben: <code>:wq</code> und Enter drücken
Den Editor vim mit Speichern verlassen: <code>Esc</code> Taste drücken, dann eingeben: <code>:wq</code> und Enter drücken


    xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~/loomio$ echo "export SECRET_KEY_BASE=$(rake secret)" >> ~/.profile
xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
xyz00-loomio@h20:~/loomio$ echo "export SECRET_KEY_BASE=$(rake secret)" >> ~/.profile
</syntaxhighlight>


=== Initialisieren der Datenbank ===
=== Initialisieren der Datenbank ===


    xyz00-loomio@h20:~$ cd ~/loomio
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
cd ~/loomio
    xyz00-loomio@h20:~/loomio$ source ~/.profile
xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
    xyz00-loomio@h20:~/loomio$ rake db:schema:load
xyz00-loomio@h20:~/loomio$ source ~/.profile
    xyz00-loomio@h20:~/loomio$ rake db:migrate
xyz00-loomio@h20:~/loomio$ rake db:schema:load
xyz00-loomio@h20:~/loomio$ rake db:migrate
</syntaxhighlight>


=== Redis Service konfigurieren ===
=== Redis Service konfigurieren ===


    xyz00-loomio@h20:~$ cd
<syntaxhighlight lang=shell>
    xyz00-loomio@h20:~$ mkdir -p redis/etc redis/lib redis/log redis/run
cd
 
mkdir -p redis/etc redis/lib redis/log redis/run
</syntaxhighlight>
Anlegen einer Datei ''/home/pacs/xyz00/users/loomio/redis/etc/redis.conf'' mit folgendem Inhalt:
Anlegen einer Datei ''/home/pacs/xyz00/users/loomio/redis/etc/redis.conf'' mit folgendem Inhalt:


    daemonize no
<syntaxhighlight lang=ini line>
    pidfile /home/pacs/xyz00/users/loomio/redis/run/redis-server.pid
daemonize no
    port 6379
pidfile /home/pacs/xyz00/users/loomio/redis/run/redis-server.pid
    tcp-backlog 128
port 6379
    bind 127.0.0.1
tcp-backlog 128
    timeout 300
bind 127.0.0.1
    loglevel notice
timeout 300
    logfile /home/pacs/xyz00/users/loomio/redis/log/redis.log
loglevel notice
    databases 16
logfile /home/pacs/xyz00/users/loomio/redis/log/redis.log
    save 900 1
databases 16
    save 300 10
save 900 1
    save 60 10000
save 300 10
    slave-serve-stale-data yes
save 60 10000
    appendonly no
slave-serve-stale-data yes
    dbfilename dump.rdb
appendonly no
    dir /home/pacs/xyz00/users/loomio/redis/lib
dbfilename dump.rdb
 
dir /home/pacs/xyz00/users/loomio/redis/lib
</syntaxhighlight>
=== Supervisor konfigurieren ===
=== Supervisor konfigurieren ===


Zum Start aller notwendigen Dienste wird in dieser Anleitung supervisor benutzt.  
Zum Start aller notwendigen Dienste wird in dieser Anleitung supervisor benutzt.  


    xyz00-loomio@h20:~$ mkdir -p ~/supervisor/log ~/supervisor/run ~/supervisor/etc
<syntaxhighlight lang=shell>
mkdir -p ~/supervisor/log ~/supervisor/run ~/supervisor/etc
</syntaxhighlight>


Hier ein Beispiel für die Datei ~/supervisor/etc/supervisord.conf
Hier ein Beispiel für die Datei ~/supervisor/etc/supervisord.conf


<pre>
<syntaxhighlight lang=ini line>
[supervisord]
[supervisord]
logfile=/home/pacs/xyz00/users/loomio/supervisor/log/supervisord.log
logfile=/home/pacs/xyz00/users/loomio/supervisor/log/supervisord.log
Zeile 201: Zeile 222:
stderr_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stderr.log
stderr_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stderr.log
stdout_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stdout.log
stdout_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stdout.log
</pre>
</syntaxhighlight>


Die folgenden Skripte können zum Starten und zum Neustarten der Dienste verwendet werden:
Die folgenden Skripte können zum Starten und zum Neustarten der Dienste verwendet werden:
Zeile 207: Zeile 228:
''~/start.sh''
''~/start.sh''


<pre>
<syntaxhighlight lang=shell line>
#!/bin/bash
#!/bin/bash


Zeile 213: Zeile 234:
source ~/.profile
source ~/.profile
cd ~/loomio
cd ~/loomio
/usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf
</pre>
</syntaxhighlight>


''~/restart.sh''
''~/restart.sh''


<pre>
<syntaxhighlight lang=shell line>
#!/bin/bash
#!/bin/bash


killall supervisord
if [ -f $HOME/supervisor/run/supervisord.pid ]
then
    /bin/kill $( cat $HOME/supervisor/run/supervisord.pid )
fi
sleep 3
sleep 3
~/start.sh
~/start.sh
</pre>
</syntaxhighlight>


=== Cronjobs ===
=== Systemd Serice und Timer ===


''Cron'' wird genutzt, um nach dem Server reboot ''supervisord'' zu starten, und um regelmäßige Aufgaben von Loomio auszuführen.
''Systemd'' wird genutzt, um nach dem Server reboot ''supervisord'' zu starten, und um regelmäßige Aufgaben von Loomio auszuführen.


Einrichten der crontab mit ''crontab -e''
''~/.config/systemd/user/supervisord.service
<syntaxhighlight lang=ini line>
[Unit]
Description=supervisord


    HOME=/home/pacs/xyz00/users/loomio
[Service]
    MAILTO=admin@example.org
Type=exec
    RAILS_ENV=production
ExecStart=/usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf
    NOTIFICATIONS_EMAIL_ADDRESS="no-reply@example.org"
</syntaxhighlight>
    NUM_DAYS=31
 
   
Service aktivieren und starten:
    @reboot        /usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf
<syntaxhighlight lang=shell line>
    55 * * * *      cd /home/pacs/xyz00/users/loomio/loomio && /home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec rake loomio:hourly_tasks
$ systemctl --user enable supervisord.service
$ systemctl --user start supervisord.service
</syntaxhighlight>
 
''~/.config/systemd/user/loomio.service''
<syntaxhighlight lang=ini line>
[Unit]
Description=loomio recuring activities
 
[Service]
Type=oneshot
ExecStart=cd /home/pacs/xyz00/users/loomio/loomio && /home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec rake loomio:hourly_tasks
</syntaxhighlight>
 
~/.config/systemd/user/loomio.timer
<syntaxhighlight lang=ini line>
[Unit]
Description=loomio recuring activities
 
[Timer]
OnCalendar=*:55
Persistent=True
 
[Install]
WantedBy=timers.target
</syntaxhighlight>
 
Timer aktivieren und starten:
<syntaxhighlight lang=shell line>
$ systemctl --user enable loomio.timer
$ systemctl --user start loomio.timer
</syntaxhighlight>


=== Log Dateien ===
=== Log Dateien ===
Zeile 257: Zeile 315:
Die originale .htaccess Datei zuerst löschen:
Die originale .htaccess Datei zuerst löschen:


    xyz00-loomio@h20:~$ rm ~/doms/loomio.example.org/htdocs-ssl/.htaccess
<syntaxhighlight lang=shell>
 
rm ~/doms/loomio.example.org/htdocs-ssl/.htaccess
</syntaxhighlight>
Neue Datei ''~/doms/loomio.example.org/htdocs-ssl/.htaccess''
Neue Datei ''~/doms/loomio.example.org/htdocs-ssl/.htaccess''


    DirectoryIndex disabled
<syntaxhighlight lang=apache line>
    RewriteEngine on
DirectoryIndex disabled
    RewriteBase /
RewriteEngine on
    RewriteRule ^(.*) http://localhost:3000/$1 [proxy,last]
RewriteBase /
 
RewriteRule ^(.*) http://localhost:3000/$1 [proxy,last]
</syntaxhighlight>
----
----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]

Aktuelle Version vom 3. Dezember 2024, 13:01 Uhr

Für Managed Server

Ein funktionierender Loomio-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.


Über

Loomio (https://www.loomio.com/) ist laut Wikipedia eine freie Software, geeignet um Gruppen im kollaborativen Entscheidungsfindungsprozess zu unterstützen.

Ein kurzes 2 Minuten Video auf Englisch beschreibt es ganz gut: What is Loomio? https://www.youtube.com/embed/Zlzuqsunpxc

Es ist in Ruby on Rails geschrieben.

Die von den Entwicklern empfohlene Installation von Loomio funktioniert mit Docker. Die Konzepte von Docker passen aber nicht zu Hostsharing. Daher wird hier mit supervisor gearbeitet.

Weitere Links und Hinweise zur Entstehung dieser Anleitung siehe auf der Diskussionsseite.

Vorbereitungen

Service-User, Domain und Datenbank

Mit Hilfe von HSAdmin werden angelegt:

  1. Ein User als Service-User mit /bin/bash als Shell, zum Beispiel Beispiel: xyz00-loomio"
  2. Eine Domain mit xyz00-loomio als Domain-Administrator, zum Beispiel "loomio.example.org"
  3. Einen Postgresql-User xyz00_loomio mit Passwort meinPasswort
  4. Eine Postgresql-Datenbank xyz00_loomio mit Datenbank-Owner xyz00_loomio

PostgreSQL Extensions

Die PostgreSQL-Datenbank braucht die folgenden Extensions: citext, hstore, pg_stat_statements, pgcrypto und plpgsql. Diese müssen vom Hostsharing-Support installiert werden. Dazu einfach eine E-Mail an die service@ Adresse schreiben.


Installation von Ruby

Loomio benötigt eine geeignete Version der Programmiersprache Ruby:

Die Version ist in https://github.com/loomio/loomio/blob/master/.ruby-version zu finden.

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
touch ~/.profile
chmod u+x ~/.profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
echo 'eval "$(rbenv init -)"' >> ~/.profile
source ~/.profile
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 2.7.3
rbenv rehash
rbenv global 2.7.3

Als Test bitte aufrufen: ruby -v

Die Anzeige sollte etwa das Folgende enthalten: ruby 2.7.3pXYZ (....) [x86_64-linux]

Installation von Node

Loomio benötigt eine geeignete Version von Node:

Die Version ist in https://github.com/loomio/loomio/blob/master/Dockerfile#L28 zu finden.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
source $NVM_DIR/nvm.sh
nvm install 14.0.0
nvm alias default 14.0.0

Installation

Installation der Anwendung

Wir benutzen nicht die neueste Version von Loomio, sondern die aktuelle Version aus dem stable Branch, genau wie die Docker Container. Momentan ist das Version Loomio 2.7.5, siehe auf Github.

source ~/.profile
export NVM_DIR="$HOME/.nvm"
source $NVM_DIR/nvm.sh
git clone https://github.com/loomio/loomio.git
cd loomio
xyz00-loomio@h20:~/loomio$ git checkout --track remotes/origin/stable
xyz00-loomio@h20:~/loomio$ gem update --system
xyz00-loomio@h20:~/loomio$ bundle install
xyz00-loomio@h20:~/loomio$ cd vue && npm install && npm run build && cd ..

Konfiguration von Loomio

Erstelle eine Konfiguration für den Datenbank-Zugriff in der Datei config/database.yml

cd ~/loomio
xyz00-loomio@h20:~/loomio$ cp config/database.example.yml config/database.yml

In der neuen Datei database.yml wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:

production:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: xyz00_loomio (wie oben angegeben)
  pool: 10
  username: xyz00_dbuser (wie oben angegeben)
  password: meinPasswort (wie oben angegeben)

Bearbeite die Datei config/environments/production.rb und ergänze am Ende, vor dem end:

config.force_ssl = false
config.action_mailer.default_url_options = { :host => 'loomio.example.org' }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.logger = ActiveSupport::Logger.new("/home/pacs/xyz00/users/loomio/supervisor/log/mailer.log")
config.action_mailer.logger.level = ActiveSupport::Logger::Severity::INFO
config.action_mailer.smtp_settings = {
    :domain => 'example.org',
    :authentication => nil,
    :address => 'localhost',
    :port => 25,
    :openssl_verify_mode => :none,
    :enable_starttls_auto => false
}

Einen geheimen Schlüssel erzeugen

cd ~/loomio
xyz00-loomio@h20:~/loomio$ EDITOR=vim ./script/rails credentials:edit

Den Editor vim mit Speichern verlassen: Esc Taste drücken, dann eingeben: :wq und Enter drücken

xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
xyz00-loomio@h20:~/loomio$ echo "export SECRET_KEY_BASE=$(rake secret)" >> ~/.profile

Initialisieren der Datenbank

cd ~/loomio
xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
xyz00-loomio@h20:~/loomio$ source ~/.profile
xyz00-loomio@h20:~/loomio$ rake db:schema:load
xyz00-loomio@h20:~/loomio$ rake db:migrate

Redis Service konfigurieren

cd
mkdir -p redis/etc redis/lib redis/log redis/run

Anlegen einer Datei /home/pacs/xyz00/users/loomio/redis/etc/redis.conf mit folgendem Inhalt:

daemonize no
pidfile /home/pacs/xyz00/users/loomio/redis/run/redis-server.pid
port 6379
tcp-backlog 128
bind 127.0.0.1
timeout 300
loglevel notice
logfile /home/pacs/xyz00/users/loomio/redis/log/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
slave-serve-stale-data yes
appendonly no
dbfilename dump.rdb
dir /home/pacs/xyz00/users/loomio/redis/lib

Supervisor konfigurieren

Zum Start aller notwendigen Dienste wird in dieser Anleitung supervisor benutzt.

mkdir -p ~/supervisor/log ~/supervisor/run ~/supervisor/etc

Hier ein Beispiel für die Datei ~/supervisor/etc/supervisord.conf

[supervisord]
logfile=/home/pacs/xyz00/users/loomio/supervisor/log/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
pidfile=/home/pacs/xyz00/users/loomio/supervisor/run/supervisord.pid
minfds=1024
minprocs=200
childlogdir=/home/pacs/xyz00/users/loomio/supervisor/log/

[unix_http_server]
file=/home/pacs/xyz00/users/loomio/supervisor/run/supervisord.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///home/pacs/xyz00/users/loomio/supervisor/run/supervisord.sock

[program:redis]
command=/usr/bin/redis-server /home/pacs/xyz00/users/loomio/redis/etc/redis.conf
stderr_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/redis-stderr.log
stdout_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/redis-stdout.log

[program:loomio-web]
directory=/home/pacs/xyz00/users/loomio/loomio
environment=RAILS_ENV="production",NOTIFICATIONS_EMAIL_ADDRESS="no-reply@example.org"
command=/home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec puma -C config/puma.rb -b tcp://127.0.0.1:3000
stderr_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-web-stderr.log
stdout_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-web-stdout.log

[program:loomio-sidekiq]
directory=/home/pacs/xyz00/users/loomio/loomio
environment=RAILS_ENV="production",NOTIFICATIONS_EMAIL_ADDRESS="no-reply@example.org"
command=/home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec sidekiq
stderr_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stderr.log
stdout_logfile = /home/pacs/xyz00/users/loomio/supervisor/log/loomio-sidekiq-stdout.log

Die folgenden Skripte können zum Starten und zum Neustarten der Dienste verwendet werden:

~/start.sh

#!/bin/bash

export RAILS_ENV="production"
source ~/.profile
cd ~/loomio
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf

~/restart.sh

#!/bin/bash

if [ -f $HOME/supervisor/run/supervisord.pid ]
then
    /bin/kill $( cat $HOME/supervisor/run/supervisord.pid )
fi
sleep 3
~/start.sh

Systemd Serice und Timer

Systemd wird genutzt, um nach dem Server reboot supervisord zu starten, und um regelmäßige Aufgaben von Loomio auszuführen.

~/.config/systemd/user/supervisord.service

[Unit]
Description=supervisord

[Service]
Type=exec
ExecStart=/usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf

Service aktivieren und starten:

$ systemctl --user enable supervisord.service
$ systemctl --user start supervisord.service

~/.config/systemd/user/loomio.service

[Unit]
Description=loomio recuring activities

[Service]
Type=oneshot
ExecStart=cd /home/pacs/xyz00/users/loomio/loomio && /home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec rake loomio:hourly_tasks

~/.config/systemd/user/loomio.timer

[Unit]
Description=loomio recuring activities

[Timer]
OnCalendar=*:55
Persistent=True

[Install]
WantedBy=timers.target

Timer aktivieren und starten:

$ systemctl --user enable loomio.timer
$ systemctl --user start loomio.timer

Log Dateien

Zum Debuggen können folgende Log Dateien hilfreich sein:

  • ~/supervisor/log/loomio-web-stdout.log
  • ~/supervisor/log/loomio-web-stderr.log
  • ~/supervisor/log/loomio-sidekiq-stdout.log
  • ~/supervisor/log/loomio-sidekiq-stderr.log
  • ~/supervisor/log/mailer.log
  • ~/supervisor/log/redis-stdout.log
  • ~/supervisor/log/redis-stderr.log

Einrichten des Apache

Die originale .htaccess Datei zuerst löschen:

rm ~/doms/loomio.example.org/htdocs-ssl/.htaccess

Neue Datei ~/doms/loomio.example.org/htdocs-ssl/.htaccess

DirectoryIndex disabled
RewriteEngine on
RewriteBase /
RewriteRule ^(.*) http://localhost:3000/$1 [proxy,last]