Следить за новостями:

Категории
Свежие записи
BrainFБлог

Устанавливаем и настраиваем ISPConfig

ISPConfig — бесплатная панель управления хостингом с открытым исходным кодом для операционной системы Linux. Распространяется по лицензии BSD. Позволяет администратору сервера настраивать новые веб-сайты, аккаунты электронной почты и записи DNS через веб-интерфейс.

1. Готовим сервер к установке ISPConfig

Видел множество подобных мануалов. В большинстве из нах пишут что пользователь root необходим для функционирования системы. Это есть абсолютная неправда…Выполняем

sudo su

и двигаемся дальше…

Устанавливаем SSH сервер, если вы это не сделали при установке системы

apt-get install ssh openssh-server

Настраиваем сеть. Открываем файл конфигурации сети

nano /etc/network/interfaces

Вносим соответствующие изменения (IP, основной шлюз, маска подсети). Например:

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5).
# The loopback network interface
 auto lo
 iface lo inet loopback
# The primary network interface
 auto eth0
 iface eth0 inet static
 address 192.168.1.100
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 gateway 192.168.1.1

Перезагружаем сеть

/etc/init.d/networking restart

Отредактируем файл /etc/hosts

nano /etc/hosts

Вносим в него наш ip и имя сервера/ Например:

127.0.0.1       localhost.localdomain   localhost 192.168.1.100   server1.example.com     server1 # The following lines are desirable for IPv6 capable hosts ::1     localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Записываем имя сервера и применяем обновления

echo server1.example.com > /etc/hostname
 /etc/init.d/hostname restart

Проверяем выполнив комманды

hostname
 hostname -f

Мы должны увидеть имя вашего сервера

server1.example.com

Меняем командную оболочку (Shell) по умолчанию.

/bin/sh является символической ссылкой на /bin/dash, а мы должны конкретно иметь оболочку /bin/bash, а не /bin/dash.

dpkg-reconfigure dash

на вопрос ответим нет.

Данная процедура является обязательной для дальнейшей установки ISPConfig.

Удаляем AppArmor. AppArmor является расширением безопасности (аналог SELinux), которое должно обеспечить расширенную безопасность. В н. в. ее использование обычно вызывает больше проблем, чем преимуществ. (Можно потратить неделю на поиск неисправностей, искать почему некоторые службы не работает, как ожидалось, а затем выяснить, что все было нормально, только AppArmor является причиной проблемы). Поэтому в нашем случае рекомендуется отключить AppArmor (Это необходимо сделать, если вы хотите чтобы ISPConfig работал).

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

Синхронизируем системные часы часы через службу NTP (network time protocol)

apt-get install ntp

И системное время всегда будет синхронизировано, через Интернет.

2. Обновляем сервер

Редактируем /etc/apt/sources.list.

nano /etc/apt/sources.list

Закоментируем строку с описанием установочного CD диска. Строки с репозиториями universe и multiverse должны быть разкоментированы.

# deb cdrom:[Ubuntu-Server 10.04 LTS _Lucid Lynx_ - Release amd64 (20100427)]/ lucid main restricted

#deb cdrom:[Ubuntu-Server 10.04 LTS _Lucid Lynx_ - Release amd64 (20100427)]/ lucid main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://de.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ lucid-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ lucid universe
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid universe
deb http://de.archive.ubuntu.com/ubuntu/ lucid-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ lucid multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid multiverse
deb http://de.archive.ubuntu.com/ubuntu/ lucid-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ lucid-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://de.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu lucid partner
# deb-src http://archive.canonical.com/ubuntu lucid partner

deb http://security.ubuntu.com/ubuntu lucid-security main restricted
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted
deb http://security.ubuntu.com/ubuntu lucid-security universe
deb-src http://security.ubuntu.com/ubuntu lucid-security universe
deb http://security.ubuntu.com/ubuntu lucid-security multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse

Выполним команды:

apt-get update
apt-get safe-upgrade

После перезагружаемся

reboot

3. Устанавливаем необходимые компоненты системы

Postfix, Courier, Saslauthd, MySQL, rkhunter, binutils

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 rkhunter binutils maildrop

Отвечаем на следующие вопросы:

New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
Create directories for web-based administration? <-- No
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com
SSL certificate required <-- Ok

Чтобы MySQL слушал все интерфейсы, а не только местный ( localhost), откроем файл /etc/mysql/my.cnf и закоментируем строку: bind-address = 127.0.0.1:

nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Перезапустим сервер MySQL

/etc/init.d/mysql restart

Проверим работу сервера.

netstat -tap | grep mysql

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

root@server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      9732/mysqld
root@server1:~#

Во время установки SSL сертификатов на I IMAP-SSL и POP3-SSL создаются с именем хоста localhos. Чтобы изменить это имя на правильное имя нашего сервера (server1.example.com в этом руководстве), удаляем сертификаты созданные по умолчанию …

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

… далее проводим модификацию двух файлов, в которых меняем имена CN=localhost на CN=server1.example.com (или на реальное имя вашего сервера):

nano /etc/courier/imapd.cnf
[...]
CN=server1.example.com
[...]
nano /etc/courier/pop3d.cnf
[...]
CN=server1.example.com
[...]

После чего нам надо восстановить сертификаты …

mkimapdcert
mkpop3dcert

… перезапускаем Courier-IMAP-SSL и Courier-POP3-SSL:

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Amavisd-new, SpamAssassin, и Clamav

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, и mcrypt

 

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby

Ответить на вопросы:

Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- No

Включаем в Apache2 модули suexec, rewrite, ssl, actions, и include:

a2enmod suexec rewrite ssl actions include

Перезагружаем Apache2:

service apache2 restart

PureFTPd и Quota

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

После чего внесем поправки в конфигурационный файл /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… проверяем две строки: первая standalone и строку VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Перезапустим PureFTPd:

service pure-ftpd-mysql restart

Редактируем файл /etc/fstab. Надо в строку, которая создает точку монтирования / добавить вот такой кусочек текста-: (,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0).

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/server1-root /               ext4    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# /boot was on /dev/sda1 during installation
UUID=9eef7b6b-5688-456c-8fe2-05ae739e3635 /boot           ext2    defaults        0       2
/dev/mapper/server1-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

Чтобы quota заработала, вам надо выполнить следующие команды:

touch /aquota.user /aquota.group
chmod 600 /aquota.*
mount -o remount /

затем

quotacheck -avugm
quotaon -avug

BIND DNS

команда для установки BIND:

apt-get install bind9 dnsutils


Vlogger и Webalizer

Выполняем:

apt-get install vlogger webalizer

Jailkit

Jailkit необходим только если вы хотите, чтобы ваши SSH пользователи работали в среде Chroot. (Важно: Jailkit не может быть установлен после установки ISPConfig!)
Для того чтобы скомпилировать пакет Jailkit установим следующие пакеты:

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper

Далее выполним:

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./debian/rules binary
cd ..
dpkg -i jailkit_2.11-1_*.deb
rm -rf jailkit-2.11*

fail2ban

apt-get install fail2ban

SquirrelMail webmail

aptitude install squirrelmail

Создадим символьную ссылку…

ln -s /usr/share/squirrelmail/ /var/www/webmail

… и сконфигурироваем SquirrelMail

squirrelmail-configure

Настроим SquirrelMail на использование серверов Courier-IMAP/-POP3
и русского языка:

SquirrelMail Configuration : Read: config.php (1.4.2)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >> <-- D

SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server
    gmail       = IMAP access to Google mail (Gmail) accounts

    quit        = Do not change anything
Command >> <-- courier

SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server

    quit        = Do not change anything
Command >> courier

              imap_server_type = courier
         default_folder_prefix = INBOX.
                  trash_folder = Trash
                   sent_folder = Sent
                  draft_folder = Drafts
            show_prefix_option = false
          default_sub_of_inbox = false
show_contain_subfolders_option = false
            optional_delimiter = .
                 delete_folder = true

Press any key to continue... <-- ENTER

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >> <-- S

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >> S

Data saved in config.php
Press enter to continue... <-- ENTER

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit
Выбрав пункт 10 меню, надо настроить Languages, как на картинке ниже:
SquirrelMail Configuration : Read: config.php (1.4.0) 
--------------------------------------------------------- 
Language preferences 
1.  Default Language       : ru_RU 
2.  Default Charset        : UTF-8 
3.  Enable lossy encoding  : false 

R   Return to Main Menu 
C   Turn color on 
S   Save data 
Q   Quit 

Command >> 
Выйдем из настройки клиента следующей командой:

Command >> <-- Q

Для проверки наберем в браузере: http://server1.example.com/webmail или http://192.168.1.100/webmail

4. Устанавливаем ISPConfig 3

Подготовка закончена, переходим к главному. Непосредственно к установке ISPConfig 3

cd /tmp
 wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
 tar xfz ISPConfig-3-stable.tar.gz
 cd ispconfig3_install/install/

Затем набираем:

php -q install.php

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

This will start the ISPConfig 3 installer. The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not nescessary.
root@server1:/tmp/ispconfig3_install/install# php -q install.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0

--------------------------------------------------------------------------------
 _____ ___________   _____              __ _
|_   _/  ___| ___ \ /  __ \            / _(_)
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------

&gt;&gt; Initial configuration

Operating System: Debian Squeeze/Sid or compatible

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with &lt;ENTER&gt;.
    Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: &lt;-- ENTER

Installation mode (standard,expert) [standard]: &lt;-- ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: &lt;-- ENTER

MySQL server hostname [localhost]: &lt;-- ENTER

MySQL root username [root]: &lt;-- ENTER

MySQL root password []: &lt;-- yourrootsqlpassword

MySQL database to create [dbispconfig]: &lt;-- ENTER

MySQL charset [utf8]: &lt;-- ENTER

Generating a 2048 bit RSA private key
...............+++
............................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: &lt;-- ENTER
State or Province Name (full name) [Some-State]: &lt;-- ENTER
Locality Name (eg, city) []: &lt;-- ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: &lt;-- ENTER
Organizational Unit Name (eg, section) []: &lt;-- ENTER
Common Name (eg, YOUR name) []: &lt;-- ENTER
Email Address []: &lt;-- ENTER
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring vlogger
Configuring Apps vhost
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: &lt;-- ENTER

Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services ...
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart mysql
mysql start/running, process 24840
 * Stopping Postfix Mail Transport Agent postfix
   ...done.
 * Starting Postfix Mail Transport Agent postfix
   ...done.
 * Stopping SASL Authentication Daemon saslauthd
   ...done.
 * Starting SASL Authentication Daemon saslauthd
   ...done.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
 * Stopping ClamAV daemon clamd
   ...done.
 * Starting ClamAV daemon clamd
   ...done.
 * Stopping Courier authentication services authdaemond
   ...done.
 * Starting Courier authentication services authdaemond
   ...done.
 * Stopping Courier IMAP server...
   ...done.
 * Starting Courier IMAP server...
   ...done.
 * Stopping Courier IMAP-SSL server...
   ...done.
 * Starting Courier IMAP-SSL server...
   ...done.
 * Stopping Courier POP3 server...
   ...done.
 * Starting Courier POP3 server...
   ...done.
 * Stopping Courier POP3-SSL server...
   ...done.
 * Starting Courier POP3-SSL server...
   ...done.
 * Restarting web server apache2
 ... waiting ..   ...done.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -H -E -b -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -u 1000 -A -B
Installation completed.
root@server1:/tmp/ispconfig3_install/install#

Команды денисталяции и обновления соответственно :

php -q uninstall.php
php -q update.php

Весть процес цстановки происходит автоматически. Везде нужно нажимать Enter, кроме ввода вашего root пароля MySQL.

Набираем в адресной строке браузера
http://server1.example.com:8080/
или
http://192.168.1.100:8080/.
Имя пользователя — admin и пароль — admin.

Соответственно в настройках меняем пароль администратора и устанавливаем русский язык

Еще по теме

7 комментария к записи “Устанавливаем и настраиваем ISPConfig

  1. Qwerty
    25.09.2014 12:02:12 Ответить

    Установил все по инструкции, все работает, спасибо. Но, когда я зашел в ISPconfig, то увидел, что список серверов пуст, ничего там нет и никак не добавить, скажите, что могло пойти не так и как это можно исправить?

    1. parmactep
      25.09.2014 13:56:13 Ответить

      Причин может быть масса. Задали ли вы доменное имя для вашего сервера?

  2. Qwerty
    25.09.2014 14:41:41 Ответить

    Да да, уже копаю в этом направлении. Дело в том, что мой провайдер предоставляет мне белый ip и все прочие сетевые настройки через dhcp. Соответственно, как мне изменить сетевые настройки и что отредактировать, чтобы сервер появился в списке панели?

  3. parmactep
    25.09.2014 18:28:04 Ответить

    Дело не в настройках сети, а в настройках хостов.
    Файлы в которых должно быть прописано имя сервера :

    /etc/hosts
    /etc/hostname
  4. Qwerty
    26.09.2014 9:06:10 Ответить

    понял, благодарю, кстати, отличный блог

    1. parmactep
      26.09.2014 13:47:22 Ответить

      Спасибо. Стараемся)

  5. Angariya
    19.01.2015 18:15:55 Ответить

    Безусловно превосходная статья. Спасибо! Было бы здорово, если бы Вы описали вариант установки просто SPTP — сервера, который бы можно было использовать почтовой программой, типа The Bad,  на чистую ОС. Буду очень благодарна за такую статью!

Ваш комментарий
выберите имя