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.
I'm not familiar with Fedora and the `dnf` command - but `dnf install`
installs the repositories-available-version of NGINX for Fedora's repos.
The next steps you would take by hand are:
(1) Install **all build dependencies and runtime dependencies** for
NGINX and the modules you're compiling dynamically.
(2) Download the tarball to temporary space.
(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:
./configure
--add-dynamic-module=/path/to/third/party/module/source/directory
make
**This does not install nginx, this is the compiling of the binaries.**
(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.
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.
Thomas
On 1/6/21 10:47 PM, Phoenix Kiula wrote:
Thank you Thomas. Much appreciate this, it sounds promising.
Appreciate your clarity.
So if I:
1. Compile nginx via `dnf install nginx` and that becomes my system's
Nginx, installed usually in `/etc/nginx`
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
3. Copy over the modules into the usual `/etc/nginx/modules` folder
from Step 1
....in this sequence of steps, how do I make sure that:
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)
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?
Many thanks!
On Wed, Jan 6, 2021 at 10:19 PM Thomas Ward <tew...@thomas-ward.net
<mailto:tew...@thomas-ward.net>> wrote:
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.
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).
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.
Thomas
On 1/6/21 5:30 PM, Phoenix Kiula wrote:
Thank you Miguel. But you misunderstood the question. This
suggestion...
nginx blog as a great guide on it though
https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/
<https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/>
...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.
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?
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?
Hope this makes sense. Have I correctly understood how nginx
compilation works? Appreciate any pointers.
Thank you.
_______________________________________________
nginx mailing list
nginx@nginx.org <mailto:nginx@nginx.org>
http://mailman.nginx.org/mailman/listinfo/nginx
<http://mailman.nginx.org/mailman/listinfo/nginx>
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx