Step 4: Test PHP
By default, the Nginx package on RHEL 8/CentOS 8 includes configurations for PHP-FPM ( and ). To test PHP-FPM with Nginx Web server, we need to create a file in the document root directory.
nano /usr/share/nginx/html/info.php
Paste the following PHP code into the file.
<?php phpinfo(); ?>
Save and close the file. If you installed LEMP stack on a local RHEL 8/CentOS 8 server, type in or in the browser address bar. You should see your server’s PHP information. This means PHP scripts can run properly with Nginx web server.
If RHEL 8/CentOS is running on a remote server, then enter in browser address bar. Replace with your actual IP address.
If the browser fails to display the PHP info but prompt you to download the info.php file, simply restart Nginx and PHP-FPM.
sudo systemctl restart nginx php-fpm
Then you should be able to see the PHP info in the web browser.
Разные релизы CentOS
В одном репозитории мы можем легко хранить пакеты для различных релизов операционной системы CentOS (и не только CentOS, но и PPA). Для этого создаем каталог под новый релиз, синхронизируем его с источником и создаем из него репозиторий, например:
mkdir -p /usr/share/nginx/html/repos/6/{os,updates}/x86_64
* в данном примере предполагается использование репозитория для релиза 6.
Синхронизируем пакеты:
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/6/os/x86_64/ /usr/share/nginx/html/repos/6/os/x86_64/
rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/6/updates/x86_64/ /usr/share/nginx/html/repos/6/updates/x86_64/
Создаем репозитории:
createrepo -v /usr/share/nginx/html/repos/6/os/x86_64
createrepo -v /usr/share/nginx/html/repos/6/updates/x86_64
Общая информация
В одной из статей уже рассматривалось использование пакетного менеджера Yum в операционной системе CentOS. Сейчас же разберемся с репозиториями, которые являются неотъемлемой частью инфраструктуры управления пакетами.
Репозиторий представляет собой централизованное хранилище скомпилированных и готовых к установке программ с метаданными об их совместимости и взаимозависимостях. Репозитории бывают:
- официальные — поддерживаемые разработчиками дистрибутива ОС. Содержат пакеты, являющиеся частью операционной системы, а также дополнительные программы, тесно в нее интегрированные;
- коммерческие — поддерживаемые разработчиками стороннего платного программного обеспечения. Доступ к таким репозиториям обычно требует наличия подписки;
- открытые — поддерживаемые энтузиастами, сообществом или разработчиками свободно-распространяемого ПО. Открыты для всех желающих.
Так как перечень программного обеспечения, включенного в состав операционной системы ограничен, и разработчики не всегда успевают вовремя тестировать и включать в свои репозитории свежие версии сторонних проектов (веб-серверы, почтовые серверы, СУБД и т.д.), зачастую приходится подключать дополнительные репозитории.
Есть два основных способа подключения. Наиболее предпочтительный — установка RPM-пакета репозитория. В ходе этой операции скачиваются и создаются все необходимые файлы, после чего новый репозиторий появится в списке подключенных (команда yum repolist). Другой способ — создать файл настроек репозитория самостоятельно в каталоге /etc/yum.repos.d/. Файл должен иметь расширение repo и содержать следующие параметры:
Описание параметров:
— краткое имя репозитория;name — полное имя репозитория;baseurl — ссылка на репозиторий (может быть заменена параметром mirrorlist или metalink — ссылка на список региональных зеркал репозитория);gpgcheck — проводить ли проверку цифровой подписи пакетов (если значение параметра 1 — проводить, если 0 — не проводить);gpgkey — местоположение открытого ключа репозитория, с помощью которого производится проверка подписи;enabled — используется ли репозиторий при поиске и установке пакетов (1 — используется, 0 — репозиторий отключен).
Все необходимые значения для указанных параметров обычно можно найти на веб-сайте соответствующего репозитория.
Supported Distributions
The script supports Linux distributions that are officially supported by MariaDB Corporation’s MariaDB TX subscription. However, a MariaDB TX subscription with MariaDB Corporation is not required to use the MariaDB Package Repository.
The distributions currently supported by the script include:
- Red Hat Enterprise Linux (RHEL) 7 and 8
- CentOS 7
- Debian 9 (Stretch), 10 (Buster), 11 (Bullseye)
- Ubuntu 18.04 LTS (Bionic), and 20.04 LTS (Focal)
- SUSE Linux Enterprise Server (SLES) 12 and 15
To install MariaDB on distributions not supported by the MariaDB Package Repository setup script, please consider using MariaDB Foundation’s MariaDB Repository Configuration Tool. Some Linux distributions also include MariaDB in their own repositories.
Команды после установки
После установки пакетов, базу данных необходимо инициализировать и настроить.В приведенных ниже команд, значение будет варьироваться в зависимости от версии, используемой PostgreSQL.Для PostgreSQL версии 9.0 и выше, включает major.minor версию PostgreSQL, например, PostgreSQL-9.3
Каталог данныхКаталог данных PostgreSQL содержит все файлы данных для базы данных. Переменная PGDATA используется для создания ссылки на этот каталог.Для PostgreSQL версии 9.0 и выше, каталог данных по умолчанию является:/var/lib/pgsql//data
Например:/var/lib/pgsql/9.3/dataДля версий 7.x и 8.x, каталог данных по умолчанию является:/var/lib/pgsql/data/
ИнициализацияПервая команда (необходимо выполнить только один раз), чтобы инициализировать базу данных в PGDATA.service initdb
Например для версии 9.3:
Если предыдущая команда не работает, попробуйте прямо назвать настройки в бинарном виде, расположенный в подобной схеме именования:/usr/pgsql-y.x/bin/postgresqlyx-setup initdbНапример для версии 9.3:
Установка стека LAMP для WordPress
Теперь мы готовы установить все необходимые пакеты, связанные с нашим стеком LAMP, с помощью следующей команды.
# yum install httpd mariadb mariadb-server php-gd php-soap php-intl php-mysqlnd php-pdo php-pecl-zip php-fpm php-opcache php-curl php-zip php-xmlrpc wget
Теперь, когда установка завершена, нам нужно запустить и защитить нашу установку MariaDB.
# systemctl start mariadb # mysql_secure_installation
Следуйте инструкциям на экране, чтобы ответить на вопросы, связанные с безопасностью вашего сервера MariaDB.
# systemctl enable mariadb
Далее мы сделаем то же самое для веб-сервера Apache:
# systemctl start httpd # systemctl enable httpd
Web сервер на CentOS 8
Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:
- Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
- PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
- Mysql — система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.
Подопытным сервером будет выступать виртуальная машина от ihor, характеристики следующие:
Процессор | 2 ядра |
Память | 3 Gb |
Диск | 30 Gb SSD |
Хочу сразу уточнить, что разбираю базовую дефолтную настройку. Для улучшения быстродействия, повышения надежности и удобства пользования нужно установить еще несколько инструментов, о чем я расскажу отдельно. В общем случае для организации веб сервера будет достаточно того, что есть в этой статье.
Конфигурационные файлы репозиториев (*.repo)
Все конфигурационные файлы репозиториев расположены в директории /etc/yum.repos.d/. В конфигурационных файл *.repo. Типовой конфигурационный файл репозитория содержит следующие параметры:
- name — имя репозитория;
- baseurl — ссылка на репозиторий (может быть ftp://address, http://address, https://address или file://address для локального репозитория);
- enabled – нужно ли использовать данный репозиторий: 1 – репозиторий подключен, 0 – отключен;
- async – использовать ли параллельную загрузку пакетов (auto/on/off);
- gpgcheck – нужно ли выполнять проверку GPG (1 – проверять);
- gpgkey — ссылка на GPG ключ;
- exclude — список исключенных пакетов;
- includepkgs — список включенных пакетов;
- mirrorlist – список зеркал репозитория.
В минимальном случае repo файл может выглядеть так:
name=rep_name baseurl=rep_url
Например, после подключения репозитория REMII, в директории репозиториев появится несколько конфигурационных файлов Remi (remi-*.repo).
Как вы видите, Remi имеет отдельный конфигурационный файл для каждой версии php. Вам нужно включить нужную вам версию в конфигурационном файле, например у меня на сервере будет стоять версия php 7.3, для этого я включил именно этот репозиторий (в файле remi-php73.repo указал enabled=1):
Вы можете подключит репозиторий вручную, для этого нужно создать конфигурационный файл репозитория в директории /etc/yum.repos.d/. Подключим репозиторий MaruaDB.
Добавим в него данные, которое нам предоставляет разработчик пакета MariaDB:
name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos73-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Step 2: Install MariaDB Database Server on RHEL 8/CentOS 8
MariaDB is a drop-in replacement for MySQL. It is developed by former members of MySQL team who are concerned that Oracle might turn MySQL into a closed-source product. Enter the following command to install MariaDB on RHEL 8/CentOS 8.
yum install mariadb-server mariadb -y
After it’s installed, we need to start it.
systemctl start mariadb
Enable auto start at system boot time.
systemctl enable mariadb
Check status:
systemctl status mariadb
output:
● mariadb.service - MariaDB 10.3 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disable> Active: active (running) since Wed 2018-12-05 02:40:44 EST; 8s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 17582 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 11512) Memory: 75.2M CGroup: /system.slice/mariadb.service └─17582 /usr/libexec/mysqld --basedir=/usr
“Enabled” indicates that auto start at boot time is enabled and we can see that MariaDB server is running. Now we need to run the security script.
mysql_secure_installation
When it asks you to enter MariaDB root password, press Enter key as the root password isn’t set yet. Then enter to set the root password for MariaDB server.
Next, you can press Enter to answer all remaining questions, which will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security. (Note that the letter is capitalized, which means it’s the default answer.)
Now you can run the following command and enter MariaDB root password to log into MariaDB shell.
mysql -u root -p
To exit, run
exit;
Как пользоваться apt
1. Обновление пакетов
Сначала давайте обновим список пакетов apt из репозиториев. Репозитории находятся на удалённых серверах и когда утилита apt ищет пакет для установки, естественно, что она не обращается ко всем репозиториям подряд чтобы узнать где он находится. В системе уже есть сохранённых кэш информации о том, какие пакеты вообще есть и где их можно скачать. Для обновления этого кэша используйте команду update:
Во время загрузки URL репозиториев обозначаются специальными префиксами, вот что они означают:
- Hit (Сущ) — список не изменился с момента предыдущей загрузки;
- Ign (Игн) — репозиторий игнорируется, либо он слишком новый, либо произошла незначительная ошибка во время загрузки;
- Get (Пол) — доступна новая версия и она будет загружена.
Когда кэш обновлен вы можете посмотреть для каких пакетов доступны обновления:
Аналогично можно посмотреть установленные пакеты apt:
Или всех доступных:
Затем можно обновить все пакеты в системе:
2. Установка пакетов
Чтобы установить пакет apt используйте команду install, например, для установки программы Gimp используйте команду install:
Если пакет установился неверно и вы хотите его переустановить, можно использовать опцию —reinstall:
Как видите, опции можно указывать не только перед командой, но и после неё, аналогично можно установить несколько пакетов сразу, например:
Чтобы не подтверждать установку вручную используем опцию -y. Допустим вы установили пакет с помощью dpkg и теперь хотите установить для него зависимости, запустите команду install без параметров с опцией -f или —fix-broken:
Можно скачать deb пакет в текущую папку без установки:
Скачивать пакеты надо от имени обычного пользователя, иначе тогда они не будут доступны для работы с ними. Если вам нужно установить пакет из файла, просто передайте путь к файлу команде install:
Чтобы установить определенную версию пакета просто укажите нужную версию после имени пакета через знак =, например:
Чтобы найти доступные версии можно использовать команду policy. Она отображает информацию о том какая версия установлена, а также какие версии доступны:
Если вы не знаете как точно называется пакет, можно выполнить поиск пакетов apt с помощью команды search:
3. Удаление пакетов
Чтобы удалить ненужный пакет используйте команду remove:
Однако если вы изменяли какие-либо конфигурационные файлы из состава пакета, то при таком способе удаления они останутся в системе, чтобы удалить всё полностью используйте команду purge:
Чтобы удалить лишние пакеты, которые в системе больше не нужны выполните команду autoremove:
А для очистки кэша пакетов — autoclean:
×
Подключение репозиториев EPEL и Remi в CentOS
При установке операционной системы (в нашем примере это CentOS 7), по умолчанию устанавливаются базовые репозитории. Посмотреть их список можно следующей командой:
Как можно увидеть на скриншоте в системе установлено 3 репозитория — base, extras, updates.
Этих основных репозиториев хватит, чтобы начать вашу работу по установке базового ПО и установке дополнительных репозиториев.
Рассмотрим, как добавить дополнительные репозитории в CentOS.
Пожалуй, самый популярный на данный момент репозиторий — это EPEL.
EPEL (Extra Packages for Enterprise Linux) — это открытый и бесплатный проект репозитория, предоставляемый командой Fedora. Он содержит в себе высококачественные пакеты дополнительного ПО для Linux дистрибутивов. В данном репозитории размещается огромное количество пакетов начиная с ftp-серверов, заканчивая php и утилитами мониторинга системы. Это самый популярный дополнительный репозиторий
Важно отметить, что пакеты из EPEL не конфликтуют с родными пакетами CentOS/RHEL и не заменяют их.
Репозиторий EPEL в CentOS 7 устанавливается очень просто (в отличии от CentOS 6) через RPM пакет (это самый простой способ добавления репозитория):
После установки данный репозиторий отображается в списке, даже без дополнительных манипуляций (очистка кэша yum не требуется).
Чтобы подключить репозиторий Remi, выполните команду:
Remi — еще один популярный репозиторий для CentOS. Содержит в себе самые новейшие версии php, а так же mysql. Был создан человеком по имени Remi Collet. Чтобы использовать данный репозиторий, в системе должен быть установлен Epel
Обратите внимание, что могут быть конфликты пакетов из этого репозитория с пакетами из базовых репозиториев
Если RPM пакета для нужного репозитория нет, вы можете добавить его, вручную создав конфигурационный .repo файл в каталоге /etc/yum.repos.d (см. следующий раздел).
Чтобы понять из каких репозиториев установлены конкретные пакеты в вашей систему, вы можете вывести полный список пакетов:
Как вы видите, для каждого пакета указано из какого репозитория он установлен (на скрипншоте есть репозитории base, update, epel и anaconda).
Вы можете вывести список пакетов, доступных для установки в конкретном репозитории:
Шаг 1 — Установка Apache и настройка файрвола
Веб-сервер Apache в настоящее время является одним из самых популярных веб-серверов в мире. Он хорошо документирован и используется значительную часть времени с момента создания сети Интернет, что делает его прекрасным выбором для хостинга веб-сайта.
Мы с легкостью можем установить Apache используя менеджер пакетов Ubuntu . Менеджер пакетов позволяет нам легко установить большую часть программного обеспечения из репозиториев Ubuntu. О том, как использовать , вы можете узнать из этой статьи.
Для начала установки выполним команды:
Поскольку мы используем команду , эти команды будут выполняться с привилегиями root. В процессе операционная система запросит ваш пароль пользователя.
После ввода пароля сообщит, какие пакеты будут установлены и сколько места они займут на диске. Нажмите Y и Enter для продолжения установки.
Настройка глобальной переменной ServerName
Далее мы добавим одну строку в для устранения предупреждений (warnings) о синтаксических ошибках. Несмотря на то, что это просто предупреждение и никакой проблемы не существует, если не задать глобальную переменную , вы будете получать следующее предупреждение об ошибке при проверке настройки конфигурации Apache:
Откройте главный конфигурационный файл в своём текстом редакторе командой:
Добавьте в конец файла переменную , указывающую на ваше основное доменное имя. Если для вашего сервера не настроено доменное имя, вы можете использовать публичный IP-адрес сервера:
Внимание
Если вы не знаете IP-адрес Вашего сервера, вы можете прочитать об этом в разделе .
/etc/apache2/apache2.conf
После этого сохраните и закройте файл.
Теперь можно проверить результат напечатав следующую команду:
Поскольку мы установили глобальную переменную , вы должны увидеть вывод следующего характера:
Перезапустите Apache для применения внесённых изменений:
Теперь можно приступать к настройке файрвола.
Настройка файрвола
Теперь убедимся, что ваш файрвол пропускает HTTP и HTTPS трафик. Мы будем исходить из предположения, что вы уже выполнили инструкции по первичной настройке сервера и включили файрвол UFW. Для начала убедимся, что UFW имеет профиль для Apache следующей командой:
Проверим настройку профиля , она должна разрешать трафик для портов 80 и 443:
Разрешим входящий трафик для этого профиля:
Проверить результат установки можно набрав в вашем веб-браузере публичный IP адрес вашего сервера (если вы еще не знаете, как найти публичный IP адрес вашего сервера, смотрите следующий раздел этой статьи):
Вы увидите страницу Apache, отображаемую по умолчанию для информации и целей тестирования. Она должна выглядеть похожим образом:
Если вы видите эту страницу, ваш веб-сервер корректно установлен и доступен через файрвол.
Как найти публичный IP адрес вашего сервера
Если вы не знаете публичный IP адрес вашего сервера, его можно определить несколькими способами. Обычно, это адрес, который вы используете для соединения с вашим сервером по SSH.
Определить этот адрес можно с помощью командной строки. Сначала используйте инструмент для получения вашего адреса набрав следующую команду:
Результатом выполнения этой команды будет одна или две строки, содержащие корректный адрес. Ваш компьютер, возможно, сможет использовать только один из них, поэтому попробуйте каждый вариант.
В качестве альтернативы можно узнать, как видит ваш сервер. Это можно сделать следующим образом:
В независимости от метода, который вы использовали для получения своего IP адреса, вы можете использовать этот IP адрес для доступа к серверу через адресную сроку веб-браузера.
Шаг 3 — Установка MariaDB для управления данными сайта
Теперь, когда у нас есть веб-сервер, пришло время установить MariaDB, упрощенную версию MySQL, используемую для хранения данных вашего сайта и управления ими.
Установите MariaDB с помощью следующей команды. Снова замените выделенное значение номером версии, которую вы хотите установить, самый большой номер является номером самой последней версии ( на момент написания):
После завершения установки запустите службу MariaDB с помощью следующей команды:
После этого службу MariaDB можно считать установленной и запущенной. Однако ее настройка еще не завершена.
Для обеспечения безопасности MariaDB устанавливается вместе с скриптом безопасности, который напоминает вам о необходимости изменения небезопасных настроек по умолчанию. Запустите скрипт, введя следующую команду:
Вам потребуется ввести ваш текущий пароль root. Так как вы только что установили MySQL, у вас нет пароля, поэтому оставьте это поле пустым и нажмите . После этого вам будет предложено установить пароль root. Введите и следуйте этим инструкциям:
Для остальных вопросов нажмите клавишу для использования значения по умолчанию. В результате вы должны удалить ряд анонимных пользователей и тестовую базу данных, отключить возможность удаленного входя для root и загрузить эти новые правила, чтобы MariaDB немедленно использовала внесенные нами изменения.
Последнее, что нужно сделать, — это активировать для MariaDB запуск при загрузке сервера. Для этого используйте следующую команду:
В данный момент ваша система базы данных настроена, и вы можете переходить к настройке PHP на своем сервере.
Установка KDE на RedHat/CentOS/Fedora
KDE (K Desktop Environment) является альтернативой GUI для Gnome, некоторые люди предпочитают KDE чем Gnome они в основном похожи. Чтобы установить KDE на Centos, используйте эту команду в терминале:
# yum groupinstall "X Window System" "KDE desktop"
Для удаления, используйте:
# yum groupremove "X Window System" "KDE desktop"
Для Centos 7 нужно выполнить немного по другому:
# yum groupinstall -y ‘X Window System’ # yum groupinstall "kde" # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target # reboot
Для удаления, используйте:
# yum groupremove 'X Window System' "kde"
Установка MariaDB или MySQL
В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.
Устанавливаем MariaDB следующей командой:
yum install mariadb-server
* будет установлена mariadb версии 5.5. Если нужна другая, то читаем подробнее в инструкции .
** для установки mysql выполняем команду yum install mysql
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb —now
* для работы с mysql меняем mariadb на mysql.
Сразу создаем пароль для учетной записи root:
mysqladmin -u root password
PHP + MariaDB (MySQL)
Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:
yum install php-mysqli
Если мы установили php5, также ставим php-mysql:
yum install php-mysql
После перезагружаем php-fpm:
systemctl restart php-fpm
* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.