<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>You should, yes, to make sure your build as closely mirrors what
is in the Fedora repos.</p>
<p><br>
</p>
<p>Thomas</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 1/6/21 11:19 PM, Phoenix Kiula
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAFWfU=uZMVM-+7jfL=3iSS7DKpOu_wtGUTkSaG80kzkGMZTNOw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<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"
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>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" 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>
</div>
</blockquote>
</div>
</blockquote>
</body>
</html>