что такое apache mysql php
Что такое apache mysql php
Заметьте, как этот скрипт отличается от уже ранее известных вам CGI скриптов на языках Perl или C. Вместо того, чтобы прописывать множество строк для вывода HTML, вы просто вставляете кусочки скрипта в соответствующие места в вашем HTML документе для того, чтобы выполнить какое-то действие (в даном случае вывести текст «Привет, я ваш первый PHP скрипт!»). Удобно, правда?
Adabas D | InterBase | Solid |
dBase | mSQL | Sybase |
Empress | MySQL | Velocis |
FilePro | Oracle | Unix dbm |
Informix | PostgreSQL |
3. Что такое Apache
Основными целями для MySQL выступают скорость и ошибкоустойчивость.
База, на которой был создан MySQL, является набором задач, которые успешно использовались в высокотребовательной среде в течение многих лет. Несмотря на то, что MySQL по сей день интенсивно развивается, он уже предоставляет целый ряд удобных функций и инструментов для эффективной работы. Для среды Unix продукт распространяется бесплатно, а для Windows надо покупать лицензию, хотя разработчики и предоставляют «шароварную» версию этой базы данных, которая не так надежна и ошибкоустойчива, как лицензированная и более новая версия.
5. Где это все можно достать?
Самую свежую версию Апаче можно взять на сайте http://www.apache.org/ или на сайте Russian Apache. Рекомендую брать версию 1.3.12 как наиболее стабильную.
Для Unix среды смело берите самый последний релиз c официального сайта MySQL. Когда писалась эта статья, то MySQL перешел на лицензию GNU General Public License (GPL), что означает, что все релизы, начиная от версии 3.23.19 являються бесплатными для пользователей как Windows, так и Unix.
Apache HTTP Server (Русский)
Перевод этой статьи или раздела не отражает оригинальное содержание.
Apache HTTP Server, или сокращенно Apache — популярный веб-сервер, разработанный Apache Software Foundation.
Apache часто используется вместе с языком сценариев PHP и СУБД MySQL. Такую комбинацию обычно называют LAMP (Linux, Apache, MySQL, PHP). Эта статья объясняет, как настроить Apache и как интегрировать с ним PHP и MySQL.
Если вам нужно быстро создать окружение для разработки и тестирования, то можете просто установить Xampp.
Contents
Установка
Настройка
При необходимости дальнейшей настройки сервера смотрите следующие разделы.
Дополнительные опции
Следующие опции (директивы) в /etc/httpd/conf/httpd.conf могут быть вам интересны:
Чтобы полностью отключить вывод версии Apache в генерируемых сервером страницах, добавьте:
Чтобы подавить вывод такой информации, как версии Apache и PHP, добавьте:
Пользовательские каталоги
По умолчанию доступ к каталогам пользователей возможен по адресу http://localhost/
/public_html (его имя и расположение задается в файле /etc/httpd/conf/extra/httpd-userdir.conf ).
Если вы не хотите, чтобы пользовательские каталоги были доступны через web, закомментируйте следующую строку в /etc/httpd/conf/httpd.conf :
Убедитесь, что права доступа к вашему домашнему каталогу и
/public_html позволяют получать доступ к файлам в них всем пользователям:
Однако с точки зрения безопасности вышеприведенное решение слишком фривольно. Правильнее поступить по-другому. Сначала добавьте пользователя http в группу, которой принадлежит ваша домашняя папка. Например, если ваша домашняя папка и все ее подкаталоги принадлежат группе piter, можно проделать следующее:
После этого назначьте права на чтение и исполнение для каталогов
/public_html и, рекурсивно, на остальные подкаталоги для
/public_html для членов группы (в нашем примере для членов группы piter). Опираясь на нижеприведенный шаблон, осуществите эти мероприятия:
TLS/SSL
Создайте закрытый ключ и запрос на получение сертификата (CSR). Также вы можете самозаверить CSR (который создаст сертификат):
Теперь раскомментируйте следующие строки в /etc/httpd/conf/httpd.conf :
Виртуальные хосты
Если вы хотите, чтобы Apache обслуживал не один, а несколько хостов, раскомментируйте следующую строку в файле /etc/httpd/conf/httpd.conf :
Для проверки виртуальных хостов на локальной машине добавьте их виртуальные имена в ваш файл /etc/hosts :
Управление большим количеством виртуальных хостов
Сначала создайте каталог:
Теперь создайте в нем отдельные конфигурационные файлы:
И включите эти файлы в основной файл настроек /etc/httpd/conf/httpd.conf :
Теперь можно быстро включать/отключать требуемые виртуальные хосты, просто закомментировав или раскомментировав соответствующие директивы Include в основном файле настроек.
Очень простой файл виртуального хоста будет выглядеть следующим образом:
Расширения
Также вы можете просто использовать mod_proxy_fcgi (смотрите #Использование php7 c php-fpm и mod_proxy_fcgi [ссылка недействительна: раздел не найден] ).
Чтобы включить модуль PHP, добавьте следующие строки в /etc/httpd/conf/httpd.conf :
Чтобы убедиться в том, что PHP настроен корректно, создайте файл test.php в каталоге DocumentRoot (то есть в /srv/http/ или
/public_html ) и поместите в него следующий код:
По адресу http://localhost/test.php или http://localhost/»
пользователь»/test.php вы должны увидеть информационную страницу PHP.
Дополнительную информацию вы можете получить на странице PHP.
Дополнительные параметры
Рекомендуется правильно настроить вашу временную зону (список временных зон) в /etc/php/php.ini по примеру:
По желанию включите режим показа ошибок при отладке PHP-кода, для этого измените значение опции display_errors на On в файле /etc/php/php.ini :
Для использования модуля mcrypt установите php-mcrypt AUR и раскомментируйте extension=mcrypt.so в /etc/php/php.ini :
Для дополнительной настройки, пожалуйста прочтите PHP.
Использование php5 c php-fpm и mod_proxy_fcgi
Использование php5 c apache2-mpm-worker и mod_fcgid
MySQL/MariaDB
Следуйте инструкциям на странице PHP#MySQL/MariaDB.
Решение проблем
Просмотр журнала и текущего состояния Apache
PID file /run/httpd/httpd.pid not readable (yet?) after start
Если вы получаете такую ошибку, закомментируйте строку:
в файле настроек Apache.
Обновление с Apache 2.2 до 2.4
Подробную информацию вы найдете на странице Upgrading to 2.4 from 2.2.
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
Если не удалось запустить php5_module при старте httpd.service и вы получаете следующее сообщение об ошибке:
Это значит, что Apache работает c поточным MPM, но используется не потокобезопасная версия PHP. В этом случае, следует заменить mpm_event_module на mpm_prefork_module :
Apache
Web-сервером называют и физический «компьютер-сервер», и специализированное программное обеспечение (ПО), принимающее запросы пользователей с браузеров и выдающее им ответы, используя протокол http/https. Практически у всех провайдеров услуг виртуального хостинга в качестве программного обеспечения для работы сайтов используется web-сервер Apache (также известный как httpd).
Backend-сервер работает в связке с frontend web-сервером, который отвечает за отдачу статического контента, видимого пользователю в браузере (HTML, CSS, JavaScript). Таким fronted-сервером является Nginx, который устанавливают вместе с веб-сервером Apache. Они распределяют между собой нагрузку, что ускоряет работу сайта.
Для Linux
Web-сервер Apache на платформе Linux используется вместе с:
Все вместе это называется технологией LAMP (Linux-Apache-MySQL-PHP). На применение связки LAMP ориентируется большинство провайдеров виртуального хостинга.
Apache поддерживает панели управления сервером:
Для Windows
На платформе Windows Apache вместе с другими веб-серверами включен в состав популярных наборов для локального хостинга на компьютере пользователя и разработки web-сайтов Denwer и AMPPS. Вы можете установить себе на компьютер любой из них, включая Apache.
На реальных хостинг-серверах с ОС Windows в большинстве случаев используется веб-сервер IIS.
Принципы работы Apache
Apache основан на модульной архитектуре и содержит в своем составе более 500 разнообразных компонентов-модулей, среди которых:
Принцип работы Apache: каждый http/https-запрос создает отдельный процесс, который обрабатывает данный запрос. Если на сайт перешли условно 5 пользователей и нажали на кнопку «заказать», то на сервере будет активно 5 процессов. Пока они не закончатся, другие процессы не могут быть запущены.
Одновременно web-сервер может обрабатывать большое количество http/https-запросов, благодаря чему достигается его многопоточность. Максимальное число одновременно работающих процессов ограничивается в настройках Apache.
Плюс системы: разделение запросов между процессами способствует безопасности и скорости работы web-сервера.
Минус системы: такой подход приводит к относительно большому потреблению оперативной памяти.
Информацию о настройках web-сервера, используемых модулях, различных правилах обработки запросов, настройках web-сайтов Apache хранит в виде набора текстовых конфигурационных файлов. Соответственно, изменение параметров работы Apache происходит путем их редактирования.
Отдельные строки-команды конфигурации Apache называются директивами.
Основной конфигурационный файл Apache, в зависимости от операционной системы, называется httpd.conf или apache2.conf.
Виртуальные хосты Apache
Компьютер-сервер, на котором размещаются web-сайты, имеет лишь один IP-адрес. Чтобы знать, к какому именно сайту идет запрос, в протоколе http/https для web-браузера указывается название конкретного сайта, а не IP-адреса.
В Apache входящие запросы между разными web-сайтами распределяет функция виртуальных хостов (VirtualHost). Это специальные разделы конфигурации Apache, описывающие набор настроек для конкретного сайта, включая его основную папку в файловой системе сервера (root-folder).
Если вы используете VPS без панели управления, то вы как администратор сервера можете сконфигурировать Apache для обслуживания большого количества различных доменных имен, использующих один и тот IP-адрес. Каждое из этих доменных имен соответствует отдельному полнофункциональному web-сайту.
При поступлении http/https-запроса по доменному имени Apache “смотрит”, какому из виртуальных хостов соответствует запрос.
Если в конфигурации найден совпадающий по названию виртуальный хост, то запрос обрабатывается, согласно его конфигурации.
Если совпадения не найдены, то используются настройки по умолчанию (обычно это первый из списка виртуальный хост).
Также настройки по умолчанию применяются в том случае, если был http/https-запрос на IP-адрес сервера без указания конкретного доменного имени.
#Прием запросов на порт 80
Listen 80
#Секция настроек виртуального хоста для сайта www.example.com
ServerName www.example.com
DocumentRoot «/www/example»
Секция настроек виртуального хоста для сайта www.example2.com
ServerName www.example2.com
DocumentRoot «/www/example2»
Пример конфигурации Apache для нескольких сайтов (виртуальных хостов)
Apache и виртуальный хостинг
На сервере провайдера Apache настраивается для одновременного обслуживания сайтов всех пользователей, которые применяют общие глобальные настройки Apache и единый набор его модулей.
Изменение глобальной конфигурации web-сервера недоступно для отдельных пользователей.
Apache на собственном сервере
Пользователи услуг VPS/VDS и выделенных серверов на платформе Linux могут применять Apache для размещения на сервере web-сайтов.
На платформе Linux web-сервер Apache устанавливается из командной строки так же, как и другие программы.
В зависимости от версии Linux команда для установки Apache может иметь вид:
Чтобы упростить настройки серверов, вы также можете использовать панели управления сервером, которые в автоматическом режиме устанавливают Apache, PHP, MySQL и другие программные компоненты.
На основании вводимых данных панель создает нужные для работы конкретного сайта конфигурационные файлы Apache, и web-сайт начинает работать.
Пример: добавление на сервер нового сайта через панель управления хостингом ISPmanager
Безопасность работы Apache
Для безопасной работы web-сайтов под управлением Apache важно контролировать доступ пользователей, что особенно актуально для виртуального хостинга, когда на одном физическом сервере работают разные сайты.
Web-сервер Apache предоставляет различные способы обеспечения безопасного размещения сайтов.
1. Каждый web-сайт на сервере имеет свою собственную основную папку, в которой находятся его файлы. Пользователь по протоколу http/https может получить доступ только к информации, содержащейся внутри этой папки (включая вложенные в нее папки). Соответственно, из соображений безопасности, папки разных сайтов не пересекаются друг с другом.
2. Apache использует систему прав доступа к файлам, которую предоставляет файловая система Linux. Обычно Apache работает на сервере с правами специального служебного пользователя (httpd или apache), но с помощью специальных модулей (например, mpm_itk_module) можно настроить Apache таким образом, чтобы его отдельные процессы, обслуживающие сайты конкретных пользователей, работали строго с их правами.
3. При необходимости в Apache можно закрыть доступ к определенной папке сайта с помощью пароля. Есть возможность настройки доступа для определенных IP-адресов и фильтрации подозрительных запросов по ключевым словам.
Модуль перенаправления Mod_rewrite
В состав Apache входит специальный модуль mod_rewrite, обеспечивающий перенаправление запросов, в зависимости от URL.
С помощью данного модуля вы сможете:
Поддержка PHP
В индустрии хостинга широко используется совместная работа Apache и языка программирования PHP. Для Apache был разработан специальный модуль mod_php, который обеспечивает для сайтов обработку кода PHP-скриптов.
Аналогично PHP существуют модули для взаимодействия Apache со скриптами, написанными на языках программирования:
Выводы
Недостатки
1. Относительно высокое использование оперативной памяти сервера, особенно в связке с mod_php.
2. Для изменения конфигурации web-сервера требуется ручное редактирование текстовых файлов.
Установка LAMP-стека (Linux, Apache, MySQL, PHP) на Ubuntu
В статье мы узнаем, что такое LAMP-стек, как установить LAMP на Ubuntu, а также настроим виртуальные хосты.
Что такое LAMP
LAMP — это стек программного обеспечения, устанавливаемого на сервер и предназначенного для сайтов и веб-приложений. LAMP – это аббревиатура, она расшифровывается как: Linux, Apache, MySQL и PHP.
Рассмотрим каждый элемент LAMP подробнее:
Такой набор самостоятельных по отдельности компонентов стал очень популярен.
Существует множество вариаций LAMP, где какие-либо из компонентов заменяются на другие, например LEMP — вместо Apache в нем используется веб-сервер Nginx.
Подготовка к установке LAMP
Развернуть LAMP можно, например, на облачном сервере, который предварительно нужно создать. Создадим сервер в панели управления Облачной платформой Selectel. Подробно о начислении баланса на счет для доступа к работе в панели и создании облачного сервера можно прочитать в Базе знаний.
Создание облачного сервера
Перейдите в панель управления Облачной платформой, откройте вкладку Серверы и нажмите кнопку Создать сервер.
При создании сервера автоматически выбирается операционная система Ubuntu. Чтобы выбрать другую ОС для сервера, нажмите Выбрать другой источник. В целом, для установки LAMP подойдет любой дистрибутив Linux.
В этой инструкции в качестве операционной системы сервера выберите Ubuntu 18.04 LTS.
Для развертывания LAMP нужно присвоить серверу плавающий адрес. Для этого в разделе Сеть в качестве подсети выберите Новый плавающий IP-адрес. Проверьте стоимость сервера и нажмите Создать.
Созданный Облачный сервер со статусом ACTIVE появится в списке всех серверов. В карточке сервера на вкладке Порты можно посмотреть плавающий IP-адрес — в дальнейшем это пригодится для настройки LAMP.
Подключение к серверу по SSH
Работать с сервером можно во встроенной консоли в панели управления, которая находится на вкладке Консоль в карточке сервера. Но зачастую удобнее подключаться к серверу по протоколу SSH с локальной машины.
Для того чтобы подключиться к серверу по SSH, в терминале введите команду:
server_IP — это плавающий IP-адрес сервера, который был добавлен при его создании.
Терминал при подключении запросит root-пароль, который можно найти на вкладке Консоль в карточке сервера.
Если подключение к серверу прошло успешно, можно начать установку LAMP.
Установка Apache
Команды для установки
Установим первый после операционной системы компонент LAMP — Apache.
Предварительно загрузим списки пакетов обновлений, для этого используется команда:
Настройка брандмауэра
Брандмауэр (файервол) должен пропускать HTTP и HTTPS-трафик — то есть должны быть открыты порты 80 и 443.
Для начала нужно установить утилиту для управления правилами файервола UFW (Uncomplicated Firewall) и включить UFW:
На сервере должны быть доступны профили приложений для Apache. Посмотрим список профилей:
Вывод команды выглядит примерно таким образом:
Можем увидеть, что в выводе присутствует профиль Apache Full — именно он открывает нужные порты 80 и 443. Разрешим для него входящий трафик:
Чтобы в дальнейшем продолжать подключение к серверу по SSH, добавим также профиль OpenSSH:
В выводе команды проверим, что UFW активен, нужные профили включены, а, значит, разрешен HTTP и HTTPS-трафик:
Проверка работы Apache
Проверим статус Apache, он должен быть активен (Active в выводе команды):
Чтобы проверить работу Apache, введем публичный IP-адрес сервера в браузерной строке. В нашем случае это подключенный ранее плавающий IP. Если Apache установлен, и к нему разрешен доступ через файервол, то откроется страница с информацией:
Установка MySQL
Команда для установки
После установки и настройки Apache можно устанавливать следующий компонент — СУБД MySQL:
Настройка безопасности БД
Для защиты окружения рекомендуется запустить скрипт безопасности:
Когда система предложит установить плагин валидации паролей (VALIDATE PASSWORD plugin), введем в терминал y или Y для подтверждения. Установка этого плагина поможет задать пароль с повышенными требованиями к безопасности.
Далее выберем уровень надежности паролей, всего их три:
Введем в терминале значение для выбора уровня: 0 для LOW, 1 для MEDIUM или 2 для STRONG.
Затем введем два раза новый root-пароль, который соответствует условиям выбранного уровня надежности.
Система определит и выведет значение надежности пароля (Estimated strength of the password).
На дальнейшие вопросы от системы рекомендуем вводить в терминале подтверждение (y или Y) — это настройки удаления анонимных пользователей, удаление открытой тестовой базы и так далее.
Пароль будет создан, когда в терминале будет выведено сообщение «All done!».
Проверка работы MySQL
Проверим статус MySQL, он должен быть активен:
Установка PHP
Команды для установки
Теперь можно перейти к установке последней составляющей стека — PHP.
Установим PHP и специальные модули для работы PHP с Apache и MySQL:
При дальнейшей работе с сайтом, возможно, понадобятся и другие модули или расширения. Для настройки LAMP этих модулей достаточно.
В предыдущей команде при установке не была указана версия PHP. Вы всегда можете указать версию, которую хотите установить, например:
Чтобы узнать версию PHP, которая установлена, используйте команду:
Проверка установки PHP
Для проверки создадим небольшой PHP-скрипт с любым названием, например test.php, в корневой директории /var/www/html:
Заполним этот файл таким содержимым:
Сохраним и закроем файл (сочетание клавиш Ctrl+X, а затем Y+Enter).
Такой скрипт вызовет функцию phpinfo(), которая выводит информацию о PHP и список параметров.
Теперь откроем этот файл по URL:
Если все настроено корректно, будет доступна информация о PHP:
Настройка виртуальных хостов (опционально)
Apache позволяет запустить на одной машине несколько веб-сайтов — при этом данные каждого сайта будут лежать в разных директориях. Для этого используются конфигурационные файлы — виртуальные хосты.
Допустим, мы хотим разместить на одном сервере два сайта. Сконфигурируем Apache.
Создание директорий
Размещать файлы виртуальных хостов будем внутри директории /var/www/. Для каждого хоста создадим новую отдельную директорию:
Обратите внимание, что вместо IP-адреса можно использовать и доменное имя.
Предоставление прав
Сейчас права доступа к директориям есть только у root-пользователя. Настроим права всем пользователям системы, используя переменную среды $USER:
Откроем пользователю доступ на чтение, редактирование и запуск файлов в директории /var/www:
Создание страниц для тестирования
В дальнейшем нам нужно будет проверить, правильно ли настроены виртуальные хосты. Для этого можно создать для каждого IP-адреса (домена) HTML-страницы, которые будут открываться в браузере при вводе соответствующего IP или домена, например, главные страницы index.html.
Создадим страницу для первого IP:
Добавим на страницу текст:
Сохраним и закроем файл.
Выполним то же самое и для второго сайта:
Создание виртуальных хостов
По умолчанию в Apache используется виртуальный хост 000-default.conf. Этот файл мы будем использовать как шаблон для создания собственных виртуальных хостов.
Для каждого сайта конфигурационные файлы (виртуальные хосты) хранятся в директории /etc/apache2/sites-available/. Скопируем содержимое виртуального хоста, который используется по умолчанию, в новый файл — мы будем использовать его для настройки первого сайта:
Откроем новый конфигурационный файл первого сайта:
Изменим значения в файле:
Сохраним и закроем файл.
Подобным образом создадим конфигурационный файл для второго сайта:
Содержимое конфигурационного файла /etc/apache2/sites-available/second_IP.conf:
Активация виртуальных хостов
Активируем виртуальные хосты с помощью a2ensite:
Отключим виртуальный хост, который создается по умолчанию:
Проверим, нет ли ошибок в конфигурационных файлах:
Если ошибки отсутствуют, то получим результат:
Перезапустим Apache, чтобы активировать все изменения:
Теперь Apache должен обслуживать сайты, IP-адреса или домены которых мы прописали в виртуальных хостах. Проверим работу: перейдем в браузере на сайты — должны появиться созданные индексные страницы: