Robert Sauer-Ernst: Forumssoftware - Verständnis

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:

  • webpack zu installieren (ganz am ende dann)
  • dieser postgres-krempel
  • wie das passwort zu setzen ist bei postgres
  • node14 geht nicht, weil require nicht funktionert

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 ;-)

akzeptierte Antworten

  1. 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

    --
    Fische, die bellen, beißen nicht.
  2. 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

  3. 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

    1. 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)

      1. 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

        --
        sumpsi - posui - obstruxi
        1. 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

  4. Ergänzung von unserem dienstäglichen DevTreff:

    • node 14 wird in der Dockerfile installiert, es geht bei uns aber nur node 12
    • wie funktioniert css? das klappt bei uns nicht, es gibt einen 404 error, und wir wissen nicht, wie die assets/css/*.scss dateien zu der app.css kompiliert werden sollen
    • svgs und son standard avatar gehen aber (aber nur in lustiger originalgröße, man sieht gar nicht, dass es unten noch weitergeht)
    • wir haben uns die environments angeguckt (releases, dev, test) und gemerkt, dass diverses über environment variables reingegeben werden kann (in release), also muss man die config.exs gar nicht immer anpassen (und sollte man auch nicht?)
    • wie runned man releases? “Ready to run in production? Please check our deployment guides.” ist der link kaputt
    • im dev environment lassen sich keine echten mails verschicken, man muss wohl ähnlich wie bei releases smtp env vars benutzen und den Swoosh adapter ändern
    • wir haben es unabsichtlich geschafft die cforum_repo db zu droppen, und wissen nicht wie, sollte man wohl mal backuppen
    • und der will immer noch jedes mal “We will use "yarn" to install the CLI via "yarn add -D webpack-cli". Do you want to install 'webpack-cli' (yes/no):”, und egal was man macht es passiert “nichts” ...

    Gruß, Morten und Robert (und Paul im Hintergrund)

    1. 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

      --
      sumpsi - posui - obstruxi
      1. 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

    2. 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:

      1. als Empfehlung, danach zu suchen und zu verwenden.
      2. als Empfehlung, falls 1.a) erfolglos sein sollte, eine zu erstellen…

      Gruß
      Kalk

      1. Hallo Kalk,

        ja, das sollte hier der Anfang dafür sein ;-). Die Readme

        To start your Phoenix app:

        • Install dependencies with mix deps.get
        • Create and migrate your database with mix ecto.reset
        • Install Node.js dependencies with yarn install
        • Start Phoenix endpoint with mix phx.server
        • Now you can visit localhost:4000 from your browser.
        • Ready to run in production? Please check our deployment guides. http://www.phoenixframework.org/docs/deployment

        Den Link zum Deployment-Guide habe ich grade ersetzt, denn http://www.phoenixframework.org/docs/deployment geht irgendwie ins Leere.

        Dank und Gruß,

        Robert