postfix из исходников, postfixadmin | FreeBSD, Lighttpd, Postfix

Postfix
На старом серваке пришлось ставить postfix. Портов нет, база pkg старая. pkg можно использовать, настроить в его конфиге путь к месту где раположено дерево под вашу версию freebsd и сделать pkg update. Вполне будет все работать. Но там нет postfix собранного с mysql и поддержкой ssl/tls. Что делать? Собрать из исходников.
Важно. По дефолту postfix собирается без mysql, и поддержки cyrus.
Качаем исходники, распаковывем. Перед сборкой делаем (проверяем пути к библиотекам: usr/local/include/sasl, /usr/local/lib/mysql и остальное!!!) чтобы собрались нужные модули:

make -f Makefile.init makefiles 'CCARGS=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -DUSE_TLS -I/usr/include/openssl -DHAS_MYSQL -I/usr/local/include/mysql' 'AUXLIBS=-L/usr/local/include/sasl -lsasl2 -L/usr/local/lib -lssl -lcrypto' \
    'AUXLIBS_MYSQL=-L/usr/local/lib/mysql -lmysqlclient -lz -lm'

После этого собираем и ставим. Можем поймать ошибки при сборке и установке, ещё раз проверяем пути, и наличие файлов которые просят. при утсановке поймал баг – со всеми модулями крашится, то поддежрка mysql ставится, добавляем цирус ловим баг, то наоборот. Строка выше – как раз вариант который нормально завелся, последовательность важна в моем случае.
Проверяем (ищем mysql):

postconf -m

Проверяем (ищем cyrus)

postconf -a

Posfixadmin
Postfixadmin также лучше скачать версию типа 2.3 если раньше пользовались ей (под php56). На lighttpd распаковываем в корень, настраиваем config.php.inc: пароль на базу, пароль для скрипта setup.php, меняем переменную «настроена» на true. С главной страницы заходим в сетап, проверяет софт, соединение с базой, заводим админа. Все, лайти должна работать с постфиксадмином из коробки (если у вас он уже настроен).
В версии 2.3 ошибка на переменную
Fatal error: Cannot redeclare hex2bin() in /your/path/functions.inc.php on line 1338
В functions.inc.php меняем имя функции на convertHex2bin

#function hex2bin ($str)
function convertHex2bin ($str)

SEO, opencart, lighttpd | Lighttpd

По умолчанию opencart поставляется с файлом .htaccess для апача. Пути типа

/index.php?route=product/product*&manufacturer_id=

закрыты для поисковиков в роботс чтобы избежать дублей страниц если у нас включен SEO (ЧПУ). И поэтому наш магазин не индексируется поисковиками. Надо либо настроить SEO либо убрать ограничения из роботс.

Но поскольку мы работаем на lighttpd нам нужно просто прописать редирект, аналогичный описанному в правилах для апача.

Добавляем в описание хоста лайти:

url.rewrite-once = ( "^/$" => "/index.php?route=common/home" )
url.rewrite-if-not-file = ( "^/(.*)" => "/index.php?_route_=$1" )

В конфиге лайти снимаем комментарий с «mod_rewrite»,

server.modules = (
  "mod_access",
  "mod_auth",
 "mod_redirect",
  "mod_rewrite",
)

Включаем SEO на opencart. Если у нас прописан для товара SEO алиас – все будет работать.
В админку входим по пути site/admin/index.php

Сжимаем трафик lighttpd с помощью mod_compress | FreeBSD, Lighttpd

По дефолту лайти не сжимает файлы которые отдает. Настроим модуль mod_compress который позволит отдавать клиентам сжатые версии файлов (css, xml, javascript, html, txt).
Продолжить чтение →

Настройка виртуального хоста (simple_vhost) в Lighttpd | FreeBSD, Lighttpd

Понадобилась настройка виртуальных хостов в lighttpd. В лайти есть три модуля которые отвечают за виртуальные хосты – я использовал самый простой – simple_vhost. Поскольку с поисковиках внятного мануала по быстрой настройке быстро не нашел – пишу себе на заметку.

Итак – первое – в modules.conf расскоментируем строку:

include "conf.d/simple_vhost.conf"

В комментариях к конфигу сказано что мы можем использовать только один модуль. Ну и хорошо – будем использовать simple_vhost.

Далее все просто. Если мы не хотим описывать каждый vhost в конфиге просто правим в simple_vhost.conf несколько переменных:

simple-vhost.server-root   = "/usr/local/www/vhosts/"
simple-vhost.default-host  = "example.com"
simple-vhost.document-root = "/"

Соответсвенно директория /usr/local/www/vhosts/ должна существовать, права выставляем для пользователя под которым работает лайти.

Что дает эта инструкция. Мы поределяем директорию где лежат папки с файлами вирт хостов. Создавая папку /usr/local/www/vhosts/my.example.com мы создаем вирт хост. Никаких дополнительных настроек не нужно (ну естественно кроме настройки ДНС, но к лайти это отношения не имеет). Лайти сам просмотрит директорию вирт хостов, найдет папку совпадающую с именем запроса (http://my.example.com) и обслужит запрос. Если папку с фалами вирт хоста не обнаружат – то выдаст дефолтный хост.
Подробнее о том как формируется путь к дефолтному хосту и вся логика можно посмотреть на странице вики lighttpd: http://redmine.lighttpd.net/wiki/1/Docs:ModSimpleVhost

Другой путь – описать виртуальный хост в конфиге lighhtpd.conf. Синтаксис следующий:

$HTTP["host"] == "test3.example.com" {
server.document-root = "/usr/local/www/vhosts/test3.example.com"
server.errorlog = "/var/log/lighttpd/test3.error.log"
accesslog.filename = "/var/log/lighttpd/test3.access.log"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/usr/local/www/vhosts/.htpasswd"
            auth.require = ("/" => (
           "method"  => "basic",
           "realm"   => "Valid users only",
            "require" => "valid-user"
               ))
}

Здесь описан вирт хост c именем test3.example.com, его файлы определяем в папке /usr/local/www/vhosts/test3.example.com, логи, и закрываем весь хост паролем (plain auth).

Plain аутентификация в lighttpd | Lighttpd

Задача – закрыть некоторые директории на веб сервере под управлением lighttpd паролями.
Поскольку на сайте проекта нужно покопаться в документации – пишу себе на память.

Продолжить чтение →

Lighttpd + spawn-fcgi | Lighttpd

Попробовал Lighttpd без spawn-fcgi на достаточно нагруженном сервере получил тормоза. :) Апач работал быстрее хотя и памяти потреблял больше.
Пробуем решить проблему динамического управления процессами php-cgi.

Продолжить чтение →

lighttpd + fcgid | Lighttpd

Поскольку апач на одном из моих серверов начал потихоньку сдавать – начинаем искать ему альтернативы.
Начнём с lighttpd – быстрый фронтенд для fcgid который мы настроили ранее. Посмотрим.

Продолжить чтение →