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

Use apache2ctl modules for Gentoo systems. #5349

Merged
merged 2 commits into from
Jan 4, 2018
Merged

Use apache2ctl modules for Gentoo systems. #5349

merged 2 commits into from
Jan 4, 2018

Conversation

joohoi
Copy link
Member

@joohoi joohoi commented Dec 22, 2017

Fixes #5344

@bmw
Copy link
Member

bmw commented Jan 2, 2018

This seems simple enough but two questions:

  1. What's the behavior of apache2ctl on systems with systemd?
  2. Could we use apache2ctl modules on Gentoo? I'm not sure how new this functionality is, but at least on an up to date system, this works. The relevant snippet from /etc/init.d/apache2 is:
modules() {
        checkconfig || return 1
        ${APACHE2} ${APACHE2_OPTS} -M 2>&1
}

EDIT: apache2ctl modules is recognized in the up to date versions of both Apache 2.2 and Apache 2.4.

@joohoi
Copy link
Member Author

joohoi commented Jan 3, 2018

Nice catch! Now this PR is doing exactly that, using apache2ctl modules, for the modules call.

Unfortunately I think that systemd version is completely unable to use apache2ctl, as it pretty much calls the OpenRC script directly, the whole contents of apache2ctl being:

#!/bin/sh
exec /etc/init.d/apache2 "$@"                          

And this has also been the main issue for Gentoo systems with systemd. I'm trying to figure out the correct things to do for these systems in #5263

@joohoi joohoi changed the title Do not call Apache binary for module reset in cleanup() for Gentoo Use apache2ctl modules for Gentoo systems. Jan 3, 2018
@bmw
Copy link
Member

bmw commented Jan 4, 2018

Then my only concern with this PR is will trying to use apache2ctl modules make things worse for systemd users?

I tried to test this myself, but after waiting an hour for things to compile, I'm not sure I did it right. OpenRC was still installed and /etc/init.d/apache2 still works. After Googling around, maybe it OpenRC is always installed unless the user does a lot of work on their end to rip it out of Gentoo. See https://forums.gentoo.org/viewtopic-t-994660.html?sid=2d4170a3eda7addd8e2883e402af733d.

Since I struggled to make this work, I'm trusting your judgement here.

@joohoi
Copy link
Member Author

joohoi commented Jan 4, 2018

We don't currently have a reasonable support for Gentoo systems running systemd at all. Even though systemd might be officially supported by Gentoo, the Apache package unfortunately isn't. This is discussed in #3411 .

We need to clean up the constants throughout Apache plugin at some point, and this will also include making the user able to provide the Apache control commands on the command line which in turn will help to alleviate this problem.

In addition to the previous, I'm going to need to have a talk with www-servers/apache package maintainer about the future plans about the package in terms of the apache2ctl control script usage in OpenRC and systemd environments.

Copy link
Member

@bmw bmw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the link to #3411. This LGTM.

@bmw bmw merged commit a3a66cd into master Jan 4, 2018
@bmw bmw deleted the gentoo_fix branch January 4, 2018 22:36
ohemorange pushed a commit that referenced this pull request Jan 10, 2018
* Use josepy instead of acme.jose. (#5203)

* Parse variables without whitespace separator correctly in CentOS family of distributions (#5318)

* Pin josepy in letsencrypt-auto (#5321)

* pin josepy in le-auto

* Put pinned versions in sorted order

* Pin dependencies in oldest tests (#5316)

* Add tools/merge_requirements.py

* Revert "Fix oldest tests by pinning Google DNS deps (#5000)"

This reverts commit f68fba2.

* Add tools/oldest_constraints.txt

* Remove oldest constraints from tox.ini

* Rename dev constraints file

* Update tools/pip_install.sh

* Update install_and_test.sh

* Fix pip_install.sh

* Don't cat when you can cp

* Add ng-httpsclient to dev constraints for oldest tests

* Bump tested setuptools version

* Update dev_constraints comment

* Better document oldest dependencies

* test against oldest versions we say we require

* Update dev constraints

* Properly handle empty lines

* Update constraints gen in pip_install

* Remove duplicated zope.component

* Reduce pyasn1-modules dependency

* Remove blank line

* pin back google-api-python-client

* pin back uritemplate

* pin josepy for oldest tests

* Undo changes to install_and_test.sh

* Update install_and_test.sh description

* use split instead of partition

* More pip dependency resolution workarounds (#5339)

* remove pyopenssl and six deps

* remove outdated tox.ini dep requirement

* Fix auto_tests on systems with new bootstrappers (#5348)

* Fix pytest on macOS in Travis (#5360)

* Add tools/pytest.sh

* pass TRAVIS through in tox.ini

* Use tools/pytest.sh to run pytest

* Add quiet to pytest.ini

* ignore pytest cache

* print as a string (#5359)

* Use apache2ctl modules for Gentoo systems. (#5349)

* Do not call Apache binary for module reset in cleanup()

* Use apache2ctl modules for Gentoo

* Broader git ignore for pytest cache files (#5361)

Make gitignore take pytest cache directories in to account, even if
they reside in subdirectories.

If pytest is run for a certain module, ie. `pytest certbot-apache` the
cache directory is created under `certbot-apache` directory.

* Fix letsencrypt-auto name and long forms of -n (#5375)

* Deprecate Python2.6 by using Python3 on CentOS/RHEL 6 (#5329)

* If there's no python or there's only python2.6 on red hat systems, install python3

* Always check for python2.6

* address style, documentation, nits

* factor out all initialization code

* fix up python version return value when no python installed

* add no python error and exit

* document DeterminePythonVersion parameters

* build letsencrypt-auto

* close brace

* build leauto

* fix syntax errors

* set USE_PYTHON_3 for all cases

* rip out NOCRASH

* replace NOCRASH, update LE_PYTHON set logic

* use built-in venv for py3

* switch to LE_PYTHON not affecting bootstrap selection and not overwriting LE_PYTHON

* python3ify fetch.py

* get fetch.py working with python2 and 3

* don't verify server certificates in fetch.py HttpsGetter

* Use SSLContext and an environment variable so that our tests continue to never verify server certificates.

* typo

* build

* remove commented out code

* address review comments

* add documentation for YES_FLAG and QUIET_FLAG

* Add tests to centos6 Dockerfile to make sure we install python3 if and only if appropriate to do so.

* Allow non-interactive revocation without deleting certificates (#5386)

* Add --delete-after-revoke flags

* Use delete_after_revoke value

* Add delete_after_revoke unit tests

* Add integration tests for delete-after-revoke.

* Have letsencrypt-auto do a real upgrade in leauto-upgrades option 2 (#5390)

* Make leauto_upgrades do a real upgrade

* Cleanup vars and output

* Sleep until the server is ready

* add simple_http_server.py

* Use a randomly assigned port

* s/realpath/readlink

* wait for server before getting port

* s/localhost/all interfaces

* update Apache ciphersuites (#5383)

* Fix macOS builds for Python2.7 in Travis (#5378)

* Add OSX Python2 tests

* Make sure python2 is originating from homebrew on macOS

* Upgrade the already installed python2 instead of trying to reinstall
@bmw bmw added this to the 0.21.0 milestone Jan 18, 2018
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

Successfully merging this pull request may close these issues.

None yet

2 participants