Показаны сообщения с ярлыком Apache. Показать все сообщения
Показаны сообщения с ярлыком Apache. Показать все сообщения

13 февр. 2014 г.

Установка системы мониторинга Nagios Core 4 на Linux Debian 6

Недавно возникла необходимость установить систему мониторинга Nagios Core 4 на сервер под управлением Linux Debian 6 (Squeeze). Здесь изложу свой опыт. В принципе, на Debian 7, Ubuntu, а также RHEL-ы (CentOS, Oracle Linux, Fedora) Nagios ставится походим образом. Необходимо лишь учитывать особенности путей на этих системах и наименования пакетов для установки.

Подробнее про Nagios, различие его редакций и т. д. можно прочитать на официальном сайте проекта.

Планируется установить следующие компоненты:

  • Nagios Core, 
  • Nagios Plugins, 
  • NRPE, 
  • Nagios V-Shell (симпатичный фронт-энд для Nagios Core). 

Установить можно как из пакетов, так и путём компиляции из исходников. В данной статье использован второй метод, т. к. он обеспечивает инсталляцию наиболее последней версии Nagios, а так же лучшую интеграцию компонентов между собой.

22 нояб. 2013 г.

Полезные Bash Shell команды и однострочные скрипты

Т. к. количество всяких полезный команд и скриптиков для консоли Linux неуклонно растет и всех их не упомнишь, буду записывать сюда что-нибудь эдакое полезное.

Статья будет дополняться.

1. Сделать что-либо со всеми файлами в папке, например, распаковать все zip архивы в текущей папке:

for f in *.zip ; do unzip $f ; done

2. То же самое, только с файлами из поддиректорий текущей. Например, установить rpm пакеты:

for D in *; do [ -d "${D}" ] && yum install ${D}/*.rpm ; done

3. Добавить пользователя в группу:

usermod -a -G group user

4. Как расшарить содержимое папки по протоколу HTTP.
Заходим в нужную папку и выполняем команду:

python -m SimpleHTTPServer 8080

Далее зайдя в браузере по адресу http://ip_of_that_server:8080, мы увидим содержимое с возможностью навигации и скачивания файлов:

5. Получение информации о Virtual Hosts для apache2 в Debian Linux:

apache2ctl -t -D DUMP_VHOSTS

6. Создание файла заданного размера:

truncate -s 14M filename

7. Замена строчек в текстовом файле:

sed -Ei 's/foo|bar|baz/foobar/g' file

Заменить foo, bar или baz на foobar

8. Подмонтировать CD-ROM с указанием типа файловой системы:

mount -t iso9660 /dev/scd0 /media/cdrom

26 нояб. 2012 г.

Hello world! с помощью mod_python

Написание сайта с использованием mod_python состоит из двух этапов: конфигурирование сервера (apache) и собственно написание кода.

1. Конфигурация сервера:

Вначале установим модуль, если его еще нет:

aptitude install libapache2-mod-python
a2enmod python

Подредактируем, например, на Debian файл /etc/apache2/sites-available/default :


<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory /var/www/>
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddHandler mod_python .py        #говорит апачу передавать обработку файлов *.py в mod_python
                PythonHandler index                     #говорит, в каком файле находится обработчик хэндлеров.
                DirectoryIndex index.py                #указывает, какой файл отображается по-умолчанию в директории
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        AddHandler mod_python .py
        PythonHandler mod_python.publisher
        PythonDebug On                                  #включает выведение ошибок в браузер - удобно пр иотладке
        DirectoryIndex index.py
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

10 сент. 2012 г.

Авторизация в Apache c помощью MySQL (mod-auth-mysql)

MySQL авторизация - неплохой вариант, особенно для сайтов, использующих эту БД.
Порывшись в инете, разобрался, как её настроить и вот шаги, котором следует последовать :)

1. Устанавливаем необходимый софт (имеется в виду, что веб-сервер уже есть и настроен):

apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql


2. Создаем для примера БД:

mysql -u root -p
mysql> grant all on auth.* to auth_user@localhost identified by '<auth_password>';
mysql> flush privileges;
mysql> create database auth;
mysql> use auth;
mysql> CREATE TABLE `clients` (
`username` varchar(25) NOT NULL default '',
`passwd` varchar(25) NOT NULL default '',
`groups` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `clients` VALUES ('<username>', '<password>', '<group>');


3. Редактируем файл виртуалхоста (или .htaccess нужной папки), например:

nano /etc/apache2/sites-available/default


<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All

        </Directory>
        <Directory /var/www/>    
                AuthMYSQL on     #включает авторизацию по мускулю
                AuthMySQL_Authoritative on
                AuthMySQL_DB auth     #имя БД, в которой находится наша авторизация
                AuthMySQL_Host 127.0.0.1     #адрес или имя хоста с мускулем

                #AuthMySQL_Port 3306     #порт, если отличен от дефолтового
                #AuthMySQL_Socket <socket>    #сокет, если используется

                AuthMySQL_User auth_user     #пользователь БД
                AuthMySQL_Password <auth_password>     #пароль пользователя БД
                AuthMySQL_Password_Table clients     #таблица паролей
                AuthMySQL_Username_Field username     #поле, содержащее имя пользователя
                AuthMySQL_Password_Field passwd     #поле, содержащее праоль пользователя
                #AuthMySQL_Group_Table clients     #поле, содержащее принадлежность к группе
                AuthMySQL_Empty_Passwords off     #запретить пустые пароли
                Auth_MySQL_Encrypted_Passwords off    #если on - указывается, что пароли зашифрованы
                AuthMySQL_Encryption_Types Plaintext     #типа шифрования - может быть Plaintext, Crypt_DES, MySQL. Можно через пробел указывать несколько методов, которые будут использоваться по-очереди
                AuthBasicAuthoritative Off     #Отключить Basic-авторизацию - какойто костыль, без него не работает
                AuthUserFile /dev/null     #типа файл с паролями - тоже костыль
                Require valid-user     #требовать авторизацию. Тут также можно указывать имена групп (несколько - через пробелы): Require group assassins templars .Или конкретных пользователей: Require user leonardo vincent .Это удаобно, если прописывать опции в .htaccess
                AuthName "Please Auth!"     #приветствие
                AuthType Basic #костыль
                <Limit GET POST> #ограничения для запросов                Require valid-user     
                </Limit>     

                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddHandler mod_python .py
                PythonHandler index
        </Directory>

30 авг. 2012 г.

Установка RoundCube Webmail

Сразу определюсь: ОС - Debian, MTA - Postfix, использую только защищенные подключения, веб-сервер Apache + modphp5.
В Debian, как всегда, есть два пути - ставить из сорцов или из пакетов. Я выбрал 2й путь.

apt-get install roundcube roundcube-mysql libapache2-mod-evasive
nano /etc/apache2/conf.d/roundcube

Добавляем строчки:

Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/

Alias /roundcube /var/lib/roundcube

chown -R www-data /var/lib/roundcube/
nano /var/lib/roundcube/config/main.inc.php

Здесь прописываем конфиги для своего почтового сервера. Пример:

$rcmail_config['force_https'] = TRUE;
$rcmail_config['default_host'] = 'ssl://localhost:993';
$rcmail_config['imap_auth_type'] = 'check';
$rcmail_config['smtp_server'] = '127.0.0.1';
$rcmail_config['smtp_port'] = 465;

$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';

$rcmail_config['smtp_auth_type'] = 'LOGIN';

6 авг. 2012 г.

Настройка почты в Redmine

Здесь я опишу настройку Redmine для отправки почты через свой почтовый сервер.

Redmine настроен на сервере Linux Debian 6 через mod_passenger веб-сервера apache2

В зависимости от вашей инсталляции редактируем файл /etc/redmine/default/email.yml (Debian, из пакетов) или /usr/share/redmine/config/email.yml (смотрите, не перепутайте, типа как я - и парился, почему ж оно не вхавывает новые настройки... :) ) и прописываем настройки, заменив адреса и т. д. на свои:


production:
  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: "redmine@mydomain.com"
    password: "Password"


development:

  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: "redmine@mydomain.com"
    password: "Password"

17 февр. 2012 г.

Генерация самоподписанного сертификата для Apache

Cтавим openssl если еще нет, затем топаем в папку, где будут лежать сертификаты, например, /etc/ssl/ и юзаем команду чтобы сгенерировать ключ:

openssl genrsa -des3 -out server.key 1024

опция -des3 отвечает за пароль, если ее не указывать, ключ будет без пароля.

Далее генерируем CSR? заполнив всё, что команда спрашивает:

openssl req -new -key server.key -out server.csr

Теперь генерируем самоподписанный сертификат:

openssl x509 -req -days 700 -in server.csr -signkey server.key -out server.cert

Пароли лучше не делать.

Теперь можно юзать наши сертификаты в виртуальных хостах апача:

SSLCertificateFile /etc/ssl/server.cert
SSLCertificateKeyFile /etc/ssl/server.key

4 февр. 2012 г.

Редирект сабдомена в папку сайта

Делается это следующим рэгэкспом, записанным в конфиге апача httpd.conf (apache2.conf),  виртуального хоста или в файле .htaccess в папке:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.sub.domain.com)|(sub.domain.com .com) [NC]
RewriteRule ^(.*)$ http://domain.com/dest_folder/$1 [L,R=301]

26 янв. 2012 г.

Редирект одной страницы на её SSL версию в Apache

В конфиге виртуального хоста или в файле .htaccess нужной директории пишем:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^page_for_ssl.php$ https://www.domain.com/page_for_ssl.php [R=301,L]

12 янв. 2012 г.

Установка и настройка mod_evasive для Apache в CentOS (защита от DOS, DDOS)

mod_evasive - очень интересный модуль для Апача для автоматического бана IP-шников при DOS (DDOS) атаке.

Устанавливаем сам модуль (имеется в виду, что у вас уже установлен и настроен сам Апач):

yum install mod_evasive

Для Debian: aptitude install libapache2-mod-evasive

Далее редактируем конфиг (в принципе, там всё по-умолчанию уже нормально настроено):

nano /etc/httpd/conf.d/mod_evasive.conf

Описание настроек:
  • DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
  • DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени.
  • DOSSiteCount: число запросов ко всем страницам домена, т.е если поступило более 50-ти запросов с одного ай-пи на разные страницы домена — тогда такой ай-пи будет заблокирован.
  • DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
  • DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
  • DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
  • DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован.
  • DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется. Вы можете использовать это для добавления IP-адреса в таблицу фаервола. (пример: «/sbin/iptables -A INPUT -p tcp —dport 80 -s %s -j REJECT» В %s передается от модуля IP)
  • DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)
Единственное что - следует добавить в конец для логов: DOSLogDir /var/log/httpd/mod_evasive
Далее создадим директорию, в которую будут кидаться логи:

mkdir /var/log/httpd/mod_evasive

Редактируем конфиг апача:

nano /etc/httpd/conf/httpd.conf

Добавляем в конфиг строчку для загрузки модуля (для Debian - a2enmod mod-evasive):

LoadModule evasive20_module modules/mod_evasive20.so

Перезагружаем апач чтобы изменения вступили в силу:

/etc/init.d/httpd reload

Всё. Проверяем с помощью скрипта (ставится вместе с модулем):

perl /usr/share/doc/mod_evasive-1.10.1/test.pl

Если первые сколько-то там запросов 200 или 404, а затем 403 - значит, всё настроено правильно и работает. Для Debian скрипт находится в /usr/share/doc/libapache2-mod-evasive/examples/test.pl

5 янв. 2012 г.

Установка apache php mysql на centos 5.7

В принципе, всё просто, но если давно не делал - то туговато вспоминается как заставить апач контачить с пхп :)

В общем, устанавливаем необходимые пакеты командой:

yum install httpd httpd-devel php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml mysql-server
Далее запускаем апач и мускуль и добавляем их в автозагрузку:

/etc/init.d/httpd start
/etc/init.d/mysqld start
chkconfig mysqld on
chkconfig httpd on


Затем правим конфиг апача:

nano /etc/httpd/conf/httpd.conf

Находим строчку, раскомментируем, и вписываем туда своё доманное имя:

#ServerName http://www.example.com:80

Перезагружаем апач, чтобы изменения вступили в силу:

/etc/init.d/httpd reload

Далее для теста создаем файлик в дефолтном виртуалхосте:

nano /var/www/html/phpinfo.php

В файлик записываем:

<?php phpinfo(); ?>

Сохраняем и проверяем: http://ip.address/phpinfo.php

Если видим страничку с информацией о пхп - всё получилось.

Можно еще установить пароль на пользователя root в mysql:

/usr/bin/mysqladmin -u root password 'passwd'

24 нояб. 2011 г.

Ошибка апача: [warn] _default_ VirtualHost overlap on port 443, the first has precedence

Такая ошибка вылазит при перезагрузке или переконфигурировании апача.

Причина такой ошибки очень простая - в конфиге апача (httpd.conf, apache2.conf - смотря какой линукс у вас) не хватает строчки:

NameVirtualHost *:443

Добавьте - и будет вам счастье :)

Настройка mod_proxy в Apache

В общем, был такой таск: есть у нас локальная сетка и маршрутизатор Peplink. В локальной сетке на многих тазиках крутятся сайты, которые должны быть доступны извне. Как это сделать? Разносить по портам - не вариант, т. к. пользователю неудобно всё-таки набирать  URL типа блаблабла:8081. Решение - использовать HTTP-прокси, а на тазик с ним открыть в маршрутизаторе порты 80, 443. Для проксирования обычно используют nginx, но апач тоже отлично справляется с этой задачей.

Так сложилось, что тазик с прокси был Убунтой (клиент категорически н ехотел работать с другими дистрибутивами Linux), а "в Убунте всё не как у людей" (с) :) потому конфигурация её несколько отличается от других дистрибутивов. Но, приняв философию Убунты, я понял, что многие решения в ней очень даже удобны, хотя некоторые мне не нравятся - например, отсутствие пользователя root. Но это уже философия, грозящая холиваром, потому перейдем к делу :)

В убунте манипулирование апачем происходит с помощью глобальных команд: включение/выключение виртуал хостов - a2ensite / a2dissite с одним аргументом - пути к конфигу, в котором прописан виртуал хост. Включение/выключение модов или расширений происводится командами a2enmod / a2dismod.

В общем, алгоритм работы такой:

1) Нужно включить необходимые модули апача. Устанавливаем:

sudo apt-get install libapache2-mod-proxy-html libapache2-mod-gnutls

Разрешаем:

sudo a2enmod proxy
sudo a2enmod ssl
sudo a2enmod cache
sudo /etc/init.d/apache2 restart

2) Делаем конфиг виртуал хоста (по 1му файлу на 1 хост!) и помещаем его в /etc/apache2/sites-available. Пример HTTPS конфига проксирования на тазик с Confluence - это такая джавовская веб-морда для программистов и не только, работающая на Apache Tomcat (с портом 8444):

10 нояб. 2011 г.

Установка SVN + mod-dav в Linux

Недавно был такой таск - установить на клиентский тазик связку svn + mod_dav для апача с соединением по HTTPS. ОС там была Ubuntu, а в ней настройка апача не совсем как везде :) Так что смотрите.

Пошагово делаем так:

1. Устанавливаем subversion:

sudo apt-get install subversion libapache2-svn apache2

2. Включаем ssl модуль для апача. Если нам ssl не нужен, то пропускаем пункты 2-4.

sudo a2enmod ssl

6 окт. 2011 г.

Настройка mass virtual hosting для Apache (Linux)


В общем, идея масс виртуал хостинга состоит в том, что у нас есть папочка на сервере, мы в ней создаем подпапку с именем в виде названия нашего сайта - и всё, виртуальный хост готов, не надо править никакие конфиги и т. д. В моем случае папка для виртуал хостов была /srv/http/vhosts, затем название сайта, например site1.example.int, а вся начинка в подпапке сайта public. Т. е. заглавная страница сайта: /srv/http/vhosts/site1.example.int/public/index.php

Для реализации этого добавляем в конец конфига апача (httpd.conf) следующее:

RewriteEngine On
## Create a handle to convert upper or mixed-case to lower-case
RewriteMap lowercase int:tolower


##-----------------------------------
## where hostname has www prefix
##-----------------------------------
## Firstly create custom variable that contains the host without the www prefix
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule .? - [E=noWWWHost:%1]

9 сент. 2011 г.

Установка веб-сервера Apache на Linux Gentoo с использованием разных версий php на разных виртуалхостах

Я не проггер, потому не могу сказать, какие там отличия у php 5.2 и php 5.3, но они есть и иногда возникает необходимость девелопить под ту или другую версии. Сейчас я поведаю вам, как это реализовать на одной машине с Gentoo Linux.

Для начала устанавливаем апач и оба пхп. Там надо немного поколдовать с  USE - у меня уже не сохранился лог моих мучений) но у вас всё получится - я уверен: оно, как правило, пишет чего ему не хватает и остается только подключить это.

Для того чтобы подключить два mod_php к разным apache на разных IP нужно две разных конфигурации для apache (да и два разных запущенных apache). В Gentoo, к счастью, это делается очень просто. Скрипт запущенный из /etc/init.d/ будет искать себе начальную конфигурацию в /etc/conf.d/ согласно своему префиксу: скрипт /etc/init.d/apache2 получит конфигурацию из /etc/conf.d/apache2, /etc/init.d/apache2.php52 из /etc/conf.d/apache2.php52, /etc/init.d/apache2.php53 из /etc/conf.d/apache2.php53. Таким образом просто делая линки на оригинальный скрипт из /etc/init.d мы можем передавать разные параметры программе. В нашем случае это будут разные Define директивы апачу (через флаг -D). Это позволит использовать один конфигурационный файл разделив нужные нам опции директивами IfDefine.

Разделять директивами следует те ресурсы, которые не могут совместно использоваться разными процессами apache, например лог-файлы, pid-файлы. Или разную функциональность, например разные версии mod_php или разные сертификаты SSL.

Настройка всего этого хозяйства.

Для начала создаем себе 2-й IP адрес:

ifconfig eth0:0 10.10.7.249

Для того чтобы меньше менять в конфигурации примем стандартные определения - для того чтобы грузится с PHP 5.2 апачу нужно передать -D PHP52, а для PHP 5.3 соотвественно -D PHP53. Добавим к этим двум еще и определение -D TWO_PHP, что позволит нам иметь три разных конфигурации:

  • если неопределено TWO_PHP (что есть по-умолчанию), то будем иметь апач настроенный по-умолчанию (удобно для тестирования и отладки глюков других конфигураций)

  • если определено TWO_PHP & PHP52 - получаем апач с PHP 5.2

  • если определено TWO_PHP & PHP53 - получаем апач с PHP 5.3

Соответственно делаем два линка на стартовый скрипт:

ln -s apache2 /etc/init.d/apache2.php52
ln -s apache2 /etc/init.d/apache2.php53


Копируем и изменяем настройки в /etc/conf.d:

cp /etc/conf.d/apache2{,.php52}
cp /etc/conf.d/apache2{,.php53}


в apache2.php52:


APACHE2_OPTS="-D PHP52 -D TWO_PHP ..."

в apache2.php53:

APACHE2_OPTS="-D PHP53 -D TWO_PHP ..."

Также в этих двух файлах меняем директорию PIDFILE.

httpd.conf от стандартного отличается следующим:


<IfDefine !TWO_PHP>
   Listen 80

</IfDefine>
<IfDefine TWO_PHP>
   <IfDefine PHP52>
     Listen 10.10.7.7:80
   </IfDefine>
   <IfDefine PHP53>
     Listen 10.10.7.249:80
   </IfDefine>
</IfDefine>


Include /etc/apache2/vhosts.d/*.conf

Понятно, что в listen указываем свои IP, а Include нужен для поддержки виртуал хостов.

vhosts.confбудет таким:

<VirtualHost site1.example.int> 
   ServerName site1.example.int
   DocumentRoot "/var/www/php5.2/"
   <Directory "/var/www/php5.2">
     Options Indexes FollowSymLinks
     DirectoryIndex index.php
     AllowOverride All
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

<VirtualHost site2.example.int>
   ServerName site2.example.int
   DocumentRoot "/var/www/php5.3/"
   <Directory "/var/www/php5.3"> 
     Options Indexes FollowSymLinks
     AllowOverride All
     DirectoryIndex index.php
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

Также надо подправить файлик /etc/httpd/modules.d/70_mod_php5.conf:

IfDefine PHP5> # Load the module first
<IfModule !mod_php5.c>
   LoadModule php5_module modules/libphp5.so
</IfModule>

# Set it to handle the files
<IfModule mod_mime.c>
   AddHandler application/x-httpd-php .php .php5 .phtml
   AddHandler application/x-httpd-php-source .phps
</IfModule>
   DirectoryIndex index.php index.phtml
</IfDefine>

<IfDefine TWO_PHP>
   <IfDefine PHP52>
     LoadModule php5_module /usr/lib/php5.2/apache2/libphp5.so
   </IfDefine>
   <IfDefine PHP53>
     LoadModule php5_module /usr/lib/php5.3/apache2/libphp5.so
   </IfDefine>
<IfModule mod_mime.c>
   AddHandler application/x-httpd-php .php .php5 .phtml
   AddHandler application/x-httpd-php-source .phps
</IfModule>
</IfDefine>

Также, если не настроен ДНС у вас, то не забываем вписать в /etc/hosts наши домены:

10.10.7.7      site1.example.int
10.10.7.249    site2.example.int


Вроде бы всё... Запускаем:

/etc/init.d/apache2.php52 start

Проверяем 1й IP (пофиг проверяем, даже если ругается апач что не стартует - у меня ругался, но работал :) ).
 Затем удаляем PID файл апача:

rm /var/run/apache2

Магия запуска двух апачей с разными PID файлами мне пока еще не доступна, потому так по-китайски делаем :)

/etc/init.d/apache2.php53 start

Всё должно работать теперь.

Кстати, не забудьте в директории /var/www/php5.3 и /var/www/php5.2 для проверки кинуть файлик index.php с содержимым:

<? php
phpinfo();
/> 

Всем спасибо за внимание :) 

Автоматический редирект с http версии на ssl (https) версию сайта в Apache

Чтобы решить этот маленький квест нужно в конфиге апача (httpd.conf) прописать следующее:

RewriteEngine On 
RewriteCond %{SERVER_PORT} !443 
RewriteRule (.*) https://localhost/ [R]

Вместо  https://localhost/ вписываем название своего домена.

З. Ы. Чтобы заработало, надо или собрать апач с поддержкой mod-rewrite или чтобы этот модуль был включен:

LoadModule rewrite_module modules/mod_rewrite.so