Loomio installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(fixes for stopping supervisor)
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Textkasten|gelb|Das ist ein Artikel in Arbeit! Timotheus, 6. Mai 2021}}
{{Textkasten|gelb|Für Managed Server|Ein funktionierender Loomio-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.}}


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


what is loomio: 3 Minute video. 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


https://github.com/loomio/loomio/releases
Es ist in Ruby on Rails geschrieben.


TODO https://help.loomio.org/en/dev_manual/setup_dev_environment/
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.


Es ist in Ruby geschrieben, daher Orientierung an https://wiki.hostsharing.net/index.php?title=Installation_Openproject
Weitere Links und Hinweise zur Entstehung dieser Anleitung siehe auf der [[Diskussion:Loomio_installieren|Diskussionsseite]].


== Vorbereitungen ==
== Vorbereitungen ==
=== Service-User, Domain und Datenbank ===
Mit Hilfe von HSAdmin werden angelegt:
# Ein User als Service-User mit ''/bin/bash'' als Shell, zum Beispiel Beispiel: ''xyz00-loomio"
# Eine Domain mit ''xyz00-loomio'' als Domain-Administrator, zum Beispiel "loomio.example.org"
# Einen Postgresql-User ''xyz00_loomio'' mit Passwort ''meinPasswort''
# Eine Postgresql-Datenbank ''xyz00_loomio'' mit Datenbank-Owner ''xyz00_loomio''
{{Textkasten|gelb|PostgreSQL Extensions|Die PostgreSQL-Datenbank braucht die [https://github.com/loomio/loomio/blob/master/db/schema.rb#L15 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 ===
=== Installation von Ruby ===


Weiterhin benötigt Loomio eine geeignete Version der Programmiersprache 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.
Die Version ist in https://github.com/loomio/loomio/blob/master/.ruby-version zu finden.


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


Als Test bitte aufrufen: ''ruby -v''
Als Test bitte aufrufen: ''ruby -v''
Zeile 39: Zeile 50:
=== Installation von Node ===
=== Installation von Node ===


     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
Loomio benötigt eine geeignete Version von Node:
     export NVM_DIR="$HOME/.nvm"
 
     source $NVM_DIR/nvm.sh
Die Version ist in https://github.com/loomio/loomio/blob/master/Dockerfile#L28 zu finden.
     nvm install stable
 
     nvm alias default stable
     xyz00-loomio@h20:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
     xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
     xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
     xyz00-loomio@h20:~$ nvm install 14.0.0
     xyz00-loomio@h20:~$ nvm alias default 14.0.0


== Installation ==
== Installation ==
=== Installation der Anwendung ===  
=== Installation der Anwendung ===  


    git clone https://github.com/loomio/loomio.git
Wir benutzen nicht die [https://github.com/loomio/loomio/releases neueste Version von Loomio],
    cd loomio
sondern die aktuelle Version aus dem stable Branch, genau wie die Docker Container.  
    # check for latest release at https://github.com/loomio/loomio/releases
Momentan ist das Version Loomio 2.7.5, siehe auf [https://github.com/loomio/loomio/blob/stable/lib/version.rb Github].
    git checkout -b v2.7.8 v2.7.8
 
     source ~/.profile
     xyz00-loomio@h20:~$ source ~/.profile
     export NVM_DIR="$HOME/.nvm"
     xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
     source $NVM_DIR/nvm.sh
     xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
     #gem update --system
     xyz00-loomio@h20:~$ git clone https://github.com/loomio/loomio.git
     bundle install
    xyz00-loomio@h20:~$ cd loomio
     cd vue; npm install && cd ..
    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 ===
=== Konfiguration von Loomio ===
Zeile 63: Zeile 81:
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-project@h20:~$ cd ~/loomio
     xyz00-loomio@h20:~$ cd ~/loomio
     xyz00-project@h20:~/loomio$ cp config/database.yml.example config/database.yml
     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:
In der neuen Datei ''database.yml'' wird die mit HSAdmin angelegte PostgreSQL-Datenbank eingetragen:
Zeile 76: Zeile 94:
       username: xyz00_dbuser (wie oben angegeben)
       username: xyz00_dbuser (wie oben angegeben)
       password: meinPasswort (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 ===
=== Einen geheimen Schlüssel erzeugen ===


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


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
Zeile 87: Zeile 123:
     xyz00-loomio@h20:~/loomio$ echo "export SECRET_KEY_BASE=$(rake secret)" >> ~/.profile
     xyz00-loomio@h20:~/loomio$ echo "export SECRET_KEY_BASE=$(rake secret)" >> ~/.profile


=== Initialisiere Datenbank und erzeuge Web-Ressourcen ===
=== Initialisieren der Datenbank ===


     xyz00-loomio@h20:~$ cd ~/loomio
     xyz00-loomio@h20:~$ cd ~/loomio
     xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
     xyz00-loomio@h20:~/loomio$ export RAILS_ENV="production"
     xyz00-loomio@h20:~/loomio$ source ~/.profile
     xyz00-loomio@h20:~/loomio$ source ~/.profile
    xyz00-loomio@h20:~/loomio$ rake db:schema:load
    xyz00-loomio@h20:~/loomio$ rake db:migrate
=== Redis Service konfigurieren ===
    xyz00-loomio@h20:~$ cd
    xyz00-loomio@h20:~$ 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


PROBLEM: das geht nicht:
=== Supervisor konfigurieren ===


     xyz00-loomio@h20:~/loomio$ rake db:schema:load
Zum Start aller notwendigen Dienste wird in dieser Anleitung supervisor benutzt.
    ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: permission denied to create extension "citext"
 
     xyz00-loomio@h20:~$ mkdir -p ~/supervisor/log ~/supervisor/run ~/supervisor/etc
 
Hier ein Beispiel für die Datei ~/supervisor/etc/supervisord.conf
 
<pre>
[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
</pre>
 
Die folgenden Skripte können zum Starten und zum Neustarten der Dienste verwendet werden:
 
''~/start.sh''
 
<pre>
#!/bin/bash
 
export RAILS_ENV="production"
source ~/.profile
cd ~/loomio
/usr/bin/supervisord -c $HOME/supervisor/etc/supervisord.conf
</pre>
 
''~/restart.sh''
 
<pre>
#!/bin/bash
 
if [ -f $HOME/supervisor/run/supervisord.pid ]
then
    /bin/kill $( cat $HOME/supervisor/run/supervisord.pid )
fi
sleep 3
~/start.sh
</pre>
 
=== Cronjobs ===
 
''Cron'' 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''
 
    HOME=/home/pacs/xyz00/users/loomio
    MAILTO=admin@example.org
    RAILS_ENV=production
    NOTIFICATIONS_EMAIL_ADDRESS="no-reply@example.org"
    NUM_DAYS=31
   
    @reboot        /usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf
    55 * * * *      cd /home/pacs/xyz00/users/loomio/loomio && /home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec rake loomio:hourly_tasks
 
=== 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:
 
    xyz00-loomio@h20:~$ rm ~/doms/loomio.example.org/htdocs-ssl/.htaccess


siehe https://elixirforum.com/t/postgrex-error-error-42501-insufficient-privilege-to-create-extension-citext/9135
Neue Datei ''~/doms/loomio.example.org/htdocs-ssl/.htaccess''


laut db/schema.rb werden diese Erweiterungen benötigt:
     DirectoryIndex disabled
     enable_extension "citext"
     RewriteEngine on
     enable_extension "hstore"
     RewriteBase /
     enable_extension "pg_stat_statements"
     RewriteRule ^(.*) http://localhost:3000/$1 [proxy,last]
     enable_extension "pgcrypto"
    enable_extension "plpgsql"


    xyz00-loomio@h20:~/loomio$ rake db:migrate
----
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Software]]
[[Kategorie:RubyOnRails]]

Version vom 6. August 2021, 20:55 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.org/) 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.

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

   xyz00-loomio@h20:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
   xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
   xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
   xyz00-loomio@h20:~$ nvm install 14.0.0
   xyz00-loomio@h20:~$ 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.

   xyz00-loomio@h20:~$ source ~/.profile
   xyz00-loomio@h20:~$ export NVM_DIR="$HOME/.nvm"
   xyz00-loomio@h20:~$ source $NVM_DIR/nvm.sh
   xyz00-loomio@h20:~$ git clone https://github.com/loomio/loomio.git
   xyz00-loomio@h20:~$ 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

   xyz00-loomio@h20:~$ 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

   xyz00-loomio@h20:~$ 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

   xyz00-loomio@h20:~$ 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

   xyz00-loomio@h20:~$ cd
   xyz00-loomio@h20:~$ 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.

   xyz00-loomio@h20:~$ 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

Cronjobs

Cron 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

   HOME=/home/pacs/xyz00/users/loomio
   MAILTO=admin@example.org
   RAILS_ENV=production
   NOTIFICATIONS_EMAIL_ADDRESS="no-reply@example.org"
   NUM_DAYS=31
   
   @reboot         /usr/bin/supervisord -c /home/pacs/xyz00/users/loomio/supervisor/etc/supervisord.conf
   55 * * * *      cd /home/pacs/xyz00/users/loomio/loomio && /home/pacs/xyz00/users/loomio/.rbenv/shims/bundle exec rake loomio:hourly_tasks

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:

   xyz00-loomio@h20:~$ 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]