Dataenginer

Введение

В этой статье я расскажу, как настроить web сервер на базе популярного стека технологий — apache и php с модулем prefork. В связи с выходом нового релиза Centos 8, многие статьи на эту тему стали не актуальны, так как версии софта в базовых репозиториях обновились и тот же php нет смысла ставить из стороннего репозитория.

В своей тестовой среде я буду использовать следующие сущности.

z.serveradmin.ru имя тестового виртуального хоста и сайта
/web/sites директория для размещения виртуальных хостов
10.20.1.23 локальный ip адрес сервера
pma.serveradmin.ru имя виртуального хоста для phpmyadmin

Если вам не хочется настраивать SELinux, то просто его. Если же вы планируете включить и использовать после настройки, то переведите его в режим Permissive. В этом режиме он будет отключен, но все ограничения будут отражаться в лог файле audit.log. Это позволит нам в конце статьи сформировать модуль selinux для httpd и php и включить их.

# setenforce 0

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе

Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии

Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

Получаем сертификат от Let’s Encrypt

Итак, я считаю, что вы настроили почтовый сервер по предложенной выше ссылке. Значит, у вас установлен веб сервер Apache, а так же все в порядке с dns записями. Сертификатов мы получим сразу два. Для доменных имен:

  • mail.site.ru — имя почтового сервера, этот сертификат будут использовать postfix и apache
  • webmail.site.ru — домен для web интерфейса почты, будет использовать веб сервер

Для настройки получения сертификатов let’s encrypt и настройки apache, нам нужно будет установить несколько пакетов. Напоминаю, что речь идет про Centos 8. В других системах настройка будет аналогичной, только имена пакетов могут отличаться.

# dnf install certbot python3-certbot-apache mod_ssl

Пакеты эти живут в репозитории epel, так что если он еще не подключен, подключите.

# dnf install epel-release

Дальше нам нужно добавить 2 виртуальных домена в настройки apache. Для этого создаем 2 конфига в директории /etc/httpd/conf.d/.

1. mail.site.ru.conf

<VirtualHost *:443>
 ServerName mail.site.ru
 DocumentRoot /var/www/mail.site.ru/
 <Directory /var/www/mail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/mail.site.ru-error.log
 CustomLog /var/log/httpd/mail.site.ru-access.log combined
</VirtualHost>

<VirtualHost *:80>
 ServerName mail.site.ru
 DocumentRoot /var/www/mail.site.ru/
 <Directory /var/www/mail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/mail.site.ru-error.log
 CustomLog /var/log/httpd/mail.site.ru-access.log combined
</VirtualHost>

2. webmail.site.ru.conf

<VirtualHost *:443>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
</VirtualHost>

<VirtualHost *:80>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
</VirtualHost>

По сути конфиги идентичные, только названия доменов разные. Теперь можно проверить конфигурацию apache и перезапустить его.

# apachectl -t
# apachectl reload

Если увидите ошибку:

AH00526: Syntax error on line 85 of /etc/httpd/conf.d/ssl.conf:
SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty

Просто удалите конфиг /etc/httpd/conf.d/ssl.conf. Он нам не нужен.

Если нет ошибок, то можно запускать certbot и получать сертификаты. Делается это очень просто.

# certbot --apache

Если все прошло без ошибок, то вы увидите в директории /etc/letsencrypt/live две папки с сертификатами для каждого из доменов.

Так же certbot автоматически добавит в конфигурации виртуальных хостов apache несколько дополнительных параметров.

<VirtualHost *:443>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
 SSLCertificateFile /etc/letsencrypt/live/mail.site.ru/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/mail.site.ru/privkey.pem
 Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

<VirtualHost *:80>
 ServerName webmail.site.ru
 DocumentRoot /var/www/webmail.site.ru/
 <Directory /var/www/webmail.site.ru/>
  Options -Indexes +FollowSymLinks
  AllowOverride All
 </Directory>
 ErrorLog /var/log/httpd/webmail.site.ru-error.log
 CustomLog /var/log/httpd/webmail.site.ru-access.log combined
 RewriteEngine on
 RewriteCond %{SERVER_NAME} =mail.site.ru
 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} 
</VirtualHost>

В этот виртуальный хост установите веб почту, если вам она нужна.

Настройка разрешений SELinux для виртуальных хостов (рекомендуется)

SELinux — это модуль безопасности ядра Linux, который обеспечивает повышенную безопасность для систем Linux. CentOS 8 оснащается модулем SELinux, настроенным работу с конфигурацией Apache по умолчанию. Поскольку вы изменили стандартную конфигурацию, настроив пользовательскую директорию журналов в файле конфигурации виртуальных хостов, вы получите ошибку при попытке запуска службы Apache. Для устранения данной проблемы вам нужно обновить политики SELinux, чтобы разрешить Apache записывать данные в нужные файлы.

Существуют различные способы настройки политики с учетом потребностей вашей среды, поскольку SELinux позволяет настраивать необходимый вам уровень безопасности. На этом шаге мы обсудим два метода внесения изменений в политики Apache: универсально и в конкретной директории. Изменение политики в директориях является более безопасным, поэтому мы рекомендуем использовать этот подход.

Универсальное изменение политик Apache

Универсальная настройка политики Apache позволит SELinux одинаковым образом использовать все процессы Apache, используя для этого булеву переменную 

Хотя этот подход более удобен, он не обеспечивает аналогичный уровень контроля, что и подход, который подразумевает внимание к политике для отдельных файлов и директорий

Запустите следующую команду для установки универсальной политики Apache:

Команда  меняет значения булевых значений SELinux. Флаг  будет обновлять значение времени начальной загрузки, а обновленное значение сохраняется между перезагрузками.  — это булево значение, которое позволит SELinux рассматривать все процессы Apache как один тип, поэтому вы активировали его со значением .

Изменение политик Apache для директории

Индивидуальная настройка разрешений SELinux для директории  позволит вам получить более полноценный контроль за политиками Apache, но также может потребовать дополнительных действий. Поскольку этот параметр не подразумевает наличия универсально настроенных политик, вам нужно будет вручную задать тип контекста для любых новых директорий.

Вначале проверьте тип контекста, который SELinux указал для директории :

Эта команда формирует список и выводит контекст SELinux из директории. Вы получите примерно следующий результат:

В настоящее время используется контекст , который указывает SELinux, что процесс Apache может читать только файлы, созданные в этой директории. В ходе данного обучающего руководства вы измените тип контекста директории  на . Этот тип позволит Apache генерировать и добавлять данные в файлы журнала веб-приложения:

Затем воспользуйтесь командой  для применения этих изменений и их сохранения между перезагрузками:

Флаг  запускает эту команду рекурсивно, т. е. она будет обновлять любые существующие файлы для использования нового контекста. Флаг  будет распечатывать изменения контекста, внесенные командой. Вы увидите следующий вывод, подтверждающий изменения:

Вы можете вывести список контекста еще раз, чтобы посмотреть изменения:

Результат отражает обновленный тип контекста:

Теперь, когда директория  использует тип , вы готовы протестировать вашу конфигурацию виртуального хоста.

Установка Freepbx 14 на Centos 8

Теперь покажу, как установить Freepbx 14 на php 7.2, которая в базовом репозитории Centos 8. Делаем все то же самое, что и выше, только для 14-й версии.

Качаем архив с официального сайта.

# cd ~
# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz

Распаковываем архив.

# tar xfz freepbx-14.0-latest.tgz

Устанавливаем Freepbx 14 на Centos 8.

# cd freepbx
# ./start_asterisk start
# ./install -n

Если на mysql установили пароль root, то запускать установку следует с указанием пароля.

# ./install -n --dbuser root --dbpass password

Перезапустите httpd.

# systemctl restart httpd

На этом установка freepbx 14 закончена. Можно идти в веб интерфейс и проверять.

Настройка сети CentOS 8 через конфигурационные файлы

Первый метод мы с вами разобрали, он подходит всем, кто делает установку системы сам. Теперь ситуация, когда вам передали уже готовую CentOS 8, пусть в установке Minimal, это стандартный нормальный вариант использования CentOS 8, в качестве серверной ОС. Нет графики, нет кучи компонентов, меньше фронт атаки. Подключаемся к вашему терминалу. Первое, что вам необходимо сделать, это посмотреть список и названия всех ваших сетевых интерфейсов, для этого есть команда:

ip a (То же самое, что и ввести ip addr show)

Как видим у меня два сетевых интерфейса ens33 и ens36. У меня почему, то у интерфейса ens33 нет IPv4 адреса, у второго я получил 192.168.253.145, это мой интернет шнурок.

Если у вас один интерфейс и он не получил ни какого IP-адреса, то логично что вы поставить IFCONFIG не сможете, поэтому сразу переходите к редактированию конфигурационных файлов и настройке статического или динамического IP

Пробуем с вами посмотреть текущие сетевые настройки IP адреса, маску, шлюз в более удобном виде, для этого мы использовали утилиту IFCONFIG. Пишем команду:

ifconfig

Но в случае с CentOS 8 Minimal у вас выскочит ошибка «Command not found» или в русском варианте «ifconfig команда не найдена». Нам ее нужно установить

Установка IFCONFIG в CentOS 8

Давайте выясним, в каком пакете у нас идет утилита IFCONFIG, для этого вам необходимо выполнить команду:

yum provides ifconfig

На выходе я получил «Basic networking tools (BaseOS)»

Установим данный пакет, пишем команду:

yum install net-tools

Вас спросят хотите ли вы установить данный пакет net-tools, нажмите «Y». Видим, что все успешно установилось.

Пробуем теперь запустить IFCONFIG. Как видим в таком варианте считывание информации, о настройках сети CentOS 8 куда приятнее.

Давайте теперь я отредактирую сетевые настройки для интерфейса ens33 и задам ему:

  • IP — 192.168.31.31
  • Маску — 255.255.255.0
  • Шлюз — 192.168.31.1
  • DNS — 192.168.31.1, 192.168.31.2
  • Автоматическое включение при старте CentOS 8

В операционных системах CentOS настройки сетевых интерфейсах лежат по пути /etc/sysconfig/network-scripts/. Давайте посмотрим содержимое Для этого введите:

dir /etc/sysconfig/network-scripts/

Вы увидите конфигурационные файлы ваших сетевых интерфейсов, в моем случае, это ens33 и ens36

Чтобы настроить сеть на интерфейсах CentOS 8, вам необходимо отредактировать нужный конфигурационный файл. Для этого я воспользуюсь встроенным редактором vi. Пишем команду:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

Чтобы начать редактировать файл нажмите клавишу «INSERT»

Далее чтобы задать статический IP-адрес приведите настройки вот к такому виду:

  • TYPE=Ethernet
  • BOOTPROTO=none (означает задать статические настройки), можно поменять значение на DHCP
  • NAME=ens33
  • ONBOOT=yes (иначе не будет стартовать при запуске)
  • NAME=ens33 мое имя интерфейса
  • UUID можно менять при клонировании конфигурационного файла
  • IPADDR=192.168.31.31 мой IP-адрес
  • PREFIX=24 маска 255.255.255.0
  • DNS1=192.168.31.1 мой основной DNS
  • DNS2=192.168.31.2 дополнительный DNS
  • DOMAIN=root.pyatilistnik.org
  • GATEWAY=192.168.31.1 основной шлюз

Чтобы сохранить настройки нажмите ESC, потом введите :wq  если нужно выйти без сохранения введите :qa!

Чтобы получать динамический IP-адрес по DHCP, выставите в опции BOOTPROTO=dhcp и удалите пункты DNS, IPADDR, PREFIX, GATEWAY

осталось теперь поднять наш сетевой интерфейс для этого есть несколько методов, самый простой использование ifup введите:

ifup ens33

Как видим, у меня сетевой интерфейс стал в состояние подключено и я вижу через ifconfig его ip адрес.

Проверим через утилиту PING доступность контроллера домена и другого сервера, отлично пакеты ходят.

Подготовка системы

Я рекомендую ознакомиться с моим материалом на тему установки и первоначальной настройки centos 8. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

# mcedit /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему и ставим пакеты Development Tools:

# dnf update
# dnf groupinstall core base "Development Tools"

И еще некоторые зависимости, которые будут нужны.

# dnf install tftp-server ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget sqlite-devel net-tools gnutls-devel unixODBC

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Для Freepbx версия не критична, так что будем ставить 10.3 из базового репозитория.

# dnf module install mariadb

Запускаем mysql сервер.

# systemctl start mariadb
# systemctl enable mariadb

Настройка SELinux для web сервера apache

Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.

# dnf install policycoreutils-python-utils

Теперь автоматически сформируем модуль для selinux на основе событий аудита, которые накопились, пока мы настраивали сайт. Посмотреть их можно командой.

# grep httpd /var/log/audit/audit.log | audit2why

Создаем модуль selinux.

# grep httpd /var/log/audit/audit.log | audit2allow -M my-httpd

Загружаем его.

# semodule -i my-httpd.pp

То же самое делаем для php.

# grep php /var/log/audit/audit.log | audit2allow -M my-php
# semodule -i my-php.pp

Добавим нашу директорию /web/sites в соответствующие таблицы selinux для контента и логов.

# semanage fcontext -a -t httpd_sys_content_t "/web/sites(/.*)?"
# semanage fcontext -a -t httpd_log_t "/web/sites(/.*)?/log(/.*)?"

И отдельно добавим каталог, куда web сервер сможет писать данные. Я покажу на примере правила для сайтов wordpress, где web сервер должен уметь писать в директорию wp-content для загрузки медиафайлов, установки тем и плагинов, а так же изменять файл wp-config.php.

# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-content(/.\*)?"
# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-config.php"

Обновляем атрибуты файлов новым контекстом SELinux.

# restorecon -Rv /web/sites

В завершении настройки selinux для apache, добавим еще один параметр, без которого httpd не сможет писать файлы в указанные каталоги.

# setsebool -P httpd_unified 1

Теперь активируем защиту selinux и проверяем, что она работает.

# setenforce 1
# getenforce
Enforcing

Режим работы Enforcing означает, что selinux работает. Убедиться, что модули загружены, можно командой.

# semodule -l | grep my-

В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.

Хорошая практическая статья по ручной настройке selinux для web сервера — https://habr.com/ru/post/322904/. Там же есть ссылки на другие статьи автора на тему selinux. Написано содержательно и наглядно, рекомендую для тех, кто будет знакомиться с технологией.

Шаг 2 — Настройка правил брандмауэра

Если вы активировали брандмауэр  согласно требованиям нашего руководства по первоначальной настройке для CentOS 8, вам потребуется изменить настройки брандмауэра, чтобы разрешить внешние подключения к вашему веб-серверу Nginx, который запускается на порту  по умолчанию.

Запустите следующую команду, чтобы на постоянной основе активировать соединения HTTP для порта :

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

Вывод будет выглядеть следующим образом:

Для применения изменений вам необходимо перезагрузить службу брандмауэра:

Теперь сервер Nginx полностью установлен и доступен для внешних посетителей.

Что нового

Рассмотрим основные изменения, которые влияют на процесс настройки операционной системы и работы с ней.

1. Установка пакетов

Пакетный менеджер.

Пакетный менеджер YUM заменен на DNF. Последний потребляем меньше ресурсов и работает быстрее. Синтаксис установки пакетов, во многом, остается таким же, например:

dnf install bind

Однако, команда yum install bind также отработает — yum является алиасом для dnf, поэтому привычный формат установка пакетов и обновлений сохранен.

Репозитории.

Для установки и обновления пакетов используются базовый репозиторий и BaseOS и модульный AppStream. Базовый содержит минимально необходимый для работы набор пакетов, AppStream — все остальное. Более того, AppStream может использоваться в двух форматах — классическом RPM и модульном.

Модульный репозиторий содержит наборы с альтернативными версиями пакетов — таким образом можно установить программное обеспечение либо основной версии (которая по умолчанию поддерживается релизом CentOS), либо альтернативную (она тоже официально поддерживается операционной системой). Набор пакетов в модульном репозитории представляет из себя логическую единицу для установки приложения — само приложение, набор библиотек и инструментов для его работы. Все наборы тестируются перед размещением в репозиторий.

2. Сетевые настройки

Управление сетью.

Для управления сетью используется только NetworkManager. Скрипты ifup и ifdown объявлены как устаревшие. Для перезапуска сети теперь используется команда:

systemctl restart NetworkManager

* раньше это можно было сделать командой systemctl restart network.

Брандмауэр.

Пакетный фильтр nftables пришел на смену старому доброму iptables. firewalld переведён на использование nftables. Также появились утилиты iptables-translate и ip6tables-translate для конвертации старых правил под iptables.

TCP/IP.

TCP стек обновлен до версии 4.16. Разработчики отмечают увеличение скорости при обработке входящих соединений.

3. Установка

Инсталлятор.

Добавлена возможность установки системы на накопители NVDIMM. Инструмент Image Builder позволяет пользователям создавать настраиваемые системные образы в различных форматах, включая изображения, подготовленные для развертывания в облаках различных поставщиков.

4. Безопасность

Политики настройки криптографических подсистем.

Пакет OpenSSL обновлен до версии 1.1.1 с поддержкой TLS 1.3. Это позволит не пересобирать некоторые пакеты (например nginx для включения http/2).

Также с помощью команды update-crypto-policies можно выбрать один из режимов выбора криптоалгоритмов.

PKCS#11.

Включена поддержка смарткарт и HSM c токенами PKCS#11;

5. Виртуальзация

QEMU.

QEMU обновлен до версии 2.12. Виртуальные машины создаются с поддержкой PCI Express и с эмуляцией чипсета ICH9. Реализован режим sandbox-изоляции для ограничения системных вызовов.

Утилита virt-manager является устаревшей и вместо нее рекомендуется использовать веб-интерфейс Cockpit.

6. Веб-разработка

Языки программирования.

По умолчанию из репозитория теперь устанавливаются:

  • php7.2 вместо php5.4
  • Python 3.6 вместо 2.7
  • Ruby 2.5
  • Perl 5.26
  • SWIG 3.0

Базы данных.

Также из коробки будут устанавливаться:

  • MariaDB 10.3
  • MySQL 8.0
  • PostgreSQL 10 или PostgreSQL 9.6
  • Redis 5

Веб-серверы.

Версии устанавливаемых по умолчанию пакетов — Apache 2.4 и nginx 1.14.

7. Графический интерфейс

Desktop.

По умолчанию устанавливается графический интерфейс GNOME версии 3.28. В качестве протокола организации графического сервера используется Wayland. По сравнению с Xorg, Wayland задействует меньше программных и аппаратных ресурсов и считается, что работает быстрее. Однако, использование Xorg в CentOS 8 также возможно.

Пакеты KDE удалены из состава дистрибутива.

Cockpit.

Cockpit — веб-интерфейс для управления CentOS. Он может оказаться полезным новичкам. Для его запуска нужно выполнить несколько несложных команд.

Установка:

dnf install cockpit

Настройка брандмауэра:

firewall-cmd —permanent —add-port=9090/tcp

firewall-cmd —reload

Запуск:

systemctl enable —now cockpit.socket

systemctl start cockpit

Можно заходить на интерфейс по адресу https://<IP-адрес компьютера>:9090/. В качестве логина используем системную учетную запись, например, root.

Весь список изменений можно найти на сайте Red Hat.

Установка версии PHP от Remi

для CentOS 7

Активируем репу remi-php72, для этого выполняем команду:

# yum-config-manager --enable remi-php72

Устанавливаем php7.2 выполнив команду:

yum install php72

Лучше указывать php72 и тогда пакеты будут установлены только из репозитория remi. Например, я всегда внимательно смотрю какая версия php будет установлена в списке устанавливаемых пакетов.

Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.

yum install php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache php-imap

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

php -v
= вывод команды =
PHP 7.2.16 (cli) (built: Mar 5 2019 14:45:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.16, Copyright (c) 1999-2018, by Zend Technologies

для CentOS 8

Активируем репу php remi-7.2, для этого выполняем команды:

dnf module reset php
dnf module enable php:remi-7.2
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:53:36 назад, Пн 28 окт 2019 08:05:09.
Зависимости разрешены.
====================================================================================================
 Пакет                  Архитектура           Версия                   Репозиторий            Размер
====================================================================================================
Enabling module streams:
 httpd                                        2.4                                                  
 php                                          remi-7.2                                             

Результат транзакции
====================================================================================================

Продолжить? [д/Н]: д
Выполнено!

Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)

Убедимся что версия выбрана правильно:

dnf module list php
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:55:03 назад, Пн 28 окт 2019 08:05:09.
CentOS-8 - AppStream
Name Stream Profiles Summary 
php 7.2  common , devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary 
php remi-7.2  common , devel, minimal PHP scripting language 
php remi-7.3 common , devel, minimal PHP scripting language 
php remi-7.4 common , devel, minimal PHP scripting language

Hint: efault, nabled, disabled, nstalled

Всё правильно.

Установим php remi-7.2 и все популярные модули следующей командой:

dnf install php php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache php-imap

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:

Перезагружаемся и проверяем, на месте ли маршрут:

Все в порядке, статический маршрут добавлен.

Заключение

Подведем итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере CentOS. Да и не только на нем, вся информация в статье актуальна практически для любого Linux дистрибутива. Мы научились устанавливать время, изменять часовой пояс, синхронизировать время с помощью ntp, chrony и настраивать сервер времени в локальной сети.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Главное меню » Операционная система CentOS » Как установить часовой пояс на CentOS 7

Для того, чтобы установить время и дату на CentOS 7 мы будем использовать команду timedatectl. Это утилита, которая распространяется как часть системы Systemd и сервис-менеджер. Команда timedatectl имеет следующие особенности:

  • Обзор текущей даты и времени
  • Изменение даты и времени
  • Установка часового пояса системы
  • Включение автоматической синхронизации системных часов с удаленным сервером

Прежде всего, подключимся к CentOS VPS через SSH. Это всегда хорошая практика, чтобы обновить все системное программное обеспечение до последней доступной версии. Вы можете сделать это с помощью следующей команды:

После завершения обновления, проверьте настройки системных часов с помощью команды timedatectl:

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

Следующее, которую вы могли бы сделать, это установить часовой пояс. Чтобы получить список доступных часовых поясов вы можете использовать следующую команду:

Выходная информация может быть большим, и вы можете использовать Grep для фильтрации результатов. Например, если вы хотите перечислить американские часовые пояса, вы можете использовать следующую команду:

Для установки часового пояса используйте следующую команду:

Здесь вы можете заменить Europe/Moscow с именем часового пояса, который вы хотите установить. Используйте команду timedatectl еще раз, чтобы просмотреть изменения.

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

Например, чтобы установить текущую дату 09-09-2016 и текущее время 16:20:00, используйте команду ниже:

Более подробную информацию о том, как использовать команду timedatectl вы можете найти с помощью использования флага -help:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: