<div dir="ltr"><div class="gmail_default" style="font-size:large">Perfect. This is clear Thomas. Much appreciated...between Miguel's original pointer and this clarity from you I think it solves what I'm looking for. One last question: the `nginx -T` options...I'll add those to the ./configure command, yes? </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:55 PM Thomas Ward <<a href="mailto:teward@thomas-ward.net">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>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>On 1/6/21 10:47 PM, Phoenix Kiula
wrote:<br>
</div>
<blockquote type="cite">
<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" target="_blank">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">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">nginx@nginx.org</a>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></pre>
</blockquote>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</blockquote></div>