Skip to content

Commit 5a79f0a

Browse files
committed
copy installation scripts from official caddy packages, change user to frankenphp too
1 parent 75a52f6 commit 5a79f0a

12 files changed

Lines changed: 208 additions & 21 deletions

build-packages.sh

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ fpm -s dir -t rpm -n frankenphp -v "${FRANKENPHP_VERSION}" \
7171
--config-files /etc/frankenphp/php.ini \
7272
--depends "libc.so.6(${glibc_version})(64bit)" \
7373
--depends "libstdc++.so.6(${cxxabi_version})(64bit)" \
74-
--after-install ../package/after_install.sh \
74+
--before-install ../package/rhel/preinstall.sh \
75+
--after-install ../package/rhel/postinstall.sh \
76+
--before-remove ../package/rhel/preuninstall.sh \
77+
--after-remove ../package/rhel/postuninstall.sh \
7578
--iteration "${iteration}" \
7679
"${bin}=/usr/bin/frankenphp" \
77-
"../package/frankenphp.service=/usr/lib/systemd/system/frankenphp.service" \
80+
"../package/rhel/frankenphp.service=/usr/lib/systemd/system/frankenphp.service" \
7881
"../package/Caddyfile=/etc/frankenphp/Caddyfile" \
7982
"../package/etc/php.ini=/etc/frankenphp/php.ini" \
8083
"../package/etc/php.d/=/etc/frankenphp/php.d" \
@@ -90,10 +93,12 @@ fpm -s dir -t deb -n frankenphp -v "${FRANKENPHP_VERSION}" \
9093
--depends "libc6 (>= ${glibc_version})" \
9194
--depends "libstdc++6 (>= ${cxxabi_version})" \
9295
--deb-suggests libcap2-bin \
93-
--after-install ../package/after_install.sh \
96+
--after-install ../package/debian/postinst.sh \
97+
--before-remove ../package/debian/prerm.sh \
98+
--after-remove ../package/debian/postrm.sh \
9499
--iteration "${iteration}" \
95100
"${bin}=/usr/bin/frankenphp" \
96-
"../package/frankenphp.service=/lib/systemd/system/frankenphp.service" \
101+
"../package/debian/frankenphp.service=/usr/lib/systemd/system/frankenphp.service" \
97102
"../package/Caddyfile=/etc/frankenphp/Caddyfile" \
98103
"../package/etc/php.ini=/etc/frankenphp/php.ini" \
99104
"../package/etc/php.d/=/etc/frankenphp/php.d" \

build-static.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ if [ -f dist/cache_key ] && [ "$(cat dist/cache_key)" = "${cache_key}" ] && [ -f
128128
elif [ -f "bin/spc" ]; then
129129
spcCommand="./bin/spc"
130130
fi
131+
132+
PHP_EXTENSIONS="${defaultExtensions}"
133+
PHP_EXTENSION_LIBS="${defaultExtensionLibs}"
131134
else
132135
mkdir -p dist/
133136
cd dist/

package/after_install.sh

Lines changed: 0 additions & 15 deletions
This file was deleted.

package/debian/frankenphp.service

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# See https://caddyserver.com/docs/install for instructions.
2+
#
3+
# WARNING: This service does not use the --resume flag, so if you
4+
# use the API to make changes, they will be overwritten by the
5+
# Caddyfile next time the service is restarted. If you intend to
6+
7+
[Unit]
8+
Description=FrankenPHP
9+
Documentation=https://frankenphp.dev/docs/
10+
After=network.target network-online.target
11+
Requires=network-online.target
12+
13+
[Service]
14+
Type=notify
15+
User=frankenphp
16+
Group=frankenphp
17+
ExecStart=/usr/bin/frankenphp run --environ --config /etc/frankenphp/Caddyfile
18+
ExecReload=/usr/bin/frankenphp reload --config /etc/frankenphp/Caddyfile --force
19+
TimeoutStopSec=5s
20+
LimitNOFILE=1048576
21+
LimitNPROC=512
22+
PrivateTmp=true
23+
ProtectSystem=full
24+
AmbientCapabilities=CAP_NET_BIND_SERVICE
25+
26+
[Install]
27+
WantedBy=multi-user.target

package/debian/postinst.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if command -v setcap >/dev/null 2>&1; then
5+
setcap 'cap_net_bind_service=+ep' /usr/bin/frankenphp || echo "Warning: failed to set capabilities on frankenphp"
6+
echo "Users without root privileges will not be to run 'frankenphp php-server' on ports 80/443."
7+
else
8+
echo "Warning: setcap not found. Install it with: sudo apt install libcap2-bin"
9+
echo "Users without root privileges will not be to run 'frankenphp php-server' on ports 80/443."
10+
fi
11+
12+
if [ "$1" = "configure" ]; then
13+
# Add user and group
14+
if ! getent group frankenphp >/dev/null; then
15+
groupadd --system frankenphp
16+
fi
17+
if ! getent passwd frankenphp >/dev/null; then
18+
useradd --system \
19+
--gid frankenphp \
20+
--create-home \
21+
--home-dir /var/lib/frankenphp \
22+
--shell /usr/sbin/nologin \
23+
--comment "FrankenPHP web server" \
24+
frankenphp
25+
fi
26+
if getent group www-data >/dev/null; then
27+
usermod -aG www-data frankenphp
28+
fi
29+
30+
# handle cases where package was installed and then purged;
31+
# user and group will still exist but with no home dir
32+
if [ ! -d /var/lib/frankenphp ]; then
33+
mkdir -p /var/lib/frankenphp
34+
chown frankenphp:frankenphp /var/lib/frankenphp
35+
fi
36+
37+
# Add log directory with correct permissions
38+
if [ ! -d /var/log/frankenphp ]; then
39+
mkdir -p /var/log/frankenphp
40+
chown frankenphp:frankenphp /var/log/frankenphp
41+
fi
42+
fi
43+
44+
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
45+
# This will only remove masks created by d-s-h on package removal.
46+
deb-systemd-helper unmask frankenphp.service >/dev/null || true
47+
48+
# was-enabled defaults to true, so new installations run enable.
49+
if deb-systemd-helper --quiet was-enabled frankenphp.service; then
50+
# Enables the unit on first installation, creates new
51+
# symlinks on upgrades if the unit file has changed.
52+
deb-systemd-helper enable frankenphp.service >/dev/null || true
53+
deb-systemd-invoke start frankenphp.service >/dev/null || true
54+
else
55+
# Update the statefile to add new symlinks (if any), which need to be
56+
# cleaned up on purge. Also remove old symlinks.
57+
deb-systemd-helper update-state frankenphp.service >/dev/null || true
58+
fi
59+
60+
# Restart only if it was already started
61+
if [ -d /run/systemd/system ]; then
62+
systemctl --system daemon-reload >/dev/null || true
63+
if [ -n "$2" ]; then
64+
deb-systemd-invoke try-restart frankenphp.service >/dev/null || true
65+
fi
66+
fi
67+
fi

package/debian/postrm.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if [ -d /run/systemd/system ]; then
5+
systemctl --system daemon-reload >/dev/null || true
6+
fi
7+
8+
if [ "$1" = "remove" ]; then
9+
if [ -x "/usr/bin/deb-systemd-helper" ]; then
10+
deb-systemd-helper mask frankenphp.service >/dev/null || true
11+
fi
12+
fi
13+
14+
if [ "$1" = "purge" ]; then
15+
if [ -x "/usr/bin/deb-systemd-helper" ]; then
16+
deb-systemd-helper purge frankenphp.service >/dev/null || true
17+
deb-systemd-helper unmask frankenphp.service >/dev/null || true
18+
fi
19+
rm -rf /var/lib/frankenphp /var/log/frankenphp /etc/frankenphp
20+
fi

package/debian/prerm.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if [ -d /run/systemd/system ] && [ "$1" = remove ]; then
5+
deb-systemd-invoke stop frankenphp.service >/dev/null || true
6+
deb-systemd-invoke stop frankenphp-api.service >/dev/null || true
7+
fi
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ After=network.target
44

55
[Service]
66
Type=notify
7-
User=caddy
8-
Group=caddy
7+
User=frankenphp
8+
Group=frankenphp
99
ExecStartPre=/usr/bin/frankenphp validate --config /etc/frankenphp/Caddyfile
1010
ExecStart=/usr/bin/frankenphp run --environ --config /etc/frankenphp/Caddyfile
1111
ExecReload=/usr/bin/frankenphp reload --config /etc/frankenphp/Caddyfile

package/rhel/postinstall.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
if command -v setcap >/dev/null 2>&1; then
4+
setcap 'cap_net_bind_service=+ep' /usr/bin/frankenphp || echo "Warning: failed to set capabilities on frankenphp"
5+
echo "Users without root privileges will not be to run 'frankenphp php-server' on ports 80/443."
6+
else
7+
echo "Warning: setcap not found. Install it with: sudo dnf install libcap"
8+
echo "Users without root privileges will not be to run 'frankenphp php-server' on ports 80/443."
9+
fi
10+
11+
if [ "$1" -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
12+
# Initial installation
13+
/usr/lib/systemd/systemd-update-helper install-system-units frankenphp.service || :
14+
fi
15+
16+
if [ -x /usr/sbin/getsebool ]; then
17+
# connect to ACME endpoint to request certificates
18+
setsebool -P httpd_can_network_connect on
19+
fi
20+
if [ -x /usr/sbin/semanage -a -x /usr/sbin/restorecon ]; then
21+
# file contexts
22+
semanage fcontext --add --type httpd_exec_t '/usr/bin/frankenphp' 2> /dev/null || :
23+
semanage fcontext --add --type httpd_sys_content_t '/usr/share/frankenphp(/.*)?' 2> /dev/null || :
24+
semanage fcontext --add --type httpd_config_t '/etc/frankenphp(/.*)?' 2> /dev/null || :
25+
semanage fcontext --add --type httpd_var_lib_t '/var/lib/frankenphp(/.*)?' 2> /dev/null || :
26+
restorecon -r /usr/bin/frankenphp /usr/share/frankenphp /etc/frankenphp /var/lib/frankenphp || :
27+
fi
28+
if [ -x /usr/sbin/semanage ]; then
29+
# QUIC
30+
semanage port --add --type http_port_t --proto udp 80 2> /dev/null || :
31+
semanage port --add --type http_port_t --proto udp 443 2> /dev/null || :
32+
# admin endpoint
33+
semanage port --add --type http_port_t --proto tcp 2019 2> /dev/null || :
34+
fi

package/rhel/postuninstall.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash
2+
3+
if [ "$1" -ge 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
4+
# Package upgrade, not uninstall
5+
/usr/lib/systemd/systemd-update-helper mark-restart-system-units frankenphp.service || :
6+
fi
7+
8+
9+
if [ "$1" -eq 0 ]; then
10+
if [ -x /usr/sbin/getsebool ]; then
11+
# connect to ACME endpoint to request certificates
12+
setsebool -P httpd_can_network_connect off
13+
fi
14+
if [ -x /usr/sbin/semanage ]; then
15+
# file contexts
16+
semanage fcontext --delete --type httpd_exec_t '/usr/bin/frankenphp' 2> /dev/null || :
17+
semanage fcontext --delete --type httpd_sys_content_t '/usr/share/frankenphp(/.*)?' 2> /dev/null || :
18+
semanage fcontext --delete --type httpd_config_t '/etc/frankenphp(/.*)?' 2> /dev/null || :
19+
semanage fcontext --delete --type httpd_var_lib_t '/var/lib/frankenphp(/.*)?' 2> /dev/null || :
20+
# QUIC
21+
semanage port --delete --type http_port_t --proto udp 80 2> /dev/null || :
22+
semanage port --delete --type http_port_t --proto udp 443 2> /dev/null || :
23+
# admin endpoint
24+
semanage port --delete --type http_port_t --proto tcp 2019 2> /dev/null || :
25+
fi
26+
fi

0 commit comments

Comments
 (0)