В новом дистрибутиве CentOS 7 появились новшества, которые поставили меня в некоторый тупик. Пытаясь разобраться, наткнулся на блог Владимира Драча, который помог разобраться со многими вопросами:
Задача: развернуть выделенную площадку для размещения нескольких веб-сайтов. Рассматриваем процесс с нуля, разделяя на несколько этапов.
В качестве операционной системы для будущей хостинг-площадки вполне рационально выбрать операционную систему Linux, диструбутив Centos. Свой выбор на Centos остановим, так как дистрибутив стабильный, прекрасно обновляется, поддерживает работу с пакетами. А самое главное - является вариантом Red Hat Enterprise Linux.
Удивительные вещи, которые ждут нас в седьмой версии:
В процессе установки выбираем вариант Desktop: он достаточно лёгкий (не будет тащить за собой кучу лишних пакетов), а кроме того позволит на первых порах отлаживать систему в графическом режиме. В будущем установим дополнительные пакеты вручную.
Распределяем место на диске.
В отличие от шестой версии, файловой системой по умолчанию в седьмой версии является XFS, а не ext4. К сожалению, в сети довелось натыкаться на негативные отзывы о ней, однако не могу высказать своё собственное мнение: я вынужден использовать ext4 для совместимости с некоторым необходимым программно-аппаратным обеспечением.
Результат команды
Например, включенный selinux не позволит подключаться по протоколу ftp к серверу, если в будущем поставим vsftpd, клиент будет получать сообщения об ошибке
Устанавливаем необходимые пакеты, которые непосредственно отвечают за функционирование веб-сервера. В нашем случае это apache, mysql, php (для комплекса LAMP) или nginx, mysql, php (для комплекса LEMP), а возможно, и всё вместе.
Например, установка веб-сервера apache выглядит следующим образом:
Варианты использования systemctl:
Устанавливаем PHP.
Устанавливаем и запускаем MySQL.
Альтернативный вариант: устанавливаем и запускаем MariaDB:
Во всём семействе Red Hat Linux (Fedora, Red Hat, CentOS) используется следующая система уровней выполнения
Так как перед нами стоит задача развернуть выделенный сервер, наиболее рационально выбрать уровень 3, который является многопользовательским, но не использует графику.
Редактируем
В любой момент времени проверить текущий уровень можно командой runlevel:
Можно клонировать сайты и запускать корабль в плавание.
Удивительные вещи, которые ждут нас в седьмой версии:
- Отказ от iptables, теперь вместо него firewall
- Отказ от chkconfig - теперь вместо него systemd
- Переход с MySQL к MariaDB.
Установка операционной системы
На данный момент актуальной является CentOS 7, ориентированный исключительно на архитектуру x86_64. Скачиваем образ ISO и устанавливаем с диска, но можно поставить и с флэшки.В процессе установки выбираем вариант Desktop: он достаточно лёгкий (не будет тащить за собой кучу лишних пакетов), а кроме того позволит на первых порах отлаживать систему в графическом режиме. В будущем установим дополнительные пакеты вручную.
Аппаратная часть
В нашем распоряжении оказался уже морально устаревший двухядерный компьютер на базе процессора E3300, имеющий 2 Гб оперативной памяти. Как показала практика, его вполне достаточно.Разделы диска
На шаге Installation Destination нам предлагается выбрать диск для установки системы. Если ничего не трогать (Automatically Configure Partitioning), то инсталлятор самостоятельно справится с разбиением на разделы. Считаю, такие важные вещи нельзя пускать на самотёк, они требуют вмешательства; поэтому наш выбор - I will configure partitioning. Видим диалоговое окно, показанное ниже.Распределяем место на диске.
- Нам необходимо выделить более 82 Мб для раздела boot.
- Всё оставшееся место за исключением размера оперативной памяти отводим под корневой раздел.
- Наконец, остаток отдаём под файл подкачки, помечая его swap.
В отличие от шестой версии, файловой системой по умолчанию в седьмой версии является XFS, а не ext4. К сожалению, в сети довелось натыкаться на негативные отзывы о ней, однако не могу высказать своё собственное мнение: я вынужден использовать ext4 для совместимости с некоторым необходимым программно-аппаратным обеспечением.
Результат команды
df -h
после установки:Filesystem | Size | Used | Avail | Use% | Mounted on |
---|---|---|---|---|---|
/dev/sda2 | 226G | 27G | 188G | 13% | / |
tmpfs | 922M | 0 | 922M | 0% | /dev/shm |
/dev/sda1 | 194M | 82M | 103M | 45% | /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 |
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) используется следующая система уровней выполнения
- Single-user text mode (without networking)
- Not used (user-definable)
- Full multi-user text mode
- Not used (user-definable)
- Full multi-user graphical mode (with an X-based login screen)
- Reboot
Так как перед нами стоит задача развернуть выделенный сервер, наиболее рационально выбрать уровень 3, который является многопользовательским, но не использует графику.
Редактируем
/etc/inittabПрописываем
id:3:initdefault:Теперь третий уровень выполнения становится уровнем по умолчанию, именно на нём будет работать система в случае перезапуска.
В любой момент времени проверить текущий уровень можно командой runlevel:
/sbin/runlevelТеперь дело за малым:
- Настроить mysql, однако необходимо заметить, что компания Red Hat предпочитает на данный момент альтернативную базу данных MariaDB
- Настроить высокопроизводительный веб-сервер (например, связку nginx+apache), или оставить только службу httpd
- Настроить php
Можно клонировать сайты и запускать корабль в плавание.
Комментариев нет:
Отправить комментарий