Added mod_rewrite for nginx module
This commit is contained in:
68
packages/deb/README.build
Normal file
68
packages/deb/README.build
Normal 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
5
packages/deb/changelog
Normal 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
21
packages/deb/control
Normal 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
26
packages/deb/copyright
Normal 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
24
packages/deb/postinst
Executable 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
21
packages/deb/postrm
Executable 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
28
packages/deb/rules
Executable 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
10
packages/deb/triggers
Normal 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
|
||||
}
|
||||
58
packages/rpm/nginx-mod-rewrite.spec
Normal file
58
packages/rpm/nginx-mod-rewrite.spec
Normal file
@@ -0,0 +1,58 @@
|
||||
%define name nginx-mod-rewrite
|
||||
%define version 0.1
|
||||
%define release 1%{?dist}
|
||||
%define summary "Nginx rewrite module – dynamic module adding mod_rewrite functionality"
|
||||
%define license Apache-2.0
|
||||
%define url https://docs.brepo.ru/nginx-mod-rewrite
|
||||
%define packager "Alexey Berezhok <a@bayrepo.ru>"
|
||||
%global nginx_moduledir %{_libdir}/nginx/modules
|
||||
%global nginx_moduleconfdir %{_datadir}/nginx/modules
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
Summary: %{summary}
|
||||
License: %{license}
|
||||
URL: %{url}
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
BuildRequires: openssl-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: bash
|
||||
BuildRequires: wget
|
||||
Requires: nginx
|
||||
|
||||
%description
|
||||
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 the /etc/nginx/modules directory.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
bash package_preparer.sh download . system
|
||||
bash package_preparer.sh build
|
||||
|
||||
%install
|
||||
# Install only the dynamic module
|
||||
mkdir -p %{buildroot}%{nginx_moduledir} %{buildroot}%{nginx_moduleconfdir}
|
||||
cp *.so %{buildroot}%{nginx_moduledir}
|
||||
echo 'load_module "%{nginx_moduledir}/ngx_http_apache_rewrite_module.so";' \
|
||||
> %{buildroot}%{nginx_moduleconfdir}/ngx_http_apache_rewrite_module.conf
|
||||
|
||||
%post
|
||||
if [ $1 -eq 1 ]; then
|
||||
/usr/bin/systemctl reload nginx.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
|
||||
%attr(0640,root,root) %{nginx_moduleconfdir}/ngx_http_apache_rewrite_module.conf
|
||||
%attr(0755,root,root) %{nginx_moduledir}/ngx_http_apache_rewrite_module.so
|
||||
|
||||
|
||||
%changelog
|
||||
Reference in New Issue
Block a user