Введение
В этой статье я расскажу, как настроить web сервер на базе популярного стека технологий – apache и php с модулем prefork. В связи с выходом нового релиза Centos 8, многие статьи на эту тему стали не актуальны, так как версии софта в базовых репозиториях обновились и тот же php нет смысла ставить из стороннего репозитория.
В своей тестовой среде я буду использовать следующие сущности.
z.Boutoul.com | имя тестового виртуального хоста и сайта |
/web/sites | директория для размещения виртуальных хостов |
10.20.1.23 | локальный ip адрес сервера |
pma.Boutoul.com | имя виртуального хоста для phpmyadmin |
Если вам не хочется настраивать SELinux, то просто отключите его. Если же вы планируете включить и использовать после настройки, то переведите его в режим Permissive. В этом режиме он будет отключен, но все ограничения будут отражаться в лог файле audit.log. Это позволит нам в конце статьи сформировать модуль selinux для httpd и php и включить их.
# setenforce 0
Current Timeline
Краткое содержание
Item |
Started |
Ended |
Status |
Sources pushed to CentOS Git |
2020-09-29 |
2020-09-30 |
Complete |
Source code evaluation |
2020-09-29 |
2020-10-02 |
Complete |
Debranding patches added |
2020-10-01 |
… |
Complete |
Build Loop 0 |
2020-10-01 |
2020-10-02 |
Complete |
Build Loop 1 |
2020-10-02 |
2020-10-15 |
Complete |
Build Loop N |
2020-10-15 |
2020-10-26 |
Complete |
QA CR |
Mid October |
2020-10-20 |
Complete |
CR Release (BIG 3) |
Mid to Late October |
2020-10-20 |
Complete |
CR Release (Rest of Arches) |
Mid to Late October |
2020-10-26 |
Complete |
Installer work |
2020-10-28 |
2020-10-30 |
Complete |
ISO Images, Cloud Images |
2020-10-30 |
2020-11-08 |
Complete |
Updates, Extras, Plus Repos |
2020-11-04 |
2020-11-08 |
Complete |
Final QA work |
2020-11-08 |
2020-11-09 |
Complete |
Release work |
2020-11-09 |
2020-11-12 |
Complete |
Definitions
- DONE – Step is completed
- Ongoing – Work is progressing
- Not started – This step may require work from another step to reach some completion or requires time from a person who is working on other parts.
- Build loop 0 – Getting an initial set of packages together which can then build more packages
- Build loop 1 – Using the smallest set of packages to build a larger set which can then build more packages
- Build loop N – I really don’t know how many loops this is going to be.. so we will use N nomenclature.
- Installer work – there is usually some work needed to make the installer actually work with various things like secure boot or different fonts or ‘oh they fixed that in an upgrade.img., let us just short cut and put that here.’
Установка и настройка Apache, PHP, MySQL в CentOS
Для начала необходимо обновить саму систему, чтобы обновились пакеты для установки:
# yum update
Если нужно установить текстовый редактор, то установите. Так как у меня система «свежая» — я установлю хороший текстовый редактор — mcedit, который встроен в Midnight Commander:
# yum -y install mc
Для безопасности нужно открыть только те порты, которые используете, а остальные закрыть. Для этого нужно воспользоваться утиллитой setup (при необходимости инсталим ее : #yum install setuptool). Запустим утилиту и начнем работать с ней:
# setup
В окне что появилось, очень легко и просто понять что делать, там можно или отключить iptables или открыть необходимые вам порты. Я советую выбрать второй вариант: выбрать FTP, SSH, WEB и другие соединения которые необходимы. Есть вариант что не поможет, тогда вырубите его просто:
# service iptables stop && chkconfig iptables off
Настройка apache в CentOS 8
Теперь приступим к установке apache. В CentOS 8 это делается очень просто:
# dnf install httpd
Добавляем apache в автозагрузку:
# systemctl enable httpd
Запускаем apache в CentOS 8:
# systemctl start httpd
Проверяем, запустился ли сервер:
# netstat -tulnp | grep httpd tcp6 0 0 :::80 :::* LISTEN 21586/httpd
Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://10.20.1.23 и увидеть картинку:
Если ничего не видите, скорее всего у вас не настроен firewall. Если не занимались его настройкой, то по-умолчанию в centos установлен firewalld. На нем открыть порты для web сервера можно следующими командами.
# firewall-cmd --permanent --zone=public --add-service=http # firewall-cmd --permanent --zone=public --add-service=https # firewall-cmd --reload
Проверить, открылись ли порты можно командой.
# firewall-cmd --list-all
Вместо ожидаемой картинки с каким-то приветствием, мы видим просто ошибку. Я не знаю, почему в Centos 8 в стандартном пакете httpd из базового репозитория не положили в директорию web сервера по-умолчанию /var/www/html хоть какую-нибудь страничку. Там пусто, поэтому мы и видим ошибку. Давайте тогда сами что-то туда положим, чтобы просто проверить работу apache. Создаем простую страничку index.html.
# echo "Hello, Centos 8 and apache." >> /var/www/html/index.html
Проверяем страницу.
Все в порядке, веб сервер работает. Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:
/web/sites | раздел для размещения сайтов |
/web/z.serveradmin.ru/www | директория для содержимого сайта |
/web/z.serveradmin.ru/log | директория для логов сайта |
Создаем для нее директории.
# mkdir -p /web/sites/z.serveradmin.ru/{www,log} # chown -R apache. /web/sites/
Дальше редактируем файл конфигурации apache — httpd.conf по адресу /etc/httpd/conf. Первым делом проверим, раскомментирована ли строчка в самом конце:
IncludeOptional conf.d/*.conf
Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. Создаем там файл z.serveradmin.ru.conf:
# mcedit /etc/httpd/conf.d/z.serveradmin.ru.conf
<VirtualHost *:80> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru DocumentRoot /web/sites/z.serveradmin.ru/www ErrorLog /web/sites/z.serveradmin.ru/log/error.log CustomLog /web/sites/z.serveradmin.ru/log/access.log common <Directory /web/sites/z.serveradmin.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Перезапуск apache в centos
Проверим созданную конфигурацию и выполним перезапуск apache.
# apachectl -t AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::95:c6f3:e49f:7204. Set the 'ServerName' directive globally to suppress this message Syntax OK
В данном случае ошибок нет, показано предупреждение. Теперь делаем restart apache:
# systemctl restart httpd
Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log. Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/sites/z.serveradmin.ru/www файл index.html следующего содержания:
# mcedit /web/sites/z.serveradmin.ru/www/index.html
<h1>Апач работает как надо, а надо хорошо!</h1>
# chown apache. /web/sites/z.serveradmin.ru/www/index.html
Дальше на своем компьютере правим файл hosts, чтобы обратиться к нашему виртуальному хосту. Добавляем туда строчку:
10.20.1.23 z.serveradmin.ru
где 10.20.1.23 ip адрес нашего веб сервера. Это нужно сделать только в том случае, если настраиваете web сервер где-то в локальной сети без реально существующего доменного имени.
Теперь в браузере набираем адрес http://z.serveradmin.ru. Если видим картинку:
значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd, а лог ошибок конкретного виртуального хоста по адресу /web/z.serveradmin.ru/log/error.log.
Шаг 3 — Установка PHP
Вы установили Apache для обслуживания вашего контента и MariaDB для хранения и управления вашими данными. PHP — это элемент нашей настройки, который будет обрабатывать код для отображения динамического контента конечному пользователю. Помимо пакета вам потребуется , модуль PHP, который позволяет PHP взаимодействовать с базами данных MySQL. Ключевые пакеты PHP автоматически будут установлены в качестве зависимостей.
Для установки пакетов и с помощью диспетчера пакетов выполните команду:
После завершения установки выполните перезапуск веб-сервера Apache, чтобы активировать модуль PHP:
Теперь ваш веб-сервер полностью настроен. На следующем шаге мы создадим скрипт PHP для тестирования, чтобы убедиться, что все работает ожидаемым образом.
5 Тестирование PHP / Получение подробной информации о вашей установке PHP
Корнем документа веб-сайта по умолчанию является / var / www / html. Мы создадим небольшой файл PHP (info.php) в этом каталоге и вызовем его в браузере для проверки установки PHP. Файл отобразит много полезной информации о нашей установке PHP, например, об установленной версии PHP.
nano /var/www/html/info.php
Теперь мы вызываем этот файл в браузере (например, http://192.168.0.100/info.php):
Как видите, PHP 7.3 работает и работает через обработчик Apache 2.0, как показано в строке Server API. Если вы прокрутите дальше вниз, вы увидите все модули, которые уже включены в PHP. MySQL там не указан, что означает, что у нас пока нет поддержки MySQL в PHP.
Шаг 2: Установка MariaDB/MySQL в Ubuntu 16.10 или 17.04
6. MariaDB – это форк MySQL. Программы взаимозаменяемы, даже процессы называются одинаково. Выбор MariaDB или MySQL – абсолютно на ваше усмотрение. В дальнейшем это ни на что не повлияет. Для установки MariaDB наберите:
sudo apt install mariadb-server
Для установки MySQL наберите:
sudo apt install mysql-server
Установите только одну из них!
7. После завершения установки, запустите простой скрипт безопасности, который удалит некоторые настройки по умолчанию и чуть заблокирует доступ к нашей системе. Запустите интерактивный скрипт командой:
sudo mysql_secure_installation
Давайте внимательно разберёмся со всем, что говорит нам этот скрипт, поскольку вопросам безопасности вер-сервера следует уделять особое внимание.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Перевод:
Примечание: запуск всех элементов этого скрипта рекомендуется для всех серверов MariaDB в продакшене (реальном рабочем использовании).
In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here.
Перевод:
Для того, чтобы войти в MariaDB для настройки безопасности, нам нужен текущий пароль пользователя root. Если вы только что установили MariaDB и ещё не установили пароль рута, то пароль будет пустым, т.е. просто нажмите Enter.
Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
Перевод:
Установите пароль рута, чтобы никто другой не мог войти в MariaDB без надлежащей авторизации как пользователь root.
Set root password? [Y/n] New password: Re-enter new password:
Перевод:
Установить пароль root’а? [Да/нет]
Новый пароль:
Повторно введите новый пароль:
Если у вас появилась строка «Sorry, you can’t use an empty password here.» она означает, что пароль не может быть пустым, т.е. вы не ввели пароль.
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n]
Перевод:
По умолчанию, установленная MariaDB имеет анонимного пользователя, позволяющего любому войти в MariaDB даже если для него не было создано пользовательского аккаунта. Это сделано в целях тестирования и упрощения установки. Вам следует удалить их перед переходом в реальное рабочее окружение.
Удалить анонимного пользователя? [Да/нет]
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n]
Перевод:
Обычно, root’у следует разрешать подключаться только с ‘localhost’. Это гарантирует, что кто-то из сети не сможет угадать пароль root’а.
Отключить удалённый вход рута? [Да/нет]
By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n]
Перевод:
По умолчанию MariaDB поставляется с базой данных ‘test’, к которой может любой получить доступ. Это также сделано в целях тестирования и она должна быть удалена перед переходом в реальное рабочее окружение.
Удалить тестовую базу данных и доступ к ней? [Да/нет]
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n]
Перевод:
Перезагрузка таблицы привилегий гарантирует, что все сделанные изменения немедленно будут иметь эффект.
Перезагрузить таблицу привилегий сейчас? [Y/n]
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Перевод:
Всё сделано! Если вы завершили все вышеописанные шаги, ваша установленная MariaDB должна быть безопасной.
Ещё раз о пароле MariaDB. Это должен быть надёжный и уникальный пароль. Думайте о нём как о пароле входа на ваш сервер. Он должен отличаться от пароля пользователя Linux.
8. Для получения доступа к базе данных MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL и запустите следующие команды:
sudo mysql MariaDB> use mysql; MariaDB> update user set plugin='' where User='root'; MariaDB> flush privileges; MariaDB> exit
9. Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
sudo systemctl restart mysql.service mysql -u root -p
Подготовка web сервера apache
Далее я буду считать, что у вас уже есть установленный и настроенный сервер CentOS 7. Если это не так, то смотрите мои подробные инструкции с видео на тему установки и базовой настройки сервера CentOS 7.
Если на голом сервере выполнить:
# yum install phpmyadmin
Вы увидите полный список зависимостей, но в нем не будет самого веб сервера и интерпретатора php, только его модули. Веб сервер вам нужно предварительно установить и настроить самим. Сделем это на примере веб сервера httpd (апач). Устанавливаем его:
# yum install -y httpd
Теперь установим php, без него панель администрирования не заработает:
# yum install -y php
Запускаем веб сервер, добавляем его в автозагрузку и проверяем работу:
# systemctl enable httpd # systemctl start httpd
Заходите по адресу http://ip-адрес-сервер. Вы должны увидеть тестовую страницу апача. Теперь проверим, работает ли php. Создаем тестовую страничку в папке /var/www/html:
# mcedit /var/www/html/index.php
<?php phpinfo(); ?>
Назначаем владельца apache на созданный файл:
# chown apache. /var/www/html/index.php
Теперь снова заходим по адресу http://ip-адрес-сервера, вы должны увидеть вывод phpinfo:
Если видите такой же вывод, значит все в порядке, веб сервер готов для работы с phpmyadmin. Приступаем к его установке.
Шаг 2: установите MySQL
После CentOS7 MariaDB заменила базу данных MySQL. Система управления базами данных MariaDB является ветвью MySQL. Она в основном поддерживается сообществом открытого исходного кода и лицензируется по GPL. Одна из причин развития этой ветки: после того, как Oracle приобрела MySQL, существует потенциальный риск закрытия MySQL до источника, поэтому сообщество использует ветвление, чтобы избежать этого риска.
Скачайте и установите MariaDB:
Запустите MariaDB и установите автоматический запуск загрузки:
Настройте пароль root:
Поскольку ранее пароль не установлен, исходный пароль пуст, просто нажмите Enter.
В процессе есть несколько вариантов:
Подготовка системы и установка зависимостей
Если вы только знакомитесь с материалом и еще не подготовили свою систему, то рекомендую воспользоваться моей подробной инструкцией с видео по установке freebsd 10.2. Именно на ней я буду производить установку и настройку sams2.
После установки необходимо на всякий случай обновить freebsd до последней версии. Если вы это уже сделали, то рекомендую выполнить предварительную настройку системы, ну или хотя бы установите MC, с ним удобнее.
Теперь установим необходимые пакеты. Можно все собрать из портов, но я буду ставить готовые пакеты, просто потому что так быстрее. Это не принципиально, если вы привыкли собирать из портов, делайте это.
Нам понадобится web сервер для работы панели администрирования. Подробно этот вопрос я уже рассматривал отдельно в статье посвященной настройке web сервера. Можно подсмотреть там, как быстро установить apache + php + mysql + phpmyadmin. Здесь я просто приведу список команд, которые я использовал при установке. За всеми подробностями и комментариями прошу обращаться по приведенной ссылке.
Сервер, с которым будем работать:
# uname -v FreeBSD 10.2-RELEASE-p8
Выполним установку mysql, ее использует самс для хранения данных:
# pkg install -y mysql56-server
Добавляем mysql_enable=»YES» в /etc/rc.conf и запускаем mysql:
# /usr/local/etc/rc.d/mysql-server start
Выполним начальную настройку mysql с помощью скрипта:
# /usr/local/bin/mysql_secure_installation
Устанавливаем web сервер apache, он нам нужен для работы панели администрирования:
# pkg install -y apache24
Добавляем apache24_enable=»YES» в /etc/rc.conf и запускаем:
# /usr/local/etc/rc.d/apache24 start
Устанавливаем все необходимое, связанное с php:
# pkg install -y php56 php56-extensions mod_php56 php56-mysql
Этот шаг не обязательный, можно пропустить. Я просто привык использовать phpmyadmin в работе. С ним удобно. Устанавливаем phpmyadmin:
# pkg install -y phpmyadmin
Редактируем конфиг apache, добавляем в самый конец для работы php скриптов и доступа к phpmyadmin:
<IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php index.html </IfModule> Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/" <Directory "/usr/local/www/phpMyAdmin/"> AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm Order allow,deny Allow from All </Directory>
Создаем файл настроек php.ini, скопировав дефолтный:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
И устанавливаем там временную зону:
date.timezone = Europe/Moscow
Если не установить, то в веб интерфейсе самса будут постоянно вылезать ошибки, связанные с временной зоной. После всех изменений перезапускаем apache:
# apachectl restart
Все, web сервер готов. Для теста можете зайти на http://ip-сервера/phpmyadmin/ и проверить, все ли в порядке. Если что-то не так, то разберитесь сначала с работой веб сервера, и только потом двигайтесь дальше.
Если веб сервер не работает, то обратитесь либо к моему руководству на тему настройки веб сервера, либо к какому-нибудь другому. Подобного материала в интернете много. Его можно было не включать в эту статью, но я для целостности картины привел краткую настройку. Банального копи паста достаточно, чтобы все заработало.
Шаг 3 — Установка PHP
PHP это компонент, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к нашим базам данных MySQL для получения информации и передавать обработанный контент в наш веб-сервер для отображения.
Мы можем вновь воспользоваться менеджером пакетов для установки компонентов. Мы также добавим некоторые вспомогательные пакеты, чтобы код на PHP мог работать с нашим сервером Apache, а также обращаться к базе данных MySQL:
Данная команда должна установить PHP без каких либо проблем. Вскоре мы это проверим.
В большинстве случаев, мы захотим изменить способ, который Apache использует для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием . Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы .
Для этого введите следующую команду, чтобы открыть файл в текстовом редакторе с привилегиями пользователя root:
Содержимое файла будет выглядеть следующим образом:
/etc/apache2/mods-enabled/dir.conf
Мы хотим переместить индексный файл PHP , выделенный выше, на первое место после спецификации следующим образом:
/etc/apache2/mods-enabled/dir.conf
После внесения правок сохраните и закройте файл сочетанием клавиш . Вам придется подтвердить операцию вводом и затем нажатием клавиши для подтверждения места сохранения файла.
После этого нам необходимо перезапустить Apache для применения внесенных изменений. Вы можете сделать это при помощи команды:
Мы также можем проверить статус сервиса используя :
Чтобы расширить функциональность PHP, мы можем установить некоторые дополнительные модули. Для просмотра доступных опций для модулей и библиотек PHP вы можете передать результат в , которая позволит вам проматывать вывод:
Используйте клавиши стрелок вверх и вниз для проматывания списка, для выхода нажмите .
В результате вам будут показаны все опциональные компоненты, которые можно установить, сопровождаемые кратким описанием для каждого:
Чтобы получить больше информации по каждому модулю, вы можете поискать в Интернете или посмотреть полное описание пакета при помощи команды:
Ответ будет содержать много текста, среди которого есть поле . Именно оно и будет содержать расширенное описание функциональности, предоставляемой модулем.
Например, чтобы узнать назначение модуля , мы можем выполнить команду:
Помимо большого количества прочей информации, вы увидите следующее:
Если после изучение вы решили, что хотите установить пакет, вы можете сделать это используя команду как мы делали ранее при установке другого программного обеспечения.
Если мы решили, что хотим установить , мы можем ввести команду:
Для установки сразу нескольких модулей, вы можете перечислить их через пробелы следом за командой следующим образом:
Теперь ваш стек LAMP установлен и сконфигурирован. Однако перед внесением любых других изменений и перед установкой приложений нам ещё стоит протестировать настройку PHP на случай возможных проблем.
Шаг 1: Установка Apache на Ubuntu 16.10 или 17.04
1. Начнём с установки веб-сервера Apache из официальных репозиториев Ubuntu. Это делается командой:
sudo apt install apache2 vim # ИЛИ sudo apt-get install apache2 vim
2. После успешной установки веб-сервера Apache, убедитесь следующими командами, что демон запущен и к какому порту он привязан (по умолчанию apache прослушивает 80 порт):
sudo systemctl status apache2.service
sudo ss -tlpn
3. Установка ServerName для подавления предупреждения
Далее мы добавим одну строку в файл /etc/apache2/apache2.conf чтобы убрать сообщение с предупреждением. Хотя это и безвредно, если вы не установили ServerName на глобальном уровне, вы будете получать следующее сообщение о синтаксической ошибке в конфигурации Apache:
sudo apache2ctl configtest AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
Откройте главный конфигурационный файл текстовым редактором:
sudo gedit /etc/apache2/apache2.conf
Если вы настраиваете систему без графического интерфейса, вместо gedit используйте, например, vim:
sudo vim /etc/apache2/apache2.conf
Внутри, в конце файла добавьте директиву ServerName, указывающую на ваше основное доменное имя. Если у вас нет связанного с вашим сервером доменного имени, вы можете использовать внешний IP сервера:
. . . ServerName server_domain_или_IP
Если вы забыли внешний IP сервера, то проверить его можно так:
curl suip.biz/ip/
Для локального веб-сервера можно сделать следующую запись:
ServerName localhost
Когда закончите, сохраните и закройте файл.
Далее, проверьте ошибки синтаксиса набрав:
sudo apache2ctl configtest Syntax OK
Поскольку мы добавили глобальную директиву ServerName, предупреждения больше нет.
Для того, чтобы изменения вступили в силу, перезапустите Apache:
sudo systemctl restart apache2
4. Для проверки работы веб-сервера apache, откройте в браузере IP адрес сервера. Если вы устанавливаете на локальном компьютере, но наберите localhost. Должна появиться страница по умолчанию для веб-сервера, примерно как на скриншоте:
5. Следующей командой мы добавляем службу веб-сервера в автоматическую автозагрузку при каждом запуске компьютера:
sudo systemctl enable apache2
Step Three — Install PHP
PHP is the component of our setup that will process code to display dynamic content. It can run scripts, connect to our MySQL databases to get information, and hand the processed content over to our web server to display.
We can once again leverage the system to install our components. We’re going to include the php-mysql package as well:
This should install PHP without any problems. We need to restart the Apache web server in order for it to work with PHP. You can do this by typing this:
Install PHP Modules
To enhance the functionality of PHP, we can optionally install some additional modules.
To see the available options for PHP modules and libraries, you can type this into your system:
The results are all optional components that you can install. It will give you a short description for each:
To get more information about what each module does, you can either search the internet, or you can look at the long description in the package by typing:
There will be a lot of output, with one field called which will have a longer explanation of the functionality that the module provides.
For example, to find out what the module does, we could type this:
Along with a large amount of other information, you’ll find something that looks like this:
If, after researching, you decide you would like to install a package, you can do so by using the command like we have been doing for our other software.
If we decided that is something that we need, we could type:
If you want to install more than one module, you can do that by listing each one, separated by a space, following the command, like this:
At this point, your LAMP stack is installed and configured. We should still test out our PHP though.
Установка LAMP CentOS
Самый главный компонент в этом программном стеке, который мы будем устанавливать — это Apache, поскольку именно он принимает все запросы от клиентов и отправляет им данные. Поэтому установку будем проводить в таком порядке:
- Apache;
- MySQL;
- PHP.
И уже только после этого дополнительные компоненты, такие как phpmyadmin и так далее. Начнем с первого пункта.
Установка Apache
Веб-сервер Apache последней доступной версии можно получить из официальных репозиториев. Здесь он называется httpd. Установка Apache CentOS 7 выполняется с помощью пакетного менеджера yum:
Обычно, после завершения установки вам не придется больше ничего настраивать и Apache будет слушать все соединения на порту 80. Запустите службу с помощью команды:
Вторая команда добавляет программу в автозагрузку. Затем откройте ip адрес 127.0.0.1 в браузере. Если все работает, то вы должны увидеть тестовую страничку:
Несмотря на то, что все работает и так, нам необходима небольшая настройка httpd centos. Чтобы уже все было правильно, давайте создадим виртуальный хост для нашего домена, например, test.io. Конфигурационные файлы Httpd устроены немного по другом чем в Ubuntu. Все они находятся в папке /etc/httpd, но разделены по поддиректориях:
- conf — основной конфигурационный файл;
- conf.d — дополнительные настройки, виртуальные домены;
- conf.moules.d — конфигурационные файлы модулей.
Утилит a2ensite, a2enmod здесь нет, поэтому вам придется вручную редактировать конфигурационные файлы для добавления той или иной возможности. Чтобы добавить виртуальный хост для нашего домена создадим файл /etc/httpd/conf.d/test.io.conf со следующим содержимым:
Создадим папку для только что настроенного виртуального хоста:
Затем дадим на нее права пользователю Apache, от имени которого будет работать веб-сервер:
И создадим файл index.html:
Поскольку мы разместили логи в отдельной директории, то нам нужно разрешить запись в нее Apache с помощью SELinux:
Осталось перезапустить веб-сервер:
Если ваша DNS запись домена уже направлена на IP адрес сервера, то уже можно тестировать. Если же нет, нужно добавить такую строчку в файл /etc/hosts на вашем компьютере, откуда вы хотите подключаться к серверу:
Если Apache установлен на локальном компьютере, то можно использовать конструкцию:
Если все было сделано правильно, то вы увидите сообщение Hello World в окне браузера. Установка httpd centos завершена и теперь можно переходить к следующему этапу.
Установка MySQL
Не будем нарушать последовательность, и следующим компонентом установим систему управления базами данных mysql. Мы будем использовать ее свободную реализацию MariaDB. Для установки выполните:
Если у вас раньше была установлена другая версия MySQL, то ее нужно удалить, также нужно удалить папку /var/lib/mysql. После завершения установки запустите сервис:
Установка LAMP CentOS 7 также включает первоначальную настройку базы данных. Для ее запуска наберите:
На первом шаге вам необходимо ввести текущий пароль root. Если программа только что установлена, то достаточно просто нажать Enter:
Дальше установите новый пароль root для баз данных:
Отключите анонимный вход. Отключите удаленный вход от имени root:
И удалите тестовые базы данных.
Ваша база данных готова к работе, если вы хотите использовать не MariaDB, а версию базы данных от Oracle, смотрите статью установка MySQL CentOS 7.
Заключение
На этом по настройке apache все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки web сервера на основе apache и php, который обычно называют LAMP. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.
Тема настройки веб сервера обширна. Рассмотреть все варианты в одной статье невозможно, так как функционал будет разниться, в зависимости от назначения сервера. Тем не менее приведу еще несколько ссылок на материалы, которые имеют отношение к настройке web сервера:
- Полный бэкап сервера или отдельных сайтов.
- Мониторинг веб сервера и веб сайта с помощью zabbix.
- Защита админки wordpress с помощью fail2ban.
- Если у вас будут проблемы с ботами, то пригодится статья по блокировке доступа к сайту по странам или защита сайта от ddos.
Если еще что-то полезное вспомню, добавлю ссылки. Пока вроде все. Статья получилось большой и насыщенной. Было не просто все собрать воедино, проверить, связать между собой и оформить в последовательное повествование. Мог где-то ошибиться. Жду комментариев и отзывов. Написал все по своему опыту, как я обычно настраиваю веб сервера. Предполагаю что-то можно сделать более удобно и правильно. Буду рад научиться.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .