RootUsers
Guides, tutorials, reviews and news for System Administrators.
Where Is The php.ini Configuration File In CentOS?
How can we find the default configuration files for the PHP packages in CentOS Linux?
By using the RPM command we can query a package to find all of its associated configuration files. Failing that we can use the find command to search the file system for these files, as we will see here.
Finally we’ll cover how we can use a phpinfo file to show us which configuration file is in use.
RPM Query Configuration Files
The options we will use with the RPM command are -q to query a package, and -c which will list the configuration files that are part of the package. As shown below we have run RPM with the -qc options on the php-common package, which is a dependency when installing the php package and is where the php.ini file comes from in CentOS.
These are all of the default configuration files that are installed by the php-common package, we can see here that by default the php.ini file is found at /etc/php.ini.
There are also a couple more configuration files from the php package.
The php package requires the httpd package to be installed, which makes sense as these are the configuration files that tell Apache how to work with PHP.
Find Command
If you aren’t using packages to install PHP and perhaps compiled it from source instead or otherwise installed to a custom location, we can easily run find over the entire file system to find these files.
Настройка web сервера в CentOS 7
Сегодня займемся поднятием одной из наиболее востребованных ролей любого linux сервера, которые занимают в этом функциональном сегменте лидирующую роль. Настройка web сервера CentOS 7 на базе связки популярного http сервера apache, интерпретатора php и сервера баз данных mysql, или коротко — установка lamp. Данная связка является самой популярной конфигурацией на сегодняшний день среди веб хостинга. Хотя последнее время ей на пятки наступает та же компания, но на базе nginx, возможно уже и опередила, точных данных у меня нет на этот счет.
Данная статья является частью единого цикла статьей про сервер Centos.
Web сервер на CentOS 7
Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:
- Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
- PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
- 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 это делается очень просто:
Добавляем apache в автозагрузку:
Запускаем apache в CentOS 7:
Проверяем, запустился ли сервер:
Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://ip-address и увидеть картинку:
Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:
/web | раздел для размещения сайтов |
/web/site1.ru/www | директория для содержимого сайта |
/web/site1.ru/logs | директория для логов сайта |
Создаем подобную структуру:
Дальше редактируем файл конфигурации apache — httpd.conf по адресу /etc/httpd/conf . Первым делом проверим, раскомментированна ли строчка в самом конце:
Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. С оздаем там файл site1.ru.conf :
Перезапуск apache в centos
Теперь делаем restart apache :
Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log . Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/site1.ru/www файл index.html следующего содержания:
Дальше в винде правим файл hosts , чтобы обратиться к нашему виртуальному хосту. Добавляем туда строчку:
где 192.168.1.25 ip адрес нашего веб сервера.
Теперь в браузере набираем адрес http://site1.ru . Если видим картинку:
значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd , а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log .
Сразу же обращу ваше внимание на настройку ротации логов виртуальных хостов. Частенько бывает, что если сразу не настроишь, потом забываешь. Но если сайт с хорошей посещаемостью, то логи будут расти стремительно и могут занять очень много места. Лучше настроить ротацию логов веб сервера сразу же после создания. Сделать это не сложно.
Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd . Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:
Мы добавили одну строку в самое начала файла. Теперь логи всех виртуальных хостов в папке /web будут ротироваться по общему правилу.
В принципе, простейший веб сервер уже готов и им можно пользоваться. Но вряд ли сейчас найдутся сайты со статическим содержимым, которым достаточно поддержки только html. Так что продолжим нашу настройку.
Если вам необходимо организовать работу сайта по протоколу https, то воспользуйтесь руководством по настройке ssl в apache.
Установка php в CentOS 7
Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:
И следом еще несколько полезных компонентов. Установим популярные модули для php:
Выполним перезапуск apache:
Создадим файл в директории виртуального хоста и проверим работу php:
Заходим по адресу http://site1.ru/index.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:
И идем смотреть вывод phpinfo — http://site1.ru/index.php
Отлично, мы обновили 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.
Помогла статья? Подписывайся на telegram канал автора
Автор Zerox
93 комментария
Небольшое дополнение — в конце скрипта 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 сохраняет настройки корректно.
Шаблон может какой-то кастомизированный используют.
Добрый день, Владимир!
Статья полезная, спасибо!
Можете подсказать в чем может быть проблема:
На физическом сервере есть виртуальный сервер битрикс и на нем настроено 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.
Хорошая статья. Есть одно маленькое замечание. После установки апача было бы правильно намекнуть на фаирвол.
Спасибо автору.
Все шаги на Вашем примере сайта. Это очень продуктивно.
Понимаешь как это работает.
Если что-то не получается, смотри в комментах.
Данная инструкция не работает. Автор не понимает о чем пишет = типичный рерайтер, который повыдергивал инфы из интернета для уникальности.
Подскажи еще, откуда я рерайчу, чтобы наполнить свой сайт уникальными авторскими статьями :)))
Видимо самоизоляция так пагубно влияет на мозг..
Автору спасибо, отличные маны отличный сайт
Здравствуйте.
В чем разница между
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
http работает по tcp протоколу.
PS При копировании текста с интернетстраницы в файл — пишется неправильная кодировка и браузер показывает вопросики, писать надо в UTF-8(например поменяв ее в редакторе WinSCP)
Еще нужно постоянно помнить, что если создавать файлы из под root-а — сервер к ним может не иметь доступ, меняется это или через менюшку того же SCP или через команды:
chown -R apache:apache /web — смена владельца всех файлов в папке /web на апач
Здравствуйте! Хорошая статья. Вот только не работает. 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
У меня рассказано как отключить в статье про настройку centos — https://serveradmin.ru/centos-7-nastroyka-servera/ на которую была ссылка в начале статьи.
Добрый день.
Подскажите, пожалуйста, в чем может быть проблема или где ковырять.
У меня сервак 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 не вписал! 😀
Zerox, спасибо за статьи. Изучаю Linux по ним =)
Вот лог из /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 отключил и заработало, хотя вроде настраивал по вашей же статье)
Сделал всё по инструкции, но апач открывает только по ip адресу и то только на локальной машине, по адресу выдаёт ошибку
Дальше логично посмотреть, что за ошибка и подумать, с чем она связана. Заодно посмотреть логи.
[Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.]
Если ещё интересно, то зайдите на https://projects.apache.org/projects.html
Зашел и не понял, почему в одних дистрах Апач зовется apache, а в других httpd.
На ступени: Перезапуск 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 $
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 читый.
Помогите новичку.
Поддерживаю! Такая же ошибка при попытке запуска httpd.
Здравствуйте, у меня не устанавливается httpd, не может подключится к зеркалам
Неправильно настроил сеть. Исправился.
Только хотел написать, что надо сеть проверить 🙂
А как обновить до последней версии Apache?
Нужно использовать какой-то сторонний репозиторий, где будут последние версии apache. Например, вот этот — https://repo.codeit.guru/
Спасибо! Весьма удобное руководство, всё прошло как по маслу. Правда я устанавливал 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.
А куда заходишь? По ошибке вижу, что по адресу http://ip-адрес/nginx
Зачем /nginx на конце? У тебя по этому пути на веб-сервере ничего нет.
я ввожу 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
создал файл 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 код.
Стесняюсь спросить, какая версия 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?
Здравствуйте! Подскажите пожалуйста, столкнулся с такой проблемой, при установке httpd и создания site1.ru.conf сразу стартует SELINUX и ни как эту заразу не отключить. То есть до создания этого конфига httpd сразу ложится. 80 порт в iptables прописан.
Вопрос вот в чем, как это можно вылечить?
Заранее спасибо.
Я ошибся, сразу после перезапуска службы httpd все ложится и стартует SELINUX
Если не получается настроить selinux, то его как минимум можно отключить:
https://serveradmin.ru/centos-7-nastroyka-servera/
Спасибо! Я до сих пор не понимаю, как он включался, как раз по этому гайду и делал.
Selinux включался после того как создавал конфиг site1.ru.conf, данная ошибка была на протяжении 4 дней. Пытался найти разобраться, потом плюнул и заново все накатил. Ошибка пропала. Делалось все один в один.
Поэтому вообще ни чего не понимаю.
А За статью огромное спасибо!
Установил на виртуальную машину. Настроил вебсервер. Все работает отлично. С хоста на гостевую заходит через веб. Но с локалки зайти не получается ни по ip ни по адресу. Пинг есть и по ip и по site.tt в обе стороны(пробовал с нескольких компов).
В файрволе удалил все правила, оставил только все разрешено во овсе стороны.
Подозреваю что все таки что то блокирует входящий трафик на http.
На виртуалке сетевое соедиенние работает как мост
Там на этапе когда у вас уже можно открыть тестовую страницу апача с 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 настройками все правильно.
А чем тут заочно поможешь? Где-то ошибка, виртуальные хосты не работают. Надо внимательно проверить все конфиги.
Скайп есть у Вас?
Тут не нужна никакая заочная помощь.
В этом полезном мануале не указан ряд важных дополнений (как и это), без которых работать не будет.
Так,
/etc/httpd/conf нужно обязательно раскомментировать строчку NameVirtualHost *:80, включающую разрешение по именам, иначе при добавлении в conf.d/ файлов конфигурации виртуальный сайтов, висящих на одном порту, апач будет предупреждать, что они перекрываются по портам и что будет открываться только первый доступный.
Игорь, здесь: /etc/httpd/conf/httpd.conf ? Что-то найти не могу.
Подскажите новичку: я установил апач и создал на нем свой сайт — как настроить доступ к нему с других пк в локальной сети без редактирования по отдельности на каждом пк файла hosts?
Только настройкой dns сервера, который обслуживает эти компьютеры. В него надо добавить запись о вашем сайте.
Не подскажете,что делать со следующей проблемкой. По дури решил переустановить mariadb, с удалением каталога /var/lib/mysql В итоге выдается ошибка при запуске,что mkdir не может создать каталог /var/lib/mysql, нет доступа. запускаю от рута. На другом сервере смотрел права, каталог создан группой mysql, пользователь mysql, я вручную создал каталог с такими же правами. В итоге та же ошибка.
Пробовать надо разные варианты. С правами где-то ошибка. Либо на самом каталоге, либо по пути к нему. Создай сам пустой каталог с нужными правами.
Да, разобрался в итоге, там в итоге была проблема не в самом каталоге,а в сокет файле мускула. Теперь вот проблема с виртуальными хостами. Я поставил GLPI и все работает по ссылке типа http://x.x.x.x/glpi. Но стоит только добавить в conf.d конфиг странички, загружается только она, а gpli выдает 404 ошибку. Я так понимаю это из-за параметра DocumentRoot, указанного в моем конфиге для сайта?На этом моменте я туплю.
при выполнении
# 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
В самом начале можно заменить вот эту строчку создания папок:
mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs
На вот такую:
mkdir -p /web/site1.ru/
А так за мануал спасибо 🙂
Да, спасибо за подсказку. Так можно сделать и я знаю об этом. В статьях стараюсь использовать конструкции как можно проще, чтобы было всем понятно, что я делаю.
Можно вообще сократить мануал и сделать немного поудобнее привязки:
Часть до вывода страницы 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 в 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.
Тогда лучше все убрать, таким сокращением вы убрали важные детали , что указаны в конфиге
Centos 7 php ini где лежит
В большинстве случаев, для индивидуального использования веб-сервера, достаточно одной версии PHP. Но на хостингах или при ведении нескольких проектов, написанных на разных версиях PHP, необходимо, чтобы виртуальные домены сервера могли поддерживать разные версии интерпретатора.
В данной инструкции рассмотрена настройка на примере веб-сервера Apache, работающего на операционной системе Linux CentOS 7. Подразумевается, что сам веб сервер настроен, например, по статье Как настроить полноценный веб-сервер на CentOS. После конфигурирования у нас будет две версии php на одном сервере Apache.
Установка еще одной версии PHP
Предположим, на нашем сервере уже установлен PHP версии 5.4.16. Добавим PHP 5.2.17.
Устанавливаем пакеты, которые нам понадобятся для сборки интерпретатора:
yum install epel-release
yum install wget libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel bzip2-devel freetype-devel aspell-devel uw-imap-devel libmcrypt-devel libmhash-devel mysql-devel postgresql-devel
Создаем каталог для расположения установленного PHP:
Создаем каталог для исходников:
. и перейдем в него:
Переходим на страницу museum.php.net/php5 и копируем ссылку на нужную версию PHP:
* в нашем примере, php-5.2.17.
. используя ссылку, скачиваем исходник на сервер:
* если CentOS вернет ошибку, необходимо установить wget командой yum install wget.
Распаковываем скачанный исходник:
tar zxvf php-*.tar.gz
После переходим в каталог с распакованными файлами:
./configure —prefix=/opt/php-5.2.17 —with-config-file-path=/opt/php-5.2.17 —with-pdo-pgsql —with-zlib-dir —with-freetype-dir —enable-mbstring —with-libxml-dir=/usr —enable-soap —enable-calendar —with-curl=/usr/bin —with-mcrypt —with-zlib —with-gd —with-pgsql —disable-rpath —enable-inline-optimization —with-bz2 —with-zlib —enable-sockets —enable-sysvsem —enable-sysvshm —enable-pcntl —enable-mbregex —with-mhash —enable-zip —with-pcre-regex —with-mysql —with-pdo-mysql —with-mysqli —with-jpeg-dir=/usr/lib64 —with-libdir=lib64 —with-png-dir=/usr —enable-gd-native-ttf —with-openssl —enable-ftp —with-imap —with-imap-ssl —with-kerberos —with-gettext —enable-cli —enable-fastcgi —enable-discard-path —enable-force-cgi-redirect —enable-cgi —enable-bcmath
Собираем пакет и устанавливаем его:
. получим, примерно, такой ответ:
PHP 5.2.17 (cli) (built: Jul 2 2019 13:37:49)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
Ошибки и их устранение
Во время ручной сборки и установки пакетов, как правило, возникают проблемы. Проще всего решить те, которые связаны с зависимостями — для этого нужно просто установить недостающий компонент. Такие проблемы возникают на стадии конфигурирования (./configure).
Также проблемы могут возникнуть во время сборки исходника, например, при установке php 5.2.17 в моем случае появилась ошибка «доступ по указателю на неполный тип ret = buf->buffer->use;». Для решения проблемы необходимо было установить утилиту patch:
yum install patch
Скачать патч для php нужной версии:
. и применить его:
patch -p0
LogLevel warn
Options -Indexes +FollowSymLinks +ExecCGI
Require all granted
ScriptAlias /php5-2-17-cgi /usr/lib/cgi-bin/php5-2-17-cgi
Action application/x-httpd-php5 /php5-2-17-cgi
AddHandler application/x-httpd-php5 .php
Настройка виртуальных доменов
Создаем первый виртуальный домен:
ServerName test-php5-4-16.local
DocumentRoot /var/www/test-php
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
Создаем второй виртуальный домен:
Include php5-2-17.conf
ServerName test-php5-2-17.local
DocumentRoot /var/www/test-php
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
* обратите внимание, что для первого хоста мы используем php, который используется в нашей системе по умолчанию. Для второго домена мы подключаем конфигурационный файл php5-2-17.conf. Также мы будем использовать одну и туже директорию для DocumentRoot — для тестовых задач этого достаточно.
Сегодня займемся поднятием одной из наиболее востребованных ролей любого linux сервера, которые занимают в этом функциональном сегменте лидирующую роль. Настройка web сервера CentOS 7 на базе связки популярного http сервера apache, интерпретатора php и сервера баз данных mysql, или коротко — установка lamp. Данная связка является самой популярной конфигурацией на сегодняшний день среди веб хостинга. Хотя последнее время ей на пятки наступает та же компания, но на базе nginx, возможно уже и опередила, точных данных у меня нет на этот счет.
Данная статья является частью единого цикла статьей про сервер Centos.
Web сервер на CentOS 7
Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache, интерпретатора языка программирования php и сервера баз данных mysql. Познакомимся немного с каждым из них:
- Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
- PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
- 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 это делается очень просто:
Добавляем apache в автозагрузку:
Запускаем apache в CentOS 7:
Проверяем, запустился ли сервер:
Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://ip-address и увидеть картинку:
Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:
/web | раздел для размещения сайтов |
/web/site1.ru/www | директория для содержимого сайта |
/web/site1.ru/logs | директория для логов сайта |
Создаем подобную структуру:
Дальше редактируем файл конфигурации apache — httpd.conf по адресу /etc/httpd/conf . Первым делом проверим, раскомментированна ли строчка в самом конце:
Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. С оздаем там файл site1.ru.conf :
Перезапуск apache в centos
Теперь делаем restart apache :
Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log . Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/site1.ru/www файл index.html следующего содержания:
Дальше в винде правим файл hosts , чтобы обратиться к нашему виртуальному хосту. Добавляем туда строчку:
где 192.168.1.25 ip адрес нашего веб сервера.
Теперь в браузере набираем адрес http://site1.ru . Если видим картинку:
значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd , а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log .
Сразу же обращу ваше внимание на настройку ротации логов виртуальных хостов. Частенько бывает, что если сразу не настроишь, потом забываешь. Но если сайт с хорошей посещаемостью, то логи будут расти стремительно и могут занять очень много места. Лучше настроить ротацию логов веб сервера сразу же после создания. Сделать это не сложно.
Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd . Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:
Мы добавили одну строку в самое начала файла. Теперь логи всех виртуальных хостов в папке /web будут ротироваться по общему правилу.
В принципе, простейший веб сервер уже готов и им можно пользоваться. Но вряд ли сейчас найдутся сайты со статическим содержимым, которым достаточно поддержки только html. Так что продолжим нашу настройку.
Если вам необходимо организовать работу сайта по протоколу https, то воспользуйтесь руководством по настройке ssl в apache.
Установка php в CentOS 7
Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:
И следом еще несколько полезных компонентов. Установим популярные модули для php:
Выполним перезапуск apache:
Создадим файл в директории виртуального хоста и проверим работу php:
Заходим по адресу http://site1.ru/index.php
Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там.
Где лежит php.ini
После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc, прямо в корне. Там можно редактировать глобальные настройки для все виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:
Добавляем в самый конец, перед
Для применения настроек нужно сделать restart apache. Теперь в выводе phpinfo можно увидеть изменение настроек.
Обновление до php 5.6 в CentOS 7
В нашем примере мы установили на CentOS 7 php 5.4 из стандартного репозитория. А что делать, если нам нужна более новая версия, например php 5.6? В таком случае нужно выполнить обновление php.
Теперь обновляем php 5.4 до php 5.6:
И идем смотреть вывод phpinfo — http://site1.ru/index.php
Отлично, мы обновили 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.
Где находится php.ini Linux CentOS
Конфигурационный файл php.ini содержит в себе настройки PHP, которые действуют на сервере хостинг-провайдера.
Чтобы найти местоположение файла, необходимо через putty по SSH, ввести команду:
php -i | grep "Loaded Configuration File"
В результате получите что — то вроде:
Loaded Configuration File => /etc/php.ini
Комментарии:
Категории
Павел
Заказал сегодня хостинг, долго активировался, где то минут 5, поэтому ставлю троечку. Хороший хостинг должен активироваться моментально и работать стабильно. Работает пока нормально.
Партнерская программа
Мы всегда открыты для сотрудничества и предлагаем огромные возможности Вашему бизнесу, давайте развиваться вместе!
Where is PHP php.ini Configuration File Location ?
Imagine you are given a server and you are asked to change its PHP settings. Also, assume that several different versions of PHP are installed on this server. What do you think is the best way to find a PHP configuration file? You will find the answer to this question below.
Method 1 (phpinfo file):
#
One way to find out exactly which php.ini file your web sever is using is by creating a new PHP file in document root called info.php
Load this file in your browser, press CTRL + F and search for “Loaded Configuration File”. You should see something like.
This will tell you the exact location of the php.ini file you want to edit.
Method 2 (PHP.ini & grep command) #
In Linux, run this command to locate the PHP.ini configuration file.
Or in Windows Command Line:
The result should be something like this.
Method 3 (locate command) #
Using the locate command in Linux. If it’s not already installed, run sudo apt install mlocate [On Debian/Ubuntu] and sudo yum install mlocate [On CentOS/RHEL]