Added mod_rewrite for nginx module

This commit is contained in:
alexey
2026-03-23 01:15:59 +03:00
commit 0d2c6277e1
124 changed files with 11079 additions and 0 deletions

68
packages/deb/README.build Normal file
View File

@@ -0,0 +1,68 @@
# Как собрать Debian пакет nginx-mod-rewrite
## Программа для сборки пакета
Для сборки Debian/Ubuntu пакетов используется инструмент **`dpkg-buildpackage`**.
```bash
cd /home/alexey/projects/workspace-zed/test1/packages/deb
dpkg-buildpackage -us -uc
```
Альтернативные команды:
- `debbuild` или `debuild` - обёртки для dpkg-buildpackage
- `fakeroot debian/rules binary` - ручной запуск сборки (для опытных пользователей)
## Зависимости для сборки
Перед сборкой установите необходимые пакеты:
```bash
sudo apt install debhelper-compat dh-autoreconf nginx build-essential
```
## Процесс сборки
1. `dpkg-buildpackage` запускает debian/rules правила
2. `dh` (debhelper) автоматически выполняет стандартные этапы: configure, build, install
3. Ваш скрипт package_preparer.sh скачивает исходный код nginx и компилирует модуль
4. Скрипты postinst/postrm обрабатывают установку/удаление в системе
## Результат
После успешной сборки будет создан `.deb` файл:
- `nginx-mod-rewrite_0.1-1_amd64.deb` - пакет для установки
## Установка пакета
```bash
sudo dpkg -i nginx-mod-rewrite_0.1-1_amd64.deb
```
## Структура файлов в Debian пакете
| Путь | Описание |
|------|----------|
| `debian/control` | Метаданные пакета (имя, версия, зависимости) |
| `debian/changelog` | История изменений пакета |
| `debian/rules` | Скрипт сборки (makefile-like) |
| `debian/copyright` | Информация об авторских правах и лицензии |
| `debian/postinst` | Пост-скрипт установки (reload nginx после инсталляции) |
| `debian/postrm` | Пост-скрипт удаления (очистка конфига nginx) |
| `debian/triggers` | Триггеры для динамического обновления nginx модулей |
| `modules/mod_rewrite/*` | Исходный код модуля rewrite |
## Отличия от RPM spec
| RPM (`nginx-mod-rewrite.spec`) | Debian (`debian/`) |
|-------------------------------|-------------------|
| `%define`, `%description` | `debian/control` |
| `%prep`, `%build`, `%install` | `debian/rules + dh` |
| `%post`, `%preinst` | `debian/postinst`, `debian/preinst` |
| rpmbuild | dpkg-buildpackage |
## Запуск сборки
```bash
cd /home/alexey/projects/workspace-zed/test1/packages/deb
dpkg-buildpackage -us -uc -A # Не подписываем, не используем чужие ключи, только архитектура

5
packages/deb/changelog Normal file
View File

@@ -0,0 +1,5 @@
nginx-mod-rewrite (0.1-1) unstable; urgency=medium
* New upstream release
-- Alexey Berezhok <a@bayrepo.ru> Fri, 13 Mar 2026 00:00:00 +0000

21
packages/deb/control Normal file
View File

@@ -0,0 +1,21 @@
Source: nginx-mod-rewrite
Section: web
Priority: optional
Maintainer: Alexey Berezhok <a@bayrepo.ru>
Build-Depends: debhelper-compat (=13),
dh-autoreconf,
libssl-dev,
libpcre2-dev,
zlib1g-dev,
nginx (>= 1.4.0)
Standards-Version: 4.7.0
Homepage: https://docs.brepo.ru/nginx-mod-rewrite
Package: nginx-mod-rewrite
Architecture: any
Depends: ${shlibs:Depends}, nginx
Provides: nginx-http-module, nginx-apache-rewrite
Description: Nginx rewrite module dynamic module adding mod_rewrite functionality
Dynamic Nginx module implementing Apache mod_rewrite functionality.
The package is built from Nginx sources and the module's own files, and then
installs only the compiled shared object into /etc/nginx/modules directory.

26
packages/deb/copyright Normal file
View File

@@ -0,0 +1,26 @@
Format: 1.0
Upstream-Name: nginx-mod-rewrite
Upstream-Contact: Alexey Berezhok <a@bayrepo.ru>
Source: https://docs.brepo.ru/nginx-mod-rewrite
Files: *
Copyright: (c) 2026 Alexey Berezhok, All Rights Reserved.
License: Apache-2.0
Files: nginx-*/*
Copyright: (c) 2002-2021 Igor Sysoev
(c) 2011-2021 Nginx, Inc., All Rights Reserved.
License: BSD-3-Clause
Documentation: docs/README.md
Files: modules/mod_rewrite/*.c modules/mod_rewrite/*.h
Copyright: (c) 2026 Alexey Berezhok, All Rights Reserved.
License: Apache-2.0
====
====
====
====

24
packages/deb/postinst Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Pre-installation script - check nginx is available
set -e
if ! command -v dpkg >/dev/null 2>&1; then
echo "dpkg not found." >&2
exit 1
fi
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then
# Verify nginx is installed before proceeding
if ! command -v nginx >/dev/null 2>&1; then
echo "nginx is required for nginx-mod-rewrite." >&2
exit 1
fi
# Check nginx module configuration directory exists
if [ ! -d /etc/nginx/modules ]; then
mkdir -p /etc/nginx/modules || true
fi
fi
exit 0

21
packages/deb/postrm Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
# Post-removal script - clean up nginx module configuration
set -e
if [ "$1" = "purge" ]; then
# Remove module config file if it exists
rm -f /etc/nginx/modules/ngx_http_apache_rewrite_module.conf || true
# Optionally reload nginx to remove unneeded modules from memory
if command -v systemctl >/dev/null 2>&1; then
systemctl reload nginx.service >/dev/null 2>&1 || true
fi
# Alternative for non-systemd systems
if command -v nginx >/dev/null 2>&1; then
nginx -s reload >/dev/null 2>&1 || true
fi
fi
exit 0

28
packages/deb/rules Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/make -f
# Set debhelper compat level
DEBHELPER_COMPAT = 13
export DH_COMPAT=$(DEBHELPER_COMPAT)
export BUILD_DIR = debian/build
export INSTALDIR = debian/nginx-mod-rewrite/usr/share/nginx/modules
export CONFFDIR = debian/nginx-mod-rewrite/etc/nginx/modules
# Set build options
override_dh_auto_build:
bash package_preparer.sh download . system
bash package_preparer.sh build
override_dh_auto_install:
mkdir -p $(INSTALDIR) $(CONFFDIR)
cp *.so $(INSTALDIR)/
echo 'load_module "$(INSTALDIR)/ngx_http_apache_rewrite_module.so";' > \
$(CONFFDIR)/ngx_http_apache_rewrite_module.conf
override_dh_auto_clean:
rm -rf debian/build
rm -f *.so
rm -rf nginx-*
%:
dh $@ --sourcedirectory=.

10
packages/deb/triggers Normal file
View File

@@ -0,0 +1,10 @@
# Nginx module triggers - handles nginx reloading when modules change
# Trigger type: wait allows packages to install themselves after nginx reload completes
nginx/reload-inactive {
nginx-reload
}
nginx/reload-active {
nginx-reload
}