Discourse installieren: Unterschied zwischen den Versionen
(→Installation von Discourse selber: git-Pfade angepasst) |
|||
Zeile 88: | Zeile 88: | ||
== Konfiguration der Discourse Software == | == Konfiguration der Discourse Software == | ||
Anlegen einer Datei ''/home/pacs/xyz00/users/discourse/discourse/ | Anlegen einer Datei ''/home/pacs/xyz00/users/discourse/discourse/config/discourse.conf'' anhand der Beispiel-Datei: | ||
cd ~/discourse | |||
cp config/discourse_defaults.conf config/discourse.conf | |||
Anpassen folgender Inhalte: | |||
db_host = 127.0.0.1 | |||
db_port = 5432 | |||
#db_backup_port = 5432 #(auskommentieren) | |||
db_name = xyz00_discoursedb | |||
db_username = xyz00_discourseuser | |||
db_password = "" #db password | |||
hostname = "discourse.xyz00" # hostname | |||
smtp_address = localhost | |||
smtp_enable_start_tls = false | |||
smtp_openssl_verify_mode = 'none' | |||
developer_emails = # your email-address | |||
redis_host = 127.0.0.1 | |||
redis_port = 16379 | |||
## ToDo ... | |||
Die Zufallswerte für die Variablen SECRET_KEY_BASE und OTP_SECRET erzeugt man durch zwei Aufrufe des Kommandos | Die Zufallswerte für die Variablen SECRET_KEY_BASE und OTP_SECRET erzeugt man durch zwei Aufrufe des Kommandos | ||
RAILS_ENV=production bundle exec rake secret | RAILS_ENV=production bundle exec rake secret | ||
Zeile 122: | Zeile 119: | ||
export SAFETY_ASSURED=1 | export SAFETY_ASSURED=1 | ||
RAILS_ENV=production bundle exec rails db:schema:load | # In Version 2.0.4 funktioniert db:migrate noch, ansonsten schema:load und seed nutzen! | ||
RAILS_ENV=production bundle exec rails db:seed | #RAILS_ENV=production bundle exec rails db:schema:load | ||
#RAILS_ENV=production bundle exec rails db:seed | |||
RAILS_ENV=production bundle exec rails db:migrate | |||
== Starten der Dienste == | == Starten der Dienste == |
Version vom 27. August 2018, 10:39 Uhr
Für Managed Server
Ein funktionierender Discourse-Server erfordert mehrere laufende Server-Dienste. Für den Betrieb ist ein Managed Server sinnvoll.
Work in Progress
Dieser Artikel soll erklären, wie man discourse installiert, ist allerdings **noch nicht fertig**
Support von der Discourse-Community
Die Discourse-Entwickler haben sich entschieden, nur eine mehr oder weniger genormte Installationsmethode (via docker) zu unterstützen. Dies ist so auf der hostsharing-Architektur aufgrund mehrerer Bedenken und Überlegungen nicht möglich. Die Community ist durchaus hilfreich, geht aber davon aus, dass quasi alle Nutzer* eine "supported"e Installation durchgeführt haben. Wenn man in entsprechenden Kanälen nach Hilfe fragt, sollte man unbedingt erwähnen, dass man discourse selber anhand dieser hier lesbaren Anleitung installiert hat, um bereits entsprechenden Kommentaren und Nachfragen vorzugreifen.
Vorbereitungen
Mit Hilfe von HSAdmin wird angelegt:
- Ein User als Service-User mit /bin/bash als Shell, zum Beispiel Beispiel: xyz00-discourse
- Eine Domain mit xyz00-discourse' als Domain-Administrator, zum Beispiel beispiel.discussion
- Einen Postgresql-User xyz00_discourseuser mit Passwort meinPasswort
- Eine Postgresql-Datenbank xyz00_discoursedb mit Datenbank-Owner xyz00_discourseuser
Verwendete IP-Ports der Server-Dienste:
- Monit: localhost:32001
- Redis: localhost:32002
- Discourse-Web: localhost:32003
Konfiguration des Redis Server
cd mkdir redis/etc redis/lib redis/log redis/run
Anlegen einer Datei /home/pacs/xyz00/users/discourse/redis/etc/redis.conf mit folgendem Inhalt:
daemonize no pidfile /home/pacs/xyz00/users/discourse/redis/run/redis-server.pid port 32002 tcp-backlog 128 bind 127.0.0.1 timeout 300 loglevel notice logfile /home/pacs/xyz00/users/discourse/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/discourse/redis/lib
Installation von Ruby
Als User xyz00-discourse: Installation von Ruby mit rbenv mit folgenden Befehlen:
Zunächst rbenv and ruby-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv cd ~/.rbenv && src/configure && make -C src echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile echo 'eval "$(rbenv init -)"' >> ~/.profile
starte neue Shell:
exec bash
Überprüfe rbenv-Installation
type rbenv
Installiere ruby-build als rbenv-Plugin
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Nun kann die benötigte Ruby-Version installiert werden:
rbenv install 2.4
Installation von Discourse selber
Weiterhin Als User xyz00-discourse:
cd ~ git clone https://github.com/discourse/discourse.git discourse cd ~/discourse
Die stabile Version auschecken:
git checkout stable
Ruby Pakete installieren:
gem install bundler bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
Konfiguration der Discourse Software
Anlegen einer Datei /home/pacs/xyz00/users/discourse/discourse/config/discourse.conf anhand der Beispiel-Datei:
cd ~/discourse cp config/discourse_defaults.conf config/discourse.conf
Anpassen folgender Inhalte:
db_host = 127.0.0.1 db_port = 5432 #db_backup_port = 5432 #(auskommentieren) db_name = xyz00_discoursedb db_username = xyz00_discourseuser db_password = "" #db password hostname = "discourse.xyz00" # hostname smtp_address = localhost smtp_enable_start_tls = false smtp_openssl_verify_mode = 'none' developer_emails = # your email-address redis_host = 127.0.0.1 redis_port = 16379
- ToDo ...
Die Zufallswerte für die Variablen SECRET_KEY_BASE und OTP_SECRET erzeugt man durch zwei Aufrufe des Kommandos
RAILS_ENV=production bundle exec rake secret
Initialisieren der Datenbank:
export SAFETY_ASSURED=1 # In Version 2.0.4 funktioniert db:migrate noch, ansonsten schema:load und seed nutzen! #RAILS_ENV=production bundle exec rails db:schema:load #RAILS_ENV=production bundle exec rails db:seed RAILS_ENV=production bundle exec rails db:migrate
Starten der Dienste
Zum Start aller notwendigen Dienste wird in dieser Anleitung monit benutzt. Hier ein Beispiel für eine Datei .monitrc (überlange Zeilen werden hier im Wiki umgebrochen)
set daemon 60 with start delay 120 set logfile /home/pacs/xyz00/users/mastodon/monit/var/monit.log set idfile /home/pacs/xyz00/users/mastodon/monit/var/monit.id set statefile /home/pacs/xyz00/users/mastodon/monit/var/monit.state set mailserver localhost set mail-format { from: monit@beispiel.social } set alert mastodon@beispiel.social set httpd port 32001 address xyz00.hostsharing.net allow mostodon:monitpassword check process redis with pidfile /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid start program "/usr/bin/redis-server /home/pacs/xyz00/users/mastodon/redis/etc/redis.conf" stop program "/bin/bash -c '/bin/kill $( cat /home/pacs/xyz00/users/mastodon/redis/var/redis-server.pid )'" check process mstdn_web with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/puma.pid depends redis start program "/bin/bash -c 'export HOME=/home/pacs/xyz00/users/mastodon && cd $HOME/mastodon/live && ( $HOME/.rbenv/shims/bundle exec puma -C config/puma.rb -e production -b tcp://127.0.0.1:32003 >$HOME/mastodon/var/puma.log 2>&1 & echo $! > $HOME/mastodon/var/puma.pid )'" stop program "/bin/bash -c '/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/puma.pid )'" check process mstdn_sidekiq with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/sidekiq.pid depends redis start program "/bin/bash -c 'export RAILS_ENV=production && export DB_POOL=5 && export HOME=/home/pacs/xyz00/users/mastodon && cd $HOME/mastodon/live && ( $HOME/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push >$HOME/mastodon/var/sidekiq.log 2>&1 & echo $! > $HOME/mastodon/var/sidekiq.pid )'" stop program "/bin/bash -c '/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/sidekiq.pid )'" check process mstdn_streaming with pidfile /home/pacs/xyz00/users/mastodon/mastodon/var/streaming.pid depends redis start program "/bin/bash -c 'export HOME=/home/pacs/xyz00/users/mastodon && export NVM_DIR="$HOME/.nvm" && export NVM_BIN=/home/pacs/xyz00/users/mastodon/.nvm/versions/node/v6.14.3/bin && export NODE_ENV=production && export PORT=32004 && BIND=127.0.0.1 && cd $HOME/mastodon/live && ( $HOME/.nvm/versions/node/v6.14.3/bin/node streaming/index.js >$HOME/mastodon/var/streaming.log 2>&1 & echo $! > $HOME/mastodon/var/streaming.pid )'" stop program "/bin/bash -c '/bin/kill $( cat /home/pacs/xyz00/users/mastodon/mastodon/var/streaming.pid )'"
Einrichten des Apache VHost
cd ~/doms/beispiel.social rm -rf htdocs-ssl subs/www subs-ssl/www ln -s ~/live/public htdocs-ssl touch htdocs-ssl/.htaccess
Dann die htdocs-ssl/.htaccess mit dem Editor der Wahl öffnen und folgende Konfiguration einfügen:
DirectoryIndex disabled RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/api/v1/streaming [NC] RewriteRule .* ws://localhost:32004%{REQUEST_URI} [proxy] RequestHeader set X-Forwarded-Proto "https" RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* http://localhost:32003%{REQUEST_URI} [proxy] RequestHeader set X-Forwarded-Proto "https"
Cronjobs
Cron wird für zwei Aufgaben genutzt:
- Start von monit nach einem Server Reboot
- Aufräumen von alten Resourcen
Einrichten der crontab mit cronttab -e
HOME=/home/pacs/xyz00/users/mastodon MAILTO=mastodon@beispiel.social RAILS_ENV=production NUM_DAYS=31 @reboot /usr/bin/monit -c $HOME/.monitrc 18 4 * * * cd $HOME/mastodon/live && $HOME/.rbenv/shims/bundle exec rake mastodon:media:remove_remote
Volltextsuche
In der installierten Version gibt es noch keine Volltextsuche. Es kann lediglich nach Nutzerkennungen und Hastags gesucht werden. Für die Volltextsuche kann optional Elasticsearch installiert werden.