Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
solohan83 opened this issue Apr 22, 2021 · 9 comments
Open

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

solohan83 opened this issue Apr 22, 2021 · 9 comments

Comments

@solohan83
Copy link

solohan83 commented Apr 22, 2021

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?

  • What is the expected behavior?
    nginx-mod-http-passenger should be leveraging the available nginx version provided by RHEL 8:
# 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
  • What is the actual behavior?
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
  • How can we reproduce it?

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

Question 2: Passenger version and integration mode:

  • For example: open source 5.0.26 standalone; enterprise 5.0.21/nginx

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):

  • For example: Ruby 2.3.0, RVM, Rails 5.0.0; Node.js 4.0.0 with Express 4.13.4

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?

  • For example: Heroku, Amazon Container Services, Docker 1.9 with an image based on passenger-docker

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
Copy link
Author

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
Copy link
Member

CamJN commented Apr 26, 2021

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
Copy link
Author

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
Copy link
Member

CamJN commented Apr 26, 2021

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
Copy link
Author

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
Copy link
Member

CamJN commented May 3, 2021

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
Copy link
Member

CamJN commented Sep 19, 2022

got more info in #2431

@CamJN
Copy link
Member

CamJN commented Jun 12, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants