|
Регистрация | Правила форума | Доска почета | Пожертвования | Справка | Пользователи | Календарь | Сообщения за день | Поиск |
Администрирование Советы, подсказки по администрированию |
![]() |
|
LinkBack | Опции темы | Опции просмотра |
![]() |
#1 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Злой Админ
Регистрация: 16.11.1984
Сообщений: 131
Вы сказали Спасибо: 4
Поблагодарили 16 раз(а) в 15 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() АДМИНИСТРИРОВАНИЕ ХОСТИНГА – ОТ А ДО
Я От себяДанная статья хоть и не новая, но до сих пор актуальная. В данной статье описано все: начиная от установки, заканчивая настройкой сервера. Данная статья будет полезна всем, к прочтению. Источник: Хакер-СПЕЦ (2006,
#7) Выбор ОСНа самом деле вариантов не так уж и много. Windows, Linux, BSD, Solaris. У каждой из этих операционок в плане реализации хостинга есть свои плюсы и минусы. Windows дает нам поддержку ASP и еще некоторых MS-only технологий и визуально несложное администрирование, но, в то же время, накладывает существенные ограничения на производительность и увеличивает наши затраты. Linux – достойная кандидатура, но обилие багов в ядре и наличие в паблике вполне рабочих эксплойтов стало уже закономерностью. Solaris – хорошая система, однако платная; встанет не на любое железо, да и с некоторым софтом возникают траблы. Остается BSD. Из BSD я лучше всего знаю FreeBSD, поэтому строить наш хостинг мы будем на примере этой ОС. Нелегкий выбор Теперь необходимо выбрать версию операционки. На сегодняшний день существует три основных ветки FreeBSD: 4.* - Old stable (Старая стабильная ветка). Последняя версия 4.11. По сути, она уже не поддерживается. 5.* - Legacy production (Старая production-ветка). Последняя (на момент написания статьи) версия 5.4. Стабильный, зарекомендовавший себя релиз. 6.* - Production (Production ветка). Разработчики неожиданно сделали прыжок с 5.4 до 6.0, по сути не внеся никаких революционных изменений. Changelog 6.0 довольно весомый, но на практике - кроме небольшого прироста производительности на SMP ядрах – в нашем случае ничего не дает. Итог: 4.* - уже практически мертва, в 6.* ожидается много изменений, а значит и сюрпризов. Как приятных, так и не очень. Кроме того, релиз 6.0 вышел относительно недавно, и в нем еще могут обнаружиться серьезные недочеты. Поэтому мы остановим свой выбор на 5.4. Собирать хостинговый сервер мы будем на тестовой машине – P4 2.8 Ghz, 512 DDR, 5x200 gb SATA RAID 0+1. Разумеется, если ты планируешь поднять крупный хостинг – стоит подумать о более шустром железе. Pre-Install Я не буду рассказывать о том, как установить систему - это довольно просто, да и документации по этому поводу в Сети хватает. Я остановлюсь лишь на вещах, которые критически важны для нашего хостинга. Очень важно правильно разбить диск. Swap partition должен находиться как можно ближе к началу диска (физически), поэтому его нужно создавать сразу после /. Размер свопа принято рассчитывать по формуле: Swap = количество оперативки * 2 + 20-30 MB Я разбил диск следующим образом: / - 512 Мб Swap – 1124 Мб /tmp – 512 Мб /usr – 30 Гб /var – 30 Гб /usr/home – все остальное, в моем случае – примерно 130 Гб При выборе установки обязательно поставь галочки у src, ports, linux, perl, compat4x. The beginning Первым делом, после того как система загрузилась, проверяем, что нет никаких проблем с железом, установка прошла без сбоев, и система распознает все корректно. Код: # dmesg | more # cat /var/log/messages Так как нам предстоит компилировать ядро и кучу разнообразного софта, то сначала необходимо оптимизировать процесс компиляции. Многие часто не придают этому значения, не зная, что таким образом мы не только выигрываем время при сборке, но и оптимизируем все под наше железо и ОС. Идем в /etc/make.conf и там пишем: Код: Листинг файла make.conf # Тип твоего процессора. # Для AMD - athlon-mp, athlon-xp, athlon-4, athlon-tbird, athlon, k6-3, k6-2, k6, k5. # Для Intel - p4, p3, p2, i686, i586/mmx, i586, i486, i386. CPUTYPE?=p4 CPUTYPE=p4 # Совместимость с BSD 4.X COMPAT4X=true # Указываем дополнительные флаги CFLAGS=-O1 -pipe -march=pentium4 -mtune=pentium4 # Говорим, что флаги включать обязательно NO_CPU_CFLAGS=false NO_CPU_COPTFLAGS=false # Отключаем сборку ненужных библиотек и софта MAKE_KERBEROS4=false MAKE_KERBEROS5=false NO_BIND=true NO_SENDMAIL=true NO_GAMES=true # Настройки Perl PERL_VER=5.8.8 PERL_VERSION=5.8.8 PERL_ARCH=mach NOPERL=no WITH_PERL=yes WITHOUT_PERL=no # Решаем проблемы с портами FORCE_PKG_REGISTER=yes В наш век разгула скрипткидисов и прочей нечисти крайне важно держать систему и софт обновленными. Исходники 5.4 обновляются очень редко, только в случае, если обнаружилась критическая уязвимость, а вот порты и документация - довольно часто. Сразу оговорюсь: в FreeBSD все надо ставить из портов. Это очень важно, поскольку в портах лежат уже адаптированные под нужную ось проги со всеми необходимыми патчами. Идем в /usr/ports/net/cvsup-without-gui и собираем порт: Код: # make install clean Код: # Сервер, с которым будем синхронизироваться. *default host=cvsup.FreeBSD.org # Куда будем складывать свеженькое: *default base=/usr *default prefix=/usr *default release=cvs # Тег ветки нашей системы *default tag=RELENG_5_4 *default delete use-rel-suffix # Используем сжатие при передаче данных *default compress # Что будем синхронизировать? # Все исходники src-all *default tag=RELENG_5_4 *default tag=. # Все порты ports-all # Весь RTFM doc-all Код: /usr/local/bin/cvsup -g -L 2 -z /путь/к/конфигу Код: # touch cvs_up Код: #!/bin/sh echo "Starting CVSup..." case "$1" in -t) /usr/sbin/ntpdate -v ru.pool.ntp.org ;; -q) /usr/sbin/ntpdate -v ru.pool.ntp.org 2>&1 > /dev/null /usr/local/bin/cvsup -g -L 2 -z /etc/cvsup.conf 2>&1 > /dev/null ;; *) /usr/local/bin/cvsup -g -L 2 -z /etc/cvsup.conf ;; esac echo "Packages needed to update:" /usr/sbin/pkg_version -v |grep '<' exit 0 Код: # mv cvs_up /usr/local/sbin/cvs_up # chown root:wheel /usr/local/sbin/cvs_up # chmod 0700 /usr/local/sbin/cvs_up Нам также понадобится утилита, которая займется апгрейдом довольно активно обновляющихся портов. Ставим portupgrade: Код: # cd /usr/ports/sysutils/portupgrade # make install clean Код: # portupgrade порт1 порт2 ... порт22 Код: 0 4 * * * /usr/local/sbin/cvs_up >/dev/null 2>&1 <Kernel::About> Пора приступать к самой важной части настройки системы – к ядру. При инсталле системы автоматически устанавливается ядро GENERIC. В нем включена поддержка устройств, необходимых для старта системы на любой конфигурации. Оптимизировав ядро под свою систему, мы убираем поддержку ненужных устройств и функций, уменьшая таким образом время загрузки и, что еще важнее, улучшая производительность системы в целом. Давай посмотрим, сколько весит ядро до оптимизации: Код: # ll /boot/kernel/kernel -r-xr-xr-x 1 root wheel 5940286 Feb 23 2004 /boot/kernel/kernel # <Kernel::Config> Конфиги ядра лежат в папке /sys/<архитектура>/conf. Если у тебя обычный PC, то в /sys/i386/conf. Заходи туда, найди там файл GENERIC и скопируй его с другим названием. Да-да, именно скопируй. Если что-то вдруг пойдет не так как надо, у нас останется рабочий конфиг. Итак, копируем: Код: # cd /sys/i386/conf # cp GENERIC HOSTING Конфиг ядра составляем по принципу “все, что не критично – не нужно”. Вряд ли хостинговому серверу так сильно необходимы USB сканер, десяток драйверов к Wi-Fi карточкам и PCIMCA. Некоторые устройства имеют статус обязательных - без них ядро просто не соберется. Они помечены комментарием required. После того, как ты закомментировал все ненужное, пришло время добавить недостающее. Код: Options IPFIREWALL # Включаем ipfw Options IPFIREWALL_VERBOSE Options IPFIREWALL_VERBOSE_LIMIT=1000 Options TCP_DROP_SYNFIN # Запрещаем SYN/FIN пакеты Options ACCEPT_FILTER_DATA # Включаем accept фильтры Options ACCEPT_FILTER_HTTP Код: # cd /usr/src # make buildkernel KERNCONF=HOSTING # make installkernel KERNCONF=HOSTING Код: # Поддержка линуксовых бинариков linux_enable="YES" # Запускаем sshd sshd_enable="YES" # Вырубаем лишнее usbd_enable="NO" sendmail_enable="NONE" inetd_enable="NO" # Включаем сислог syslogd_enable="YES" syslogd_flags="-ss" # Очищаем /tmp при старте системы clear_tmp_enable="YES" # Включаем фаервол firewall_enable="YES" firewall_script="/etc/rc.firewall" firewall_type="client" firewall_quiet="NO" Код: # init 6 Код: # ll /boot/kernel/kernel -r-xr-xr-x 1 root wheel 2675196 Mar 10 04:10 /boot/kernel/kernel # <intro::Services> Итак, в первую очередь важно определиться с тем, какие именно сервисы наш хостинг будет предоставлять клиентам. Основные вещи, которые любой хостинг предоставить обязан - это Web + PHP/Perl, FTP, БД и статистику посещений сайта. Многие хостеры подходят к вопросу поднятия хостинга просто: купили Cpanel, запустили install.sh и продаем аккаунты юзерам. Мы же соберем свой собственный хостинг, с самого начала и до победного конца . Выбор софта Сразу оговорюсь, что предпочитаю использовать стабильный и надежный софт, нежели новый и крутой. Нам важна стабильность и функциональность. А всякие, грубо говоря, свистелки и перделки мы оставим скрипткидисам на разнос. Итак, для www, я думаю, не возникнет сомнений - Apache. Ветка 2.* еще довольно сыровата, да и почти под каждую новую версию двойки появлялся бронебойный эксплойт, зачастую даже в паблике. Использовать будем проверенный временем 1.3. FTP - тут выбор не столь однозначен, есть много разных FTPd, но мы остановимся на pure-ftpd. У него удобный и понятный конфиг, отлично реализована работа с виртуальными юзерами, достаточная функциональность и много других достоинств, о которых - ниже. БД, разумеется, MySQL. И опять мы берем самую стабильную версию - 4.0.*. Статистика: можно взять Webalaizer, но лично я предпочитаю AwStats. Его отчетность намного лучше выглядит, интуитивно более понятна, да и подробности анализа ему не занимать. Структура директорий Условимся, что мы используем следующую структуру директорий: /usr/home/юзер – домашняя дира юзеров; /usr/home/юзер/web – рутовая веб-папка юзера; /usr/home/юзер/tmp – темп-дира юзера; /usr/home/юзер/cgi-bin – cgi-bin юзера; /etc и /usr/local/etc – папки с конфигами; /etc/awstats – папка конфигов статистики; /var/db/awstats – папка с БД статистики; /var/log/www – папка с логами виртуальных хостов Apache Кроме обычных клиентов с мега-порталами и домашними страничками, услугами хостинга пользуются еще и много коммерческих организаций, в частности, инет-магазины. Поэтому нам нужна возможность предоставлять им https. На сегодняшний день существуют две основные релизации SSL для Apache. Это Apache-ssl, поддерживаемый самой Apache Group и сторонняя разработка – mod_ssl. Последняя дает намного больше возможностей и намного активней поддерживается, поэтому используем ее. Итак, собираем Apache: Код: # cd /usr/ports/www/apache13-modssl # make install clean Код: # Запускаем сервер через inetd или самостоятельным демоном, # inetd у нас в системе выключен, так что выбор невелик :). ServerType standalone # Рутовая директория веб-сервера ServerRoot "/usr/local" # Таймаут соединений в секундах. Timeout 300 # А вот об этом – поподробней. KeepAlive - механизм, позволяющий, не прерывая # соединения с сервером, отправить ему несколько запросов. Это позволяет # экономить ресурсы за счет того, что не создается новый процесс, а на запросы # отвечает уже существующий. Количество запросов и таймаут указываются # следующими опциями: KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 # Следующие три настройки сильно зависят от загруженности веб-сервера. Они # указывают на то, сколько серверов минимум и максимум может быть загружено, и сколько # процессов сервера запускать при старте. MinSpareServers 10 MaxSpareServers 70 StartServers 10 # Сколько клиентов может одновременно обслуживать сервер MaxClients 150 # Сколько запросов может одновременно обрабатывать один процесс сервера # (0 – не ограничено). Ноль ставить не рекомендуется. MaxRequestsPerChild 7000 Код: mod_userdir, mod_info, mod_proxy, mod_imap, mod_auth_db Код: AddType text/html .shtml AddHandler server-parsed .shtml Код: Include etc/apache/vhosts/ PHP/Perl/CGI Веб-сервер это, конечно, хорошо, но на голом хтмл далеко не уедешь. И сейчас мы добавим использование php, perl и cgi-скриптов. Начнем с php: Код: # cd /usr/ports/lang/php4/ # make config Код: # make install clean Код: # cd /usr/ports/lang/php4-extensions/ # make install clean Код: Bcmath, bz2, curl, ftp, gd, iconv, mbstring и sockets. Код: # cd /usr/local/etc # cp php.ini-recommended php.ini Код: ; Включаем safe_mode safe_mode = On ; Максимальное время выполнения скрипта max_execution_time = 20 ; Максимальное время обработки скриптом данных max_input_time = 40 ; Максимум выделяемой памяти memory_limit = 10M ; Максимальный размер файла для аплоада upload_max_filesize = 5M Теперь нам нужно установить Zend Optimizer, чтобы юзеры хостинга смогли запускать скрипты, зашифрованые зендом. Тут все не так просто, и придется сделать небольшой финт ушами. Идем на zend.com, выбираем Products -> Zend Optimizer, free download. Нас попросят зарегистрироваться: мыло можно вводить любое, оно не проверяется. После регистрации нас перебросит на страницу закачки оптимайзера. В разделе Zend Optimizer 3.0.0 выбирай FreeBSD x86 5.x. Полученный файл ZendOptimizer-3.0.0-freebsd5.4-i386.tar.gz клади в /usr/ports/distfiles и собирай порт: Код: # cd /usr/ports/devel/ZendOptimizer # make install clean Zend Код: zend_optimizer.optimization_level=15 zend_extension_manager.optimizer="/usr/local/lib/php/20020429-zts/Optimizer" zend_extension_manager.optimizer_ts="/usr/local/lib/php/20020429-zts/Optimizer_TS" zend_extension="/usr/local/lib/php/20020429-zts/ZendExtensionManager.so" zend_extension_ts="/usr/local/lib/php/20020429-zts/ZendExtensionManager_TS.so" Код: # cd /usr/ports/www/mod_perl # make install clean Vhosts Как известно, протокол HTTP 1.1 дает возможность передавать в запросе параметр Host, что позволяет держать несколько сайтов на одном IP адресе. Это называется виртуальным хостингом. Для каждого сайта, который будет у нас хоститься, мы создадим отдельный конфиг, что позволит делать гибкие настройки для каждого домена в отдельности. Первый конфиг, который мы создаем, будет служебного характера. Для начала создадим папку для конфигов, которую мы указали Apache: Код: # mkdir /usr/local/etc/apache/vhosts # cd /usr/local/etc/apache/vhosts Код: # touch 001.hosting.ru Код: # Мыло админа (будет показываться при HTTP ошибках) ServerAdmin admin@hosting.ru # Рутовая папка вхоста DocumentRoot /home/revol.ru/web # Домен и алиасы, по которым мы будем видеть вхост ServerName hosting.ru ServerAlias www.hosting.ru ServerAlias main.hosting.ru # Где располагаются логи ErrorLog /var/log/www/hosting.ru -error.log CustomLog /var/log/www/hosting.ru-custom.log combined # Настройки .htaccess и запрет просматривать его из браузера AccessFileName .htaccess <Files ~ ^.ht> Order allow,deny Deny from all </Files> </VirtualHost> MySQL Теперь нам необходимо установить базу данных, в нашем случае - MySQL. Как обычно, собираем из портов, однако, в целях оптимизации, мы немного поправим Makefile. Код: # cd /usr/ports/databases/mysql40-server Код: # cp Makefile Makefile.back Код: --enable-thread-safe-client \ Код: --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static \ --enable-assembler \ --with-named-thread-libs='-lpthread -D_THREAD_SAFE' my-huge.cnf – для серверов, работающих с огромными по размеру базами (сотни гиг) my-large.cnf – если базы просто большие . О значении my-medium.cnf и my-small.cnf, думаю, догадаться не сложно . В целом, конфиг my-large.cnf нам подойдет. Оптимизировать MySQL в конфиге имеет смысл только в том случае, когда ты точно знаешь, какие запросы составляют большинство нагрузки. Так как на хостинге сайты будут разные, и работать их движки с БД будут по-разному – оставим пока дефолтные настройки. Потом, исходя из специфики сайтов, некоторые параметры можно будет подкрутить. phpMyAdmin Однако управлять MySQL из консоли очень и очень неудобно. Поставим phpMyAdmin: скачаем его с сайта (или возьми свежий дистриб на диске с журнала), и – в бой: Код: # tar zxvf phpMyAdmin-2.8.1.tar.gz # mkdir /usr/home/hosting.ru/web/pmadmin # cp -rf phpMyAdmin-2.8.1/* /usr/home/hosting.ru/web/pmadmin # chown –R hosting.ru:hosting.ru /usr/home/hosting.ru/web/pmadmin # cd /usr/home/hosting.ru/web/pmadmin Код: $cfg['Servers'][$i]['auth_type'] = 'config'; Код: $cfg['Servers'][$i]['auth_type'] = 'http'; 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 Код: # Создавать виртуальный 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 Редактируем /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" Код: 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/ Код: # cd /etc/awstats # cp awstats.model.conf awstats.hosting.ru.conf Код: # Какой лог парсить 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 * * * * /usr/local/awstats/tools/awstats_updateall.pl now >/dev/null 2>&1 WWW http://www.freebsd.org/ – САЙТ FREEBSD WWW.FREEBSD.ORG/DOC/RU_RU.KOI8-R/BOOKS/HANDBOOK - ХЕНДБУК. ЛУЧШАЯ ДОКУМЕНТАЦИЯ ПО FREEBSD. AWSTATS.SOURCEFORGE.NET – САЙТ ПРОЕКТА AWSTATS http://www.pureftpd.org/ – ОФИЦИАЛЬНЫЙ САЙТ PURE-FTPD http://www.opennet.ru/ - ПОЖАЛУЙ, ЛУЧШИЙ САЙТ С ДОКУМЕНТАЦИЕЙ В РУНЕТЕ __________________ ![]() Полная подпись
Ты бы вдул и в мелко-дисперсный грунт в виде коллоидной суспензии, то есть в грязь! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |