Архив метки: Apache

Apache веб сервер, большинство сайтов работают именно на нем.

Модуль мультипроцессинга mpm-itk веб-сервера Apache

Ключевыми характеристиками любого веб-сервера являются производительность и безопасность. Также немаловажно и потребление ресурсов. Однако если при сравнительно небольшом его увеличении повышаются ключевые характеристики, то это является оправданным. Мультипроцессинг является основным способом, позволяющим добиться впечатляющей производительности веб-сервера. Да ещё при этом существенно повысить безопасность и надёжность его работы.

Зачем нужен мультипроцессинг для веб-сервера?

Поскольку к веб-серверу одновременно может быть направлено множество запросов. То естественно, необходимо некоторую часть из них принять в обработку. А оставшиеся запросы поместить в очередь ожидания. После того, как занятый обработкой запроса процесс освободится. Он получит следующий, находившийся в очереди запрос. И так далее. Сколько должно одновременно обрабатываться запросов, сколько должно находиться в очереди, а также стратегия распределения задач между процессами — определяется системной конфигурацией веб-сервера. Эти параметры настраиваются в ходе оптимизации и тестирования программно-аппартной платформы. На которой предполагается работа веб-сервера. Исходя из прогнозируемых нагрузок и специфики выполняемых задач.

Но дело ещё и в том, чтобы не просто обеспечить максимальную производительность веб-сервера за счёт тонкой и сбалансированной настройки мультипроцессинговой обработки, но также обеспечить выполнение каждого процесса в «индивидуальном» порядке. Это подразумевает выполнение каждого процесса от имени конкретного пользователя. Такой подход обеспечивает максимальную безопасность без потери производительности. При условии, что имеют место достаточное количество аппаратных ресурсов. А также грамотная оптимизация работы соответствующего программного обеспечения (ПО).

Как это работает?

Для организации выполнения процессов (точнее экземпляров) Apache от разных пользователей существуют различные модули. Одним из таких является модуль mpm-itk. Для дистрибутивов Ubuntu этот модуль доступен в стандартном репозитории в виде отдельного пакета под именем libapache2-mpm-itk.

Разные виртуальные хосты (соответствующие каталоги и их содержимое) могут принадлежать разным пользователям. По-умолчанию Apache для мультипроцессинговой обработки HTTP-запросов для виртуальных хостов использует определённое количество процессов-экземпляров самого себя, которые запускаются от имени одного (обычно это пользователь www-data, apache или http) пользователя. Такимы образом, по-умолчанию с конфигурацией «из коробки» Apache от имени одного пользователя обслуживает виртуальные хосты, принадлежащие разным пользователям. Это потенциальная дыра в безопасности. Частично проблема решается добавлением верифицированных пользователей-владельцев виртуальных хостов в группу Apache. Но, во-первых, это полностью не решает проблему с безопасностью, во-вторых, это очень неудобно. Как самим пользователям, так и администраторам.

Модуль mpm-itk позволяет запускать отдельные экземпляры Apache от имени того пользователя, к виртуальному хосту которого поступил HTTP-запрос. Таким образом, каждый виртуальный хост обслуживается процессом веб-сервера, запущенным от имени самого этого пользователя — владельца виртуального хоста. Данный подход снимает все противоречия в модели распределения доступа к ресурсам виртуальных хостов. Всё, что нужно — это указать веб-серверу, что тот или иной хост нужно обрабатывать от имени его владельца. Это делается путём указания соответствующих директив в конфигурационном файле виртуального хоста.

Установка mpm-itk в Linux

Поскольку в большинстве дистрибутивов Linux в стандартном репозитории уже доступны многие модули Apache, в том числе и mpm-itk, то лучше воспользоваться менеджером пакетов (или системой управления пакетами СУП) используемого дистрибутива для его (модуля) установки. Например, для Ubuntu нужно установит пакет libapache2-mpm-itk:

$ sudo apt install libapache2-mpm-itk

После этого можно перезапустить Apache:

$ sudo systemctl restart apache2

Но вообще, скрипт установки модуля должен перезапустить веб-сервер автоматически.

Если используемый дистрибутив не предоставляет готовых пакетов для модуля mpm-itk, то установку можно произвести вручную. Исчерпывающие инструкции для этого приведены на официальном сайте разработчиков модуля: http://mpm-itk.sesse.net.

Базовая настройка mpm-itk

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

Apache – AssignUserId user group:

<IfModule mpm_itk_module>

    AssignUserId john john

</IfModule>



Как можно видеть, директива AssignUserId определяет пользователя и группу (именно в таком порядке), указывая веб-серверу, что к данному виртуальному хосту может получить доступ процесс, принадлежащий только указанным пользователю и группе. В данном случае это пользователь john и его одноимённая группа.

Инструкция предназначена для задействования директивы AssignUserId только тогда, когда подключен соответствующий модуль, т. е. mpm-itk. Фраза «mpm_itk_module» формируется из двух составляющих: имени модуля, под которым он был подключен (в данном случае mpm_itk), а также классификатора объекта Apache – module, поскольку это подключаемый модуль. Просмотреть подключенные модули Apache (и их имена) можно в каталоге /etc/apache2/mods-enabled. А все доступные модули должны храниться в каталоге /etc/apache2/mods-available. Например, модулю mpm-itk соответствует файл mpm_itk.load.

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

Заключение

В заключение необходимо отметить, что модуль mpm-itk применяется в тех системах, где безопасность важнее производительности. Поскольку при использовании этого модуля процессы каждый раз при обработке виртуального хоста создаются заново и полностью уничтожаются при отсутствии к нему запросов, то ясно, что производительность от этого не увеличится. Чаще всего подобная схема используется на хостинг-площадках.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-03-15T12:54:31
Apache

Настройка файла .htaccess

Файл .htaccess позволяет настраивать веб-сайт на сервере Apache без необходимости изменять файлы конфигурации сервера. В данном руководстве мы рассмотрим наиболее распространенные примеры его использования. Однако, прежде чем перейти к работе с этим файлом, необходимо сделать важное замечание. Несмотря на то, что страница .htaccess может быть очень полезной и существенно улучшить сайт, у нее есть два фактора негативного влияния:

1. Скорость — страница .htaccess может немного замедлить работу вашего сервера, хотя для большинства серверов это изменение будет незаметным. Это связано с расположением страницы: она влияет на все страницы в своей директории и в ее поддиректориях. При каждой загрузке страницы сервер сканирует ее директорию и все директории выше, пока не дойдет до верхнего уровня или файла .htaccess. Эти действия выполняются всегда, когда параметр AllowOverride (о нем чуть ниже) разрешает использование файлов .htaccess, независимо от того, существуют ли эти файлы на самом деле.

2. Безопасность — файл .htaccess гораздо доступнее стандартной конфигурации Apache, а изменения вносятся мгновенно (без необходимости перезапуска сервера). Предоставление пользователям права внесения изменений в файл .htaccess предоставляет им значительный контроль над самим сервером. Любая директива в файле .htaccess действует так же, как директива в самой конфигурации Apache.

В целом Apache не рекомендует использовать файл .htaccess, если пользователь сам может работать с файлами конфигурации Apache.

Подключение файла .htaccess

Если у вас есть доступ к настройкам сервера, вы можете изменить конфигурацию, чтобы разрешить использование .htaccess вместо стандартной конфигурации веб-сайта. Откройте файл конфигурации узла apache2 по умолчанию (для этого вам потребуются привилегии суперпользователя):

$ sudo nano /etc/apache2/sites-available/default

Найдите в этом файле следующий раздел и измените значение параметра AllowOverride c None на All. В конечном итоге раздел должен выглядеть так:

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from all

Сохраните и закройте этот файл, а затем перезапустите apache.

$ sudo service apache2 restart

Создание файла .htaccess

Файл .htaccess можно создать в любом текстовом редакторе, например:

$ sudo nano /var/www/example.com/.htaccess

Убедитесь, что его имя строго .htaccess, а затем при помощи ftp-клиента загрузите его на сайт.

Использование файла .htaccess

Использование файла .htaccess не требует таких высоких привилегий, как доступ файлу apache2.conf, но при этом позволяет осуществлять эффективное управление сайтом. Далее мы рассмотрим ряд примеров применения этого файла.

Управление доступом

Файл .htaccess может применяться для гибкого разграничения доступа к вашему сайту или отдельным его страницам. Один из типичных вариантов – запрет доступа с определенных IP-адресов, например, следующий код запрещает доступ со всех адресов, кроме 192.168.1.1. Это полезно при обслуживании сайта, когда требуется закрыть доступ для всех, кроме администратора.

Order Allow,Deny

Deny from All

Allow from 192.168.1.1

Директива Order указывает порядок выполнения следующих директив (сначала Allow — разрешение, затем Deny — запрет). Deny from All запрещает доступ вообще, но так как в соответствии с порядком выполнения сначала разрешен доступ с адреса 192.168.1.1, запрет будет действовать для всех, кроме указанного адреса. Вместо IP-адресов можно указывать подсети (например, формат 192.168 означает подсеть 192.168.x.x) или доменные имена.

Аутентификация

Использование .htaccess позволяет выделить определенную часть сайта и защитить ее паролем. Пароли .htaccess хранятся в файле .htpasswd. Создайте файл, внесите в него имена и пароли всех пользователей, которым вы хотите предоставить доступ к защищенной части сайта, и сохраните его. Файл не должен находиться в веб-директории (по соображениям безопасности). Введите в этот файл любое необходимое количество записей в формате пользователь:пароль. Для каждого пользователя нужно создать отдельную строку. Пароль должен быть указан в закодированном виде. Для кодирования паролей можно воспользоваться специальным сайтом или программой htpasswd, которая входит в комплект установки Apache. Для создания файла и добавления пользователей с помощью утилиты httpasswd используйте команду

htpasswd -cm .htpasswd admin

Эта команда создаст пользователя admin и запросит ввести пароль для него. После ввода пароля запись в файл .htpasswd будет добавлена.

После этого нужно разместить файл .htaccess в директории, к которой требуется защитить доступ, и ввести в него следующий код:

AuthUserFile /usr/local/username/safedirectory/.htpasswd

AuthGroupFile /dev/null

AuthName «Пожалуйста, введите пароль»

AuthType Basic

Require valid-user

Рассмотрим значение этих параметров:

AuthUserFile: путь к файлу .htpasswd на сервере

AuthGroupFile: эта строка используется для обозначения месторасположения файла .htgroup. Так как мы его не создавали, можем указать здесь /dev/null.

AuthName: Текст, отображаемый в предложении ввести пароль.

AuthType: Тип аутентификации, используемый для проверки пароля. При проверке паролей через HTTP нужно оставить значение Basic.

Require valid-user: Ключевая фраза, которая указывает файлу .htaccess наличие нескольких пользователей, которым требуется обеспечить возможность входа в защищенную паролем часть сайта. Другой возможный вариант – ключевая фраза «require user username», обозначающая конкретного пользователя с разрешенным доступом.

Сообщения об ошибках

Файл .htaccess позволяет вам создавать для своего сайта собственные страницы, сообщающие об ошибках. Вот некоторые из наиболее распространенных ошибок:

400 Ошибка в запросе

401 Требуется авторизация

403 Доступ запрещен

404 Файл не найден

500 Внутренняя ошибка сервера

Можно воспользоваться файлом .htaccess для создания собственных страниц, которые будут более дружественны к пользователю и предоставлять больше информации, чем стандартные сообщения сервера об ошибках.

Для примера мы рассмотрим страницу 404, аналогичным образом можно описать в файле .htaccess страницы для других ошибок. Естественно, сначала нужно создать саму страницу с необходимой информацией и загрузить ее на сервер. Затем укажите ее месторасположение в файле .htaccess:

ErrorDocument 404 /new404.html

В рассматриваемом примере сервер будет искать страницу 404 в корневой директории сайта. Если она находится в какой-либо поддиректории, нужно указать путь, например:

ErrorDocument 404 /error_pages/new404.html

Описание типов MIME

Если на вашем сайте есть файлы каких-либо приложений, для отображения которых ваш сервер не настроен, в файле .htaccess можно описать типы MIME при помощи следующего кода, чтобы браузер отображал их в необходимом формате:

AddType audio/mp4a-latm .m4a

В данном примере для файлов с расширением .m4a задано представление в виде аудиозаписей. Для поддержки других типов MIME укажите соответствующий тип и расширение файла.

Серверные включения

Серверные включения (Server Side Includes, SSI) позволяют добиться значительного повышения скорости открытия сайта. Они представляют собой директивы для динамической генерации данных на странице сервером перед ее отправкой клиенту. Один из наиболее распространенных вариантов использования SSI – обновление большого количества страниц с передачей определенных данных вместо обновления каждой страницы по отдельности (например, если вам нужно заменить цитату в нижней части страницы).

Для использования SSI введите в файл .htaccess следующий код:

AddType text/html .shtml

AddHandler server-parsed .shtml

Первая строка задает интерпретацию файлов с расширением .shtml как html-кода, а вторая – обработку таких файлов с любыми командами SSI на сервере.

Однако, если у вас много страниц .html, и вы не хотите менять расширение, для их обработки команд SSI в этих файлах можно воспользоваться XBitHack. Следующая строка в файле .htaccess заставляет сервер проверять все html-файлы с соответствующими разрешениями на наличие SSI:

XBitHack on

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

chmod +x имя_страницы.html

Редирект

Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:

Redirect 301 /index.html http://domain.ru/newindex.html

В целом директива будет отображена в таком виде:

Redirect [status] URL_LOCAL URL_REDIRECT

URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.

URL_REDIRECT – новый URL, куда переносится страница.

В поле [status] могут быть следующие значения:

301 – страница перенесена навсегда.

302 – страница перенесена на время.

303 – смотрите другую страницу.

410 – страница удалена.

Модуль Mod_Rewrite

Одна из наиболее полезных функций файла .htaccess – его использование с модулем mod_rewrite, который применяется для перезаписи URL, отображаемых в браузере пользователя. Это может использоваться для их представления в более удобочитаемом формате и других задач, например, редирект с http на https можно настроить следующим образом.

RewriteEngine On

RewriteCond %{HTTP:PORT} !^443$

RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Первая строка активирует модуль Mod_Rewrite, а две последующие при попытке соединения по отличному от 443 порту переписывают URL, чтобы он начинался не с HTTP, а c HTTPS, перенаправляя посетителя на защищенное соединение.

Управление кэшированием данных

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

ExpiresActive on

ExpiresByType image/jpeg "access plus 1 day"

ExpiresByType image/gif "modification plus 3 months"

ExpiresByType text/html "now"

отключает кэширование для HTML, для изображений JPEG устанавливает срок в 1 день с момента обращения, а для GIF — 3 месяца с момента модификации файла.

Заключение

Страница .htaccess обеспечивает значительную гибкость при создании сайтов, но наше руководство достаточно краткое. Более подробную информацию о возможностях файла .htaccess можно получить в документации для сервера Apache.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-03-11T18:06:38
Apache

CentOS 7 Apache, MySQL, PHP. WEB сервер LAMP

Введение

Комплекс LAMP – это набор программ с открытым исходным кодом, которые обычно устанавливаются вместе для обеспечения функционирования динамических веб-сайтов и веб-приложений на сервере. Фактически этот термин является аббревиатурой: операционная система Linux, веб-сервер Apache, данные сайта хранятся в базе MySQL (MariaDB), а динамический контент обрабатывается PHP.

В данном руководстве описана установка комплекса LAMP на VPS с CentOS 7. CentOS выполняет наше первое требование – это операционная система Linux.

Подготовка

Прежде чем начать работу с данным руководством, вам потребуется отдельный пользовательский аккаунт без root-прав на сервере. Для этого нужно зайти как root, создать нового пользователя при помощи команды adduser и внести его в группу wheel. По умолчанию в CentOS 7 члены этой группы могут пользоваться командой sudo, которая позволяет при необходимости выполнять какие-либо действия с привилегиями root не выходить из обычной учетной записи и заходить как root, а выполнять отдельные команды как суперпользователь. Для этого нужно просто ввести sudo перед командой, при выполнении которой требуются эти привилегии.

Шаг 1 – установка Apache

В настоящее время Apache – наиболее популярный веб-сервер в мире, поэтому это прекрасный выбор по умолчанию для хостинга веб-сайта.

Apache можно легко установить при помощи yum, менеджера пакетов CentOS. Менеджер пакетов позволяет нам без затруднений устанавливать большую часть программ из репозитория CentOS. Для выполнения нашей задачи начнем со следующих команд:

sudo yum install httpd

Так как мы пользуемся командой sudo, эта операция выполняется с root-правами. Для подтверждения намерений она запросит ваш обычный пароль пользователя.

Затем ваш веб-сервер будет установлен.

После установки запустите Apache на вашем VPS:

systemctl start httpd.service

Вы сразу можете проверить, что все идет по плану, набрав IP-адрес вашего сервера в своем веб-браузере:

http://IP_адрес_вашего_сервера/

Вы увидите веб-страницу CentOS 7 Apache по умолчанию, которая размещена для информации и тестирования. Она должна выглядеть примерно следующим образом:

Если вы видите эту страницу, то ваш веб-сервер установлен корректно. Последнее, что вам потребуется – включить автозапуск Apache при загрузке. Для этого воспользуйтесь следующей командой:

systemctl enable httpd.service

Установка виртуальных хостов на Apache

Виртуальный хост – базовый блок, описывающий один сайт или домен. Виртуальные хосты позволяют держать на одном сервере несколько доменов или интерфейсов. Это важно, когда на одном сервере нужно создать несколько сайтов. Каждый настроенный домен будет направлять посетителя в конкретную директорию, содержащую информацию нужного сайта, даже не показывая, что на том же сервере есть другие сайты. Эту схему можно масштабировать без каких-либо программных ограничений, если ваш сервер справится с трафиком всех сайтов. Мы разберем установку и настройку на примере одного виртуального хоста.

Первое, что нужно сделать для установки– создать структуру директорий. Наш корень документов будет находиться в отдельной директории внутри /var/www. Мы создадим в ней директории для каждого из виртуальных хостов, а в каждой из них, в свою очередь, создадим поддиректорию public_html, в которой будут находиться наши файлы. Это предоставит нашему хостингу некоторую гибкость. Воспользуемся командой mkdir с флагом –p, который позволяет сразу создать директорию с поддиректорией в ней:

mkdir -p /var/www/example.com/public_html

examplе.сom – имя домена, который мы хотим отображать на нашем VPS.

Структура директорий создана, но ее владелец – пользователь root. Чтобы наш обычный пользователь мог изменять файлы в этих директориях, нужно сменить владельца командой chown:

chown -R $USER:$USER /var/www/example.com/public_html

Где переменная $USER – текущий пользователь системы. Теперь он является владельцем поддиректории public_html, где мы будем хранить контент.

Также для корректного отображения страниц нужно немного изменить права доступа, чтобы разрешить чтение общей веб-директории, а также всех файлов и директорий в ней:

chmod -R 755 /var/www

Теперь все необходимые права доступа заданы, и пользователь сможет создавать контент в нужных папках. Создадим файл index.html, идентифицирующий наш домен. Откроем его в редакторе при помощи следующей команды:

vi /var/www/example.com/public_html/index.html

В этом файле создадим простой HTML-документ с данными о сайте, которому принадлежит эта страница:

<html>

    <head>

        <title>Welcome to Еxample!</title>

    </head>

    <body>

        <h1>Success! The еxample virtual host is working!</h1>

    </body>

</html>

Сохраните и закройте файл. Теперь у вас есть все необходимые страницы для проверки конфигурации виртуального хоста. Создадим  файл, в котором определяется его конфигурация и задается, как веб-сервер Apache будет отвечать на запросы различных доменов. Для начала создадим директорию, в которой будут храниться файлы наших виртуальных хостов (sites-available), а также директорию, которая сообщает Apache, что виртуальный хост готов для отображения посетителям (sites-enabled, будет содержать символические ссылки на виртуальные хосты, готовые к публикации).

mkdir /etc/httpd/sites-available

mkdir /etc/httpd/sites-enabled

Затем нам нужно указать, чтобы Apache искал виртуальные хосты в директории sites-enabled. Для этого мы отредактируем главный файл конфигурации Apache:

vi /etc/httpd/conf/httpd.conf

и добавим в конце строку с директорией для дополнительных файлов конфигурации:

IncludeOptional sites-enabled/*.conf

Должно получится примерно следующее

Теперь можно создать файл для первого виртуального хоста. Откроем его в редакторе с root-правами:

sudo nano /etc/httpd/sites-available/example.com.conf

Важно: в соответствии с рассматриваемой нами конфигурацией все файлы виртуальных хостов обязательно должны заканчиваться на .conf

Сначала нужно создать пару тегов, определяющих содержимое как виртуальный хост, прослушивающий порт 80 (порт HTTP по умолчанию):

<VirtualHost *:80>





</VirtualHost>

Затем нужно указать доменное имя нашего сайта, www.example.com.  Мы также укажем альтернативное имя сервера example.com, чтобы по запросам www.example.com и example.com выводился один и тот же контент:

<VirtualHost *:80>

    ServerName www.example.com

    ServerAlias example.com

</VirtualHost>

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

<VirtualHost *:80>

    ServerName www.example.com

    ServerAlias example.com

    DocumentRoot /var/www/example.com/public_html

   ErrorLog /var/www/example.com/error.log

   CustomLog /var/www/example.com/requests.log combined

</VirtualHost>

В итоге минимальная конфигурация выглядит так

Теперь активируем файл виртуального хоста, чтобы Apache представлял его посетителям. Создадим символическую ссылку для виртуального хоста в директории sites-enabled:

ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

После этого перезапустите Apache, чтобы изменения вступили в силу:

systemctl restart httpd.service

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

Естественно у вас должны быть корректно настроены DNS сервера, или для тестов просто пропишите имя хоста и ip адрес сервера  в вашем файле hosts.

Вы должны увидеть страницу следующего вида:

Аналогичным образом можно создать и настроить виртуальные хосты для других доменов.

Шаг 2 – установка  MySQL (MariaDB)

Теперь, когда наш веб-сервер запущен и работает, нужно установить MariaDB, аналог MySQL. MariaDB – разрабатываемая сообществом ветвь реляционной системы управления базами данных MySQL. Ее задача состоит в организации баз данных, где наш сайт будет хранить информацию, и обеспечении доступа к ним.

Для получения и установки программы мы снова можем воспользоваться yum. На этот раз мы также установим несколько вспомогательных пакетов, которые помогут нам связать компоненты друг с другом.

yum install mariadb-server mariadb

После завершения установки нужно запустить MariaDB следующей командой:

systemctl start mariadb

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

sudo mysql_secure_installation

У вас будет запрошен root-пароль для MySQL. Так как вы только что установили MySQL, то скорее всего у вас его нет, поэтому просто нажмите Enter. Затем вас спросят, хотите ли вы его задать. Введите Y (yes) и следуйте указаниям:

Enter current password for root (enter for none):

OK, successfully used password, moving on... 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorization. 

New password: пароль

Re-enter new password: пароль

Password updated successfully!

Reloading privilege tables.. ... Success!

На остальные вопросы нужно просто нажимать Enter, чтобы принять значения по умолчанию. Будут удалены примеры пользователей и баз данных, отключен удаленный вход с root-правами, а затем новые правила будут загружены, и MySQL немедленно примет сделанные нами изменения.

Последнее, что требуется – автозапуск MariaDB при загрузке. Для этого воспользуйтесь следующей командой:

systemctl enable mariadb.service

Теперь система управления базами данных работает, и можно перейти к следующему шагу.

Шаг 3 – установка PHP

PHP – компонент нашего пакета, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к базам данных MySQL для получения информации и передавать обработанный контент нашему веб-серверу для отображения.

Для воспользуемся yum. Мы также инсталлируем пакет рhр-mysql:

yum install php php-mysql

После этого инсталляция должна пройти без проблем.  После установки необходимо выполнить перезапуск Apache:

systemctl restart httpd.service

Установка модулей PHP

Для расширения функционала PHP можно опционально установить ряд дополнительных модулей. Чтобы узнать доступные модули и библиотеки для PHР, введите в консоли:

yum search php-

Будет выдан список опциональных компонентов, доступных для установки, с коротким описанием каждого из них:

Более подробную информацию о каждом модуле можно найти в Интернете или прочитать развернутое описание пакета по команде:

yum info имя_пакета

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

Например, чтобы узнать, для чего нужен модуль php-fpm, введите в консоли:

yum info php-fpm

В большом объеме разной информации вы увидите подобный текст:

Описание говорит нам о том, что этот модуль  — альтернативная реализация FastCGI с дополнительными функциями, полезными для сайтов любого размера, особенно для сильно загруженных сайтов. Если вам понадобится установить какой-то модуль, это делается при помощи команды yum install, как мы устанавливали остальные программы. Например, если нам нужен php-fpm, введите в консоли:

yum install php-fpm

Чтобы установить несколько модулей, можно ввести их названия, разделенные пробелами, после команды yum install:

yum install пакет1 пакет2 ...

Установка и настройка комплекса LAMP завершена. Теперь нужно проверить работу PHP.

Шаг 4 – тестирование работы PHP на веб-сервере

Чтобы проверить, правильно ли наша система настроена для обработки PHP, можно создать очень простой PHP-скрипт. Мы можем назвать этот скрипт info.php и разместить его в корневой директории нашего веб-ресурса (для простоты объяснения здесь мы не будем рассматривать виртуальные хосты, настроенные ранее):

vi /var/www/html/info.php

Откроется пустой файл. Нам нужно ввести в него следующий текст, который представляет собой рабочий код PHP:

<?php phpinfo(); ?>

После этого закройте и сохраните файл.

Если у вас работает firewalld, выполните следующие команды, чтобы разрешить HTTP и HTTPS трафик:

sudo firewall-cmd --permanent --zone=public --add-service=http 

sudo firewall-cmd --permanent --zone=public --add-service=http

ssudo firewall-cmd --reload

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

http://IP_адрес_вашего_сервера/info.php

Должна открыться страница примерно следующего вида:

Она предоставляет информацию о вашем сервере с точки зрения PHP и полезна для отладки и проверки правильности применения настроек. Если страница видна, то все работает правильно.

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

sudo rm /var/www/html/info.php

При необходимости снова получить эту информацию данную страницу всегда можно создать повторно.

Заключение

Как мы видим установить и настроить свой собственный WEB-сервер очень просто и не представляет большой сложности. После установки комплекса LAMP есть большое количество вариантов дальнейших действий.  Он  предоставляет вам платформу для установки на сервер большинства типов веб-сайтов и веб-приложений.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2018-11-14T11:05:33
Apache

Основные папки сервера Apache 2.2

Основные папки из которых состоит Apache:

– основные программы

cgibin – стандартная папка для CGI приложений

conf– файлы конфигурации. В этой папке находится файл http.conf. Этот файл является самой главной настройка самого Apache. Любое изменение этого файла, требует перезагрузку самого Apache

error– файлы ошибок (тут хранится информация об ошибках самого Apache)

htdocs– корневая папка сервера. При первой проверке, что бы узнать работает ли наш Apache, введя в окне браузера http://localhost, информация берется из файла, который находится именно в этой папке.

logs– журнал сервера

modules– стандартные модули сервера. Apache, является модульным. Apache без модулей, это просто, запрос — ответ. Если нужно расширить функциональность, то нужны модули. (узнать подробнее о модуле PHP)
Читать

Самый главный конфигурационный файл Apache

Самый главный конфигурационный файл Apache – это httpd.conf

В нем хранится вся конфигурация Apache. Шаг влево, шаг в право и Apache не запустится. Если мы что-то изменили в этом файле, то требуется перезапуск сервера.

Раньше, в Apache 1.3 все настройки хранились в файле httpd.conf, сейчас в версии Apache 2, часть настроек вынесли в папку  /conf/extra. Теперь появилась возможность прописывать все  не в одном файле, а в разных и подключается все с помощью директивы include.

# — (решетки) – это однострочные комментарии. Все, что начинается с решетки и до конца строки – это комментарии.

Чтобы подключить что-нибудь достаточно расскомментировать, следовательно убрать решетку, а если мы хотим что-нибудь отключить, то опять в самом начале строки ставим  #.

Читать

Защищаем Apache2 от SlowLoris DDoS

Что такое SlowLoris

У вас случалось такое, когда на сервере нагрузки нет, свободной памяти достаточно, и при этом ваш сайт не открывается?

Если при этом на статусной страничке апача все треды в состоянии R (reading), весьма вероятно, что вы находитесь под атакой SlowLoris.

SlowLoris означает, что злоумышленники открывают множество коннектов к серверу, однако не посылают много-много запросов, а, наоборот, посылают один и медленно-медленно. В таком случае серверу не остается ничего другого, кроме как ждать, когда же вы запрос наконец придёт. А он всё не приходит и не приходит.

В результате все треды (или потоки) апача заняты тем, что ждут, когда же всё-таки запрос придёт. Читать