Forumssoftware - Verständnis
Robert Sauer-Ernst
- programmiertechnik
- softwareentwicklung
- zu diesem forum
Hallo zusammen,
mit diesem Thread würde ich gerne zusätzliche Infos zum Verständnis der Forumssoftware sammeln.
Auf einem frischen Debianserver haben wir zu Dritt am letzten Dienstag das Forum "aufgesetzt".
Da irgendwo noch "localhost" und "Port 4000" festgenagelt ist, funktionieren die Links zum Teil nicht. Die anderen sind offenbar hart kodiert.
Frage beim jetzigen Stand wäre, ob und wenn ja wie die Datenbank zu konfigurieren ist.
Die Installationsschritte und Anmerkungen wollte ich eigentlich in ein Google-Doc packen, jetzt füge ich sie hier einfach ein, das macht wohl mehr Sinn.
von hinten:
nicht in der doku war:
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null ???
apt install gnupg2 wget curl openssh-server git build-essential inotify-tools postgresql
nano /etc/postgresql/11/main/pg_hba.conf -> ipv4 and ipv6 to trust
pg_ctlcluster 11 main start
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb &&
sudo dpkg -i erlang-solutions_2.0_all.deb
apt update
apt install esl-erlang elixir
nano .profile -> export PATH="$PATH:/usr/lib/elixir/bin"
curl -fsSL https://deb.nodesource.com/setup_12.x | bash -
apt update
apt install nodejs
npm install --global yarn
npm install --global webpack
npm install --global yargs
npm install --global supports-color
git clone https://github.com/ckruse/cforum_ex
cd cforum_ex
yarn install
mix deps.get
mix ecto.gen.repo -r Cforum.Repo
nano config/config.exs -> empty password, user postgres?
mix ecto.reset
mix phx.server
will immer webpack-cli installieren, selbst yarn add -D webpack-cli geht nicht?
random fehler bei ecto.reset:
[error] GenServer {Oban.Registry, {Oban, {:plugin, Oban.Plugins.Stager}}} terminating
** (Postgrex.Error) ERROR 42P01 (undefined_table) relation "public.oban_jobs" does not exist
query: UPDATE "public"."oban_jobs" AS o0 SET "state" = $1 FROM (SELECT so0."id" AS "id", so0."state" AS "state", so0."queue" AS "queue", so0."worker" AS "worker", so0."args" AS "args", so0."meta" AS "meta", so0."tags" AS "tags", so0."errors" AS "errors", so0."attempt" AS "attempt", so0."attempted_by" AS "attempted_by", so0."max_attempts" AS "max_attempts", so0."priority" AS "priority", so0."attempted_at" AS "attempted_at", so0."cancelled_at" AS "cancelled_at", so0."completed_at" AS "completed_at", so0."discarded_at" AS "discarded_at", so0."inserted_at" AS "inserted_at", so0."scheduled_at" AS "scheduled_at" FROM "public"."oban_jobs" AS so0 WHERE (so0."state" IN ('scheduled','retryable')) AND (NOT (so0."queue" IS NULL)) AND (so0."scheduled_at" <= $2) LIMIT $3) AS s1 WHERE (o0."id" = s1."id")
(ecto_sql 3.5.4) lib/ecto/adapters/sql.ex:751: Ecto.Adapters.SQL.raise_sql_call_error/1
(ecto_sql 3.5.4) lib/ecto/adapters/sql.ex:684: Ecto.Adapters.SQL.execute/5
(oban 2.7.2) lib/oban/plugins/stager.ex:100: anonymous fn/1 in Oban.Plugins.Stager.lock_and_stage/1
(ecto_sql 3.5.4) lib/ecto/adapters/sql.ex:1027: anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4
(db_connection 2.4.0) lib/db_connection.ex:1512: DBConnection.run_transaction/4
(oban 2.7.2) lib/oban/plugins/stager.ex:83: anonymous fn/2 in Oban.Plugins.Stager.handle_info/2
(telemetry 0.4.3) /root/cforum_ex/deps/telemetry/src/telemetry.erl:272: :telemetry.span/3
(oban 2.7.2) lib/oban/plugins/stager.ex:82: Oban.Plugins.Stager.handle_info/2
(stdlib 3.15.1) gen_server.erl:695: :gen_server.try_dispatch/4
(stdlib 3.15.1) gen_server.erl:771: :gen_server.handle_msg/6
(stdlib 3.15.1) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: :stage
State: %Oban.Plugins.Stager.State{conf: %Oban.Config{circuit_backoff: 30000, dispatch_cooldown: 5, engine: Oban.Queue.BasicEngine, get_dynamic_repo: nil, log: false, name: Oban, node: "v2202106107005157257", notifier: Oban.PostgresNotifier, plugins: [{Oban.Plugins.Cron, [timezone: "Europe/Berlin", crontab: [{"10 * * * *", Cforum.Jobs.ArchiverJob}, {"0 0 * * *", Cforum.Jobs.ForumStatsJob}, {"0 0 * * *", Cforum.Jobs.CiteArchiverJob}, {"0 1 * * *", Cforum.Jobs.UserCleanupJob}, {"0 2 * * *", Cforum.Jobs.AuditingCleanupJob}, {"0 5 * * *", Cforum.Jobs.YearlingBadgeDistributorJob}, {"0 3 * * *", Cforum.Jobs.DatabaseMaintenanceJob}, {"17 4 * * *", Cforum.Jobs.SendInactivityNotificationMailJob}]]}, {Oban.Plugins.Pruner, [max_age: 36000]}, Oban.Plugins.Stager], prefix: "public", queues: [mails: [limit: 10], background: [limit: 10], media: [limit: 20]], repo: Cforum.Repo, shutdown_grace_period: 15000}, interval: 1000, limit: 5000, lock_key: 1149979440242868003, name: {:via, Registry, {Oban.Registry, {Oban, {:plugin, Oban.Plugins.Stager}}}}, timer: #Reference<0.3476186356.849346561.32058>}
Dank und Gruß,
Bob aus Berlin (BaB)
PS. diese Sammlung aus Installationsbefehlen und Fehlermeldungen, gibt es irgendwie "Shell" als "Quelltextoption"? Habe jetzt einfach "HTML" genommen 😉
PPS. Mit mir zusammen wären jetzt drei Personen da, die sich dem Developerteam anschließen würden.
PPPS. Eine Wikiseite habe ich schon erstellt. Da steht aber noch nix drin ;-)
Hallo Robert,
PS. diese Sammlung aus Installationsbefehlen und Fehlermeldungen, gibt es irgendwie "Shell" als "Quelltextoption"? Habe jetzt einfach "HTML" genommen 😉
du könntest einfach einen Block als Code auszeichnen und gar keine Sprache angeben (das habe ich in deinem Posting mal mit dem Ausgabeblock gemacht). Gleichzeitig habe ich den Eingabe-Block mal von HTML in sh umgefriemelt. Das wird zwar anscheinend auch nicht erkannt - aber ich finde, besser eine korrekte, aber nicht besonders behandelte Auszeichnung, als ein unpassende.
PPS. Mit mir zusammen wären jetzt drei Personen da, die sich dem Developerteam anschließen würden.
PPPS. Eine Wikiseite habe ich schon erstellt. Da steht aber noch nix drin ;-)
Respekt vor deinem Engagement!
Live long and pros healthy,
Martin
Weil ich mich beim ersten Anblick gefragt hatte, warum Elixir/Erlang, hatte ich recherchiert (gegooglet) und wurde wie folgt fündig:
Elixir/Erlang (BEAM) und das dazugehörige Framework Phoenix sind also dazu da, möglichst viele Prozesse unabhängig von einander möglichst gleichmäßig auf die Hardware (Prozessorkerne) zu verteilen. Bei dem aktuellen Traffic im SELF-Forum vielleicht eher "overdone" aber mit Sicherheit ein belastbarer und ausbaufähiger Ansatz. Mich würde ja für die Zukunft interessieren, wieder ein Developerteam aufzubauen und eventuell auch über die Forumssoftware hinaus im Fediverse (Stichwort ActivityPub) irgendwie mitzuwurschteln.
Thx aufn Sonntag und schön gesund bleiben,
BaB
Hallo,
am ehesten könnte wohl @Christian Kruse dazu was sagen, aber ich weiß nicht, wie man ihn am besten erreicht. Ich hoffe, diese Erwähnung per „@“ genügt schon.
Gruß
Kalk
Danke, Tabellenkalk,
Christian hatte ich auch schon vor einigen Tagen per PGP-Mail versucht zu erreichen. Mir wäre ja daran gelegen zu schauen, ob es außer Christian noch Interessenten hier gibt ;-). Und wenn nicht jetzt, vielleicht kommen ja noch welche. Die Idee war/ist ja, dass (auch in Zukunft) das nicht alles an Christian hängt/hängen bleibt.
Schönen Sonntag noch,
BaB (roBert aus Berlin)
Hallo Robert,
ich wollte mir das Forum auch mal näher anschauen und hatte auch schon vor einiger Zeit eine Ubuntu VM aufgesetzt. Und dann, als ich deren virtuelle Platte vergrößern wollte, kam ein I/O Fehler von der Festplatte. Damit war ich erstmal am Validieren meiner Platte und der Backups und das Zeitfenster war weg 😟
Aber ich komm da bestimmt noch zu.
Rolf
Hallo Rolf,
auf einem eigenen Rechner zu Hause macht das sicherlich auch Sinn, dann passt das mit dem localhost:4000 ja auch. Hatte Dich bei Github auch schon als Contributor verortet.
Kann Dir auf dem Netcup-Server auch ein Login geben. Den hatten wir letzten Dienstag extra und nur dafür eingerichtet. Schrieb ich glaube ich schon. Kann Dir auch die Root-Daten geben, dann könntest Du die bash history dir anschauen. Dann "pollutest" Du aber "unsere" ;-). Oder wir exportieren die history und du kriegst einen eigenen Login.
Ist aber evtl. nicht soooo spannend, weil das Aufsetzen an sich ja eigentlich erstmal der Test ist, ob "man" das hinbekommt und wenn nicht oder nicht gleich, wo es denn hakt.
Morgen ab 11:00 sind Morten, Paul und ich wieder am Start. Wollte die mal dazu bewegen, sich auch hier im Forum einen Account zu machen.
Gruß aus Berlin,
Robert
Ergänzung von unserem dienstäglichen DevTreff:
Gruß, Morten und Robert (und Paul im Hintergrund)
Hallo Morten und Robert,
ich werde das Thema CForum dann mal für mich ad acta legen. Bei jedem einzelnen Punkt stehen mir die Fragezeichen im Gesicht, wovon ihr eigentlich redet.
Nein, braucht ihr nicht zu erklären, ich wills nicht wissen. Mir ist offenbar nicht nur Elixir fremd, sondern auch der erforderliche Toolstack. Linux sowieso. Und dann ist die Lernkurve nicht nur steil, sondern auch voller Gletscher, Überhänge und aggressiver Bergziegen. Die Zeit, mich zu coachen, wäre umfangreicher als meine Mitarbeit sparen könnte.
Irgendwie hatte ich mir sowas ja schon gedacht 😟
Rolf
Hallo Rolf,
danke für Deine Antwort. Das ist ja erstmal ein Snapshot von heute, der nicht abschrecken sollte. Die entscheidende Frage für das Forum hier und später fürs Wiki wäre, wie sich das bestmöglich Personen erklären lässt, die sich für ein Verständnis interessieren. Von "eher allgemein" bis hin zu "Codebeispielen".
Schönen Gruß aus Berlin,
Robert
Hallo,
ich kann auch nix dazu beisteuern, außer einem dringenden „es sollte eine Dokumentation vorhanden sein!“. Das „sollte“ ist hier in zweierlei Weise gemeint:
Gruß
Kalk
Hallo Kalk,
ja, das sollte hier der Anfang dafür sein ;-). Die Readme
To start your Phoenix app:
Den Link zum Deployment-Guide habe ich grade ersetzt, denn http://www.phoenixframework.org/docs/deployment geht irgendwie ins Leere.
Dank und Gruß,
Robert