Архив рубрики «debian»

debian: ошибка при сборке apache 1.3.41

06.12.2009

При сборке apache 1.3.41 под debian 5.0 lenny возникает ошибка: отсутствует ndbm.h:

$ ./configure \
  --prefix=/usr/local/apache \
  --enable-module=most \
  --enable-shared=max \
$ make
...
mod_auth_dbm.c:42:18: error: ndbm.h: No such file or directory
mod_auth_dbm.c: In function ‘get_dbm_pw’:
mod_auth_dbm.c:110: error: ‘DBM’ undeclared (first use in this function)
mod_auth_dbm.c:110: error: (Each undeclared identifier is reported only once
mod_auth_dbm.c:110: error: for each function it appears in.)
mod_auth_dbm.c:110: error: ‘f’ undeclared (first use in this function)
mod_auth_dbm.c:111: error: ‘datum’ undeclared (first use in this function)
mod_auth_dbm.c:111: error: expected ‘;’ before ‘d’
mod_auth_dbm.c:114: error: ‘q’ undeclared (first use in this function)
mod_auth_dbm.c:128: error: ‘d’ undeclared (first use in this function)
make[4]: *** [mod_auth_dbm.so] Error 1
make[3]: *** [all] Error 1
make[2]: *** [subdirs] Error 1
make[2]: Leaving directory `/usr/src/apache_1.3.41/src'
make[1]: *** [build-std] Error 2
make[1]: Leaving directory `/usr/src/apache_1.3.41'
make: *** [build] Error 2

Поиск по содержимому пакетов показывает, что такого файла в пакетах debian нет. Пишут, что раньше он входил в состав libc6. В одном из листов рассылки было найдено такое решение:

$ sudo apt-get install libgdbm-dev
$ ln -s /usr/include/gdbm-ndbm.h /usr/include/ndbm.h

Что интересно, работает.

debian: добавляем в iptables поддержку ip sets (ipset)

27.10.2009

IP Sets – расширение пакетного фильтра ядра iptables, которое позволяет комфортно работать с большими наборами адресов/сетей. При написании правил iptables при этом мы оперируем именованными списками.

Это, пожалуй, единственный на сегодняшний день доступный способ писать правила для большого количества хостов/сетей, не перечисляя каждый из них в отдельном правиле. Если ваш сайт, работающий под linux, подвергается DDOS, вы наверняка уже знаете про IP Sets. Если нет - http://ipset.netfilter.org/.

Утилита ipset живет в одноименном пакете, а все необходимые патчи ядра входят в состав пакета netfilter-extensions-source, который собирается и устанавливается при помощи утилиты module-assistant (которая для удобства имеет более короткое имя: m-a).

Примерный сценарий установки ip sets выглядит так:

$ sudo apt-get install ipset
$ sudo apt-get install netfilter-extensions-source
$ uname -a
Linux host.domain.tld 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686 GNU/Linux
# версия пакета linux-headers должна совпадать с версией ядра, для которого собирается netfilter-extensions
$ sudo apt-get install linux-headers-2.6.26-1-686
$ sudo m-a build netfilter-extensions
$ sudo m-a update && m-a a-i netfilter-extensions

Версия пакета заголовков ядра должна точно соответствовать версии активного ядра, для которого собирается ipset.

firefox: оптимизация внутренних баз данных sqlite

26.08.2009
$ find .mozilla/firefox -type f -name "*.sqlite" -exec time sqlite3 \{\} "VACUUM" ";"

via

Создание /etc/init.d/nginx на debian 5.0 lenny

05.06.2009
$ sudo vim /etc/init.d/nginx

Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM):

#!/bin/sh
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $remote_fs $syslog $named $network $time
# Required-Stop:     $remote_fs $syslog $named $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start nginx at boot time
# Description:       Enable service provided by nginx.
### END INIT INFO
# $Id$
 
NGINXHOME=/usr/local/nginx
NGINXPID=$NGINXHOME/logs/nginx.pid
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=$NGINXHOME/sbin/nginx
NAME=nginx
DESC=nginx
 
if [ ! -x $DAEMON ]
then
   echo "Couldn't find $DAEMON. Please set path to DAEMON."
   exit 0
fi
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
	. /etc/default/nginx
fi
 
set -e
 
case "$1" in
  start)
	echo -n "Starting $DESC: "
	start-stop-daemon --start --pidfile $NGINXPID \
		--exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --pidfile $NGINXPID \
		--exec $DAEMON
	echo "$NAME."
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --pidfile \
		$NGINXHOME/run/$NAME.pid --exec $DAEMON
	sleep 1
	start-stop-daemon --start --pidfile \
		$NGINXPID --exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --pidfile $NGINXPID \
          --exec $DAEMON
      echo "$NAME."
      ;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac
 
exit 0

Сохраняем скрипт и выходим из vim.

Делаем скрипт исполняемым:

$ sudo chmod 755 /etc/init.d/nginx

Указываем, что nginx нужно запускать при запуске и остановке сервера:

$  sudo /usr/sbin/update-rc.d -f nginx defaults

UPD: Блок, заключенный между строками

### BEGIN INIT INFO
### END INIT INFO

обеспечивает LSB-совместимость. Подробнее см. http://wiki.debian.org/LSBInitScripts

Установка nginx на debian 5.0 lenny

04.06.2009

На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx.

Ставим gcc, make, и компания:

$ sudo apt-get install build-essential

Библиотеки для сборки nginx:

$ sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev

Для поддержки встроенного Perl добавляем:

$ sudo apt-get install libperl-dev

Собственно процесс сборки и установки (вместо 0.7.XX впишите номер актуальной версии):

$ wget http://sysoev.ru/nginx/nginx-0.7.XX.tar.gz
$ tar zxvf nginx-0.7.XX.tar.gz
$ ln -s nginx-0.7.XX nginx
$ cd nginx
$ ./configure \
--prefix=/usr/local/nginx \
--with-cc-opt="-I /usr/include" \
--with-ld-opt="-L /usr/lib" \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_perl_module  \
--with-http_ssl_module
 
$ make && make install
 

Обратите внимание, параметры

--with-cc-opt="-I /usr/include" --with-ld-opt="-L /usr/lib"

указывают на расположение системных заголовков и библиотек, без них configure не видит ряда системных библиотек.