29 апреля 2015

Установка сервера терминалов в Windows Server 2008 R2



Сегодня я расскажу о том как поднять сервер терминалов (англ. terminal server) на базе Windows Server 2008 R2. В целом это довольно просто, но есть несколько тонких моментов, итак:

0. Оглавление

  1. Что понадобится
  2. Установка службы удаленных рабочих столов
  3. Установка сервера лицензирования удаленных рабочих столов

1. Что понадобится

  1. Мощный компьютер (сервер) с установленной на нем  Windows Server 2008 R2. (От том как установить эту ось, я писал здесь)
  2. Действительная клиентская лицензия сервера терминалов, приобретенная по одной из существующих программ лицензирования. (В данной статье я буду использовать найденный в интернете номер соглашения, по программе Enterprise Agriment. На момент написания статьи рабочими были номера:  6565792, 5296992, 3325596, 4965437, 4526017.)

2. Установка службы удаленных рабочих столов

Запускаем диспетчер сервера («Пуск» — «Администрирование» — «Диспетчер сервера»). Раскрываем вкладку «Роли» и нажимаем «Добавить роли».
Запустится «Мастер добавления ролей» . Жмем «Далее» , затем выбираем в списке роль «Службы удаленных рабочих столов» и 2 раза снова нажимаем «Далее» .
Увидим окно выбора служб ролей. В нем выбираем «Узел сеансов удаленных рабочих столов» и «Лицензирование удаленных рабочих столов» и снова 2 раза  «Далее» .
Метод проверки подлинности выбираем «Не требуем проверку подлинности на уровне сети», чтобы можно было подключаться со старых клиентов. После чего жмем «Далее» .
На следующем шаге нужно выбрать режим лицензирования: «На устройство» или «На пользователя» . Чтобы понять чем отличаются эти режимы рассмотрим простой пример. Предположим, у Вас есть 5 лицензий. При режиме «На устройство» вы можете создать неограниченное число пользователей на сервере, которые смогут подключаться через удаленный рабочий стол только с 5 компьютеров, на которых установлены эти лицензии. Если выбрать режим «На пользователя», то зайти на сервер смогут только 5 выбранных пользователей, независимо с какого устройства они подключаются. Выбирайте тот режим, который вам наиболее подходит и нажимайте «Далее» .
На этом этапе нужно добавить пользователей или группу пользователей, которые будут иметь доступ к службе терминалов. Для этого нажимаем «Добавить», «Дополнительно», в открывшемся окне «Поиск», выбираем пользователя и нажимаем «ОК». Для того чтобы все пользователи без исключения могли подключаться к нашему серверу терминалов добавляем группу «Все» . После чего жмем «ОК» и «Далее» .
Если Вы хотите чтобы через удаленный рабочий стол можно было прослушивать аудиоданные и смотреть видео, то устанавливайте соответствующую галочку. Аналогично с записью звука и Windows Aero. Выбрав нужные параметры жмем «Далее» .
Теперь надо настроить область обнаружения для лицензирования удаленных рабочих столов. Если у Вас поднят Active Directory, то выбирайте «Этот домен» или «Лес» , в зависимости от структуры домена. В противном случае выбираем «Эта рабочая группа» и нажимаем «Далее» .
Проверяем все настройки и нажимаем «Установить».
После установки потребуется перезагрузка.

3. Установка сервера лицензирования удаленных рабочих столов

Если все сделано правильно, то после перезагрузки мы увидим окно, с сообщением, что установка прошла успешно, но с предупреждением, что нужно настроить параметры лицензирования на сервере узла сеансов удаленных рабочих столов.
Укажем сервер лицензирования вручную. Для этого запустим оснастку «Конфигурация узла сеансов удаленных рабочих столов» («Пуск» — «Администрирование» — «Службы удаленных рабочих столов» ). Там мы видим что не указан сервер лицензирования удаленных рабочих столов.
Кликаем 2 раза по этой строке, в открывшемся окне «Свойства» , выбираем вкладку «Лицензирование» и нажимаем кнопку «Добавить» .
Выбираем сервера из известных серверов лицензирования. В нашем случае сервер лицензирования находится на одном компьютере с сервером терминалов. Добавляем его и нажимаем «ОК» .
Теперь, если перейти на вкладу «Диагностика лицензирования» мы увидим что сервер лицензирования выбран, но не включен.
Для запуска и активации сервера лицензирования удаленных рабочих столов, запустим «Диспетчер лицензирования удаленных рабочих столов» («Пуск» — «Администрирование» — «Службы удаленных рабочих столов» ). В диспетчере мы видим наш сервер и статус «Не активирован» . Кликаем по нему правой кнопкой мыши и выбираем «Активировать сервер» .
Запустится «Мастер активации сервера» . Нажимаем «Далее» . В следующем окне выбираем метод подключения «Авто (реком.)» и снова жмем «Далее» . Заполняем сведения об организации. Затем, заполнив дополнительные сведения (не обязательно) и нажав «Далее» , увидим сообщение об успешной активации сервера.
Теперь надо установить лицензии. Если этого не сделать то сервер лицензирования будет выдавать временные лицензии, действующие 120 дней. Чтобы установить лицензии нажимаем «Далее» , оставив галочку «Запустить мастер установки лицензий» . Или же можно запустить данный мастер из «Диспетчера лицензирования удаленных рабочих столов» , кликнув правой кнопкой по серверу и выбрав «Установить лицензии» . Там же мы можем проверить, что сервер активирован.
В запустившемся «Мастере установки лицензий» нажимаем «Далее» и попадаем на окно выбора программы лицензирования. Следующие действия зависят от способа приобретений лицензий. В моем примере это «Enterprise Agreement» . Выбрав нужный тип лицензирования нажимаем «Далее» .
Вводим номер соглашения и жмем «Далее» . В следующем окне выбираем версию продукта: «Windows Server 2008 или Windows Server 2008 R2» , тип лицензий выбираем тот же, который мы выбирали при добавлении ролей («на пользователя» или «на устройство» ) и вводим количество необходимых лицензий.
Нажимаем «Далее» и дожидаемся сообщения об успешной установки лицензии. (Хочу отметить, что по непонятным для меня причинам, данная процедура не всегда заканчивается положительно. Если мастер сообщил что не удалось установить лицензию попробуйте повторить процедуру некоторое время спустя. Рано или поздно лицензия установится. Проверенно не один раз.) Если все прошло хорошо в диспетчере сервера мы должны увидеть параметры нашей лицензии.
И убедимся что нет проблем, зайдя на вкладку «Диагностика лицензирования» в диспетчере сервера.
Все, на этом установка сервера терминалов закончена. Можно подключаться к серверу с помощью встроенного в Windows клиента «Подключение к удаленному рабочему столу».

01 апреля 2015

MySQL шпаргалки

Работа с бекапами


Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql

Создаём структуру базы без данных
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`

Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Удобно использовать бекап с дополнительными опциями -Q -c -e, т.е.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, где:
-Q оборачивает имена обратными кавычками
-c делает полную вставку, включая имена колонок
-e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее


Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD

А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE

Для таблиц InnoDB надо добавлять --single-transaction, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.

Подробнее

Общие факты

Полезно под каждую базу на боевом сервере создавать своего пользователя
Кодировка базы может быть любой, если она UTF8
В большинстве случаев лучше использовать движок InnoDB
В php лучше забыть про сильно устаревшее расширение mysql и по-возможности использовать pdo или mysqli
Новую копию MySQL всегда можно настроить и оптимизировать
Без особой нужды не стоит открывать MySQL наружу. Вместо этого можно сделать проброс портов
ssh -fNL LOCAL_PORT:localhost:3306 REMOTE_USER@REMOTE_HOST


Работа с данными


Числа

На 32-битных системах практически нет смысла ставить для типа INTEGER свойство UNSIGNED, так как такие большие числа в php не поддерживаются.
На 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT со знаком.
Связанные таблицы («Foreign keys») должны иметь полное сходство по структуре ключей. Т.е. если у нас на одной таблице для поля указано «INTEGER UNSIGNED DEFAULT 0 NOT NULL» то и на другой должно быть указано аналогично
Для хранения булевых значений, нужно использовать TINYINT(1)
А деньги лучше хранить в DECIMAL(10, 2), где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2) может сохранить 9999999,99


Строки

В старых версиях (до 5.0.3) VARCHAR была ограничена 255 символами, но сейчас можно указывать до 65535 символов
Помните, что тип TEXT ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»
Самая правильная кодировка для вашей БД UTF8


Даты

Не забывайте, что
DATE, TIME, DATETIME — выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразование
TIMESTAMP — хранится в виде UNIX_TIMESTAMP, и можно указать автоматически обновлять колонку
Сравнивая типы данных DATETIME и TIMESTAMP, не забывайте делать преобразование типов, например:
SELECT * FROM table WHERE `datetime` = DATE(`timestamp`)


Перечисления

Для перечислений правильно использовать тип ENUM
Правильно пишется так: ENUM('мама', 'мыла', 'раму')
Можно ставить значение по-умолчанию, как и для любой строки
В базе поле с перечислением хранится как число, поэтому скорость работы — потрясающе высокая
Количество перечислений ~ 65 тысяч


dev.mysql.com/doc/refman/4.1/en/storage-requirements.html
help.scibit.com/mascon/masconMySQL_Field_Types.html

Отладка


Если запросы тормозят, то можно включить лог для медленных запросов в /etc/mysql/my.cnf
А потом оптимизировать запросы через EXPLAIN
И наблюдать за запросами удобно через программу mytop