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

Reply via email to