Настройка apache centos 7

Обновлено: 06.07.2024

Комплекс LAMP – это набор программ с открытым исходным кодом, которые обычно устанавливаются вместе для обеспечения функционирования динамических веб-сайтов и веб-приложений на сервере. Фактически этот термин является аббревиатурой: операционная система Linux, веб-сервер Apache, данные сайта хранятся в базе MySQL (MariaDB), а динамический контент обрабатывается PHP.
В данном руководстве описана установка комплекса LAMP на VPS с CentOS 7. CentOS выполняет наше первое требование – это операционная система Linux.

Подготовка

Прежде чем начать работу с данным руководством, вам потребуется отдельный пользовательский аккаунт без root-прав на сервере. Для этого нужно зайти как root, создать нового пользователя при помощи команды adduser и внести его в группу wheel. По умолчанию в CentOS 7 члены этой группы могут пользоваться командой sudo, которая позволяет при необходимости выполнять какие-либо действия с привилегиями root не выходить из обычной учетной записи и заходить как root, а выполнять отдельные команды как суперпользователь. Для этого нужно просто ввести sudo перед командой, при выполнении которой требуются эти привилегии.

Шаг 1 – установка Apache

В настоящее время Apache – наиболее популярный веб-сервер в мире, поэтому это прекрасный выбор по умолчанию для хостинга веб-сайта.
Apache можно легко установить при помощи yum, менеджера пакетов CentOS. Менеджер пакетов позволяет нам без затруднений устанавливать большую часть программ из репозитория CentOS. Для выполнения нашей задачи начнем со следующих команд:

Так как мы пользуемся командой sudo, эта операция выполняется с root-правами. Для подтверждения намерений она запросит ваш обычный пароль пользователя.
Затем ваш веб-сервер будет установлен.
После установки запустите Apache на вашем VPS:

Вы сразу можете проверить, что все идет по плану, набрав IP-адрес вашего сервера в своем веб-браузере:

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


Если вы видите эту страницу, то ваш веб-сервер установлен корректно. Последнее, что вам потребуется – включить автозапуск Apache при загрузке. Для этого воспользуйтесь следующей командой:

Установка виртуальных хостов на Apache

examplе.сom – имя домена, который мы хотим отображать на нашем VPS.

Структура директорий создана, но ее владелец – пользователь root. Чтобы наш обычный пользователь мог изменять файлы в этих директориях, нужно сменить владельца командой chown:

Где переменная $USER – текущий пользователь системы. Теперь он является владельцем поддиректории public_html, где мы будем хранить контент.

Также для корректного отображения страниц нужно немного изменить права доступа, чтобы разрешить чтение общей веб-директории, а также всех файлов и директорий в ней:

Теперь все необходимые права доступа заданы, и пользователь сможет создавать контент в нужных папках. Создадим файл index.html, идентифицирующий наш домен. Откроем его в редакторе при помощи следующей команды:

В этом файле создадим простой HTML-документ с данными о сайте, которому принадлежит эта страница:

Сохраните и закройте файл. Теперь у вас есть все необходимые страницы для проверки конфигурации виртуального хоста. Создадим файл, в котором определяется его конфигурация и задается, как веб-сервер Apache будет отвечать на запросы различных доменов. Для начала создадим директорию, в которой будут храниться файлы наших виртуальных хостов (sites-available), а также директорию, которая сообщает Apache, что виртуальный хост готов для отображения посетителям (sites-enabled, будет содержать символические ссылки на виртуальные хосты, готовые к публикации).

Затем нам нужно указать, чтобы Apache искал виртуальные хосты в директории sites-enabled. Для этого мы отредактируем главный файл конфигурации Apache:

и добавим в конце строку с директорией для дополнительных файлов конфигурации:

Должно получится примерно следующее


Теперь можно создать файл для первого виртуального хоста. Откроем его в редакторе с root-правами:

Важно: в соответствии с рассматриваемой нами конфигурацией все файлы виртуальных хостов обязательно должны заканчиваться на .conf

Наконец, нужно указать корневую директорию публично доступных веб-документов, а также определить, куда записывать логи ошибок и запросов для данного сайта:

В итоге минимальная конфигурация выглядит так


Теперь активируем файл виртуального хоста, чтобы Apache представлял его посетителям. Создадим символическую ссылку для виртуального хоста в директории sites-enabled:

После этого перезапустите Apache, чтобы изменения вступили в силу:

Можно проверить правильность настройки – просто ввести имя домена в адресной строке браузера:


Естественно у вас должны быть корректно настроены DNS сервера, или для тестов просто пропишите имя хоста и ip адрес сервера в вашем файле hosts.

Вы должны увидеть страницу следующего вида:


Аналогичным образом можно создать и настроить виртуальные хосты для других доменов.

Шаг 2 – установка MySQL (MariaDB)

Теперь, когда наш веб-сервер запущен и работает, нужно установить MariaDB, аналог MySQL. MariaDB – разрабатываемая сообществом ветвь реляционной системы управления базами данных MySQL. Ее задача состоит в организации баз данных, где наш сайт будет хранить информацию, и обеспечении доступа к ним.

Для получения и установки программы мы снова можем воспользоваться yum. На этот раз мы также установим несколько вспомогательных пакетов, которые помогут нам связать компоненты друг с другом.

После завершения установки нужно запустить MariaDB следующей командой:

Теперь, когда наша база данных MySQL запущена, нам потребуется запустить простой скрипт безопасности, который изменит некоторые опасные значения параметров по умолчанию и немного ограничит доступ к нашей базе данных. Запустите интерактивный скрипт следующей командой:

У вас будет запрошен root-пароль для MySQL. Так как вы только что установили MySQL, то скорее всего у вас его нет, поэтому просто нажмите Enter. Затем вас спросят, хотите ли вы его задать. Введите Y (yes) и следуйте указаниям:

На остальные вопросы нужно просто нажимать Enter, чтобы принять значения по умолчанию. Будут удалены примеры пользователей и баз данных, отключен удаленный вход с root-правами, а затем новые правила будут загружены, и MySQL немедленно примет сделанные нами изменения.

Последнее, что требуется – автозапуск MariaDB при загрузке. Для этого воспользуйтесь следующей командой:

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

Шаг 3 – установка PHP

PHP – компонент нашего пакета, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к базам данных MySQL для получения информации и передавать обработанный контент нашему веб-серверу для отображения.

Для воспользуемся yum. Мы также инсталлируем пакет рhр-mysql:

После этого инсталляция должна пройти без проблем. После установки необходимо выполнить перезапуск Apache:

Установка модулей PHP

Для расширения функционала PHP можно опционально установить ряд дополнительных модулей. Чтобы узнать доступные модули и библиотеки для PHР, введите в консоли:

Будет выдан список опциональных компонентов, доступных для установки, с коротким описанием каждого из них:


Более подробную информацию о каждом модуле можно найти в Интернете или прочитать развернутое описание пакета по команде:

Будет выдано много данных, более подробное описание функций модуля находится в поле Description.

Например, чтобы узнать, для чего нужен модуль php-fpm, введите в консоли:

В большом объеме разной информации вы увидите подобный текст:


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

Установка и настройка комплекса LAMP завершена. Теперь нужно проверить работу PHP.

Шаг 4 – тестирование работы PHP на веб-сервере

Чтобы проверить, правильно ли наша система настроена для обработки PHP, можно создать очень простой PHP-скрипт. Мы можем назвать этот скрипт info.php и разместить его в корневой директории нашего веб-ресурса (для простоты объяснения здесь мы не будем рассматривать виртуальные хосты, настроенные ранее):

Откроется пустой файл. Нам нужно ввести в него следующий текст, который представляет собой рабочий код PHP:

После этого закройте и сохраните файл.

Теперь мы можем проверить, правильно ли наш веб-сервер отображает контент, генерируемый PHP-скриптом. Для этого нужно просто открыть эту страницу в веб-браузере. Вам нужен следующий адрес:

Должна открыться страница примерно следующего вида:


Она предоставляет информацию о вашем сервере с точки зрения PHP и полезна для отладки и проверки правильности применения настроек. Если страница видна, то все работает правильно.

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

При необходимости снова получить эту информацию данную страницу всегда можно создать повторно.

Заключение

Как мы видим установить и настроить свой собственный WEB-сервер очень просто и не представляет большой сложности. После установки комплекса LAMP есть большое количество вариантов дальнейших действий. Он предоставляет вам платформу для установки на сервер большинства типов веб-сайтов и веб-приложений.

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда. Данная статья устарела. Читайте новую актуальную статью по настройке web сервера apache на centos 8.

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

Web сервер на CentOS 7

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

Процессор 2 ядра
Память 8 Gb
Диск 150 Gb SSD

Это кастомная настройка параметров. Они не оптимальны по цене, но мне были нужны именно такие.

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

Если у вас еще нет сервера, то вам надо выполнить установку CentOS 7. А если сервер уже установлен, то не забудьте его настроить. Рекомендую обратить внимание именно на настройку, так как там много полезной информации, которую в рамках этой статьи я не даю - обновление системы, настройка фаервола, установка редактора и многое другое.

Настройка apache в CentOS 7

Теперь приступим к установке apache. В CentOS 7 это делается очень просто:

Добавляем apache в автозагрузку:

Запускаем apache в CentOS 7:

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

установка apache на centos 7

Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:

Создаем подобную структуру:

Перезапуск apache в centos

Теперь делаем restart apache :

Дальше в винде правим файл hosts , чтобы обратиться к нашему виртуальному хосту. Добавляем туда строчку:

где 192.168.1.25 ip адрес нашего веб сервера.

Проверка apache в centos 7

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

Мы добавили одну строку в самое начала файла. Теперь логи всех виртуальных хостов в папке /web будут ротироваться по общему правилу.

В принципе, простейший веб сервер уже готов и им можно пользоваться. Но вряд ли сейчас найдутся сайты со статическим содержимым, которым достаточно поддержки только html. Так что продолжим нашу настройку.

Установка php в CentOS 7

Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:

И следом еще несколько полезных компонентов. Установим популярные модули для php:

Выполним перезапуск apache:

Создадим файл в директории виртуального хоста и проверим работу php:

centos php

Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там.

Где лежит php.ini

После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc, прямо в корне. Там можно редактировать глобальные настройки для все виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:

Добавляем в самый конец, перед </VirtualHost>

Для применения настроек нужно сделать restart apache. Теперь в выводе phpinfo можно увидеть изменение настроек.

Обновление до php 5.6 в CentOS 7

В нашем примере мы установили на CentOS 7 php 5.4 из стандартного репозитория. А что делать, если нам нужна более новая версия, например php 5.6? В таком случае нужно выполнить обновление php.

Теперь обновляем php 5.4 до php 5.6:

centos 7 php 5.6

Отлично, мы обновили php до версии 5.6.

Установка MySQL в CentOS 7

Как я уже писал ранее, сейчас все большее распространение получает форк mysql - mariadb. Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.

Устанавливаем mariadb на CentOS 7:

Добавляем mariadb в автозапуск:

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

Обращаю внимание, что она даже в системе отображается как сервис mysqld . Теперь запускаем стандартный скрипт настройки безопасности:

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

Файл настроек mysql/mariadb лежит в /etc/my.cnf. Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.

Перезапуск mariadb/mysql в CentOS 7:

На этом все. Базовый функционал web сервера на CentOS 7 настроен.

Если вам нужен phpmyadmin воспользуйтесь моим подробным руководством по установке и настройке phpmyadmin на centos 7.

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

Онлайн курсы по Mikrotik

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал автора

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

Автор Zerox

93 комментария

Небольшое дополнение - в конце скрипта iptables команда должна быть service iptables save
Без этого после перезагрузки сервера будет сюрприз в виде откатившихся в исходное настроек iptables (возможно эта грабля работает только у RUVDS)

Вы о каком скрипте говорите? Я во всех своих скриптах делаю сохранение правил в /etc/sysconfig/iptables. В Centos из этого файла берутся настройки iptables во время загрузки. Это типовое поведение сервера. Я сотни серверов настраивал на centos и везде это так работает, если специально ничего не менять.

Шаблон может какой-то кастомизированный используют.

Тут что угодно может быть. Прямо указана ошибка - 110: Connection timed out. Невозможно подключиться, соединение отваливается по таймауту. Подключение вот сюда 192.168.0.1:8888 не проходит. Разбирайтесь, почему на этом порту не отвечает apache.

Хорошая статья. Есть одно маленькое замечание. После установки апача было бы правильно намекнуть на фаирвол.

Спасибо автору.
Все шаги на Вашем примере сайта. Это очень продуктивно.
Понимаешь как это работает.
Если что-то не получается, смотри в комментах.

Данная инструкция не работает. Автор не понимает о чем пишет = типичный рерайтер, который повыдергивал инфы из интернета для уникальности.

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

Видимо самоизоляция так пагубно влияет на мозг..
Автору спасибо, отличные маны отличный сайт

Здравствуйте.
В чем разница между
chown -R apache. /web
и
chown -R apache /web
?

Первое аналог команды:
chown -R apache:apache /web
С точкой просто короче запись.

Спасибо! Отличная статья)

На рутрекере выложил готовую виртуалку для ESXI с nextcloud на базе центоси7

Очень полезная статья. Прям все по шагам получилось сделать. Большое спасибо!

Сюда - что бы всем было видно. Прошу прощения, если кому помешал.
Моя ошибка - в правилах iptables(по вышенаписанным статьям), скопировал предыдущее не посмотрев содержание.
открывать порт для сервера нужно правилом в /etc/iptables_rules.sh:
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
а не
$IPT -A INPUT -i $WAN -p udp --dport 80 -j ACCEPT

В этой статье подразумевается, что selinux отключен. Его настройка отдельная история. У меня так и не дошли руки ее описать.

Нашел ошибку. "" Тут каким-то чудным образом порт 80 не вписал! :D
Zerox, спасибо за статьи. Изучаю Linux по ним =)

Какая ошибка в браузере?

На локальном при подключению по адресу: "Сервер не найден" на на компе в сети не удаётся: "получить доступ к сайту"

Ага, Iptables отключил и заработало, хотя вроде настраивал по вашей же статье)

Сделал всё по инструкции, но апач открывает только по ip адресу и то только на локальной машине, по адресу выдаёт ошибку

Дальше логично посмотреть, что за ошибка и подумать, с чем она связана. Заодно посмотреть логи.

На ступени: Перезапуск apache в centos
Ошибка:
[root@localhost

Вроде всё просто и centos 7 minimal читый.
Помогите новичку.

Неправильно настроил сеть. Исправился.

Только хотел написать, что надо сеть проверить :)

А как обновить до последней версии Apache?

Спасибо! Весьма удобное руководство, всё прошло как по маслу. Правда я устанавливал PHP 7.1, наверное, уже есть смысл отредактировать это руководство для установки современной версии PHP.

В самом начале есть ссылка на свежую статью, как раз с php 7.1.

Действительно, проглядел. Спасибо Вам за полезные материалы, уже вижу, что есть и другие полезные статьи, которые надо бы прочитать.

Мне тут стала любопытна тема Антивируса на веб-сервере. Linux'у в большинстве плевать на вирусню, но вот веб сервису в частности не очень. Что посоветуете?

Таких антивирусов не существует. Есть некоторые средства для ручной проверки файлов сайта на наличие вирусов, но это не полноценный антивирус. Пример такого скрипта - ai-bolit. Защита веб сервера это комплекс мер. У меня есть в планах написание статьи по настройке максимально защищенного веб сервера, но пока это только планы, даже черновика нет.

Для начала огромное СПАСИБО за статьи! Много полезного и интересного для начинающих линуксоидов. Уже на основе этой статьи запустил чат Mattermost, а также Zabbix. Все работает, но теперь воюю с Nextcloud'ом. Вроде запустился и работает, но хочеться что бы пользователи были не локальные, а Active Directory. Поставил компонент php-ldap и обновил его до версии 5.6. Но Nextcloud'у все равно чего то не хватает, AD видет, а группы и пользователей нет:( говорит чего-то ему не хватает, а чего ХЗ.

К слову, я успешно прикрутил Nexcloud к AD

Это стабильный продукт, его можно в продакшене использовать?

А это предстоит еще проверить)) Он у меня готов к использованию, но пака что я его не запускал в массы.

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

Добрый день.
Подскажите в чём может быть проблема, установил nginx, но когда захожу, то пишет что:

The requested URL /nginx was not found on this server.

я ввожу IP адрес сервера пишет apache настроен(

не обратил внимания ошибка выскочила
Job for nginx.service failed becouse th control process exite with errore code
See "systemctl status nginx.service" and journalctl -xe@ for details

Сам нашел ответ на свой вопрос.
В CentOS 7 по умолчанию в php.ini прописано short_open_tag=Off, нужно было переключить в "on" чтоб заработал php код.

Стесняюсь спросить, какая версия MariaDB у Вас устанавливается представленным способом - бета 10.3 или стабильная 10.2?

Добрый день! Прописал новый путь к сайту, создал файлик site1.conf, но после перезапуска апаче выдаёт ошибку
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
В логах написанно:
ah00170 caught sigwinch, shutting down gracefully.
Подскажите в чём может быть проблема

Гугл выдает много вариантов решения этой проблемы. Предлагаю им воспользоваться. Заочно я все равно ничем не помогу.

Да, спасибо я разобрался, но теперь возникла другая проблема, я добавил сайт в новую дерикторию, создал для него файл - конфиг, но выбивает тестовая страница апаче

А есть у вас на сайте как это сделать?

Так в этой же статье и рассказано. Но нужно хоть какое-то понимание происходящего. Если совсем ничего не понятно, то лучше freepbx и сайты разнести по разным серверам. Тут все же нужен некоторый опыт и навык, чтобы все аккуратно сделать, и чтобы работало :)

Значит будем разбираться. Все таки первую неделю работаю с линуксом. Раз смог поднять два сервера в разных городах и настроить между ними атс, то и с этим разбирусь. А за сайт спасибо. Очень много почерпнул от сюда.

Здравствуйте. Установил я сначала FreePBX, все у меня заработало. Потом решил установить веб сервер. И получается загвоздка. Теперь через ip я захожу на apache, а на freepbx не могу зайти. Я так понимаю это из-за того, что они находятся на одном порту (*:80).
Как мне теперь настроить, что бы работал и apache и freepbx? Ну это относится и к другим сайтам (Если я создам еще несколько сайтов, то нужно наверное прописывать отдельно каждый сайт). Подскажите пожалуйста

Нужно настраивать виртуальные хосты, каждый сайт, в том числе и freepbx - отдельный виртуальный хост.

Здравствуйте! У Вас статья по установке LAMP на базе CentOS.. Почему выбор пал на данный дистрибутив, почему не Debian?

Там на этапе когда у вас уже можно открыть тестовую страницу апача с 123, нужно было еще открыть 80 порт в iptables, т.к. по умолчанию в 7 centos врядли он будет открыт.
команда:
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
и команда:
iptables-save>/etc/sysconfig/iptables

Я в самом начале дал ссылку на статью с настройкой сервера и сделал акцент, что настройка firewall рассматривается там. А так конечно верно, если не открыть 80-й порт, ничего не заработает.

Здравствуйте, можете мне помочь?
У меня следующая проблема: создал несколько Виртуальных хостов, но при обращение на любой из них открывается дефолтовый сайт bиз этого каталога /var/www/html.
с DNS настройками все правильно.

А чем тут заочно поможешь? Где-то ошибка, виртуальные хосты не работают. Надо внимательно проверить все конфиги.

Скайп есть у Вас?

Подскажите новичку: я установил апач и создал на нем свой сайт - как настроить доступ к нему с других пк в локальной сети без редактирования по отдельности на каждом пк файла hosts?

Только настройкой dns сервера, который обслуживает эти компьютеры. В него надо добавить запись о вашем сайте.

Не подскажете,что делать со следующей проблемкой. По дури решил переустановить mariadb, с удалением каталога /var/lib/mysql В итоге выдается ошибка при запуске,что mkdir не может создать каталог /var/lib/mysql, нет доступа. запускаю от рута. На другом сервере смотрел права, каталог создан группой mysql, пользователь mysql, я вручную создал каталог с такими же правами. В итоге та же ошибка.

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

А так за мануал спасибо :)

Да, спасибо за подсказку. Так можно сделать и я знаю об этом. В статьях стараюсь использовать конструкции как можно проще, чтобы было всем понятно, что я делаю.

Можно вообще сократить мануал и сделать немного поудобнее привязки:

Установка php в CentOS 7
Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:

Отредактировал комментарий. Убрал конфиг, так как из него часть символов не перенеслись во время копирования. В комментариях не получится вставить конфиги со стрелками, в которые параметры директории указываются в конфигах apache.

Тогда лучше все убрать, таким сокращением вы убрали важные детали , что указаны в конфиге

В этом руководства вы установите веб-сервер Apache с виртуальными хостами на сервер на базе CentOS 7.

Предварительные требования

Для выполнения данного руководства вам потребуется следующее:

  • Пользователь без прав root с привилегиями sudo на сервере, настроенном согласно руководству по начальной настройке сервера на базе CentOS 7.
  • Базовый брандмауэр, настроенный согласно руководству Рекомендуемые дополнительные шаги для новых серверов на базе CentOS 7.

Шаг 1 — Установка Apache

Apache доступен в используемых по умолчанию репозиториях программного обеспечения CentOS, т. е. вы можете установить его с помощью менеджера пакетов yum .

После обновления пакетов установите пакет Apache:

После подтверждения установки yum выполнит установку Apache и всех требуемых зависимостей.

Затем перезагрузите брандмауэр, чтобы новые правила начали действовать:

После перезагрузки брандмауэра вы будете готовы запустить службу и проверить веб-сервер.

Шаг 2 — Проверка веб-сервера

Apache не запускается автоматически на CentOS после завершения установки. Вам нужно будет запустить процесс Apache вручную:

Убедитесь, что служба запущена с помощью следующей команды:

Если служба запущена, вы увидите значение active (активна) в статусе:

Как видно из результатов, служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Apache.

Откройте страницу Apache по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес: Если вы не знаете IP-адрес вашего сервера, есть несколько способов узнать его с помощью командной строки.

Введите следующие данные в командной строке сервера:

Эта команда отобразит все сетевые адреса хоста, и вы получите несколько IP-адресов, разделенных пробелами. Вы можете попробовать каждый из них в браузере, чтобы убедиться в их работоспособности.

Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:

Вы увидите стандартную веб-страницу Apache в CentOS 7:

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

Шаг 3 — Управление процессом Apache

Теперь ваш веб-сервер запущен и работает, и настало время изучить некоторые простые команды управления.

Чтобы остановить веб-сервер, введите:

Чтобы запустить остановленный веб-сервер, введите:

Чтобы остановить и снова запустить службу, введите:

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

По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если вы не хотите этого, отключите такое поведение с помощью следующей команды:

Чтобы перезагрузить службу для запуска во время загрузки, введите:

Apache должен будет запуститься автоматически при следующей загрузке сервера.

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

Шаг 4 — Настройка виртуальных хостов (рекомендуется)

Создайте дополнительную директорию для хранения файлов журнала для сайта:

Затем назначьте права владения для директории html с помощью переменной среды $USER :

Убедитесь, что ваша корневая директория имеет набор разрешений по умолчанию:

Затем создайте в качестве примера страницу index.html , используя vi или свой любимый редактор:

Нажмите i для переключения в режим INSERT (ВСТАВКА) и добавьте в файл следующий пример HTML-контента:

Сохраните и закройте файл, нажмите ESC , введите :wq и нажмите ENTER .

Создав директорию сайта и пример файла index, вы уже почти готовы к созданию файлов виртуального хоста. Файлы виртуального хоста определяют конфигурацию отдельных сайтов и указывают веб-серверу Apache, как отвечать на различные запросы доменов.

Перед созданием ваших виртуальных хостов вам нужно будет создать директорию sites-available , чтобы хранить их в этой директории. Также вы должны будете создать директорию sites-enabled , которая указывает Apache, что виртуальный хост готов к обслуживанию посетителей. Директория sites-enabled будет хранить символьные ссылки на виртуальные хосты, которые мы хотим опубликовать. Создайте обе директории с помощью следующей команды:

Затем вы должны попросить Apache выполнить поиск виртуальных хостов в директории sites-enabled . Для этого необходимо изменить главный файл конфигурации Apache и добавить строку, объявляющую опциональную директорию для дополнительных файлов конфигурации:

Добавьте эту строку в конец файла:

Сохраните и закройте файл после добавления этого кода. Теперь, когда у вас есть директории виртуального хоста, вы можете создать ваш файл виртуального хоста.

Начните с создания нового файла в директории sites-available :

Так вы сможете показать, где Apache нужно искать корневую директорию, которая хранит общедоступные веб-документы. Также это указывает, где Apache будет хранить ошибки и журналы запросов для этого сайта.

Сохраните файл и закройте его после завершения.

Теперь, когда вы создали файлы виртуального хоста, вы должны будете активировать их, чтобы Apache смог предоставлять их посетителям. Для этого нужно создать символьную ссылку для каждого виртуального хоста в директории sites-enabled :

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 6 — Тестирование виртуального хоста (рекомендуется)

Вы увидите, что Apache удалось создать файлы errors.log и requests.log , которые указаны в конфигурации виртуального хоста:

Успешно! Виртуальный хост example.com работает!

Это подтверждает, что ваш виртуальный хост успешно настроен и обслуживает контент. Повторите шаги 4 и 5 для создания новых виртуальных хостов с разрешениями SELinux для дополнительных доменов.

Заключение

В ходе данного руководства вы установили и управляли веб-сервером Apache. Теперь вы установили веб-сервер и у вас есть богатые возможности выбора типа обслуживаемого контента и технологий для расширения возможностей пользователя.

Если вы хотите развернуть более полный комплекс приложений, ознакомьтесь с этой статьей Настройка набора LAMP в CentOS 7.

В этом мануале вы узнаете, как установить веб-сервер Apache на сервер CentOS 7.

Требования

  • Сервер CentOS 7.
  • Пользователь с доступом к sudo (все действия нужно выполнить в сессии этого пользователя). Инструкции можно найти в мануале по начальной настройке сервера.
  • Базовый брандмауэр (читайте мануал Дополнительные рекомендации по настройке сервера CentOS 7).

1: Установка Apache

Пакет Apache есть в стандартном репозитории CentOS, потому его можно установить с помощью стандартного пакетного менеджера yum.

Как пользователь с правами sudo, обновите индекс локальных пакетов:

Затем введите команду:

Команда установит Apache и его зависимости. Теперь можно запустить сервис.

2: Проверка веб-сервера

В CentOS веб-сервер Apache не запускается автоматически после завершения установки. Вам нужно запустить Apache вручную:

Убедитесь, что сервер запущен:

В выводе должен быть статус active.

Согласно выводу сервис работает правильно. Но лучше также запросить страницу Apache, чтобы подтвердить работу веб-сервера.

Чтобы открыть стандартную посадочную страницу Apache, укажите свое доменное имя или IP сервера.

Если у вас нет домена, укажите внешний IP-адрес своего сервера. Если вы не знаете свой IP-адрес, вы можете узнать его с помощью командной строки. Введите:

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

Также вы можете узнать свой IP, запросив его с помощью команды curl:

Узнав свой внешний адрес, введите в браузер:

Вы увидите стандартную страницу Apache для CentOS 7.

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

3: Управление процессами Apache

Чтобы остановить сервер, введите:

Запустить сервер может команда:

Для перезапуска используйте:

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

По умолчанию Apache запускается автоматически вместе с сервером. Чтобы удалить Apache из автозагрузки, отключите сервис:

Чтобы добавить Apache в автозагрузку, используйте команду:

Стандартная настройка Apache позволяет вам разместить один сайт. Если вы хотите обслуживать больше сайтов, нужно настроить виртуальные хосты.

5: Настройка виртуального хоста (рекомендуется)

Создайте дополнительный каталог для хранения логов нового сайта:

Затем определите права на каталог с помощью переменной $USER:

sudo chmod -R 755 /var/www

Затем создайте образец страницы index.html с помощью любого редактора:

Нажмите i, чтоб перейти в режим INSERT, и вставьте в файл:

Сохраните и закройте файл (Esc, :wq, Enter).

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

Прежде чем создавать виртуальные хосты, вам нужно создать каталог sites-available, в котором они будут храниться, а также каталог sites-enabled, который сообщит Apache, что виртуальный хост готов обслуживать посетителей. Каталог sites-enabled будет содержать симлинки на виртуальные хосты, которые нужно включить в работу. Создайте оба каталога с помощью следующей команды:

Теперь настройте Apache для поиска виртуальных хостов в каталоге sites-enabled. Для этого отредактируйте главный конфигурационный файл:

В конец файла добавьте строку:

Сохраните и закройте файл. Теперь можно создать сам виртуальный хост.

Теперь Apache знает, где найти корневой каталог проекта, в котором хранятся все доступные веб-документы. Также Apache знает, где хранить логи ошибок и запросов этого сайта.

Сохраните и закройте файл.

Включите файл, создав символьную ссылку на этот виртуальный хост в каталоге sites-enabled (так Apache будет понимать, что этот сайт нужно обслуживать):

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

5: Настройка прав SELinux для виртуального хоста

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

Глобальное изменение политик Apache

Выполните следующую команду, чтобы установить универсальную политику Apache:

Изменение политики по каталогам

Эта команда выводит список всех контекстов SELinux для каталогов:

sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

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

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

Снова запросите список контекстов:

Вы увидите изменения:

6: Тестирование виртуального хоста (рекомендуется)

Вы увидите, что Apache смог создать файлы error.log и requests.log, указанные в конфигурации виртуального хоста:

-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Если страница открылась, значит виртуальный хост успешно настроен и обслуживает контент. Повторите разделы 4 и 5, чтобы создать новые виртуальные хосты и обновить привилегии SELinux.

Заключение

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

Если вы хотите установить полный стек приложений, читайте Установка LAMP stack на CentOS 7.

Если у Вас встала задача развернуть Web-сервер на операционной системе Linux CentOS 7.1 с использованием Apache, PHP и MySQL (LAMP), то данный материал в этом Вам поможет, так как сейчас мы пошагово рассмотрим весь процесс установки и настройки веб сервера Apache, языка программирования PHP и СУБД MySQL с подробными комментариями, так как этот сайт для начинающих.

Операционная система Linux и в частности дистрибутив CentOS выбран не случайно, так как он является одним из самых популярных дистрибутивов, которые активно используется в качестве платформы для web-серверов, кстати, говоря о том, что это за дистрибутив и как его установить, мы с Вами подробно разговаривали вот здесь.

И так приступаем и начнем мы с небольшой настройки самой операционной системы, а конкретно откроем необходимые порты на файрволе, для того чтобы иметь возможность обращаться к web-серверу по этим портам.

Примечание! Еще раз обращаю Ваше внимание на то, что все действия мы будем выполнять в CentOS версии 7.1, так как в 6 версии и ниже многое делается по-другому. Также в качестве СУБД в CentOS 7.1 используется полностью бесплатная MariaDB, это ответвление MySQL.

Открытие портов в файрволе на CentOS 7.1

Примечание! Все мы будем делать в терминале (консоли) Linux, поэтому неважно установлена ли графическая оболочка у Вас или нет.

Выполняем от имени суперпользователя следующие команды, 1 для открытия 80 порта, 2 для 443 и 3 для перезапуска файрвола:

Скриншот 1

Установка и настройка Web-сервера Apache на CentOS 7.1

Примечание! Перед запуском команд проверьте, подключен ли у Вас Интернет. Эти и все остальные команды выполняются от имени суперпользователя (root).

Скриншот 2

Скриншот 3

Убираем страницу заглушку

Скриншот 4

Скриншот 5

Для сохранения нажимаем сочетание клавиш Ctrl+O, затем для подтверждения жмем Enter и для выхода из редактора Ctrl+X.

Скриншот 6

Проверяем работу, и у нас должно отобразиться вот это

Скриншот 7

Т.е. список каталогов и файлов, но так как у нас еще нет никаких файлов и папок в корневом каталоге, то, соответственно, ничего и не отображается.

т.е. в домашней директории (html) создаем папку с названием сайта (testsite), в которой создаем папки www и logs, в первой из которых будут располагаться все файлы и папки сайта, а во второй лог обращений и лог ошибок.

Данные каталоги создаем следующими командами:

Скриншот 8

Настраиваем конфиг для тестового сайта

Открываем его на редактирование тем же самым редактором nano

И вносим следующие настройки (я их прокомментировал)

Скриншот 9

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

Настраиваем SELinux в CentOS 7.1 для WEB сервера

SELinux (Linux с улучшенной безопасностью) – это система контроля доступа, которая является частью ядра Linux. В некоторых дистрибутивах Linux данная система безопасности по умолчанию включена, например, как у нас в CentOS. В Интернете можно встретить статьи, где веб мастера рекомендуют вообще выключать систему SELinux, также как и файрвол, но самом деле этого лучше не делать, а просто настроить эти компоненты, файрвол мы уже настроили выше, теперь давайте настроим SELinux.

А затем как раз зададим контекст безопасности для каталога logs, чтобы web-сервер мог писать в него, первой командой мы задаем этот контекст безопасности, а второй переконфигурируем SELinux

Теперь давайте перезагрузимся

Скриншот 10

Скриншот 11

т.е. отказано в доступе, так как никаких файлов в нашем каталоге еще нет, а листинг директорий мы отключили.

Устанавливаем PHP на CentOS 7.1

Для установки языка программирования PHP на CentOS необходимо выполнить следующую команду, но учтите, что если Вы используете дополнительные расширения PHP, то их необходимо включать в установку, например, мы сразу установим расширение для работы с базой MySQL (указываем название расширения через пробел). Если Вы не знаете, какие расширения Вы будете использовать, то ничего страшного, потом их конечно можно доустановить, итак, команда для установки php и расширения mysql будет выглядеть следующим образом (все от имени root):

Скриншот 12

Для проверки установился ли PHP, создаем тестовый файл (например, таким же способом как мы создавали конфиг Apache чуть выше), допустим с названием test.php в директории тестового сайта (/var/www/html/testsite/www/), содержание файла следующее (просто информация о PHP)

Скриншот 13

После создания мы обращаемся к этому файлу из браузера, например ip_адрес/test.php

В ответ мы должны получить вот такую страницу

Скриншот 14

Как видите, у нас установилась версия PHP 5.4.16.

Устанавливаем MySQL/MariaDB на CentOS 7.1

В операционной системе CentOS 7.1 в качестве сервера баз данных используется не сама СУБД MySQL, а ее ответвление MariaDB. Эти базы полностью совместимы, только MariaDB разрабатывается и поддерживается сообществом (как Вы знаете, MySQL поддерживает компания Oracle) и является полностью бесплатной.

Для установки MariaDB пишем следующую команду

Помещаем в автозагрузку

Задаем пароль для root пользователя

Сначала Вас спросят пароль root пользователя, а затем если Вы, конечно, захотите установить новый пароль для root, но мы его и так только что задали. На все остальные вопросы отвечаем y (т.е. да)

Скриншот 15

Проверяем работу MariaDB

Чтобы проверить работу MariaDB исправим немного наш тестовый скрипт (test.php). Пишем следующий код PHP.

Также в браузере вызываем test.php и если все хорошо, то в ответ мы получим версию MariaDB, в моем случае это 5.5.41-MariaDB.

Вот мы с Вами и настроили полноценный WEB-сервер, надеюсь, данный материал был Вам полезен, удачи!

Читайте также: