Показать сообщение отдельно
Старый 07.12.2007, 09:15   #6
Sputnik
Пользователь
 
Аватар для Sputnik
 
Пол:Мужской
Регистрация: 19.09.2005
Адрес: Москва
Сообщений: 130
Репутация: 87
По умолчанию Ответ: Свой хост с нуля

АДМИНИСТРИРОВАНИЕ ХОСТИНГА – ОТ А ДО Я. Часть 2.

Добавлено через 12 минут
[CUT="АДМИНИСТРИРОВАНИЕ ХОСТИНГА – ОТ А ДО Я. Часть 3."]* FTP

Для FTP-сервиса, как ты помнишь, мы выбрали pure-ftpd. Собираем порт:
Код:
# cd /usr/ports/ftp/pure-ftpd
# make install clean
В менюшке опций сборки поставь галочки на:

* MySQL – авторизация юзеров через БД;
* PRIVSEP – разделение юзерских привилегий;
* PERUSERLIMIT – ограничение потоков для каждого юзера;
* THROTTLING – ограничение канала для каждого юзера;
* BANNER – не обязательно .

После сборки порта в /usr/local/etc появятся дефолтные конфиги фтп-сервера. Создаем отдельную диру, переносим туда нужные конфиги, выставляем чмоды и удаляем ненужное:
Код:
# cd /usr/local/etc
# mkdir ftp
# mv pure-ftpd.conf.sample ftp/
# mv pureftpd-mysql.conf.sample ftp/
# chown –R root:wheel ftp/ && chmod –R 0600 ftp/
# rm pure*
Заходим в папку с конфигами, переименовываем их, оставляя бэкапы:
Код:
# cd ftp/
# cp pure-ftpd.conf.sample pure-ftpd.conf
# cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
Теперь необходимо настроить наш фтп-сервер. Открываем pure-ftpd.conf:

Листинг файла pure-ftpd.conf
Код:
# Создавать виртуальный chroot для каждого пользователя
# Папка /home/<юзер> будет выглядеть как рутовая
ChrootEveryone yes
# Включить поддержку кривых фтп-клиентов
# Не рекомендуется выставлять в yes из соображений безопасности
BrokenClientsCompatibility no
# Сколько юзеров может одновременно подключаться
MaxClientsNumber 30
# Сколько юзеров может одновременно подключаться с одного IP
MaxClientsPerIP 3
# Подробный лог
VerboseLog yes
# Вход только авторизированым пользователям
NoAnonymous yes
# Не резольвить IP адреса
DontResolve yes
# Конфиг сервера для MySQL
MySQLConfigFile /usr/local/etc/ftp/pureftpd-mysql.conf
# Выключаем PAM и стандартную авторизацию
PAMAuthentication no
UnixAuthentication no
# Диапазон портов для passive mode
PassivePortRange 30000 50000
# Минимальный User ID, который может залогиниться
MinUID 1002
# Запрещаем/разрешаем FXP (по вкусу)
AllowUserFXP no
# Не создавать папку юзеру, если не существует
CreateHomeDir no
# Включаем квоты
Quota 1000:10
# Не пускать юзера, если на диске занято 95% места.
MaxDiskUsage 95
# Включаем лимиты на скорость download/upload
PerUserLimits 3:20
# Только IPv4
IPV4Only yes
Сам сервер сконфигурирован и готов, осталось настроить авторизацию через MySQL.

Редактируем /usr/local/etc/ftp/pureftpd-mysql.conf:
Код:
# Работаем с MySQL через локальный сокет
MYSQLSocket /tmp/mysql.sock
# Юзер, пароль, база
MYSQLUser ftp
MYSQLPassword nhjhf21j
MYSQLDatabase pureftpd
# Храним пароли в открытом виде или зашифрованые md5
MYSQLCrypt cleartext
# SQL запрос, ответом которого будет пароль юзера
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
# SQL запрос, ответом которого будет uid юзера. По умолчанию uid/gid можно
# указывать цифрами (1003:1003). Чтобы получить возможность указывать юзеров
# как user:group поменяй тип полей Uid и Gid в дампе:
# Uid VARCHAR(16) NOT NULL default '-1',
# Gid VARCHAR(16) NOT NULL default '-1',
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
# SQL запрос, ответом которого будет домашняя директория юзера (она станет для
# него рутовой)
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
# SQL запрос, ответом которого будет лимит на кол-во файлов
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L"
# SQL запрос, ответом которого будет квота юзера в мегабайтах
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"
# SQL запрос, ответом которого будет лимит скорости Upload для юзера (кб/с)
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
# SQL запрос, ответом которого будет лимит скорости Download для юзера (кб/с)
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
Конфиг фтп-сервера завершен. Осталось только создать базу MySQL с параметрами, которые мы указали в конфиге, и залить в эту самую базу дамп. phpMyAdmin у нас есть, так что с созданием юзера и базы проблем не возникнет. А дамп базы в природе существует в одном месте – глубоко в дебрях оффсайта pure-ftpd. Надеюсь, вбить дамп в базу труда не составит. Также не забудь - чтобы ftpd запустился при старте системы – добавить в /etc/rc.conf строчки:
Код:
pureftpd_enable="YES"
pureftpd_config="/usr/local/etc/ftp/pure-ftpd.conf"
* Статистика

Awstats 6.5 присутствует в портах FreeBSD, но версия 6.5 содержит очень опасную уязвимость, поэтому ставить мы будем ручками версию 6.6. Качай Awstats с оффсайта. Разахривируй файл и устанавливай:
Код:
# mkdir /etc/awstats
# cd awstats-6.6/wwwroot/cgi-bin/
# mv awstats.model.conf /etc/awstats
# cp –rf * /home/пользователь/cgi-bin/
Все конфиги статистики будут находиться в папке /etc/awstats. Чтобы добавить там конфиг для определенного домена – скопируй файл awstats.model.conf, заменив model именем домена (без www). Например:
Код:
# cd /etc/awstats
# cp awstats.model.conf awstats.hosting.ru.conf
Сам конфиг Awstats довольно длинный, я укажу лишь основные параметры:
# Какой лог парсить
LogFile="/var/log/www/hosting.ru-acess.log"
# Тип лога (W – web, F – FTP, M – mail, S - streaming)
LogType=W
# Домен(ы) сайта
SiteDomain="hosting.ru"
HostAliases="www.hosting.ru REGEX[hosting\.ru$]"
# Путь к БД статистики
DirData="/var/db/awstats"
И, наконец, скрипт, который будет обновлять статистику:
Код:
# cd awstats-6.6
# mkdir /usr/local/awstats
# mv tools/ /usr/local/awstats
Добавляем скрипт в крон, чтобы обновлять статистику раз в 9 минут.
Код:
*/9 * * * * /usr/local/awstats/tools/awstats_updateall.pl now >/dev/null 2>&1
Просмотреть статистику для домена мы сможем по адресу: http://hosting.ru/cgi-bin/awstats.pl

Писал давно, комментировать, и отвечать не буду по этому. Но еще актуально, даже если брать свежую ось. Все эти буквы для тех, кому нужен именно сервер...
__________________
Установка FreeBSD. Беру дорого, работаю медленно, гарантии не даю.

Последний раз редактировалось Sputnik; 17.08.2011 в 01:56.. Причина: Добавлено сообщение
Sputnik вне форума
 
Ответить с цитированием Вверх
Эти 17 пользователя(ей) сказали cпасибо за это полезное сообщение:
 
Время генерации страницы 0.03592 секунды с 10 запросами