[Buildroot] [git commit] package/apache: use "Debian" filesystem layout to fix read-only rootfs
Thomas Petazzoni via buildroot <[email protected]>
| Newsgroups | net.busybox.buildroot |
|---|---|
| Message-ID | <[email protected]> |
commit: https://gitlab.com/buildroot.org/buildroot/-/commit/1006666f67ba2837ba4cf1014186f3b1cc8f3415 branch: https://gitlab.com/buildroot.org/buildroot/-/tree/master The previous configuration placed both logs and PID file in /var/logs, which is not writable with a read-only rootfs (e.g. squashfs), as well as non-standard. Starting HTTPD during boot failed with: (30)Read-only file system: AH00091: httpd: could not open error log file /var/logs/error_log. AH00015: Unable to open logs An additional issue was that the Buildroot-default --prefix=/usr override meant various Apache-internal directories (e.g. htdocs) were placed directly in /usr. Note that the upstream default prefix is /usr/local/apache2, not /usr/local. Using the "Debian" layout provides a standard-compatible layout with logs in /var/log/apache2 and PID file in /var/run/apache2 (both in tmpfs with the default Buildroot fstab). Both directories need to exist when the server starts, so handle that in the init script. Signed-off-by: Fiona Klute <[email protected]> Signed-off-by: Thomas Petazzoni <[email protected]> --- package/apache/S50apache | 2 ++ package/apache/apache.mk | 13 ++++++++----- package/apache/apache.service | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package/apache/S50apache b/package/apache/S50apache index 71e8837bae..fd1c58312f 100644 --- a/package/apache/S50apache +++ b/package/apache/S50apache @@ -2,6 +2,8 @@ # shellcheck disable=SC2034 # checkpackage-required variable DAEMON="apache" +mkdir -p "/var/log/apache2" "/var/run/apache2" + case "$1" in start|restart|graceful|graceful-stop|stop) apachectl -k "$1" diff --git a/package/apache/apache.mk b/package/apache/apache.mk index 2466bc9461..debc999bcd 100644 --- a/package/apache/apache.mk +++ b/package/apache/apache.mk @@ -43,7 +43,9 @@ APACHE_CONF_OPTS = \ --without-suexec-bin \ --enable-mods-shared=all \ --with-mpm=$(APACHE_MPM) \ - --disable-luajit + --disable-luajit \ + --enable-layout=Debian \ + --prefix=/ ifeq ($(BR2_PACKAGE_BROTLI),y) APACHE_CONF_OPTS += --enable-brotli @@ -111,14 +113,15 @@ endif define APACHE_FIX_STAGING_APACHE_CONFIG $(SED) 's%"/usr/bin"%"$(STAGING_DIR)/usr/bin"%' $(STAGING_DIR)/usr/bin/apxs - $(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs - $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk - $(SED) 's%^sbindir =.*%sbindir = $(STAGING_DIR)/usr/bin%' $(STAGING_DIR)/usr/build/config_vars.mk + $(SED) 's%/usr/share/apache2/build%$(STAGING_DIR)/usr/share/apache2/build%' $(STAGING_DIR)/usr/bin/apxs + $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/%' $(STAGING_DIR)/usr/share/apache2/build/config_vars.mk + $(SED) 's%^sbindir =.*%sbindir = $(STAGING_DIR)/usr/sbin%' $(STAGING_DIR)/usr/share/apache2/build/config_vars.mk + $(SED) 's%^includedir = .*%includedir = $(STAGING_DIR)/usr/include/apache2%' $(STAGING_DIR)/usr/share/apache2/build/config_vars.mk endef APACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG define APACHE_CLEANUP_TARGET - $(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build + $(RM) -rf $(TARGET_DIR)/usr/share/apache2/default-site/htdocs/manual $(TARGET_DIR)/usr/share/apache2/build endef APACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET diff --git a/package/apache/apache.service b/package/apache/apache.service index b8747e2658..561e4e2851 100644 --- a/package/apache/apache.service +++ b/package/apache/apache.service @@ -4,6 +4,7 @@ After=network.target [Service] Type=forking +ExecStartPre=/bin/mkdir -p /var/log/apache2 /var/run/apache2 ExecStart=/usr/bin/apachectl start ExecReload=/usr/bin/apachectl graceful ExecStop=/usr/bin/apachectl stop _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot