Внимание! Уже появилась более прогрессивная методика для версии 7.1.
В качестве операционной системы для будущей хостинг-площадки вполне рационально выбрать операционную систему Linux, диструбутив Centos версии 7.0. Свой выбор на Centos остановим, так как дистрибутив стабильный, прекрасно обновляется, поддерживает работу с пакетами. А самое главное - является вариантом Red Hat Enterprise Linux.
Удивительные вещи, которые ждут нас в седьмой версии:
- Отказ от 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 |
Устанавливаем 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) используется следующая система уровней выполнения
- 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
Если все шаги выполнены, то у нас всё готово.
Можно клонировать сайты и запускать корабль в плавание.
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux