libapache2 mod php centos 7

Пошаговая настройка Apache с выбором версий php + Nginx как reverse proxy (с mod_pagespeed) на ubuntu 16.04

В интернете кучу статей по настройке сервера, настройки Apache, Nginx и т.п. В данной статье будет пошагово настроен простой shared хостинг. Все операции производятся через консоль.

В посте будут решены и описаны следующий задачи:

1. Установка Apache + PHP
2. Возможность выбора версий PHP
3. Возможность работы сайтов от разных пользователей, с ограничением на чтение директорий других сайтов.
4. Установка Nginx с модулем pagespeed от google
5. Настройка Nginx как reverse proxy

Все этапы будут содержать описание и пояснения. Сам пост писался больше для себя, чтобы не потерять порядок настройки, но будет очень полезным для новичков, которые начинают разбираться в администрировании сервера. В качестве сервера установлен Ubuntu 16.0.4 только с SSH.

ЭТАП 1 (Установка Apache + PHP)

Запускаем оболочку с root правами:

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

то в процессе установки нас спросят, действительно ли мы хотим установить.

Устанавливаем php (как mod_php)

На данном этапе у нас установиться php версии 7 как модуль apache.

ЭТАП 2 (Возможность выбора версий PHP)

На первом этапе мы установили сервер Apache + PHP при чем PHP у нас работает как модуль Apache. Существует несколько режимов работы PHP подробную информацию можно прочитать по ссылке «Коротко о CGI, FastCGI, PHP-FPM и mod_php».

Если вам лень читать, то объясню проще:

1. mod_php — сам Apache выполняет php скрипт.

Плюсы: работает быстро, требует минимум настроек и знаний
Минусы: скрипты выполняются от пользователя apache (как правило www-data)

2. CGI/FastCGI — Сервер Apache запускает прикладной скрипт интерпретатора php-cgi, который в свою очередь выполняет php скрипт

Плюсы: скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP), конфигурацию PHP можно сделать индивидуальной
Минусы: скорость работы, дополнительная настройка

3.PHP-FPM — это модернизированный fast-cgi сервер который постоянно держит готовые для работы пул-процессов.

Плюсы: скорость работы, скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP-FPM — самая распространная реализация)
Минусы: дополнительная настройка, занимает порт, на каждого пользователя открывается свой порт.

Мы остановимся на CGI/FastCGI. На самом деле многие может испугать, что он самый медленный, но на большинстве shared хостингов, именно этот режим работы (ispmanager использует именно этот режим работы). Нам потребуется собрать из исходников версии php которые нам необходимы.

2.1 Сборка php из исходников

Устанавливаем необходимые для сборки пакеты:

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

Создаем папки для php:

Переходим в директорию в которой будут храниться исходники php

Скачиваем необходимую версию php и распаковываем ёё:

В последней команде мы скачали по ссылке php-5.6.18 и сохранили как php-5.6.18.tar.bz2
После чего распаковали архив.

Переходим в директория скаченного и распакованного php

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

В результате будет что то вроде:

PHP 5.6.18 (cli) (built: Jun 8 2017 15:59:20)
Copyright © 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies

2.2 Настройка Apache

Далее нам потребуется чтобы Apache вызывал php скрипт через режим fastcgi. Устанавливаем и активируем mod_fcgi

перезапустим сервис Apache

2.3 Создание CGI скрипта

Создадим обертку для запуска PHP-FastCGI

Вставляем код, выходим CTRL+X и подтверждаем изменения.

Делаем файл испольняемым:

В той же директории создаем файл php.ini () можно скопировать /opt/source/php/php-5.6.18/php.ini-production.

2.4 Настройка хоста для Apache

В примере будет показана настройка виртуального хоста по умолчанию:

Перезапускаем настройки Apache:

ЭТАП 3 ( Возможность работы сайтов от разных пользователей, с ограничением на чтение директорий других сайтов.)

Для разграничения прав по пользователям у Apache есть 2 разных модуля suEXEC и ITK.

Рассмотрим как работает каждый из них:

ITK — При поступлении запроса, apache создает процесс-обработчик, который наследует права корневого процесса, но после проверки контекста меняет свои права на указанного пользователя.

suEXEC в нашем варианте предпочтительней из-за особенности архитектуры работы. Устанавливаем suEXEC

Важно, для правильной работы suexec необходимы правильно выставить права на директории.
Как располагать директории вы должны определиться сами, в примере приведется пример, и он не является оптимальным.

Иерархия папок следующая:

Копируем файлы настроек для php:

Создаем юзера (важно помнить что все пользователи в группе admin имеют доступ на запуск программ из sudo, поэтому при выборе имени admin он автоматически будет иметь права на выполнения sudo. В данном примере это не критично, но вам следует помнить об этом при создании пользователя).

Выставляем владельца папки:

Выставляем корневую директорию для пользователя:

Настраиваем виртуальные хосты в apache:

В настройках php.ini пользователя меняем session.save_path
session.save_path = /var/www/users/admin/temp/php-session

ЭТАП 4 (Установка Nginx с модулем pagespeed от google)

Забегая вперед, для поддержки pagespeed в Nginx требуется пересобрать сам Nginx с этим модулем, но чтобы потом не лазить дополнительно в настройках, проще сначало установить его.
Изменяем порты для Apache:

Собираем Nginx с pagespeed

Вначале необходимо установить все необходимы для сборки пакеты:

Создаем папки для исходников nginx:

Скачиваем и распаковываем pagespeed и psol. Yt cnjbn g

Сам psol скачивается и распаковывается в директории с ngx_pagespeed. Переходим в папку с Ngnix

Проверяем версию ngnix (по умолчанию в ubuntu 16.0.4 устанавливается 1.10.0):

Загружаем т версию NGINX:

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

Собранный бинарный файл Nginx располагается в директории /opt/source/nginx/nginx-1.10.0/objs/nginx. Для того чтобы установить, требуется просто заменить текущий испоняемый файл Nginx на собранный.

Остановим Nginx, заменим файл, и перезапустим его.

#Переименовываем (на всякий случай) текущий nginx в nginx_backup:

# Перемещаем на его место новый собранный бинарник:

Создаем папку хранения кэша для pagespeed:

Добавим /etc/nginx/nginx.conf в секцию http:

ЭТАП 5 (Настройка Nginx как reverse proxy )

Скажу скажу что в интернете кучу статей для настройки Nginx как reverse proxy. Я лиш приведу ознакомительный вариант настройки.

Источник

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

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

Web сервер на CentOS 7

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

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

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

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

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

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

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

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

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

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

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

libapache2 mod php centos 7. Смотреть фото libapache2 mod php centos 7. Смотреть картинку libapache2 mod php centos 7. Картинка про libapache2 mod php centos 7. Фото libapache2 mod php centos 7

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

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

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

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

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

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

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

libapache2 mod php centos 7. Смотреть фото libapache2 mod php centos 7. Смотреть картинку libapache2 mod php centos 7. Картинка про libapache2 mod php centos 7. Фото libapache2 mod php centos 7

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

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

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

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

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

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

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

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

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

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

libapache2 mod php centos 7. Смотреть фото libapache2 mod php centos 7. Смотреть картинку libapache2 mod php centos 7. Картинка про libapache2 mod php centos 7. Фото libapache2 mod php centos 7

Вы должны увидеть вывод информации о 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:

libapache2 mod php centos 7. Смотреть фото libapache2 mod php centos 7. Смотреть картинку libapache2 mod php centos 7. Картинка про libapache2 mod php centos 7. Фото libapache2 mod php centos 7

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

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

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

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

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

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

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

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

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

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

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

Источник

libapache2-mod-php7.0 fails to uninstall because the module could not be found #2797

Comments

Jmi91 commented May 14, 2019

Details:

Steps to reproduce:

Expected behaviour:

Actual behaviour:

Extra details:

Additional logs:

[FAILED] DietPi-Patchfile | Unable to continue, DietPi-Patchfile will now terminate.
[ OK ] DietPi-Update | Patching to v6.23.3 completed

[ OK ] DietPi-Survey | Connection test: ssh.dietpi.com
[ OK ] DietPi-Survey | Successfully sent survey data

[ INFO ] DietPi-Update | Current version : v6.23.3
[ INFO ] DietPi-Update | Latest version : v6.23.3
[ OK ] DietPi-Update | Syncing new DietPi scripts to disk
[ SUB1 ] DietPi-Services > restart
[ OK ] DietPi-Services | restart : avahi-daemon
[ OK ] DietPi-Services | restart : vsftpd
[ OK ] DietPi-Services | restart : nmbd
[ OK ] DietPi-Services | restart : smbd
[ OK ] DietPi-Services | restart : mariadb
[ OK ] DietPi-Services | restart : apache2
[ OK ] DietPi-Services | restart : cron
[ SUB2 ] DietPi-Process_tool > Apply
[ OK ] DietPi-Process_tool | Completed

The problem seems to be with PHP 7.0.33-7+0 20190503101027.13+stretch 1.gbp26f991
I cannot remove php 7.0.33

The text was updated successfully, but these errors were encountered:

We are unable to convert the task to an issue at this time. Please try again.

The issue was successfully created but we are unable to update the comment at this time.

MichaIng commented May 14, 2019 •

@Jmi91
Many thanks for reporting.

apt purge libapache2-mod-php7.0 throws the same error? Strange one. It does not find the related Apache module even that it is installed and about the be removed. Why not simply ignoring when the module does not exist. However

If this does not work, try to install it again, verify the module is there and then purge again.

Jmi91 commented May 14, 2019 •

I don’t know how to remove PHP 7.0.

1.gbp26f991).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

# a2enmod php7.0
ERROR: Module php7.0 does not exist!

Источник

Need to install libapache2-mod-php7.0 if I’m installing PHP7.0 FPM?

I’m installing php7.0-fpm on a Debian server. Do I also need to install the libapache2-mod-php7.0 package? The Debian package page for php7.0-fpm seems ambiguous to me. It says,

This package provides the Fast Process Manager interpreter that runs as a daemon and receives Fast/CGI requests. Note that MOST Apache users probably want the libapache2-mod-php7.0 package.

Does this mean most Apache users want the libapache2 package instead of php7.0-fpm or does it mean that most users also want to install the libapache package? What is the exact difference between what each of these packages does?

1 Answer 1

If you would like to use mod_php directly from Apache, then you want to use libapache2 package. This package requires that Apache run in single thread mode (Aka PreFork MPM). If you would like to use PHP with Nginx or Apache’s threaded Worker MPM (with fastcgi), then you will want to use the FPM package. This has the advantage of using threads and recycling of php worker processes which, generally speaking, will yield far better performance.

I think the note «that MOST Apache users probably want the libapache2-mod-php7.0 package.» is basically there because it is much easier to setup Apache for mod_php than it is for FastCGI so users using Apache tend to follow that approche. Setting up FPM with Nginx is far simpler and Nginx does a more efficient job of proxying the requests to the FPM process. If you are only using the web server to provide PHP execution and dont need some of the Apache specific bells and whistles, then you will probably be better off using Nginx in the long run.

Источник

Настройка HTTP/2 на примере Apache 2.4, PHP 7 и Ubuntu 18.04 LTS

Я понимаю, что, возможно, Апач на данный момент не является предпочтительным выбором для запуска на нём новых проектов, то тем не менее, он существует, здравствует и проекты на нём таки работают. Выбор на него может пасть по каким-то личным предпочтениям, по требованиям совместимости, или каким-то другим соображениям… не суть. В этой статье я хочу по пунктам описать, как настроить поддержку протокола HTTP/2 на веб-сервере Apache, потому что сам им пользуюсь и в такой статье нуждаюсь нуждался, и надеюсь, что кому-нибудь она тоже пригодится на практике.

Что такое HTTP/2? Как понятно из названия, это — вторая версия протокола HTTP. Подробнее о преимуществах Вы можете прочитать хотя бы на Википедии. От себя лишь скажу, что если Вы хоститесь не на шаред-хостинге, то поддерживать данный протокол — must have, как и, например, HTTPS. Да, для того, чтобы у Вас заработал HTTP/2, Вам потребуется полноценный доступ к консоли машины (пусть и к виртуальной) через ssh или каким-то иным образом, а также уже настроенный HTTPS (TLS/SSL). Ну что же, давайте приступим к делу.

Шаг первый. Обновление Apache

Протокол HTTP/2 поддерживается сервером Apache с версии 2.4.24, поэтому, если у Вас установлена более старая версия, — самое время её обновить. Но сначала проверим:

Эта команда выдаст что-то вроде такого:

В первой строчке указана версия сервера. Если она больше или равна 2.4.24, — можем смело переходить ко второму шагу. В противном случае, нужно обновить апач, актуальные версии которого Вы сможете найти в PPA известного (если Вам уже приходилось ставить что-то свеженькое на Debian/Ubuntu) разработчика — Ondřej Surý. PPA — это персональные пакеты, не включённые в официальные репозитории дистрибутивов. Поэтому, чтобы воспользоваться ими, сначала нужно научить систему, что и откуда брать:

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

Далее, собственно, обновляем пакеты:

И снова проверяем версию Apache. Если всё прошло хорошо — на Вашем сервере будет стоять Apache, на котором можно настроить HTTP/2. Если всё пошло плохо — боюсь, это уже не тема данной статьи. А теперь переходим ко второму шагу.

Шаг второй. Использование FastCGI

Что такое FastCGI — лучше почитать, как я уже говорил, хотя бы в Википедии, потому что коротко не расскажешь. Вам нужно перейти на PHP, работающем в режиме FastCGI (php-fpm). Как это работает — дан хороший ответ на Тостере. Здесь же я в такие нюансы вдаваться не буду, а перейду сразу к установке:

После установки нам будет сказано буквально следующее: чтобы включить PHP 7.2 FPM в Apache2, сделайте:

Делаем. После этого нужно отключить mod_php, потому что вместо него у Вас теперь php-fpm.

Вообще говоря, версия PHP у Вас до этого могла стоять другая. Глянуть, что за модули у Вас установлены в системе можно в директории /etc/apache2/mods-available/, а какие активны в /etc/apache2/mods-enabled

Далее перезапускаем Apache

и переходим к третьему шагу.

Шаг третий. Переход с модуля Prefork на Event

Что такое MPM и в чём разница между prefork, event, worker — можно почитать вот в этой замечательной статье… но сейчас на самом деле важно знать только одно: «стандартный» prefork не очень совместим с HTTP/2, поэтому Вам нужно использовать более подходящий. Выключаем один, включаем другой, перезагружаем Apache.

Шаг четвёртый. Включаем HTTP/2

Либо в конфигурационный файл хоста, найти который можно в директории /etc/apache2/sites-enabled/, либо в конфиге самого сервера /etc/apache2/apache2.conf говорим, что нам нужна поддержка нового протокола:
Protocols h2 h2c http/1.1

Что действительно важно — это h2. Два других пункта — на Ваше усмотрение. h2c — это поддержка HTTP/2 через TCP (а не TLS). http/1.1 — поддержка старой версии HTTP.

Включаем модуль http2 и перезагружаем сервер:

Источник

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

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