phusion / passenger

A fast and robust web server and application server for Ruby, Python and Node.js
https://www.phusionpassenger.com/
MIT License
5.01k stars 547 forks source link

RHEL 8 nginx-mod-http-passenger requires nginx = 1:1.14.1 #2360

Open solohan83 opened 3 years ago

solohan83 commented 3 years ago

Please follow the steps below if you have found an issue with Passenger, or would like to request a feature.

Post to Stack Overflow instead if you are not sure, or if you have a question about your configuration.


Issue report

When try to yum install nginx-mod-http-passenger, it fails as it is asking for nginx 1.14, which is not provided in RHEL8 any more


# yum install nginx-mod-http-passenger
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)                         61 kB/s | 2.4 kB     00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)                      72 kB/s | 2.8 kB     00:00
Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs)                          55 kB/s | 2.1 kB     00:00
Error:
 Problem: package nginx-mod-http-passenger-6.0.8-1.el8.x86_64 requires nginx = 1:1.14.1, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package nginx-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64 is filtered out by modular filtering
  - package nginx-1:1.14.1-8.module+el8+2505+fe936cef.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
$ sudo cat /etc/yum.repos.d/passenger.repo
[passenger]
name=passenger
baseurl=https://oss-binaries.phusionpassenger.com/yum/passenger/el/$releasever/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.3 (Ootpa)

Question 1: What is the problem?

# yum list available nginx
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)                         59 kB/s | 2.4 kB     00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)                      64 kB/s | 2.8 kB     00:00
Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs)                          54 kB/s | 2.1 kB     00:00
Available Packages
nginx.x86_64            1:1.16.1-1.module+el8.3.0+8844+e5e7039f.1            rhel-8-for-x86_64-appstream-rpms
Error:
 Problem: package nginx-mod-http-passenger-6.0.8-1.el8.x86_64 requires nginx = 1:1.14.1, but none of the providers can be installed

Fresh install of RHEL8, enable passenger repo, and then try to install nginx-mod-http-passenger.

Question 2: Passenger version and integration mode:

Your answer:

open source 6.0.8

Question 3: OS or Linux distro, platform (including version): Red Hat Enterprise Linux 8 x86_64

$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.3 (Ootpa)

Your answer:

Question 4: Passenger installation method:

Your answer: [ ] RubyGems + Gemfile [ ] RubyGems, no Gemfile [ ] Phusion APT repo [X] Phusion YUM repo [ ] OS X Homebrew [ ] source tarball [ ] Other, please specify:

Question 5: Your app's programming language (including any version managers) and framework (including versions):

Your answer:

N/A. Trying to install before application is loaded.

Question 6: Are you using a PaaS and/or containerization? If so which one?

Your answer:

No.

Question 7: Anything else about your setup that we should know?

Your answer:

I have followed documentation below:

https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/nginx/install/oss/el8.html

Previously, I have followed the older document for deploying on RHEL7 and has no problem installing nginx-mod-http-passenger with nginx 1.16, and has application successfully deployed.

# yum list installed nginx-mod-http-passenger
Loaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager
Installed Packages
nginx-mod-http-passenger.x86_64                                           6.0.7-1.el7                                           @passenger
Uploading Enabled Repositories Report
Loaded plugins: langpacks, product-id, subscription-manager
# yum list installed nginx
Loaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager
Installed Packages
nginx.x86_64                                                     1:1.16.1-3.el7                                                      @epel
Uploading Enabled Repositories Report
Loaded plugins: langpacks, product-id, subscription-manager
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
solohan83 commented 3 years ago

Add enabled repo list:

$ sudo dnf repolist
Updating Subscription Management repositories.
repo id                                                 repo name
epel                                                    Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                            Extra Packages for Enterprise Linux Modular 8 - x86_64
nodesource                                              Node.js Packages for Enterprise Linux 8 - x86_64
passenger                                               passenger
rhel-8-for-x86_64-appstream-rpms                        Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-baseos-rpms                           Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
satellite-tools-6.8-for-rhel-8-x86_64-rpms              Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs)
yarn                                                    Yarn Repository
$  sudo yum install nginx-mod-http-passenger
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)                                         56 kB/s | 2.4 kB     00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)                                      65 kB/s | 2.8 kB     00:00
Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs)                                          48 kB/s | 2.1 kB     00:00
Error:
 Problem: package nginx-mod-http-passenger-6.0.8-1.el8.x86_64 requires nginx = 1:1.14.1, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package nginx-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64 is filtered out by modular filtering
  - package nginx-1:1.14.1-8.module+el8+2505+fe936cef.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
CamJN commented 3 years ago

Testing with a clean ubi8 container, I'm still seeing Nginx 1.14 as the default Nginx. I see in your output is filtered out by modular filtering how was that done?

solohan83 commented 3 years ago

Hi,

Good catch on the modular filtering part!

After I spending some more time on this, I believe I have a better understanding of what is going on.

First, to answer your question of how modular filtering is done:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/setting-up-and-configuring-nginx_deploying-different-types-of-servers

Second, I am not sure how UBI8 container handles it, as I personally never used it, but only full blown RHEL8 OS. (Yes, I am old school :) )

3rd, I was mistaken that nginx 1.14 is no longer provided. As RHEL 8.3, it seems it is proving 3 versions of nginx:

# yum module list nginx
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)                                              58 kB/s | 2.4 kB     00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)                                           69 kB/s | 2.8 kB     00:00
Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs)                                               50 kB/s | 2.1 kB     00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64
Name                         Stream                         Profiles                         Summary
nginx                        mainline                       common                           nginx webserver

Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name                         Stream                         Profiles                         Summary
nginx                        1.14 [d]                       common [d]                       nginx webserver
nginx                        1.16 [e]                       common [d]                       nginx webserver
nginx                        1.18                           common [d]                       nginx webserver

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

We have enabled 1.16 at one point for the repo, as 1.14 is considered exposing too many issues and vulnerabilities.

    - name: Reset the nginx module stream for RHEL8
      shell: dnf module reset nginx -y

    - name: Enable the nginx 1.16 app module stream for RHEL8
      shell: dnf module enable nginx:1.16 -y

Now, to the question:

If I would like to use nginx-mod-http-passenger version 6.0.8 for Nginx 1.16 or even 1.18 on RHEL 8, what is the best way of doing it?

Thanks.

CamJN commented 3 years ago

hmm I wonder if we can create module streams for passenger to match the nginx module streams... of course they don't exist in el7 so it might be tough.

Anyway, for now the best approach depends a bit on what kind of setup you have. If you have one server that you don't tear down and rebuild a lot then building an nginx module would probably be easiest, if you have several servers or rebuild a lot then you'll probably want to make your own rpm. I can provide some guidance either way if you let me know which is a better fit.

solohan83 commented 3 years ago

Thanks for the respond.

If there is a possibility that make the streamers to support the versions of Nginx provided by Redhat AppStream in the next release(6.0.9?), I am willing to wait.

For us, Nginx 1.14 is an unusable version, and it is our best interest to have the package provided from the vendor through the official repo.

If the possibility of making it happen is not feasible in the near future, I will start look into the route of using Apache instead of Nginx, as a quick test seems there is only one version of Apache is provided, and mod_passenger was installed no problem. Not sure how much the application will like it though.

CamJN commented 3 years ago

That depends if I'm able to get module streams working in our repo. I honestly do not know what that will require so I can't promise it'll make the next release.

CamJN commented 2 years ago

got more info in https://github.com/phusion/passenger/issues/2431

CamJN commented 1 year ago

we switched to the newest nginx module stream in 6.0.18, still don't support multiple versions but at least it's not super old

CamJN commented 1 year ago

notes to self: https://github.com/rpm-software-management/modulemd-tools https://docs.fedoraproject.org/en-US/modularity/hosting-modules/ https://docs.fedoraproject.org/en-US/modularity/core-concepts/modular-repository/ https://github.com/mcurlej/module-build/pull/6