Как перекомпилировать веб-сервер nginx в Debian Linux
Допустим, вы хотите внести некоторые изменения в исходный код nginx
в чтобы добавить или удалить некоторые функции до фактического nginx
установка пакета. В этой конфигурации мы покажем, как перекомпилировать Пакет nginx
в Debian Linux.
Сначала установите инструменты сборки пакетов:
# apt-get install dpkg-dev
Далее нам нужно установить все зависимости сборки nginx
:
# apt-get build-dep nginx
Загрузите исходный код nginx
:
$ mkdir nginx-local
$ cd nginx-local/
$ apt-get source nginx
Приведенная выше команда загрузит все необходимые исходные файлы nginx
. подлежащее изменению используется для сборки пакета Debian *.deb
.
$ tree -L 2
.
├── nginx-1.6.2
│ ├── auto
│ ├── CHANGES
│ ├── CHANGES.ru
│ ├── conf
│ ├── configure
│ ├── contrib
│ ├── debian
│ ├── html
│ ├── LICENSE
│ ├── man
│ ├── README
│ └── src
├── nginx_1.6.2-5.debian.tar.xz
├── nginx_1.6.2-5.dsc
└── nginx_1.6.2.orig.tar.gz
8 directories, 8 files
В качестве примера теперь мы можем изменить исходный код, изменив имя веб-сервера с От nginx
к Частному веб-серверу Labnix
. Изменить строки nginx-1.6.2/src/http/ngx_http_header_filter_module.c
FROM:
static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
TO:
static char ngx_http_server_string[] = "Server: Labnix Private Web Server" CRLF;
static char ngx_http_server_full_string[] = "Server: Labnix Private Web Server" CRLF;
После того, как вы внесли все необходимые изменения в исходный код nginx. пришло время собрать новый пакет *.deb
:
$ cd nginx-1.6.2/
$ dpkg-buildpackage -rfakeroot -uc -b
....
dpkg-deb --build debian/nginx ..
dpkg-deb: building package `nginx' in `../nginx_1.6.2-5_all.deb'.
dpkg-deb --build debian/nginx-doc ..
dpkg-deb: building package `nginx-doc' in `../nginx-doc_1.6.2-5_all.deb'.
dpkg-deb --build debian/nginx-common ..
dpkg-deb: building package `nginx-common' in `../nginx-common_1.6.2-5_all.deb'.
dpkg-deb --build debian/nginx-full ..
dpkg-deb: building package `nginx-full' in `../nginx-full_1.6.2-5_amd64.deb'.
dpkg-deb --build debian/nginx-full-dbg ..
dpkg-deb: building package `nginx-full-dbg' in `../nginx-full-dbg_1.6.2-5_amd64.deb'.
dpkg-deb --build debian/nginx-light ..
dpkg-deb: building package `nginx-light' in `../nginx-light_1.6.2-5_amd64.deb'.
dpkg-deb --build debian/nginx-light-dbg ..
dpkg-deb: building package `nginx-light-dbg' in `../nginx-light-dbg_1.6.2-5_amd64.deb'.
dpkg-deb --build debian/nginx-extras ..
dpkg-deb: building package `nginx-extras' in `../nginx-extras_1.6.2-5_amd64.deb'.
dpkg-deb --build debian/nginx-extras-dbg ..
dpkg-deb: building package `nginx-extras-dbg' in `../nginx-extras-dbg_1.6.2-5_amd64.deb'.
dpkg-genchanges -b >../nginx_1.6.2-5_amd64.changes
dpkg-genchanges: binary-only upload (no source code included)
dpkg-source --after-build nginx-1.6.2
dpkg-buildpackage: binary-only upload (no source included)
Новые перекомпилированные пакеты теперь готовы к установке:
$ cd ..
$ ls
nginx-1.6.2 nginx_1.6.2-5_amd64.changes nginx_1.6.2-5.dsc nginx-common_1.6.2-5_all.deb nginx-extras_1.6.2-5_amd64.deb nginx-full_1.6.2-5_amd64.deb nginx-light_1.6.2-5_amd64.deb
nginx_1.6.2-5_all.deb nginx_1.6.2-5.debian.tar.xz nginx_1.6.2.orig.tar.gz nginx-doc_1.6.2-5_all.deb nginx-extras-dbg_1.6.2-5_amd64.deb nginx-full-dbg_1.6.2-5_amd64.deb nginx-light-dbg_1.6.2-5_amd64.deb
Установите nginx
из недавно собранных пакетов:
# dpkg -i nginx_1.6.2-5_all.deb nginx-full_1.6.2-5_amd64.deb nginx-common_1.6.2-5_all.deb nginx-doc_1.6.2-5_all.deb
Проверьте статус статуса веб-сервера:
systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Wed 2015-04-15 09:46:53 AEST; 1min 18s ago
Process: 3535 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3534 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3538 (nginx)
CGroup: /system.slice/nginx.service
├─3538 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3539 nginx: worker process
├─3540 nginx: worker process
├─3541 nginx: worker process
└─3542 nginx: worker process
Подтвердите изменение имени сервера:
# curl -I http://localhost
HTTP/1.1 200 OK
Server: Labnix Private Web Server
Date: Tue, 14 Apr 2015 23:49:37 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 14 Apr 2015 23:45:07 GMT
Connection: keep-alive
ETag: "552da683-363"
Accept-Ranges: bytes