Настройка web сервера в CentOS 7

Сегодня займемся поднятием одной из наиболее востребованных ролей любого linux сервера, которые занимают в этом функциональном сегменте лидирующую роль. Настройка web сервера CentOS 7 на базе связки популярного http сервера apache, интерпретатора php и сервера баз данных mysql, или коротко - установка lamp. Данная связка является самой популярной конфигурацией на сегодняшний день среди веб хостинга. Хотя последнее время ей на пятки наступает та же компания, но на базе nginx, возможно уже и опередила, точных данных у меня нет на этот счет.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Данная статья устарела. Читайте новую актуальную статью по настройке web сервера apache на centos 8.

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

Web сервер на CentOS 7

Итак, наш веб сервер centos будет состоять из трех основных компонентов - http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:

  1. Apache - http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
  2. PHP - язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
  3. Mysql - система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb - ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Последнее время я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.

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

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

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

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

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

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

В CentOS служба apache называется httpd. Когда я только знакомился с этим дистрибутивом, мне было непривычно. В Freebsd и Debian, с которыми я до этого работал служба веб сервера называлась apache, хотя где-то я замечал, кажется во фрюхе, что файл конфигурации имеет имя httpd.conf. До сих пор я не знаю, почему распространились оба эти названия. Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.

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

# yum install -y httpd

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

# systemctl enable httpd

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

# systemctl start httpd

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

# netstat -tulnp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      21586/httpd

Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://ip-address и увидеть картинку:

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

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

/web раздел для размещения сайтов
/web/site1.ru/www директория для содержимого сайта
/web/site1.ru/logs директория для логов сайта

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

# mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs
# chown -R apache. /web

Дальше редактируем файл конфигурации apache - httpd.conf по адресу /etc/httpd/conf. Первым делом проверим, раскомментированна ли строчка в самом конце:

IncludeOptional conf.d/*.conf

Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. Создаем там файл site1.ru.conf:

# mcedit /etc/httpd/conf.d/site1.ru.conf
<VirtualHost *:80>
 ServerName site1.ru
 ServerAlias www.site1.ru
 DocumentRoot /web/site1.ru/www
 <Directory /web/site1.ru/www>
 Options FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory>
 ErrorLog /web/site1.ru/logs/error.log
 CustomLog /web/site1.ru/logs/access.log common
</VirtualHost>

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

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

# systemctl restart httpd

Если возникли какие-то ошибки - смотрим лог apache /var/log/httpd/error_log. Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/site1.ru/www файл index.html следующего содержания:

# mcedit /web/site1.ru/www/index.html
<h1>Апач настроен!</h1>
# chown apache. /web/site1.ru/www/index.html

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

192.168.1.25 site1.ru

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

Теперь в браузере набираем адрес http://site1.ru. Если видим картинку:

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

значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd, а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log.

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

Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd. Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:

# mcedit /etc/logrotate.d/httpd
/web/*/logs/*.log
/var/log/httpd/*log {
 missingok
 notifempty
 sharedscripts
 delaycompress
 postrotate
 /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
 endscript
}

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

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

Если вам необходимо организовать работу сайта по протоколу https, то воспользуйтесь руководством по настройке ssl в apache.

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

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

# yum install -y php

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

# yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

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

# systemctl restart httpd

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

# mcedit /web/site1.ru/www/index.php
<?php phpinfo(); ?>
# chown apache. /web/site1.ru/www/index.php

Заходим по адресу http://site1.ru/index.php

centos php

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

Где лежит php.ini

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

# mcedit /etc/httpd/conf.d/site1.ru.conf

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

php_admin_value date.timezone 'Europe/Moscow'
php_admin_value max_execution_time 60
php_admin_value upload_max_filesize 30M

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

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

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

Для этого подключим remi репозиторий:

# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7*.rpm

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

# yum --enablerepo=remi,remi-php56 install php php-common php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

Перезапускаем apache:

# systemctl restart httpd

И идем смотреть вывод phpinfo - http://site1.ru/index.php

centos 7 php 5.6

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

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

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

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

# yum install -y mariadb mariadb-server

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

# systemctl enable mariadb.service

Запускаем mariadb:

# systemctl start mariadb

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

# netstat -tulnp | grep mysqld
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      22276/mysqld

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

# /usr/bin/mysql_secure_installation

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

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

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

# systemctl restart mariadb

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

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

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

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

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

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

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

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

      • Промахнулся окном для комментария, на самом деле) Имелось в виду вот сюда https://serveradmin.ru/centos-nastroyka-servera/
        Конкретно на RUVDS проблема возникла, там ихуевая версия centos7 предустановленная (vps)
        Не отрабатывает последняя команда /sbin/iptables-save > /etc/sysconfig/iptables
        А вот service iptables save сохраняет настройки корректно.

  2. Добрый день, Владимир!
    Статья полезная, спасибо!
    Можете подсказать в чем может быть проблема:
    На физическом сервере есть виртуальный сервер битрикс и на нем настроено nginx version: nginx/1.16.1, Server version: Apache/2.2.15 (Unix).
    два хоста к примеру name1.ru name2.ru
    Что интересно name2.ru работает, а name1.ru не работает.
    лог: 2021/02/02 05:34:03 [error] 7163#0: *899664 connect() failed (110: Connection timed out) while connecting to upstream, client: ext_ip, server: name1.ru, request: "GET /favicon.ico HTTP/2.0", upstream: "http://192.168.0.1:8888/favicon.ico", host: "name1.ru", referrer: "https://name1.ru/"
    что может быть?

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

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

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

  5. Николай

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

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

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

  6. Александр

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

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

  8. Аноним

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

    • Аноним

      Сюда - что бы всем было видно. Прошу прощения, если кому помешал.
      Моя ошибка - в правилах 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

      http работает по tcp протоколу...

      PS При копировании текста с интернетстраницы в файл - пишется неправильная кодировка и браузер показывает вопросики, писать надо в UTF-8(например поменяв ее в редакторе WinSCP)
      Еще нужно постоянно помнить, что если создавать файлы из под root-а - сервер к ним может не иметь доступ, меняется это или через менюшку того же SCP или через команды:
      chown -R apache:apache /web - смена владельца всех файлов в папке /web на апач

  9. Андрей

    Здравствуйте! Хорошая статья. Вот только не работает. Selinux упорно блокирует апач. После шага mcedit /etc/httpd/conf.d/site1.ru.conf и перезапуска апача.

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

      • Андрей

        То есть сначала нужно отключить его полностью, а потом уже ставить и настраивать web server по инструкции выше, правильно я понял. А отключить его можно вот так да:
        # This file controls the state of SELinux on the system.
        # SELINUX= can take one of these three values:
        # enforcing — SELinux security policy is enforced.
        # permissive — SELinux prints warnings instead of enforcing.
        # disabled — No SELinux policy is loaded.
        SELINUX=disable
        # SELINUXTYPE= can take one of three values:
        # targeted — Targeted processes are protected,
        # minimum — Modification of targeted policy. Only selected processes are protected.
        # mls — Multi Level Security protection.
        SELINUXTYPE=targeted

  10. Алексей

    Добрый день.
    Подскажите, пожалуйста, в чем может быть проблема или где ковырять.
    У меня сервак CentOS 7 с ip 192.168.7.1. По вашей инструкции поставил apache. Страница Testing 123 отобразилась.
    Далее создал html "Апач работает" и поправил hosts. IP-шник тот же - 192.168.7.1! Картинка вылазит таже.
    Подозреваю, что где-то нужно было присвоить ip сайту1, отличный от IP сервака. Может нужно Linux на один IP, apache на второй, сайт site1 на третий?
    В Linuxs-е новичек. Только обучаюсь.

    • Алексей

      вот такой у меня лог в "лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log":
      -rw-r--r-- 1 root root 0 июн 29 15:24 /web/site1.ru/logs/error.log

      • Алексей

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

  11. Андрей

    Вот лог из /var/log/httpd
    [Mon Oct 08 14:25:14.297124 2018] [mpm_prefork:notice] [pid 3923] AH00170: caught SIGWINCH, shutting down gracefully
    [Mon Oct 08 14:25:14.385539 2018] [suexec:notice] [pid 4089] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    [Mon Oct 08 14:25:14.424370 2018] [auth_digest:notice] [pid 4090] AH01757: generating secret for digest authentication ...
    [Mon Oct 08 14:25:14.425280 2018] [lbmethod_heartbeat:notice] [pid 4090] AH02282: No slotmem from mod_heartmonitor
    [Mon Oct 08 14:25:14.427915 2018] [mpm_prefork:notice] [pid 4090] AH00163: Apache/2.4.6 (CentOS) configured -- resuming normal operations
    [Mon Oct 08 14:25:14.427952 2018] [core:notice] [pid 4090] AH00094: Command line: '/usr/sbin/httpd'
    [Mon Oct 08 14:25:47.587920 2018] [mpm_prefork:notice] [pid 4090] AH00170: caught SIGWINCH, shutting down gracefully
    [Mon Oct 08 14:25:47.667801 2018] [suexec:notice] [pid 4123] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    [Mon Oct 08 14:25:47.703020 2018] [auth_digest:notice] [pid 4124] AH01757: generating secret for digest authentication ...
    [Mon Oct 08 14:25:47.703907 2018] [lbmethod_heartbeat:notice] [pid 4124] AH02282: No slotmem from mod_heartmonitor
    [Mon Oct 08 14:25:47.706538 2018] [mpm_prefork:notice] [pid 4124] AH00163: Apache/2.4.6 (CentOS) configured -- resuming normal operations
    [Mon Oct 08 14:25:47.706571 2018] [core:notice] [pid 4124] AH00094: Command line: '/usr/sbin/httpd'

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

      • Андрей

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

    • Сама служба httpd запущена? В списке процессов есть? 80-й порт слушает? Судя по логу, он таки запускается. Возможно firewall блокирует подключение к web серверу.

      • Андрей

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

  12. Андрей

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

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

  13. Аноним

    [Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.]
    Если ещё интересно, то зайдите на https://projects.apache.org/projects.html

  14. Константин

    На ступени: Перезапуск apache в centos
    Ошибка:
    [root@localhost ~]# systemctl restart httpd.service
    ● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Пт 2018-03-16 15:50:38 MSK; 7min ago
    Docs: man:httpd(8)
    man:apachectl(8)
    Process: 34132 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
    Process: 34131 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
    Main PID: 34131 (code=exited, status=1/FAILURE)

    мар 16 15:50:38 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
    мар 16 15:50:38 localhost.localdomain httpd[34131]: AH00558: httpd: Could not reliably determine the ...age
    мар 16 15:50:38 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, st...URE
    мар 16 15:50:38 localhost.localdomain kill[34132]: kill: cannot find process ""
    мар 16 15:50:38 localhost.localdomain systemd[1]: httpd.service: control process exited, code=exited ...s=1
    мар 16 15:50:38 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
    мар 16 15:50:38 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.
    мар 16 15:50:38 localhost.localdomain systemd[1]: httpd.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.

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

  15. Здравствуйте, у меня не устанавливается httpd, не может подключится к зеркалам

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

  17. Володя

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

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

  18. Владимир

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

    • Володя

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

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

        • Володя

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

        • Володя

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

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

    Not Found

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

  20. Пупкин

    создал файл index.php с содержимым phpinfo.
    Если обратиться в корень сайта, то отображается информация phpinfo, но если например index.php переименовать в phpinfo.php, то при обращении по http://адрессервера/phpinfo.php открывается просто белая страница. Мне кажется апач не отрабатывает *.php кроме index.php, т.к переношу сайт с ubuntu где php 5.3 на Centos 7 где php 5.4 - и страница сайта index.php - отображается с кучей ошибок, и так же если обращаться напрямую к страницам *.php в корне сайта, то получаем белый экран.

    • Пупкин

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

  21. Скромный

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

  22. Добрый день! Прописал новый путь к сайту, создал файлик 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.
    Подскажите в чём может быть проблема

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

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

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

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

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

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

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

  25. Владимир

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

  26. Дмитрий

    Здравствуйте! Подскажите пожалуйста, столкнулся с такой проблемой, при установке httpd и создания site1.ru.conf сразу стартует SELINUX и ни как эту заразу не отключить. То есть до создания этого конфига httpd сразу ложится. 80 порт в iptables прописан.
    Вопрос вот в чем, как это можно вылечить?
    Заранее спасибо.

    • Дмитрий

      Я ошибся, сразу после перезапуска службы httpd все ложится и стартует SELINUX

    • Если не получается настроить selinux, то его как минимум можно отключить:
      https://serveradmin.ru/centos-7-nastroyka-servera/

      • Дмитрий

        Спасибо! Я до сих пор не понимаю, как он включался, как раз по этому гайду и делал.
        Selinux включался после того как создавал конфиг site1.ru.conf, данная ошибка была на протяжении 4 дней. Пытался найти разобраться, потом плюнул и заново все накатил. Ошибка пропала. Делалось все один в один.
        Поэтому вообще ни чего не понимаю.
        А За статью огромное спасибо!

  27. Установил на виртуальную машину. Настроил вебсервер. Все работает отлично. С хоста на гостевую заходит через веб. Но с локалки зайти не получается ни по ip ни по адресу. Пинг есть и по ip и по site.tt в обе стороны(пробовал с нескольких компов).
    В файрволе удалил все правила, оставил только все разрешено во овсе стороны.
    Подозреваю что все таки что то блокирует входящий трафик на http.
    На виртуалке сетевое соедиенние работает как мост

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

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

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

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

    • Тут не нужна никакая заочная помощь.
      В этом полезном мануале не указан ряд важных дополнений (как и это), без которых работать не будет.
      Так,
      /etc/httpd/conf нужно обязательно раскомментировать строчку NameVirtualHost *:80, включающую разрешение по именам, иначе при добавлении в conf.d/ файлов конфигурации виртуальный сайтов, висящих на одном порту, апач будет предупреждать, что они перекрываются по портам и что будет открываться только первый доступный.

  30. Здравствуйте,

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

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

  31. Дмитрий

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

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

      • Дмитрий

        Да, разобрался в итоге, там в итоге была проблема не в самом каталоге,а в сокет файле мускула. Теперь вот проблема с виртуальными хостами. Я поставил GLPI и все работает по ссылке типа http://x.x.x.x/glpi. Но стоит только добавить в conf.d конфиг странички, загружается только она, а gpli выдает 404 ошибку. Я так понимаю это из-за параметра DocumentRoot, указанного в моем конфиге для сайта?На этом моменте я туплю.

  32. при выполнении
    # systemctl restart httpd
    выдает ошибку could not open error log file /web/site1.ru/logs/error.log
    сам файл в папке есть

    • Добрячок

      Я не Ванга, но возможно нужно отключить Selinux
      sestatus
      setenforce 0
      vi /etc/selinux/config -> SELINUX=disabled
      shutdown -r now
      Проверяем статус sestatus
      systemctl restart httpd

  33. В самом начале можно заменить вот эту строчку создания папок:
    mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs

    На вот такую:
    mkdir -p /web/site1.ru/{www,logs}/

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

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

    • Андрей

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

      Часть до вывода страницы TEST 123 обязательна НО!!! тут забыли указать что еще нужно на firwalld открыть эти порты , иначе все увидят Фигу с маслом, делается это так:
      # firewall-cmd --zone=public --add-port=80/tcp --permanent
      #firewall-cmd --reload
      Только после этого вы увидите заветную страницу TEST 123
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Далее отключаем присловутый Selinux : /etc/sysconfig/selinux выглядеть должно так:
      -------------------------------------------------------------------------------------------------------------
      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      # enforcing - SELinux security policy is enforced.
      # permissive - SELinux prints warnings instead of enforcing.
      # disabled - No SELinux policy is loaded.
      SELINUX=disable
      # SELINUXTYPE= can take one of three values:
      # targeted - Targeted processes are protected,
      # minimum - Modification of targeted policy. Only selected processes are protected.
      # mls - Multi Level Security protection.
      SELINUXTYPE=targeted

      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Далее По установке PHP:

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

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

      # yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
      Выполним перезапуск apache:

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

      # vim /var/www/index.php - тут создаём файлик в который добавим строку
      # chown apache. /var/www/index.php - тут указываем куда смотреть Апачу НО!!! Он не выведет вам ничего Ибо отсюда начинается Кастом настроек.
      Чтобы всё это работало надо поправить файлик httpd.conf что лежит в /etc/httpd/conf/httpd.conf следующим образом:
      --------------------------------------------------------------------------------------------------------------------------------------------------------
      Будьте внимательны если будите копировать!!!
      -------------------------------------------------------------
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      В итоге у вас получится что Апач смотрит в /var/www/index.php и когда вы зададите команду http://ip-адрес сервера, то он выведет вам версию PHP, обновлять PHP или нет зависит от ПО что вы ставите, т.е есть ПО не работающее на современных версиях php7.0/7.1/7.2/7.3 и наоборот.
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

        • Андрей

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar