Web-сервер на CentOS 7.1 – установка и настройка Apache, PHP и MySQL
Если у Вас встала задача развернуть 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
Как уже было сказано выше, для того чтобы наш web сервер был доступен по определенным портам, т.е.
обычно это 80 для http и 443 для https, необходимо открыть соответствующие порты на файрволе, делается это достаточно просто, поэтому отключать файрвол, как рекомендуют некоторые web мастера, нет необходимости и я даже больше скажу – это крайне не рекомендуется.
Примечание! Все мы будем делать в терминале (консоли) Linux, поэтому неважно установлена ли графическая оболочка у Вас или нет.
Выполняем от имени суперпользователя следующие команды, 1 для открытия 80 порта, 2 для 443 и 3 для перезапуска файрвола:
firewall-cmd –permanent –zone=public –add-service=http firewall-cmd –permanent –zone=public –add-service=https firewall-cmd –reload
Установка и настройка Web-сервера Apache на CentOS 7.1
Теперь устанавливаем HTTP сервер Apache, это также делается очень просто, выполняем еще 3 команды, первая – это непосредственно сама установка http сервера с модулем ssl, вторая – это его запуск, и третья – это включение в автозагрузку.
Примечание! Перед запуском команд проверьте, подключен ли у Вас Интернет. Эти и все остальные команды выполняются от имени суперпользователя (root).
yum -y install httpd mod_ssl systemctl start httpd.service systemctl enable httpd.service
После того как Вы установили, запустили и поместили в автозагрузку Apache, необходимо проверить работу этого http сервера, для этого просто вводим в браузере ip адрес сервера или если у Вас CentOS со средой рабочего стола, то достаточно указать 127.0.0.1, т.е. localhost непосредственно на самом сервере в браузере. В ответ Вы должны получить что-то вроде этого
Это заставка означает, что http сервер установлен и по умолчанию отображается страница приветствия.
Убираем страницу заглушку
Теперь нам необходимо настроить наш web сервер Apache, и первое что нужно сделать, это убрать страницу заглушку, для этого редактируем файл welcome.conf (напомню, что все делаем от имени root), например, редактором nano, в этом файле всего лишь нужно закомментировать все не закомментированные строки, знак комментария # (решетка).
nano /etc/httpd/conf.d/welcome.conf
Для сохранения нажимаем сочетание клавиш Ctrl+O, затем для подтверждения жмем Enter и для выхода из редактора Ctrl+X.
Перезапускаем Apache
systemctl restart httpd
Проверяем работу, и у нас должно отобразиться вот это
Т.е. список каталогов и файлов, но так как у нас еще нет никаких файлов и папок в корневом каталоге, то, соответственно, ничего и не отображается.
Настраиваем каталоги http сервера
Теперь давайте создадим структуру каталогов и соответственно сами каталоги для наших сайтов, и добавим файл конфигурации хоста, в котором будут храниться настройки нашего первого тестового сайта. Предлагаю следующую структуру, в корневой директории http сервера, т.е. в /var/www/html/ будем создавать отдельные каталоги для каждого сайта, например, для тестового сайта структура следующая:
/var/www/html/testsite/www/ – файлы сайта
/var/www/html/testsite/logs/ – логи сайта
т.е. в домашней директории (html) создаем папку с названием сайта (testsite), в которой создаем папки www и logs, в первой из которых будут располагаться все файлы и папки сайта, а во второй лог обращений и лог ошибок.
Данные каталоги создаем следующими командами:
mkdir -p /var/www/html/testsite mkdir -p /var/www/html/testsite/www mkdir -p /var/www/html/testsite/logs
Настраиваем конфиг для тестового сайта
Давайте создадим конфигурационный файл для сайта, для каждого сайта будем делать отдельный файл, в нашем случае предлагаю назвать его также как и корневой каталог, т.е. testsite, расширение conf, в итоге мы должны создать файл testsite.conf в директории с остальными конфигами (мы туда уже заглядывали) т.е. в /etc/httpd/conf.d/
Создаем файл
touch /etc/httpd/conf.d/testsite.conf
Открываем его на редактирование тем же самым редактором nano
nano /etc/httpd/conf.d/testsite.conf
И вносим следующие настройки (я их прокомментировал)
#доменное имя (для примера я просто укажу локальный адрес) ServerName 127.0.0.1 #Корневой каталог сайта DocumentRoot /var/www/html/testsite/www #Настройки каталога www #запрещаем просмотр списка файлов и папок Options -Indexes #Разрешаем читать файл .htaccess AllowOverride All #Разрешаем доступ Require all granted #Путь к лог файлу ошибок ErrorLog /var/www/html/testsite/logs/error.log #Путь к файлу обращений CustomLog /var/www/html/testsite/logs/access.log common
Сохраняем и закрываем тем же самым способом, как мы это делали чуть ранее.
Теперь нам нужно перезапустить Apache, но если мы попытаемся это сделать, у нас ничего не получится, http сервер остановится, но не запустится и в данном случае это будет связанно с настройками безопасности SELinux, а если говорить конкретно, то веб сервер попытается записать данные в лог, но не сможет, поэтому давайте перейдем к настройкам SELinux.
Настраиваем SELinux в CentOS 7.1 для WEB сервера
SELinux (Linux с улучшенной безопасностью) – это система контроля доступа, которая является частью ядра Linux. В некоторых дистрибутивах Linux данная система безопасности по умолчанию включена, например, как у нас в CentOS.
В Интернете можно встретить статьи, где веб мастера рекомендуют вообще выключать систему SELinux, также как и файрвол, но самом деле этого лучше не делать, а просто настроить эти компоненты, файрвол мы уже настроили выше, теперь давайте настроим SELinux.
Первое, что мы сделаем – это разрешим посылать запросы из скриптов к базе данных, это делается вот так:
setsebool -P httpd_can_network_connect on
А затем как раз зададим контекст безопасности для каталога logs, чтобы web-сервер мог писать в него, первой командой мы задаем этот контекст безопасности, а второй переконфигурируем SELinux
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/testsite/logs' restorecon -v '/var/www/html/testsite/logs'
Теперь давайте перезагрузимся
reboot
Проверяем работу HTTP-сервера, как обычно обращаемся в браузере к нашему серверу по его адресу. В данный момент мы должны получить ответ Forbidden
т.е. отказано в доступе, так как никаких файлов в нашем каталоге еще нет, а листинг директорий мы отключили.
Устанавливаем PHP на CentOS 7.1
Для установки языка программирования PHP на CentOS необходимо выполнить следующую команду, но учтите, что если Вы используете дополнительные расширения PHP, то их необходимо включать в установку, например, мы сразу установим расширение для работы с базой MySQL (указываем название расширения через пробел). Если Вы не знаете, какие расширения Вы будете использовать, то ничего страшного, потом их конечно можно доустановить, итак, команда для установки php и расширения mysql будет выглядеть следующим образом (все от имени root):
yum -y install php php-mysql
Перезапускаем Apache
systemctl restart httpd
Для проверки установился ли PHP, создаем тестовый файл (например, таким же способом как мы создавали конфиг Apache чуть выше), допустим с названием test.php в директории тестового сайта (/var/www/html/testsite/www/), содержание файла следующее (просто информация о PHP)
После создания мы обращаемся к этому файлу из браузера, например ip_адрес/test.php
В ответ мы должны получить вот такую страницу
Как видите, у нас установилась версия PHP 5.4.16.
Устанавливаем MySQL/MariaDB на CentOS 7.1
В операционной системе CentOS 7.1 в качестве сервера баз данных используется не сама СУБД MySQL, а ее ответвление MariaDB. Эти базы полностью совместимы, только MariaDB разрабатывается и поддерживается сообществом (как Вы знаете, MySQL поддерживает компания Oracle) и является полностью бесплатной.
Для установки MariaDB пишем следующую команду
yum -y install mariadb-server mariadb
Запускаем
systemctl start mariadb
Помещаем в автозагрузку
systemctl enable mariadb
Задаем пароль для root пользователя
mysqladmin -u root password 'Придуманный_пароль'
Запускаем скрипт безопасной установки – это нужно, для того чтобы удалить опасные настройки по умолчанию, например анонимных пользователей
mysql_secure_installation
Сначала Вас спросят пароль root пользователя, а затем если Вы, конечно, захотите установить новый пароль для root, но мы его и так только что задали. На все остальные вопросы отвечаем y (т.е. да)
Проверяем работу MariaDB
Чтобы проверить работу MariaDB исправим немного наш тестовый скрипт (test.php). Пишем следующий код PHP.
Также в браузере вызываем test.php и если все хорошо, то в ответ мы получим версию MariaDB, в моем случае это 5.5.41-MariaDB.
Вот мы с Вами и настроили полноценный WEB-сервер, надеюсь, данный материал был Вам полезен, удачи!
Источник: https://info-comp.ru/sisadminst/463-web-server-on-centos-7-1.html
Как установить или обновить php 7 на CentOS 7
Некоторое время назад вышла новая, практически революционная версия php 7. Революционная, потому что обещает существенный прирост производительности, в отличие от предыдущих обновлений. По предварительным данным из описаний и обещаний, якобы в некоторых случаях может быть прирост скорости обработки php в разы. А если не повезет, то на 30-70%. Решил я это проверить на свою голову.
Введение
Я никогда не придавал большого значения версии php, так как не работал с высоконагруженными проектами. Для моих задач мне хватало любой версии, которую поддерживали необходимые мне скрипты. В основном это популярные движки сайтов, админка заббикса и другие прикладные инструменты системного администратора.
Я решил поэкспериментировать и проверить, насколько быстрее будет работать мой блог, если я перейду на php 7. Этот сайт работает на wordpress, до обновления он работал на php54 с включенной системой кэширования apc.
Достаточно старая версия, но именно она ставится из стандартных репозиториев centos, которые я использую. Уже не помню точно, откуда он ставится, то ли из базового, то ли из epel. Как оказалось, не зря ставится эта версия.
Серия моих экспериментов и проверок подтвердила, что именно на этой версии достигается максимальная производительность в моем конкретном случае.
Но обо всем по порядку. Для того, чтобы отследить изменения и понимать, стало лучше или нет, я решил провести некоторые замеры скорости работы сайта. Начал гуглить эту тему. Вариантов не особо много.
Нашел 2 наиболее популярные утилиты, которыми пользуются для тестирования производительности web сервера: ab и siege.
Первая входит в стандартные утилиты httpd или apache2, вторая как есть ставится через yum.
Я попробовал обе утилиты и остановился на siege. Она позволяет проводить измерения наиболее приближенные к реальному поведению пользователей на сайте. Не буду в этой статье подробно останавливаться на описании работы утилиты, в интернете информация есть, легко ищется. Если вам нужно, то сами все найдете и протестируете.
Я настроил siege и прогнал серию тестов, создающую разную нагрузку и зафиксировал результаты. После этого стал готовиться к обновлениям. Сразу скажу, что итоговый результат меня не удовлетворил и я вернулся на начальную свою конфигурацию. Обо всем по порядку расскажу.
Обновление php 5.4 до php 7
Сразу расскажу о проблемах, с которыми вы столкнетесь после обновления php70.
- У вас не будет работать phpmyadmin без танцев с бубном. После обновления панель управления сразу перестала работать. Я немного погуглил тему, заставить работать можно, но нужно поковыряться. Мне не захотелось этого делать, подробно не разбирался в теме.
- У меня перестал работать некоторый функционал плагинов в админке wordpress. При этом сам вордпресс работает нормально, его похоже оптимизировали для работы с php70. Получилось, что сайт в целом работает, но некоторые плагины не работают, либо ими нельзя управлять. WP Super Cache вообще не заработал, пока его не отключил, не мог загрузить главную страницу сайта, вместо нее белое полотно. Панель управления моей темой не открывала некоторые страницы с настройками.
Это то, что я заметил сам. Возможно не работает что-то еще. Все это я узнал постфактум, так что обновиться до php70 и прогнать тесты производительности успел.
Теперь информация об обновлении. Существуют как минимум 2 репозитория, которые можно подключить к CentOS 7 и установить обновление php70. Это либо ius с пакетом php70u, либо webtactic с php70w. Чем они отличаются я не знаю, не стал вникать. Я решил воспользоваться репозиторием ius. Подключаем его:
# curl 'https://setup.ius.io/' -o setup-ius.sh # bash setup-ius.sh
Скрипт подключит нужное репо в соответствии с вашей системой. Теперь можно удалять старую версию php и устанавливать php70.
Дальнейшие действия будут зависеть от того, что вы используете на вашем веб сервере. У меня установлен nginx + php-fpm примерно по приведенной статье. Мне необходимо удалить пакеты:
# yum remove php-fpm php-cli php-common
Удаление этих пакетов тянет за собой удаление всех зависимостей. Запишите их куда-нибудь, чтобы потом установить новые версии этих пакетов. В качестве пакета к удалению будет в том числе и phpmyadmin.
Впоследствии его можно будет установить только вручную из исходников. Если вы используете apache, то необходимо удалить mod_php, а затем заново установить mod_php70u.
Устанавливаем php70 вместе с необходимыми пакетами. У меня получился такой список. В нем оказалось не все, что было удалено, пары пакетов я не нашел в новом репо.
yum install php70u-common php70u-fpm-nginx php70u-pecl-apcu php70u-bcmath php70u-devel php70u-fpm php70u-gd php70u-ldap php70u-mbstring php70u-mcrypt php70u-odbc php70u-pdo php70u-pear php70u-pecl-memcache php70u-process php70u-snmp php70u-soap php70u-tidy php70u-xml php70u-xmlrpc php70u-cli php70u-mysqlnd
Я точно не помню, но скорее всего этот список соответствует требованиям wordpress и phpmyadmin. Больше у меня на сервере ничего не было, поэтому лишних пакетов быть не должно. После установки нужно чуть-чуть отредактировать конфигурацию php-fpm.
Открываем на редактирование /etc/php-fpm.d/www.conf и добавляем туда параметр:
# mcedit /etc/php-fpm.d/www.conflisten.acl_users = nginx
Если в качестве подключения к php-fpm использовали не unix socket, то придется перейти на него. Для этого закомментируйте строку:
listen = 127.0.0.1:9000
и добавьте новую:
listen = /var/run/php-fpm/php5-fpm.sock
Сохраняем конфиг и перезапускаем php-fpm:
# systemctl restart php-fpm
Если вы использовали unix socket, то в конфиге nginx ничего менять не надо, если же TCP socket, то нужно заменить строку:
fastcgi_pass 127.0.0.1:9000
на
fastcgi_pass /var/run/php-fpm/php5-fpm.sock
После этого перезапустите nginx:
# systemctl restart nginx
Обновление php до версии 7.0 окончено. Можно проверять вывод phpinfo();
Подключение модулей кэширования и тестирование производительности web сервера
PHP обновили, сайт запустился, дальше можно погонять тесты. Цифры я приводить не буду, так как в них нет никакого смысла. Они зависят от огромного числа параметров, поэтому в абсолютном значении не представляют ценности. Важны именно изменения значений в рамках одной тестируемой среды. Я буду говорить о примерном результате.
Первым делом я запустил тесты голого php70, без кэширования. Результаты при средней нагрузке, когда сервер успевает обработать все запросы, но работает на пределе своих возможностей, примерно оказались равны php54+apc. Но когда нагрузка сильно возрастает, образуется очередь запросов, php70 начинает в 2-3 раза медленнее обслуживать запросы, время отклика вырастает в 2-3 раза.
Я так прикинул, думаю, вроде неплохой результат. Сейчас включу apc и замерю как с ним будет. Оказалось, что модуль apc давно не поддерживается и поставить его на версию выше php54 нельзя. Вместо него теперь apcu.
Думаю ладно, не проблема. Подключаю apcu и тестирую с ним. Результат меня расстроил. На средней нагрузке результат практически не изменился, на высокой нагрузке стал чуть хуже, а на очень высокой вообще в 2 раза просел по сравнению с работой без модуля.
Я понял, что никакого чуда с обновлением php70 не произошло. Прироста производительности я не получил, а получил кучу проблем в виде неработающих плагинов и phpmyadmin. Я принял решение откатываться назад, но не на версию php54, как было, а решил попробовать php56, чтобы проверить, что у него со скоростью.
К сожалению, уже после удаления 7-й версии php, я узнал, что модуль apc и apcu имеют принципиальное отличие и сравнивать только их нельзя. В результате мои тесты оказались недостоверны и с практической точки зрения бесполезны.
Дело в том, что apc является opcode cache and data store, а apcu только data store. Таким образом, чтобы корректно протестировать производительность, мне нужно было в php70 включить еще opcache, который является opcode cache.
Такая связка показала бы сопоставимый результат.
Мне все же любопытно проверить реальную производительность php70 в рабочей обстановке. Но постоянно пользоваться им пока не представляется возможным из-за проблем совместимости.
Откат обновления php 7.0 до php 5.6
Я решил откатиться на версию php 5.6. Ничего сложного в этом нет. Я уже рассказывал ранее, как в centos обновить php54 до php56. Воспользуемся информацией из этого материала. Сначала удаляем php70:
yum remove php70u-bcmath php70u-devel php70u-fpm php70u-gd php70u-ldap php70u-mbstring php70u-mcrypt php70u-odbc php70u-pdo php70u-pear php70u-pecl-memcache php70u-process php70u-snmp php70u-soap php70u-tidy php70u-xml php70u-xmlrpc php70u-cli php70u-mysqlnd php70u-fpm-nginx php70u-pecl-apcu php70u-common
Подключаем remi репозиторий:
# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7*.rpm
И устанавливаем все те же пакеты, что мы до этого удалили из версии php54, потом поставили и удалили php70
Источник: https://serveradmin.ru/ustanovka-i-obnovlenie-php-7-na-centos-7/
Установка (не обновление) PHP 7.2 на CentOS 7
Для того чтоб на сервере было несколько версий PHP необходимо его не обновлять, а именно установить.
Устанавливаем репозитории федоры (epel-release) и Remi:
yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Просмотр установленных пакетов другой версии php. Для этого посмотрим какая версия PHP стоит на сервере:
php -v
Если на сервера несколько версий PHP, то можно их посмотреть командой:
yum list installed php*
Если у нас стоит и пятая и седьмая версия PHP, но мы хотим обновить именно седьмую версию, например, с PHP 7.0 до PHP 7.2, то самым оптимальным будет установка всех аналогичных пакетов PHP 7.0 для PHP 7.2, а после настройки и проверки работоспособности PHP 7.2 удаление PHP 7.0:
yum list installed php70* yum install -y –enablerepo=php-remi72 php72 php72-php php72-php-cli php72-php-common php72-php-devel php72-php-fpm php72-php-gd php72-php-intl php72-php-json php72-php-mbstring php72-php-mcrypt php72-php-mysqlnd php72-php-opcache php72-php-pdo php72-php-pear php72-php-pecl-geoip php72-php-pecl-solr2 php72-php-pecl-zip php72-php-process php72-php-soap php72-php-xml php72-php-xmlrpc php72-runtime
Смотрим, появилась ли служба и какое у неё состояние при автозагрузке:
systemctl list-unit-files –type service | grep php72
При необходимости включаем службу в атозагрузку (если она отключена) и проверяем её состояние:
systemctl enable php72-php-fpm systemctl is-enabled php72-php-fpm
Запускаем службу (1) и проверяем её состояние (2):
service php72-php-fpm start service php72-php-fpm status
Если служба не запустилась выдав ошибку, то смотрим причину ошибки набрав команду:
systemctl status php72-php-fpm
Так как порт занят, то мы скопируем конфигурационный файл (2) из папки /etc/opt/remi/php72/php-fpm.d/ в папку /etc/opt/remi/php7о/php-fpm.d/, предварительно сохраним версию конфигурационного файла для PHP 7.2 (1), а после копирования отключим конфиг файл для PHP 7.0 (3):
mv /etc/opt/remi/php72/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.dis cp /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.conf mv /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php70/php-fpm.d/www.dis
Перезапускаем старую службу (чтоб освободить порт или сокет) и запускаем новую службу (обязательно нужно использовать restart, так как reload сокет или порт не освободит):
service php70-php-fpm restart && service php72-php-fpm start
Аналогично копируем все остальные конфигурационные файлы, но лучше по одному копировать и каждый раз перезапускать службы:
service php70-php-fpm restart && service php72-php-fpm restart
Для правки конфигурационного файла набираем:
yum install -y nano nano /etc/opt/remi/php72/php-fpm.d/название_файла.conf
Пример:
nano /etc/opt/remi/php72/php-fpm.d/www.conf
После правки всегда нужно перезапускать службу:
service php72-php-fpm reload
или
systemctl reload php72-php-fpm
Если хотим включить репозиторий remi-php72, то в файле /etc/yum.repos.d/remi-php72.repo в строке 9 ‘enabled=‘ заменяем на ‘enabled=1‘. Но нужно помнить, что стоящий php по умолчанию будет обновлён до версии php 7.2 в CentOS 7. Поэтому лучше не включать, а обновление php72 проводить следующим способом:
yum update -y php72* –enablerepo=remi-php72
Источник: https://www.Dr.Arut.ru/ustanovka-ne-obnovlenie-php-7-2-na-centos-7/
Установка PHP 7 на CentOS 7
PHP это язык сценариев на стороне сервера используемая для веб -разработки. На этом уроке мы покажем вам , как установить PHP 7 на Linux VPS .
PHP 7 поставляется с множеством новых и усовершенствованных функций.
Одним из самых заметных является новой версией Zend Engine. Кроме того, есть другие важные улучшения, которые повышают производительность и значительно уменьшают использование памяти.
Таким образом, PHP 7 может быть в два раза быстрее, чем PHP 5.6.
Чтобы установить PHP 7 на CentOS VPS , вам необходимо войти на свой сервер через SSH. После того, как вы вошли в систему, обновите все системное программное обеспечение до последней версии с помощью следующей команды:
yum update
После того как обновления вашей системы будет завершены, вы можете пойти дальше и добавить необходимые репозитории yum.
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Теперь установите PHP 7 c помощью следующей команды:
yum install php70w
Установка должна занять несколько минут. После того, как она будет завершена, вы можете проверить, что последний стабильный релиз PHP 7 установлен в вашей системе с помощью команды:
php -v
Вы должны увидеть что-то вроде этого:
PHP 7.0.0 (cli) (built: Dec 2 2015 20:42:32) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
Если вы хотите найти все доступные модули в PHP 7, вы можете использовать команду:
yum search php70w
Чтобы установить конкретные модули PHP 7, как модуль, которые позволяет PHP-приложениям использовать базы данных MySQL, вы можете использовать команду ниже:
yum install php70w-mysql
Для проверки работоспособности PHP 7 на вашем CentOS VPS вы можете создать простой PHP информационный файл и поместить его в корневой каталог документов вашего веб – сервера. Перейдите к корневую директорию документов вашего веб – сервера:
cd /var/www/html/
Создать информационный файл PHP с использованием nano:
nano info.php
Вставьте следующее содержимое в этот файл:
Сохраните файл и закройте его. Кроме того, измените владельца файла и сделать Apache владельцем этого файла:
chown apache: info.php
Не забудьте перезапустить веб-сервер Apache, если вы не перезапустили его еще, чтобы изменения установки вступили в силу:
systemctl restart httpd
Последнее, это получить доступ к файлу с помощью веб-браузера. Откройте ваш веб-браузер и перейдите по следующему адресу:
http://111.211.111.211/info.php
Конечно, мы используем IP-адрес 111.211.111.211 только для целей тестирования, так что вы должны убедиться, что вы используете IP-адрес вашего фактического сервера. Вы должны увидеть страницу с текущей информацией, такой как PHP версии, опции компиляции, расширений, загруженных файлов конфигурации и т.д.
PS. Если вам понравился этот пост, пожалуйста, поделитесь им с друзьями в социальных сетях с помощью кнопок на левой или просто оставить ответ ниже. Благодарю.
Источник: https://andreyex.ru/centos-7/ustanovka-php-7-na-centos-7/
Обновление до PHP 7 на CentOS 7
Версия PHP 7, выпущенная 3 декабря 2015 года, обещает значительное увеличение скорости работы по сравнению с предыдущими версиями этого языка, а также новые функции (например, подсказки скалярного типа). В этом руководстве объясняется, как быстро обновить PHP 5.x (любую версию), работающую на веб-сервере Apache или Nginx, до PHP 7 при помощи пакетов, предоставляемых сообществом разработчиков.
Внимание: Как и в большинстве случаев с выпуском новой версии языка, лучше немного подождать, прежде чем обновляться до PHP 7 в производстве. За это время можно протестировать свои приложения на совместимость с новой версией, выполнить тесты производительности и ознакомиться с новыми функциями языка.
Если для управления базами данных у вас установлен phpMyAdmin, мы настоятельно рекомендуем вам подождать официальных пакетов PHP 7 для CentOS, поскольку пакеты phpMyAdmin пока не поддерживают такое обновление. Если у вас работают другие сервисы или приложения с активными пользователями, то лучше сначала провести тестирование.
Необходимые условия
Для целей этого руководства предполагается, что вы используете PHP 5.x на CentOS 7, используя либо mod_php вместе с Apache, либо PHP-FPM вместе с Nginx. Также предполагается, что для выполнения административных задач у вас имеется конфигурированный пользователь non-root с привилегиями sudo.
Процесс установки PHP 5 описан в следующих руководствах:
- Как установить стек Linux, Apache, MySQL, PHP (LAMP) на CentOS 7
- Как установить стек Linux, Nginx, MySQL, PHP (LEMP) на CentOS 7
Подписка на хранилище сообщества IUS
Поскольку PHP 7.x пока не доступен в официальных хранилищах для массового распространения, мы будем использовать сторонний источник. Файлы PHP 7 RPM доступны в нескольких хранилищах. Мы воспользуемся хранилищем IUS.
IUS предлагает сценарий установки для подписки на их хранилище и импортирования соответствующих ключей GPG. Убедитесь, что вы находитесь в своем домашнем каталоге, и извлеките сценарий при помощи curl:
cd ~
curl 'https://setup.ius.io/' -o setup-ius.sh
Выполните сценарий:
sudo bash setup-ius.sh
Обновление mod_php для системы с Apache
В этом разделе описан процесс обновления для системы, использующей Apache в качестве веб-сервера и mod_php для выполнения PHP-кода. Если же вы используете Nginx и PHP-FPM, сразу переходите к следующему разделу.
Удалите существующие пакеты PHP. При появлении на экране запроса нажмите y и затем Enter,чтобы продолжить.
sudo yum remove php-cli mod_php php-common
Установите новые пакеты PHP 7 из IUS. При появлении запроса снова нажмите y и затем Enter.
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
И наконец, перезапустите Apache, чтобы загрузить новую версию mod_php:
sudo apachectl restart
При помощи systemctl вы можете проверить статус Apache, который управляется компонентом httpd systemd:
systemctl status httpd
systemctl status httpd
Обновление PHP-FPM для системы с Nginx
В этом разделе описывается процесс обновления для системы, использующей Nginx в качестве веб-сервера и PHP-FPM для выполнения PHP-кода. Если вы уже обновили систему, работающую с Apache, сразу переходите в разделу «Тестирование PHP».
Удалите существуюищие пакеты PHP. При появлении на экране запроса нажмите y и затем Enter, чтобы продолжить.
sudo yum remove php-fpm php-cli php-common
Установите новые пакеты PHP 7 из IUS. При появлении на экране запроса снова нажмите y и Enter.
sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd
По завершении установки вам нужно будет внести несколько изменений в конфигурации PHP-FPM и Nginx. Согласно конфигурации, PHP-FPM перехватывает соединения на локальном TCP-сокете, а Nginx ожидает доменный сокет Unix, который показывает путь в файловой системе.
PHP-FPM может работать с множественными пулами дочерных процессов. Согласно конфигурации, он предоставляет единственный пул под названием www, который задан в /etc/php-fpm.d/www.conf. Откройте этот файл при помощи nano (или другого текстового редактора):
sudo nano /etc/php-fpm.d/www.conf
Найдите блок, содержащий listen = 127.0.0.1:9000, который приказывает PHP-FPM перехватывать на адресе возвратной петли, порт 9000. Закомментируйте эту строку при помощи точки с запятой и раскомметируйте listen = /run/php-fpm/www.sock несколькими строками ниже.
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' – to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' – to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' – to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' – to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
; access to that socket by setting listen.acl_users to the webserver user.
listen = /run/php-fpm/www.sock
Теперь найдите блок, содержащий значения listen.acl_users, и раскомментируйте listen.acl_users = nginx:
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
listen.acl_users = nginx
;listen.acl_groups =
Выйдите и сохраните файл. В nano вы можете сделать это путем нажатия на Ctrl-X для выхода, y для подтверждения, и Enter для подтверждения перезаписываемого имени файла.
Затем убедитесь, что Nginx использует верный путь к сокету для работы с файлами PHP. Для начала откройте /etc/nginx/conf.d/default.conf:
sudo nano /etc/nginx/conf.d/php-fpm.conf
php-fpm.conf задает upstream-код, на который могут ссылаться другие конфигурационные директивы Nginx.
Внутри upstream-блока используйте #, чтобы закомментировать server 127.0.0.1:9000;, и раскомментируйте server unix:/run/php-fpm/www.sock;:
# PHP-FPM FastCGI server
# network or unix domain socket configuration upstream php-fpm { #server 127.0.0.1:9000; server unix:/run/php-fpm/www.sock;
}
Выйдите и сохраните файл, затем откройте /etc/nginx/conf.d/default.conf:
sudo nano /etc/nginx/conf.d/default.conf
Найдите блок, начинающийся с location ~ .php$ {. В этом блоке найдите каталог fastcgi_pass. Закомментируйте или удалите эту строку и замените ее на fastcgi_pass php-fpm, который будет ссылаться на upstream-код, заданный в php-fpm.conf:
location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_pass php-fpm; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Выйдите и сохраните файл, затем перезапустите PHP-FPM и Nginx, чтобы новые конфигурационные директивы вступили в силу:
sudo systemctl restart php-fpm
sudo systemctl restart nginx
Вы можете проверить статус каждой службы при помощи systemctl:
systemctl status php-fpm
systemctl status nginx
Тестирование PHP
Теперь, когда веб-сервер конфигурирован и новые пакеты установлены, мы должны убедиться, что PHP работает. Начните с проверки установленной версии PHP в командной строке:
php -v Output
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
Вы также можете создать тестовый файл в корне документа веб-сервера. Несмотря на то, что его расположение зависит от конфигурации вашего сервера, корень документа обычно находится в одном из этих каталогов:
• /var/www/html
• /var/www/
• /usr/share/nginx/html
При помощи nano откройте новый файл под названием info.php в корне документа. По умолчанию, на Apache это будет выглядеть следующим образом:
sudo nano /var/www/html/info.php
На Nginx можно использовать следующее:
• sudo nano /usr/share/nginx/html/info.php
Вставьте следующий код:
Источник: http://devacademy.ru/posts/obnovlieniie-do-php-7-na-centos-7/
PHP 7 в ISPmanager 5 – как установить в режиме модуля Apache или PHP-FPM? Способы установки PHP
Тренд перехода на PHP 7 набирает обороты. Ибо это быстрее работает (объективно!), это удобней для разработки (но это не точно, вроде как).
Тот же WordPress уже давным-давно умеет работать на новых версиях PHP. Да и другие популярные CMS не отстают. Поэтому есть смысл переводить целиком серверы на эту версию. Но тут есть загвоздка в том, что софт в официальных репозиториях дистрибутивов Linux не спешит обновляться.
Для установки чего-то нового как правило нужно костылить с дополнительными репозиториями. Наверняка нет никаких с этим проблем если вы используете виртуальные хостинги.
А вот если вы держите сайты на собственных серверах или VPS, то тут уже нужно самостоятельно заморачиваться с обновлением и установкой новейшей версии PHP.
И поскольку в 80% случаев на серверах используется панель управления ISPmanager 5, то речь будет о настройке PHP 7 именно в ней. Почему об этом пишу я, а не саппорт ISPsystem? А хз, потому что в их мануале ничего об этом не сказано.
Какие версии PHP установлены в распостраненных дистрибутивах Linux по-умолчанию?
Хостеры обычно предлагают такие OS для установки на VPS или дедики:
Версия OS | Версия PHP по умолчанию |
Debian 7 | PHP 5.4 |
Debian 8 | PHP 5.6 |
Centos 6 | PHP 5.3 |
Centos 7 | PHP 5.4 |
Ubuntu 14.04 | PHP 5.5 |
Ubuntu 16.04 | PHP 7.0 |
Конечно, встречаются и другие варианты, либо наоборот, может не быть что-то из этого списка. Но новейшие версии — Debian 8, Centos 7 и Ubuntu 16.04 будут практически у любого хостера. Из этих трех похвастать установленным PHP 7 может только последняя.
Но у нее есть другие проблемы — она относительно новая и в ней можно огребать какие-то непонятные глюки и баги. По моему опыту Ubuntu на серверах можно использовать LTS версии ( как раз четные 04) только года через 2 после выпуска. Как минимум это проще, чем потом долго искать и выявлять проблемы, которых в принципе не должно быть.
У меня неоднократно таковые возникали с производительностью некоторого софта в новейших версиях Ubuntu.
О версиях Ubuntu
Если кто не в курсе — версия убунту означает год и месяц выпуска. Традиционно они выпускаются в октябре и апреле, поэтому минорная версия может быть только x.04 или x.10. При этом x.10 никогда не бывает LTS — Long Term Support и никогда такие версии не используются на серверах. По сути, версии x.
10 все промежуточные. Но таковыми же можно считать и версии нечетных годов — у них короткий срок поддержки. Если использование на десктопах с натяжкой может быть оправдано (в целях экспериментов или при необходимости использования новейшего софта, драйверов), то на серверах эти версии не стоит юзать ни в коем случае.
Почему? Элементарно не сможете обновлять софт через год. А вот у LTS версий, и тем более серверных — срок поддержки очень долгий — 5 лет. Так, 16.04 будет поддерживаться до 2021-го года. 14.04 — до 2019, т.е еще два года. Ну и, соответственно, 12.
04 до сих пор актуальна, у нее срок поддержки истекает буквально через неделю.
Какую OS лучше ставить на свой сервер?
Однозначно что-то из вышеобозначенного списка, тем более если собираетесь ставить панель ISPmanager Lite 5 (где её купить дешевле чем у разработчиков?)
Вообще, я большой любитель как раз убунту. Ибо много лет и много серверов посвятил работе именно с нею. Это прекрасная и удобная OS для сайтов на вашем сервере. Но то был корпоративный сектор, где всё собирается, отлаживается и настраивается индивидуально.
Однако когда я начал работать с серверами клиентов из вебмастеров — то столкнулся с тем, что ни Ubuntu, ни даже Debian не так хороши как Centos, и Centos 7 в частности. Её же рекомендуют и сами разработчики панели управления ISPmanager.
На практике — в deb-based системах (ubuntu тоже к ним относится) с этой панелью сталкивался с некоторыми глюками. С centos — практически не бывало.
Вообще здесь вопрос удобства администрирования — разницы в работе софта и тем более сайтов практически нет между ними. Никакой разницы в производительности — тем более. А вот в установке и настройке софта — разница может быть уже приличной.
В Debian и Ubuntu софт при установке идет с какими-то базовыми настройками. Он даже запускается и работает сразу после инсталла, добавляется в автозагрузку. В Centos такого нет.
Конфиги по-умолчанию, софт не стартует автоматом и некоторый нужно предварительно настроить, иначе он просто не запустится. К примеру те же серверы СУБД — они устанавливаются неиинициализированными.
И их нужно инициализировать (создавать системную базу) вручную перед запуском.
Тот же PHP 7 — в centos его легко установить просто добавив дополнительный репозиторий. Хоть в 6-ю, хоть в 7-ю версию. В убунту 14.04 или Debian php 7 тоже ставится из доп. репов. Но она там ставится параллельно дефолтной пятой. И чтобы заставить апач на ней работать нужна доп. настройка. Но при использовании ISPmanager 5 всё становится гораздо проще.
Установка PHP 7 в Centos из дополнительных репозиториев
Таким способом я пользовался раньше. Дело в том, что возможность, о которой я собрался рассказать появилась в ISPmanager относительно недавно. Поэтому приходилось ставить PHP 7 только из репозитория Remi. Есть и другие, но лучше из него.
В ISPmanager имеется возможность установки альтернативных версий PHP. Но их ранее можно было использовать только в режиме CGI. А этот режим подходит не всем и не для любого сайта. (О режимах подробно недавно я писал здесь).
Ранее для Apache и PHP-FPM использовался общесистемный PHP — который называется в панели native. И его версия совпадает как раз с теми, что я привел в табличке в начале статьи. В частности в Centos 7 это будет 5.4.
Сооветственно, если native обновить до нужной версии — apache заработает именно на ней. Так раньше и делалось.
Это несложно.
Качаем и устанавливаем репозиторий Remi:
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
Разрешаем его использование:
В файле /etc/yum.repos.d/remi-php70.repo нужно для первого репа [remi-php70] разрешить возможность использования — в enabled должно быть значение 1. По-умолчанию там 0, что означает репозиторий не используется. Есть и другой способ его задействовать, с помощью опции инсталлера пакетов, но я использую такой, ибо проще запомнить и понятней.
Ну и всё, далее можно устанавливать:
yum install -y php
Это обновит тот самый native php до версии 7.0. После обновления можно перезапустить панель, чтобы она «увидела» обновление:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Для этого достаточно просто вот так остановить его из консоли и перезайти в браузере. Ну либо можно этого и не делать, в любом случае на сервере уже php 7 и именно он будет использоваться в режиме модуля Apache или php-fpm. (Кстати, из консоли вообще можно очень много чего делать в ISPmanager 5, например массово добавлять домены и базы данных)
Но это путь — так называемый «костыль». С некоторых пор пользоваться им не следует.
Включение PHP 7 как модуля Apache в панели ISPmanager 5
Поскольку с регулярными обновлениями панели появилась возможность использовать любую версию PHP, из тех что устанавливаются в качестве альтернативных и ранее были доступны только в режиме CGI. Так называемый — селектор версий PHP. Шикарная возможность, я рекомендую использовать ISPmanager только за одной это.
Нигде больше такого удобства и простоты нет. Это говорю я, админ, который без ложной скромности собаку съел на настройке серверов без панелей, а теперь уже и с панелями. Только здесь можно легко и просто выставить для каждого сайта свою версию PHP — от древней 5.
2, которая была актуальна когда я еще толком не начал работать даже, до новейшей 7.1.
В меню возможности надо установить эти самые альтернативные версии. После чего появится возможность юзать селектор для каждого сайта, но только в режиме CGI.
По умолчанию альтернативные версии включаются только для режимов CGI и PHP-FPM (с недавних пор).
А вот в режиме модуля Апача запустить эти версии сразу не получится. Соответствующая кнопка в меню PHP попросту неактивна.
Довольно долго я не мог понять почему так, и как же всё таки использовать эту фичу. И просто ставил нужную версию PHP из реми, вышеописанным костыльным способом. Пока сегодня не спросил у саппорта таки — а где же? Причем, я предварительно добросовестно погуглил, нашел и почитал официальную доку о настройке версий PHP и ничего в ней не нашел.
Оказалось, ларчик открывался просто:
Нужно в меню «Возможности» кликнуть дважды на нужной версии PHP. В частности 7.0. И там есть соответствующая опция установки данной версии php как модуля Apache.
После чего обратно идем в раздел PHP и там для нужной версии кнопка становится активной.
Ну, здесь я уже переключил на 7-ю версию, поэтому активную кнопку показываю на нативной версии 5.4.
Весь этот вышеописанный способ должен работать и в Debian, и в Ubuntu. На практике пока что не проверял. Проверите — отпишите плиз. А вот «костыльный» способ в этих ОС будет еще костыльней чем в Centos, ибо там PHP 7 ставится параллельно 5-й версии и в системе получается ДВЕ версии нативного PHP. А тут с одной бы разобраться
Источник: https://vpsadm.ru/php-7-ispmanager-5-kak-ustanovit/