вторник, 2 июня 2015 г.

Изменения в CentOS 7

В новом дистрибутиве CentOS 7 появились новшества, которые поставили меня в некоторый тупик. Пытаясь разобраться, наткнулся на блог Владимира Драча, который помог разобраться со многими вопросами:

Задача: развернуть выделенную площадку для размещения нескольких веб-сайтов. Рассматриваем процесс с нуля, разделяя на несколько этапов.

В качестве операционной системы для будущей хостинг-площадки вполне рационально выбрать операционную систему Linux, диструбутив Centos. Свой выбор на Centos остановим, так как дистрибутив стабильный, прекрасно обновляется, поддерживает работу с пакетами. А самое главное - является вариантом Red Hat Enterprise Linux.
Удивительные вещи, которые ждут нас в седьмой версии:
  1. Отказ от iptables, теперь вместо него firewall
  2. Отказ от chkconfig - теперь вместо него systemd
  3. Переход с MySQL к MariaDB.

Установка операционной системы

На данный момент актуальной является CentOS 7, ориентированный исключительно на архитектуру x86_64. Скачиваем образ ISO и устанавливаем с диска, но можно поставить и с флэшки.
В процессе установки выбираем вариант Desktop: он достаточно лёгкий (не будет тащить за собой кучу лишних пакетов), а кроме того позволит на первых порах отлаживать систему в графическом режиме. В будущем установим дополнительные пакеты вручную.

Аппаратная часть

В нашем распоряжении оказался уже морально устаревший двухядерный компьютер на базе процессора E3300, имеющий 2 Гб оперативной памяти. Как показала практика, его вполне достаточно.

Разделы диска

На шаге Installation Destination нам предлагается выбрать диск для установки системы. Если ничего не трогать (Automatically Configure Partitioning), то инсталлятор самостоятельно справится с разбиением на разделы. Считаю, такие важные вещи нельзя пускать на самотёк, они требуют вмешательства; поэтому наш выбор - I will configure partitioning. Видим диалоговое окно, показанное ниже.
Распределяем место на диске.
  1. Нам необходимо выделить более 82 Мб для раздела boot.
  2. Всё оставшееся место за исключением размера оперативной памяти отводим под корневой раздел.
  3. Наконец, остаток отдаём под файл подкачки, помечая его swap.
 В  результате разделы будут видны примерно таким образом.
Centos: Hard drives setup
 В  отличие от шестой версии, файловой системой по умолчанию в седьмой версии является XFS, а не ext4. К сожалению, в сети довелось натыкаться на негативные отзывы о ней, однако не могу высказать своё собственное мнение: я вынужден использовать ext4 для совместимости с некоторым необходимым программно-аппаратным обеспечением.
Результат команды df -h после установки:
FilesystemSizeUsedAvailUse%Mounted on
/dev/sda2226G27G188G13%/
tmpfs922M0922M0%/dev/shm
/dev/sda1194M82M103M45%/boot

Отладка

Первое, что надо сделать – отключить систему безопасности SELinux.
Например, включенный selinux не позволит подключаться по протоколу ftp к серверу, если в будущем поставим vsftpd, клиент будет получать сообщения об ошибке
500 OOPS: cannot change directory:/home/username
В CentOS отключение SELinux выглядит просто. Открываем файл конфига
mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
перезагружаемся
reboot
Сделано, теперь нас не будут поджидать сюрпризы в будущем. Скептикам, ратующим за безопасность системы, сразу сообщаю, что наш сервер будет надёжно защищён настройкой firewall (пришёл на смену iptables). В соответствии с функциональным назначением нашего сервера настраиваем firewall, открывая для общего доступа порты 80 и 443:
firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https
Перезапускаем:
firewall-cmd --reload
Проверяем, что yum установлен. Если его нет, придётся вручную тащить пакет mirror.centos. org/centos/7/os/x86_64/Packages/ и устанавливать через менеджер пакетов.
Устанавливаем необходимые пакеты, которые непосредственно отвечают за функционирование веб-сервера. В нашем случае это apache, mysql, php (для комплекса LAMP) или nginx, mysql, php (для комплекса LEMP), а возможно, и всё вместе.
Например, установка веб-сервера apache выглядит следующим образом:
yum -y install httpd httpd-devel
Запускаем службу, добавляем в автозагрузку, проверяем результат:
systemctl start httpd.service

systemctl enable httpd.service
Если потребуется перезапустить apache после каких либо настроек (или после установки php), пригодится команда
systemctl restart httpd.service
Привычная утилита setup теперь отсутствует. Убеждаемся, что все службы будут стартовать при запуске системы с помощью systemctl is-enabled служба.
Варианты использования systemctl:
Остановка службыsystemctl stop httpd.service
Запуск службыsystemctl start httpd.service
Перечитать файл конфигурацииsystemctl reload httpd.service
Перезапуск службыsystemctl restart httpd.service
Перезапуск службы, если она уже запущенаsystemctl try-restart httpd.service
Проверка статуса службыsystemctl status httpd.service
Добавить в автозапускsystemctl enable httpd.service
Исключить из автозапускаsystemctl disable httpd.service
Проверка присутствия в автозапускеsystemctl is-enabled httpd.service
Вывести список службsystemctl list-unit-files --type=service
Устанавливаем PHP.
yum -y install php php-mysql php-common php-gd php-xml php-mbstring
Вариант наиболее полной установки PHP, с расчётом на разворачивание платформ для современных популярных движков Joomla, Wordpress и Drupal, будет выглядеть следующим образом:
yum -y install php php-gd php-mysql php-common php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
Если оригинальная версия php не соответствует минимальным требованиям размещаемых сайтов, можно воспользоваться описанной методикой или лучше более прогрессивной методикой.
Устанавливаем и запускаем MySQL.
yum -y install mysql mysql-server

systemctl enable mysqld

systemctl start mysqld
Не забываем задать пароль root для MySQL.
Альтернативный вариант: устанавливаем и запускаем MariaDB:
yum install -y mariadb mariadb-server

systemctl enable mariadb

systemctl start mariadb
Теперь готовимся к отказу от графического интерфейса.
Во всём семействе Red Hat Linux (Fedora, Red Hat, CentOS) используется следующая система уровней выполнения
  1. Single-user text mode (without networking)
  2. Not used (user-definable)
  3. Full multi-user text mode
  4. Not used (user-definable)
  5. Full multi-user graphical mode (with an X-based login screen)
  6. Reboot
Состояние подготовки к выключению кодируется нулём.
Так как перед нами стоит задача развернуть выделенный сервер, наиболее рационально выбрать уровень 3, который является многопользовательским, но не использует графику.
Редактируем
/etc/inittab
Прописываем
id:3:initdefault:
Теперь третий уровень выполнения становится уровнем по умолчанию, именно на нём будет работать система в случае перезапуска.
В любой момент времени проверить текущий уровень можно командой runlevel:
/sbin/runlevel
Теперь дело за малым:
  1. Настроить mysql, однако необходимо заметить, что компания Red Hat предпочитает на данный момент альтернативную базу данных MariaDB
  2. Настроить высокопроизводительный веб-сервер (например, связку nginx+apache), или оставить только службу httpd
  3. Настроить php
Если все шаги выполнены, то у нас всё готово.
Можно клонировать сайты и запускать корабль в плавание.

Комментариев нет:

Отправить комментарий