From 28becd61dab5698aa0b2c9f95b75887d88cef89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoran=20Peri=C4=8Di=C4=87?= Date: Sun, 18 Oct 2026 18:34:32 +0200 Subject: [PATCH] angie: initial package 1.12.4, based on Fedora nginx 1.30.6 --- .gitignore | 8 + ...ove-Werror-in-upstream-build-scripts.patch | 31 + 0002-Disable-ENGINE-support.patch | 100 +++ 0003-Compile-perl-module-with-O2.patch | 25 + README.dynamic | 23 + angie-signing.gpg.asc | 99 +++ angie-upgrade | 114 ++++ angie.conf | 88 +++ angie.logrotate | 14 + angie.service | 22 + angie.spec | 584 ++++++++++++++++++ angie.sysusers | 3 + angie.tmpfiles | 4 + angie@.service | 23 + angiemods.attr | 14 + instance.conf | 20 + macros.angiemods.in | 19 + 17 files changed, 1191 insertions(+) create mode 100644 .gitignore create mode 100644 0001-remove-Werror-in-upstream-build-scripts.patch create mode 100644 0002-Disable-ENGINE-support.patch create mode 100644 0003-Compile-perl-module-with-O2.patch create mode 100644 README.dynamic create mode 100644 angie-signing.gpg.asc create mode 100755 angie-upgrade create mode 100644 angie.conf create mode 100644 angie.logrotate create mode 100644 angie.service create mode 100644 angie.spec create mode 100644 angie.sysusers create mode 100644 angie.tmpfiles create mode 100644 angie@.service create mode 100644 angiemods.attr create mode 100644 instance.conf create mode 100644 macros.angiemods.in diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2fa14c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*~ +angie*/ +x86_64/ +.*.log +*swp +*.rpm +/angie-*.tar.gz +/angie-*.tar.gz.asc diff --git a/0001-remove-Werror-in-upstream-build-scripts.patch b/0001-remove-Werror-in-upstream-build-scripts.patch new file mode 100644 index 0000000..abe52d5 --- /dev/null +++ b/0001-remove-Werror-in-upstream-build-scripts.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Felix Kaechele +Date: Sun, 7 Jun 2020 12:14:02 -0400 +Subject: [PATCH 1/3] remove Werror in upstream build scripts + +removes -Werror in upstream build scripts. -Werror conflicts with +-D_FORTIFY_SOURCE=2 causing warnings to turn into errors. + +Signed-off-by: Felix Kaechele +--- + auto/cc/gcc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/auto/cc/gcc b/auto/cc/gcc +index 79a0c71..a516bf0 100644 +--- a/auto/cc/gcc ++++ b/auto/cc/gcc +@@ -154,7 +154,9 @@ esac + + + # stop on warning +-CFLAGS="$CFLAGS -Werror" ++# This combined with Fedora's FORTIFY_SOURCE=2 option causes it nginx ++# to not compile. ++#CFLAGS="$CFLAGS -Werror" + + # debug + CFLAGS="$CFLAGS -g" +-- +2.56.0 + diff --git a/0002-Disable-ENGINE-support.patch b/0002-Disable-ENGINE-support.patch new file mode 100644 index 0000000..7866b3f --- /dev/null +++ b/0002-Disable-ENGINE-support.patch @@ -0,0 +1,100 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= +Date: Tue, 2 Jul 2024 18:29:18 +0200 +Subject: [PATCH 2/3] Disable ENGINE support + +--- + auto/options | 3 +++ + configure | 4 ++++ + src/event/ngx_event_openssl.c | 4 ++-- + src/event/ngx_event_openssl.h | 2 +- + src/event/ngx_event_openssl_cache.c | 2 +- + 5 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/auto/options b/auto/options +index 3d05925..7d3ad00 100644 +--- a/auto/options ++++ b/auto/options +@@ -48,6 +48,8 @@ USE_THREADS=NO + + NGX_FILE_AIO=NO + ++NGX_SSL_NO_ENGINE=NO ++ + QUIC_BPF=NO + + HTTP=YES +@@ -428,6 +430,7 @@ use the \"--with-mail_ssl_module\" option instead" + + --with-openssl=*) OPENSSL="$value" ;; + --with-openssl-opt=*) OPENSSL_OPT="$value" ;; ++ --without-engine) NGX_SSL_NO_ENGINE=YES ;; + + --with-md5=*) + NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG +diff --git a/configure b/configure +index f16be92..ad557ae 100755 +--- a/configure ++++ b/configure +@@ -95,6 +95,10 @@ have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\"" + have=NGX_HTTP_ACME_CLIENT_PATH value="\"$NGX_HTTP_ACME_CLIENT_PATH\"" + . auto/define + ++if [ $NGX_SSL_NO_ENGINE = YES ]; then ++ have=NGX_SSL_NO_ENGINE . auto/have ++fi ++ + . auto/make + . auto/lib/make + . auto/install +diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c +index 9279aa2..442b692 100644 +--- a/src/event/ngx_event_openssl.c ++++ b/src/event/ngx_event_openssl.c +@@ -7483,7 +7483,7 @@ ngx_openssl_init_conf(ngx_cycle_t *cycle, void *conf) + static char * + ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) + { +-#ifndef OPENSSL_NO_ENGINE ++#if !defined(OPENSSL_NO_ENGINE) && !defined(NGX_SSL_NO_ENGINE) + + ngx_openssl_conf_t *oscf = conf; + +@@ -7534,7 +7534,7 @@ ngx_openssl_exit(ngx_cycle_t *cycle) + #if OPENSSL_VERSION_NUMBER < 0x10100003L + + EVP_cleanup(); +-#ifndef OPENSSL_NO_ENGINE ++#if !defined(OPENSSL_NO_ENGINE) && !defined(NGX_SSL_NO_ENGINE) + ENGINE_cleanup(); + #endif + +diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h +index 4f48e9c..f1810c9 100644 +--- a/src/event/ngx_event_openssl.h ++++ b/src/event/ngx_event_openssl.h +@@ -23,7 +23,7 @@ + #ifndef OPENSSL_NO_DH + #include + #endif +-#ifndef OPENSSL_NO_ENGINE ++#if !defined(OPENSSL_NO_ENGINE) && !defined(NGX_SSL_NO_ENGINE) + #include + #endif + #include +diff --git a/src/event/ngx_event_openssl_cache.c b/src/event/ngx_event_openssl_cache.c +index 04f67ca..9e954a0 100644 +--- a/src/event/ngx_event_openssl_cache.c ++++ b/src/event/ngx_event_openssl_cache.c +@@ -712,7 +712,7 @@ ngx_ssl_cache_pkey_create(ngx_ssl_cache_key_t *id, char **err, void *data) + + if (id->type == NGX_SSL_CACHE_ENGINE) { + +-#ifndef OPENSSL_NO_ENGINE ++#if !defined(OPENSSL_NO_ENGINE) && !defined(NGX_SSL_NO_ENGINE) + + u_char *p, *last; + ENGINE *engine; +-- +2.56.0 + diff --git a/0003-Compile-perl-module-with-O2.patch b/0003-Compile-perl-module-with-O2.patch new file mode 100644 index 0000000..7f0a825 --- /dev/null +++ b/0003-Compile-perl-module-with-O2.patch @@ -0,0 +1,25 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= +Date: Wed, 31 Jul 2024 17:47:10 +0200 +Subject: [PATCH 3/3] Compile perl module with O2 + +--- + src/http/modules/perl/Makefile.PL | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/http/modules/perl/Makefile.PL b/src/http/modules/perl/Makefile.PL +index 7edadcb..2ebb7c4 100644 +--- a/src/http/modules/perl/Makefile.PL ++++ b/src/http/modules/perl/Makefile.PL +@@ -14,7 +14,7 @@ WriteMakefile( + AUTHOR => 'Igor Sysoev', + + CCFLAGS => "$ENV{NGX_PM_CFLAGS}", +- OPTIMIZE => '-O', ++ OPTIMIZE => '-O2', + + LDDLFLAGS => "$ENV{NGX_PM_LDFLAGS}", + +-- +2.56.0 + diff --git a/README.dynamic b/README.dynamic new file mode 100644 index 0000000..edf5151 --- /dev/null +++ b/README.dynamic @@ -0,0 +1,23 @@ +############### +Dynamic modules +############### + +Dynamic modules are loaded using the "load_module" directive. The RPM package +for each module has a '.conf' file in the /usr/share/angie/modules directory. +The '.conf' file contains a single "load_module" directive. + +This means that whenever a new dynamic module is installed, it will +automatically be enabled and Angie will be upgraded in place +(see angie-upgrade(8)). + +-------------------------------------------------------- +Prevent dynamic modules from being enabled automatically +-------------------------------------------------------- + +You may want to avoid dynamic modules being enabled automatically. Simply +remove this line from the top of /etc/angie/angie.conf: + + include /usr/share/angie/modules/*.conf; + +To also prevent the automatic in-place upgrade on package installation, +create the file /etc/angie/rpm-disable-upgrade. diff --git a/angie-signing.gpg.asc b/angie-signing.gpg.asc new file mode 100644 index 0000000..af7f6b4 --- /dev/null +++ b/angie-signing.gpg.asc @@ -0,0 +1,99 @@ +# Angie GPG Public Key +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGNX2oABEADsThPtBwCqnj4GRYIv2qfsLdsAlnXwMstlKjC9XBbWiWNWCVTB +Fmc4tqAl7Keb47KO1HmeAZwydtLCQJx1rHClpcQQg7VIo+J3TmDWqcZ/3OTofEYU +XVwNgjqw9tzKNBaNq/r8hbmUzkcEADshMYTfhQDrb5o3Ga37dmcnphgegCFgFOti +vnsgVA0w3obmkTjQoaXoAw5QODfT1pNE5L49Le62/WkADtjSUa1b6sAD1+JQI67t +YWoxqpItnP+h3gjJBO2TI7zR3vocorHClPQ80LVOECX3qpdBSDBIIsYIihaOUrih +nhc7Ds1fUgtgi4hATVAynUAe0j03KcrO7RPwbIRaVGzI5wd+YQrQP2LdIyc4ZK+e +/zoQScu25jLyQaDMLs4y2i+nXZnMbmJUZkPKuj9Edi0FbGG3xmHIjrTtzAdQKINL +fqnUh4EQx4scvRjBlLrRuGEtCQP6wT39s/xzaM9DmuiYBTfPKXnmGtFdoD1CAd5F +H8YkZxWeOhjfLVq5M+k6/jOD/5Q+rGwHAdszduKc2UPU5zVYPFPtFBVoi6n03VmI +JOleiEi0T0TyMKIWffa1hTc5c1ZDnefx7gOLbbsE5SSDpJkky5sJm74h75PK798r +4VGEGa+XtmK6UN+kHQf5QcsYb3AmMtnKAayE/7P9qpY9pOUNh1oRhlLoLQARAQAB +tCpBbmdpZSAoU2lnbmluZyBLZXkpIDxkZXZvcHNAdGVjaC53YnNydi5ydT6JAk4E +EwEKADgWIQTrjq89TvGx7PNIZaJherl4y4SadgUCY1fagAIbAwULCQgHAgYVCgkI +CwIEFgIDAQIeAQIXgAAKCRBherl4y4Sado05EACkUADTuJA/5NY00q06Da5Z1UU6 +bmdMeAZFolopoBPC7Z2hGB+BbFb4iYeqdFqY2jw5Jgv0Mgu8LnaUEiZihslxAqGl +55ra4zpPoYFhOiOMgAaT6wF+etPDAW2U1gW1wZ/JFDB5aHr6lf8lGGQLi0NxJ4IX +kUYoP8q/E6v7AnwJb4R9HbcuRgYgwmjBgYAPbbrnPDoHXNV6SIwHiv+n47ZvqXdW +8uSNybLeiVWfBptWJy9qJunNjgOTOKgSO56aFXscWbZUp89b8UQHWZ/c2rnHxWjY +yC25ctEG7zRwTMpaqi9yPiOCrmIKmwJjpoyVP982XwDoPYuTpq+Y0UtZRa/FtOfV +iLi4cGeijpsZterVPJuZKxXxeoB/QhDlD7/T84rrixff09rK+OSItYn7UzfDUolV +9C+/6xvkR4r8F8PtTedHo6JK8s5+qGC7nmuG53RsZi1ir3iwX0DLB0LIvWVi5z+l +n5QoJyPjM1QoqG48sCo0ItRBQ80SPMDqJZgIb/cFctQGcW/Q1dt/Gy4zIqrmKj3B +rINvB2slkJXXLrYnuue6hQTo9irq45pG3KKZeoyXvlKXpIoaHX8R3VBcnIU7NXkZ +bNcRKRNfOjV2Pgz1BLml6u9f1s6VWcXIWpDr+x+Ijyr6TYyg36cbbUWbqrvKgE7g +GcQARuDqKah/UR5jf7kCDQRjV9qAARAA6XH8A1fbuGK5rk5Nq+ltqkZ1iiAtt0eX +Ntc/Hi+UdHuZW8maEpsW/tzg5wLggkpYC3IM/3ylqukzQcIhZFjQ1vDzA6tBFM1J +38mtyTYTq56jBp1z6spG/aVf0iWJ1l4zjN87q1u1WgdPeuSDBWqC87nL2ZWDvjFo +ZTU93wWVXycd88UBenGbFYlbDjvFf2m1B/F7eaj/eNlIHDEJ289VuQQa9fzz4V6f +3CLaXiEUtF18wajxWdckAxegf9AoRefYhFCjkuibW435gaMSbrAqCMGbZMVKdLvF +9Lfli309NdST7sk33su45fAjqGT7siQk4X3uumhQFGF3chHYsDQFqpWq4ZrjNTrf +55TIqZ8+zmPm8MuZj5Zd5q2w4ktTx2obnuE30e4puKvbbu1I1hJzKKJFkTIpTypR +AiDGbUmXHrLxRAdwBCt3fjjKShro3JJkxTXhIxnNrwHGPZ0YsmAUUH/mKwJ+Anqw +4QVPIzRV02sGHdi9tYwlChTMvn94yk4Nr1yeIkiWAMajsr7lED/NuQVMsbm2KWXP +vqqZtniYZZM/pEM2OjNv5mtSFJHaGVA2CtMf7Vaxl2MZfs+lEJNfG07Mu7sxXHfw +uwgJvl+Cj9Yaasz5PpL3jWLYn75YHOiIyGA1x3kpE8frDJB/Xc3C+G4B19GWF/ra +kBm1uf5RT28AEQEAAYkEbAQYAQoAIBYhBOuOrz1O8bHs80hlomF6uXjLhJp2BQJj +V9qAAhsCAkAJEGF6uXjLhJp2wXQgBBkBCgAdFiEEocPyrBhwnGb0+3T5JxyRFmbJ +JLEFAmNX2oAACgkQJxyRFmbJJLFHzw//c1CAR/M9dOvJX2IPOzbX82HgCCm8OBeI +iQkqS7HhQOGRVvxC0oG7QAROR/urNi6X8/QyXk7YHhtPfXZJzbSJUxBBbwyineL1 +U4pKxnRGn8rGZz5T2RMDYxwe2EluKqFjxpo9lZK782uw7dBHyJw4Xj67LpsUrqWK ++td/jsqYRbws8AXBPVtHNYKyU1u638+2+Ad+d+rqQ/wdYJUIHQdF+kjQizfgKy6j +CxLnksJkC9SO95LUrMKL97mS3bD8hqt1Dj9tl5UHAn5uuktvSonSKnPxYeo5ntg0 +pkDu9voGCYlOZOo1ASjqJYIMyw2o6ig0OqMACPr0nAlqGa6If/75KfUxcFrls3jD +nm6lPWNrfsYGOlDGGifQ8fGM+Rc4TmQAqffCTdzGrEjrKuN7gMcrOsH8M1Z5dWmV +WXT4ET9w6z2V5Xx+hTiJ1T3IfZi2Z+00nij8l+5AmrI0xpyJnrzupcXH22KJqeP5 +6CA9TdkvRborSiIyW5E7Zq0evh8b1o6ufznWT6tKqQzkK4cmfsWjhAy8QkcbnW8P +X5EZpvGjy9j7O6eSU5fZHTWiXn5+nn5nCNfSeselg+Ma5tjutgk+/20s6pio8Jge +4kgYQMHLuXLuWZ0McNrypbEZ9fPFjuk56tHZzB1mm9wpKP85Y80CIuCB4nW+jiQb +q9H3VXtB1DAn/w//WubJ02KIbEFCY3lzv79lkyrFNeSGRbxPUky8qQ8w0YTIxCX6 +QiKXT/XB9Fpq/ZZdL7hUkRtNjf9lkWg8G79+PYaxNIbSR1wX/xfBUgx4SKCtFfpu +elt/waRrgdSURq0R7x/1mUZmMsuWFxrwBEwKP2aP7OJPJVjANsxM7Wc97o9B/XFG +PurCr6CY1KFU4kE+aDo45At20iqHxzBrGncmJFgiK46ScPAetRAHA0TBOLmfS62U +Lys4Gq21D307/omVkzeFapz6hzDJr8b5GAu2XNkNbfoZ6XXXGf18YdqDW/WPQ+74 +nRfkcVcDuxVQnaoEzWO/VgWeRhpKEbd2lgSIxqSQ8gN3ggBhPsgTPR7PKG0W6itd +HvmAC8X3z7kcNBPJYFZGxNS+X8hnWvHAaQAWorQbYWhEYVlMWdw5WXKd44J8ExWQ +uCpn9HS6hJy2EY7pK8x9LXZpe3GDwYmP3Ju4fAAWECT3TIBjV+qVegN2MSQD9XNv +qkUTf1M87bhWlB4e5js572K8p16hYVbCyKUSunQ6WAe0ODkPcK6VhKfKerwcqz90 +jcakkjhzfJvZM0W28KbHtiuS5jqfmHF+HatarW0oxlspURjh2gMpwwhvroszbo5e +UPD8jG17MWapZaz2gArXEUXzjiE9NHm179Di0F8fWw5LpSBpAH9F8Nprohi5Ag0E +Y1fbBgEQALF3UUX4JyVHNG37V8bxTFq5ES2HRMDF1JIzN6552dfnoOZyWWoZ3bRM +gCpdgkFfP9RypmZX9ZYP2uS7H/OT/vt3NRV9Qf8KafDhJxW+40PpyO9MZiIqO7xN +0UQiObpB9P0Bsc1S4kggDNXgxzSAGlDAcBtf8iiHLDcM5ZF6UIMg+6exVKVu6NaA +Wlc5FhEw31tqLAFYI6OAMQpmNCnDK4PzepkA3h/8GEeVhdtaRcoMP7Xhk9jLsAmP +U02Ll3haXWLIiANOwmQKONGvjDmiQ+P6iYQuJkIGGxOQSVtDeFHHhcoqOpRZnuzh ++VwZ/b4XBTa8DVe4oPY6013E9pGRX6k7HrrWIePnISfRBGCcnI6dpcXsXsHOjbLW +4/Z8IfU1I3gmtbF3cTjy7eI+9YAwPZKcQLZXC5dxl1jOSLLZkA98bsl5MFa3tTo2 +BaVQyT5xV9DsB9gQRs0mzIKEpeGUOBOg5MT4QRH80X77xL4Zz8fgAgy5uqK9M1Wh +Q5XNU8Yp9iEmLNJJlHmvS2RNJHWEZzFtS/TBzgR4J5bOKB/T1DnCx+1X8ChkEXkb +4qaBSkoC9wmIjH6oeHCQUNeD3j11JTIlT7zs0bfNeqNEJJ5eAUzKMhTrpwEH83ny +Q/Z+eUqOOnLrTwJYExpSgeZSdKsHbPDEUMdSQJ9ZifSVx3yZW/a/ABEBAAGJBGwE +GAEKACAWIQTrjq89TvGx7PNIZaJherl4y4SadgUCY1fbBgIbAgJACRBherl4y4Sa +dsF0IAQZAQoAHRYhBNTfXffduYkYDZxyENbOxMi2XoSEBQJjV9sGAAoJENbOxMi2 +XoSEyH0QAIaugULdAvF8sQpr5MB0yvKTgiHmK71MR8NYnhZTgKm9v3mtiiQVQSFp +tDJ+NgJx6y1u4kOCqwMxrSxdlJNzh7EoNF8TWRrfDZ7aJPjBn3f7psGxg9NcIlR4 +vk70ZtkgS/fiHbR2Ro6hK6w+Q046ZpRrRAySxT4aGbU5UdTYGq9sZ3/kpJn1KBfe +B5pK5V2aMrEbe2GpyO508M73dsymvHzDz7pFISqoYQx0QgXRSOErZHuCAObGOI3c +/55Hb1531ea7mqdLOLd1YWp7uofOLIVrC8VhjvsQRY0EvY1XdmNxihmx+Hb1Gnpm +NG9UtBV6FEE8I6jI1gc1sq6YfEpI3oc/cvpHA/IQK7ij/5Z3dGHyhHlq+xBe5ko+ +EcnOXpaCdARq0h/IYJZOchd5xYh/4IdVBq1DGjgXU9QZL/8cGIGPk+Gw60HKKBkN +drc8g/rhEWEk6RAaD/1BfpgH7O/g6FCMrF1FAxrU4slN4MrD2A/29I6kDDfdUESL +0hL9bl6Kryje+v7Nqg8oOq7BGz2CZtCwnt06VMEUxPlOUQM9QNpp/Zu9WfhMc0vQ +JcttpyvbhMhsJf8uNynZh88SFNewytXZX7s6e2wrTc3W5vpsNtLwiEucN+XCoELW +6biPYyEk2+URFg+IsVkO69A4atWOAclM3iqGs6AgOBPHLVvxxhnTOVsP/09epPIu +jTZ9LVbx4riUt1t647aSdxm1gITGtAppQx5jMwYWvTlnT3KSx67LrcfPGaZkpBQn +bMYp+XySP/7F8jk7xFx8qiWXQCY8riJ5cOCw1tA1N+evX9XdhlWkdy93NEWiB9nb +UwM8CJUxx5H7yP33b0VrZwS4b2grshb6pegTPRYQhP/Yyp6E/LenAVTpSyZE7JBd +u6ug9n3sFOVqOE7KFLQmBc11093Qz6lGncfrdeSinN2/rr3ZzYbRv7ilH1wfcV/7 +STErX36GxEWQFp8kZuJ07+yd5L48qb+H7UYkG+uy1p5AF4eTeSsSOQIRhwmgXxHs +X60GmWb87Yu10+hA24BXWzNEj/Yn00CtKnKzwL3VwA68COUNPZoba3KuD9bcmIEH +EUtjsNF4QF/FfXt84KAt35SO6Ql1LqkPR+xWSswoLyyL0q/N6WpAgc3ukUNGKaqP +tH79vUvdTrE7wMcDMIBstImP4M6wszRfuaSEKWX601+r1GhwFdN9FjaKO083pl8T +TCoAIrKtVB8rI5aFaD2Qmh9C7taOmRVK+XNUZXWNAvyyFMfja8+k3fdZuPMxNgEU +G37uWVSC9Gjr5YE3pulcXxIxi9IGZQjRbBFLQWjkE4gean1tacEsyVOV30SqqF6N +6aNUJqElOswYSsIc9pip17CdPiDKptxb2OMc +=Z61u +-----END PGP PUBLIC KEY BLOCK----- diff --git a/angie-upgrade b/angie-upgrade new file mode 100755 index 0000000..471f5fa --- /dev/null +++ b/angie-upgrade @@ -0,0 +1,114 @@ +#!/bin/bash + +# angie-upgrade - Upgrade all running Angie instances with zero downtime + +# Upgrade all running Angie instances by sending the USR2 signal to the +# master process of each instance, then gracefully stopping the old master. +# This allows for zero-downtime upgrades of Angie. + +# Last updated: 2026-10-18 + +TIMEOUT=10 + +wait_for_file() { + # usage: wait_for_file