Installing dynamic modules when Nginx itself is installed via yum/dnf (Linux)
Thomas Ward
teward at thomas-ward.net
Thu Jan 7 06:34:58 UTC 2021
You should, yes, to make sure your build as closely mirrors what is in
the Fedora repos.
Thomas
On 1/6/21 11:19 PM, Phoenix Kiula wrote:
> 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?
>
>
>
> On Wed, Jan 6, 2021 at 10:55 PM Thomas Ward <teward at thomas-ward.net
> <mailto:teward at thomas-ward.net>> wrote:
>
> 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
>> <teward at thomas-ward.net <mailto:teward at 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 at nginx.org <mailto:nginx at nginx.org>
>>> http://mailman.nginx.org/mailman/listinfo/nginx <http://mailman.nginx.org/mailman/listinfo/nginx>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20210107/cf0fd394/attachment-0001.htm>
More information about the nginx
mailing list