<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>This is where **manually compiling by hand** is the problem.  You
      would do the compilation in a separate directory **NOT** inside
      the space of the system's control - usually I spawn new `/tmp`
      directories or destructable directories in my home space.</p>
    <p>I'm not familiar with Fedora and the `dnf` command - but `dnf
      install` installs the repositories-available-version of NGINX for
      Fedora's repos.</p>
    <p>The next steps you would take by hand are:</p>
    <p>(1) Install **all build dependencies and runtime dependencies**
      for NGINX and the modules you're compiling dynamically.</p>
    <p>(2) Download the tarball to temporary space.</p>
    <p>(3) At the *very* least (though I suggest you go digging in the
      source of Fedora's repos to get their build options, you can find
      them with `nginx -T` output though) you need to do this:</p>
    <p>./configure
      --add-dynamic-module=/path/to/third/party/module/source/directory<br>
      make<br>
      <br>
      **This does not install nginx, this is the compiling of the
      binaries.**</p>
    <p>(4) Dig in the completed compile and find your .so file and put
      it in /etc/nginx/modules (I believe that's where it is on your
      system, but I can't validate that - again I'm not a Fedora user so
      I can't verify that's exactly where you drop the module files
      themselves.</p>
    <p><br>
    </p>
    <p>These're the *basic* steps - but again this will **not** install
      your manually compiled nginx to overwrite what `dnf` installs -
      this simply compiles everything and it's up to you to go digging
      to get the components you need and put them where you need them to
      be for your system to recognize them.<br>
    </p>
    <p><br>
    </p>
    <p>Thomas<br>
    </p>
    <div class="moz-cite-prefix">On 1/6/21 10:47 PM, Phoenix Kiula
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAFWfU=tovaBN3i7NVp4UxL5p0a7_N7tMZ8yuaWQwRRXV1ndctg@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div class="gmail_default" style="font-size:large">Thank you
            Thomas. Much appreciate this, it sounds promising.
            Appreciate your clarity.  </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">So if I: </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">1. Compile
            nginx via `dnf install nginx` and that becomes my system's
            Nginx, installed usually in `/etc/nginx` <br>
            <br>
          </div>
          <div class="gmail_default" style="font-size:large">2. In a
            totally separate folder, say, `/usr/src`, I then download a
            tarball of Nginx and compile it along with the dynamic
            modules -- which will produce the .so files for said
            modules <br>
            <br>
          </div>
          <div class="gmail_default" style="font-size:large">3. Copy
            over the modules into the usual `/etc/nginx/modules` folder
            from Step 1 </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">....in this
            sequence of steps, how do I make sure that: </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">A. The
            compilation in Step 2 does not become my "system's nginx"
            (so when I do an `nginx -v` at the command prompt it should
            be refer to the nginx installed in Step 1 above, and *not*
            the one compiled via Step 2) </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">B. The
            compile in Step 2 will use the "same libraries" that DNF
            used? In the DNF version of life I didn't pick any libraries
            manually...DNF found what was on my system. Will the manual
            compile not do the same? </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large">Many
            thanks! </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
          <div class="gmail_default" style="font-size:large"><br>
          </div>
        </div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Wed, Jan 6, 2021 at 10:19
            PM Thomas Ward <<a href="mailto:teward@thomas-ward.net"
              moz-do-not-send="true">teward@thomas-ward.net</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px
            0.8ex;border-left:1px solid
            rgb(204,204,204);padding-left:1ex">
            <div>
              <p>I'm fairly familiar with the 'compiling process' for
                dynamic modules - the process is the same for NGINX Open
                Source as wel as NGINX Plus.</p>
              <p>You would need to compile the modules alongside NGINX
                and then harvest the compiled .so files and put them
                into corresponding locations on the system you want to
                load the dynamic modules.  In Ubuntu, we do this (or at
                least, I do) by using the same OS and libraries as
                installed on the target system (as well as the same
                NGINX version).</p>
              <p>This being said, **compiling** NGINX is different than
                **installing** NGINX - you can *compile* the nginx
                version 1.18.0 with the dynamic modules and the same
                configuration as the Fedora version, and then **take the
                compiled module** and load it up in your installed nginx
                instance.  Compiling NGINX to make the dynamic module
                does NOT require you to then install that NGINX version,
                provided that you match the `make` steps and
                installed/available libraries to those used in the
                original nginx compile done in Fedora.</p>
              <p><br>
              </p>
              <p>Thomas</p>
              <p><br>
              </p>
              <div>On 1/6/21 5:30 PM, Phoenix Kiula wrote:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div class="gmail_quote">
                    <div><span class="gmail_default"
                        style="font-size:large">Thank you Miguel. But
                        you misunderstood the question. This
                        suggestion...</span></div>
                    <div><span class="gmail_default"
                        style="font-size:large"><br>
                      </span></div>
                    <div><span class="gmail_default"
                        style="font-size:large"></span> </div>
                    <blockquote class="gmail_quote" style="margin:0px
                      0px 0px 0.8ex;border-left:1px solid
                      rgb(204,204,204);padding-left:1ex">
                      <div dir="auto">
                        <div dir="auto">nginx blog as a great guide on
                          it though <a
                            href="https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/"
                            target="_blank" moz-do-not-send="true">https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/</a></div>
                        <div dir="auto"><br>
                        </div>
                      </div>
                    </blockquote>
                    <div><br>
                    </div>
                    <div><br>
                    </div>
                    <div><br>
                    </div>
                    <div>
                      <div style="font-size:large">...misses the very
                        first question in this thread: we cannot compile
                        nginx from source on our server. At least not in
                        a way that that compiled version would become
                        the nginx installed in our *system*. We need to
                        install nginx via the default Fedora dnf package
                        manager, which at this time installs 1.18.0. </div>
                      <div style="font-size:large"><br>
                      </div>
                      <div style="font-size:large">Now, what I don't
                        mind doing is to compile nginx in some
                        self-contained folder somewhere, then use that
                        compilation to create the .so or whatever the
                        module file for that version is....if all of
                        this module compiling does *not* affect the
                        system-installed dnf version of nginx. Is this
                        possible? </div>
                      <div style="font-size:large"><br>
                      </div>
                      <div style="font-size:large">If so, the
                        instructions do not help with this. The first
                        step in that official tutorial is to compile
                        nginx and that compiled nginx then becomes the
                        system's main nginx. It replaces whatever was
                        installed via "dnf install nginx". Yes? </div>
                      <div style="font-size:large"><br>
                      </div>
                      <div style="font-size:large">Hope this makes
                        sense. Have I correctly understood how nginx
                        compilation works? Appreciate any pointers. </div>
                      <div style="font-size:large"><br>
                      </div>
                    </div>
                    <div style="font-size:large">Thank you. </div>
                    <div style="font-size:large"><br>
                    </div>
                  </div>
                </div>
                <br>
                <fieldset></fieldset>
                <pre>_______________________________________________
nginx mailing list
<a href="mailto:nginx@nginx.org" target="_blank" moz-do-not-send="true">nginx@nginx.org</a>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank" moz-do-not-send="true">http://mailman.nginx.org/mailman/listinfo/nginx</a></pre>
              </blockquote>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
  </body>
</html>