Web сервер apache установка и настройка



Установка и настройка веб-сервера Apache

Установка и настройка веб-сервера Apache

Виртуальные серверы, как правило, сдаются в аренду только с предустановленной операционной системой, выбранной арендатором при создании веб-сервера. Все остальное программное обеспечение устанавливается и настраивается самостоятельно в процессе эксплуатации веб-сервера. В данной статье будет показано, как установить и настроить веб-сервер на виртуальном сервере от Xelent.ru.

Установка PHP и веб-сервера Apache

Рассматриваемый веб-сервер был заказан с операционной системой Ubuntu 16.04. Весь процесс настройки будет соответствовать этой операционной системе. Мы установим и настроим веб-сервер Apache, интерпретатор PHP, фреймворк Symfony, а также обеспечим поддержку сервера баз данных MySQL. Другими словами, будет создана и настроена типичная конфигурация PHP-разработчика, предназначенная для разработки и тестирования PHP-приложений.

Итак, подключитесь к своему веб-серверу и первым делом обновите репозитарии apt (здесь и далее, поскольку мы работаем от root, команда sudo не требуется):

подключение к виртуальному серверу по SSH

Рис. 1. Успешное подключение по SSH к виртуальному серверу

Обновление репозитариев установка apache

Рис. 2. Обновление репозитариев

Далее установим PHP 7.0:

apt-get install php7.0-cli

настройка PHP установка apache

Рис. 3. Установка и настройка PHP

После чего нужно ввести команду php -v, выводящую версию PHP и убедиться, что мы-таки установили седьмую версию.

выбор версии php установка apache

Рис. 4. Версия PHP

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

apt-get install mc

Далее нужно отредактировать и настроить файл /etc/php/7.0/cli/php.ini. Symfony требует, чтобы была включена опция date.timezone. Найдите ее в файле php.ini, раскомментируйте и поставьте актуальное значение, например, Europe/Moscow (см. рис. 5).

Редактирование php установка apache

Рис. 5. Редактирование php.ini

После установки веб-сервера Apache нужно будет проделать то же самое, но с файлом /etc/php/7.0/apache2/php.ini, то есть с конфигурацией PHP при работе через сервер Apache.

Далее нужно настроить Apache:

apt-get install apache2 libapache2-mod-php

В принципе, в Symfony есть свой сервер и Apache для разворачивания приложения не нужен, но он вам понадобится на реально-работающем интернет-проекте, когда ваше приложение будет протестировано и готово к запуску (либо же для тестирования приложения в условиях, приближенных к production).

Установка Symfony

Самый простой способ установки и настройки Symfony — использование Symfony Installer. Сначала нужно получить сам инсталлятор. В Linux для этого нужно ввести команды:

chmod a+x /usr/local/bin/symfony

Создадим новый проект:

symfony new myproject

создание проекта установка apache

Рис. 6. Процесс создания проекта

создание проекта установка apache

Рис. 7. Проект создан

Здесь желательно команды выполнять не от root’а, а от обычного пользователя. После создания проекта нужно проверить, соответствует ли наша система требованиям Symfony.

Поэтому введите команды:

системные требования установка apache

Рис. 8. Проверка системных требований

Как показано на рис. 8, на данный момент виртуальный сервер не соответствует требованиям Symfony. Нужно поставить расширения php-xml (DOM), php-intl (интернационализация), а также драйверы для PDO (драйверы БД).

Чтобы установить все необходимые для работы Symfony расширения, введите команду:

apt-get install php-xml php-intl php-mysql

Обратите внимание, что пакет php-mysql сейчас — это не старое расширение mysql, которое сейчас уже не поддерживается. Данный пакет содержит драйвер PDO MySQL, то есть обеспечивает поддержку MySQL в современных версиях PHP. Настройку самого сервера баз данных MySQL рассматривать не будем, поскольку он может быть удаленным. Если вам необходим локальный MySQL, тогда можно воспользоваться статьей из раздела «помощь» на сайте ubuntu и настроить его самостоятельно.

Снова запустите проверку системы. На этот раз увидите заветное OK, хотя Symfony все еще немного ругается на пакет php-intl — ему не нравится его версия.

установка apache

Рис. 9. Все в порядке

Итак, у нас инсталлирован Symfony и создан новый проект. Для запуска приложения введите команду (нужно находиться в каталоге проекта):

php bin/console server:run

Вывод команды будет примерно такой:

Quit the server with CONTROL-C.

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

Рис. 10. Сервер запущен и работает

Что ж, осталось открыть браузер и ввести адрес http://localhost:8000 — вместо полноценного браузера у меня будет lynx, который также нужно ставить отдельно. Если вы все сделали правильно, то увидите страницу приветствия (рис. 11).

развертывание сервера apache

Рис. 11. Приложение развернуто!

Настройка Apache

При наличии доменного имени можно «прикрутить» наше приложение к конфигурации Apache. Для этого нужно в каталог /etc/apache2/sites-available/ добавить файл конфигурации виртуального хоста для нашего Symfony-приложения. Его настройка и конфигурация будет выглядеть примерно так:

Источник

Веб-сервер Apache: установка, настройка и способы защиты от атак

Веб-сервер Apache не нуждается в представлении. Это программное обеспечение с открытым исходным кодом, выпущенное фондом Apache, один из самых используемых веб-серверов в мире. Рассмотрим, как его установить и как настроить конфигурацию брандмауэра для разрешения HTTP- и HTTPS-трафика и виртуальные хосты в Ubuntu 18.04.

Этапы установки Apache

Установить веб-сервер Apache в Ubuntu 18.04 Bionic Beaver очень просто:

Сценарии установки Ubuntu позаботятся о запуске и включении apache2-сервиса при загрузке.

Настройка брандмауэра

Чтобы получить доступ к содержимому сервера на той же машине, где он работает, нужно запустить веб-браузер и ввести в адресную строку localhost . Если всё настроено правильно, страница поприветствует словами: «It works!».

Если в системе включён брандмауэр (как и должно быть), то чтобы сделать контент доступным извне нашей машины, нужно разрешить входящий трафик через порт 80. Команда для запуска зависит от используемого менеджера брандмауэра. Например, при использовании ufw (используется в Ubuntu по умолчанию) мы должны запустить:

Если вы используете firewalld , можно запустить:

Обратите внимание, что приведённая выше команда будет по умолчанию действовать в зоне firewalld . Если вы хотите работать с другой зоной, нужно указать её с помощью опции —zone .

Настройка виртуального хоста

Веб-сервер Apache может запускать несколько веб-сайтов на одном компьютере. Каждый запущенный сайт («виртуальный хост» в терминологии Apache) должен иметь свою собственную конфигурацию. Виртуальный хост может быть IP или именем.

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

Виртуальный хост по умолчанию

В Ubuntu виртуальный хост по умолчанию определён в каталоге /etc/apache2/sites-available внутри файла 000-default.conf . Рассмотрим его:

Директива <VirtualHost> на первой строке применяется для группы параметров, используемых Apache для конкретного виртуального хоста. Первое, что вы увидите в ней, — инструкцию *:80 . Она указывает IP-адрес и порт, используемый виртуальным хостом.

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

Health Samurai , Санкт-Петербург, можно удалённо , От 70 000 до 150 000 ₽

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

DocumentRoot в строке 4 является обязательным, это важно для конфигурации виртуального хоста. Аргумент этой инструкции должен иметь доступ к файловой системе. Указанный каталог будет считаться корневым каталогом виртуального хоста и не должен содержать завершающий символ «/». В этом случае корневая директория документа — /var/www/html . Если мы посмотрим на её содержимое, то увидим, что она содержит страницу index.html , которую вы до этого видели в качестве страницы приветствия сервера.

Последние две команды на строках 8–9, представленные в этом VirtualHost , — ErrorLog и CustomLog . Используя первый, вы указываете файл, в который сервер будет записывать возникающие ошибки. Второй используется для регистрации запросов, отправленных на сервер в указанном формате.

Новый виртуальный хост

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

Как сказано выше, файлы виртуальных хостов должны быть определены внутри каталога /etc/apache2/sites-available (по крайней мере в дистрибутивах на основе Debian). Поэтому создадим этот файл там. Прежде чем сделать это, следует создать каталог, который будет использоваться как document root, а также создать базовую страницу, которая будет отображаться при открытии сайта:

Теперь можно приступить к настройке виртуального хоста:

Это минимальная конфигурация, необходимая для его запуска. Здесь вы можете увидеть новую директиву ServerName . Это то, что определяет ваш виртуальный хост. Сохраним этот файл как example.conf . Чтобы активировать ваш виртуальный хост, используйте команду a2ensite . Эта команда создаёт символическую ссылку файла в каталоге /etc/apache2/sites-enabled :

После этого следует перезагрузить конфигурацию сервера:

Чтобы убедиться, что конфигурация работает, вы должны добавить запись в файл /etc/hosts той машины, с которой вы пытаетесь связаться с сайтом.

Без этой строки (и без записи DNS) было бы невозможно связать адрес сервера с именем вашего виртуального хоста, а использование IP-сервера напрямую вместо этого «инициировало» бы виртуальный хост по умолчанию.

С клиентского компьютера, если вы теперь перейдёте к www.example.local , вы должны увидеть минимальную страницу, которую настроили выше.

Настройка SSL

SSL (Secure Sockets Layer) — это технология, которая позволяет нам шифровать данные, связанные с соединением между клиентом и сервером. При использовании SSL-сертификатов HTTPS (Hyper Text Transfer Protocol Secure) заменяет HTTP в URL-адресе.

SSL-сертификаты выдаются центром сертификации и могут быть очень дорогими, однако есть два других способа получить сертификат: создать самозаверяющий сертификат или воспользоваться сервисом Let’s encrypt.

Создаём самоподписанный SSL-сертификат

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

Посмотрим, что делает эта команда. Первая опция, -x509 определяет, что формируется сертификат стандарта X509.

Читайте также:  Ошибка при установке call of duty modern warfare 2019

С помощью -days мы устанавливаем срок действия сертификата в днях. Следующая опция — -newkey . С её помощью мы создаём новый ключ, в данном случае RSA-ключ размером 2048 бит. В тестовом примере нам не нужно шифровать файл закрытого ключа, поэтому используем -nodes . Если эта опция не указана, файл, в котором хранится ключ, будет защищён паролем, который нужно будет предъявлять каждый раз при перезапуске веб-сервера.

С помощью -keyout и -out мы указываем файл для записи сгенерированного ключа и сертификата соответственно. При запуске команды нам будет предложено ответить на несколько вопросов, после чего будет сгенерирован ключ и сертификат.

Скопируйте сгенерированный ключ и сертификат в каталоги /etc/ssl/private и /etc/ssl/ssl-certs соответственно:

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

Важно настроить права доступа к файлу ключа. Папка /etc/ssl/private принадлежит root-пользователю и группе ssl-cert , и у неё есть права доступа 710. Это означает, что владелец имеет на неё полные права, а владелец группы может только получить к ней доступ и перечислить её содержимое, но не может дать разрешение другим:

Изменим права доступа к файлу ключа, предоставив владельцу права на чтение и запись, а группе — только для чтения:

Теперь, чтобы использовать сертификат, нужно включить модуль SSL с помощью команды a2enmod :

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

Порт 443 в строке 1 — это порт, используемый для HTTPS (вместо порта 80, используемого для HTTP).

Мы также добавили инструкцию SSLEngine on в строке 6.

Наконец, в строках 8–9 мы определили пути для сертификата и файла ключей, используя инструкции SSLCertificateFile и SSLCertificateKeyFile .

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

Наконец, перезагрузите конфигурацию Apache:

Готово. Теперь, если мы перейдём по адресу https://www.example.local, мы должны увидеть веб-сервер, предупреждающий нас о том, что используемый сертификат небезопасен. Это, однако, признак того, что наш сертификат работает, и трафик между клиентом и сервером будет зашифрован (вам необходимо добавить исключение для сертификата, чтобы использовать его).

Настройка Let’s encrypt

Альтернатива коммерческим и самозаверенным сертификатам — «Let’s encrypt». Это бесплатный, автоматизированный и открытый центр сертификации. Его цель — дать возможность автоматически получить сертификат, которому доверяет браузер, без какого-либо вмешательства человека.

Для этого используется протокол ACME (certificate management agent), который запускается на сервере.

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

Если же у вас есть доступ к shell, необходимо установить клиент certbotACME .

Для установки Certbot на Ubuntu 18.04 достаточно запустить:

Пакет Certbot поставляется с модулем systemd timer , который будет запускать Certbot два раза в день, чтобы поддерживать сертификат в актуальном состоянии. Получить сертификат довольно просто:

Очевидно, чтобы это работало, домен должен правильно указывать на ваш общедоступный IP-адрес. Certbot предложит вам несколько вопросов для настройки конфигурации, и, если всё пойдёт хорошо, сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/ . Просто настройте файл виртуального хоста, чтобы указать на них, и всё готово.

Как обезопасить сервер Apache

Основные средства защиты

Установка Fail2ban на Ubuntu Server 18.04

Если вы хотите обезопасить свой сервер Ubuntu, первое, что вы должны сделать, — это установить систему обнаружения вторжений Fail2ban.

Fail2ban отслеживает определённые файлы журналов (в /var/log ) на предмет неудачных попыток входа или автоматических атак на сервер. Когда обнаруживается попытка компрометации с IP-адреса, Fail2ban блокирует его, добавляя новую цепочку в iptables и предотвращая доступ или дальнейшую атаку на сервер.

Fail2ban настолько легко установить и использовать, что его можно рассматривать как простое и универсальное решение для всех серверов Linux.

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

После выполнения команд при необходимости перезагрузите сервер.
Установить Fail2ban можно с помощью одной команды:

Проверьте установленную версию:

После этого Fail2ban готов к работе. Запустить и включить сервис можно так:

Настройка jail

Настроим его для попыток входа по SSH. В каталоге /etc/fail2ban вы найдёте файл jail.conf . Не редактируйте его. Вместо этого создайте новый файл jail.local , который переопределит любые подобные настройки в jail.conf . Новая конфигурация будет отслеживать /var/log/auth.log , использовать фильтр sshd fail2ban , устанавливать для порта SSH значение 22 и устанавливать максимальное количество попыток — 3. Для этого выполните команду:

В новый файл вставьте следующее содержимое:

Сохраните и закройте его. Перезапустите Fail2ban с помощью команды:

На этом этапе, если кто-либо попытается войти на ваш сервер Ubuntu через SSH и эта попытка 3 раза завершится ошибкой, он не сможет больше войти, поскольку iptables заблокирует IP-адрес.

Тестирование и разблокирование

Вы можете проверить, работает ли jail, намеренно провалив три попытки входа на сервер через SSH. После третьей неудачной попытки соединение будет зависать. Нажмите Ctrl+C, чтобы выйти, а затем попытайтесь вернуться по SSH на сервер. Вы больше не сможете использовать SSH на этом сервере с того IP-адреса, который вы использовали.

Затем вы можете разблокировать свой тестовый IP-адрес с помощью следующей команды:

Где ip_address — запрещённый IP-адрес.

Теперь вы снова можете войти.

Модуль mod_evasive

Ещё одна отличная утилита для обнаружения и блокировки IP-адресов, которые используются при атаке типа «отказ в обслуживании». Модуль помещает подозрительные IP-адреса во временный чёрный список и сохраняет их там, если они продолжают подозрительно себя вести.

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

Установка mod_evasive в Ubuntu

Затем установите вспомогательную утилиту:

Чтобы установить модуль mod_evasive в Ubuntu, введите следующее:

Настройка mod_evasive

Как и большинство программных пакетов Linux, mod_evasive управляется файлом конфигурации.

Откройте его в текстовом редакторе с помощью следующей команды:

Знак # помечает это как комментарий. Удалите его, затем замените you@yourdomain.com своим адресом электронной почты. Используйте ту, которой вы постоянно пользуетесь — именно сюда будут отправляться оповещения.

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

Сохраните и выйдите, затем перезагрузите Apache:

Тестирование mod_evasive

Пришло время проверить, правильно ли работает модуль.
Используйте скрипт test.pl . Его сценарий расположен по этому адресу:

Для его запуска примените эту команду:

Вывод должен выглядеть таким образом:

Параметры и настройки

DOSSystemCommand

Вы, возможно, заметили, что эта опция была помечена как комментарий и отключена. Она позволяет указать системную команду, которая будет выполняться при добавлении IP-адреса в чёрный список. Вы можете использовать её, чтобы запустить команду для добавления IP-адреса в брандмауэр или IP-фильтр.

DOSHashTableSize

Увеличьте значение для более загруженных веб-серверов. Опция выделяет пространство для выполнения операций поиска. Увеличение размера улучшает скорость за счёт памяти.

DOSPageCount

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

DOSSiteCount

Общее количество запросов на один и тот же сайт по одному и тому же IP-адресу. По умолчанию установлено значение 50. Вы можете увеличить его до 100, чтобы уменьшить количество ложных срабатываний.

DOSPageInterval

Количество секунд для DOSPageCount. По умолчанию значение равно 1 секунде. Это означает, что если вы не измените его, запрос 2 страниц за 1 секунду временно поместит IP-адрес в чёрный список.

DOSSiteInterval

Как и DOSPageInterval, он определяет количество секунд, которые отслеживает DOSSiteCount. По умолчанию это значение равно 1 секунде, то есть если один IP-адрес запрашивает 50 ресурсов на одном и том же веб-сайте за одну секунду, он будет временно помещён в чёрный список.

DOSBlockingPeriod

Время, в течение которого IP-адрес остаётся в чёрном списке. По умолчанию установлено 10 секунд, но вы можете изменить его на любое значение, которое вам нравится.

DOSLogDir

По умолчанию он настроен на запись журналов в /var/log/mod_evasive . Эти журналы можно просмотреть позже, чтобы оценить поведение клиента.

Белые IP-адреса

Эта опция по умолчанию не включена в файл evasive.conf .

Откройте файл для редактирования и добавьте следующую строку:

Подставьте IP-адрес, который хотите добавить в белый список. Нужно указывать только одну запись в строке. Обычно список используется для доверенных клиентов, которые обмениваются с вашим сайтом большим количеством данных. Этот инструмент хорош для обнаружения ботов и скриптов. Если есть боты или сценарии, которые вы хотите разрешить, можете внести их.

Обязательно сохраните файл и выйдите из него, а затем перезагрузите службу Apache перед тестированием любого из этих параметров.

DNS Injection

Спам из веб-форм не только распространён, но и является быстрым способом внести домен в чёрный список подобный Spamhaus. Чтобы предотвратить подобное, вам нужно добавить ещё один модуль в Apache.

В терминале введите:

После завершения установки введите команду:

Далее откройте файл /etc/apache2/apache2.conf (используя sudo и ваш любимый текстовый редактор) и добавьте в конец вашего файла конфигурации блок:

Сохраните файл apache2.conf и перезапустите Apache, чтобы новый модуль вступил в силу.

Читайте также:  Установка windows server 2008 ssd

Slowloris

В Apache есть модуль для предотвращения подобных DOS-атак. Вот как это работает. Откройте окно терминала. Введите команду:

После завершения установки проверьте конфигурацию в /etc/apache2/mods-available/qos.conf , чтобы убедиться, что она идеально соответствует вашим потребностям. После настройки модуля (при необходимости) перезапустите Apache.

Дополнительные средства защиты

Скрыть версию сервера

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

Измените httpd.conf с помощью редактора. Добавьте следующую директиву и сохраните httpd.conf :

Перезапустите Apache.
ServerSignature удалит информацию о версии со страницы.
ServerTokens изменит заголовок только на рабочий, т. е. Apache.

Защита от атаки Clickjacking

Атака данного типа позволяет злоумышленнику выполнить клик на сайте-жертве от имени легитимного посетителя.

Чтобы обезопасить свой веб-сервер, вам нужно использовать заголовок «X-FRAME-OPTIONS»
Вы можете сделать это, отредактировав файл apache2.conf .

Добавьте следующую строку внутри Directory /var/www/html/ :

Header always append X-Frame-Options SAMEORIGIN

Сохраните файл и перезапустите Apache.

Теперь попробуйте открыть веб-браузер для доступа к веб-серверу. Проверьте заголовки ответа HTTP в firebug. Вы должны увидеть X-Frame-Options.

Защита от атаки XSS

XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») является одной из наиболее распространённых атак на уровне приложений.

Вы можете защититься от неё, отредактировав файл конфигурации Apache.

Добавьте следующую строку внутри Directory /var/www/html/ :

Header set X-XSS-Protection «1; mode=block»

Заключение

Мы рассмотрели установку и настройку, а также все наиболее важные способы защиты сервера Apache, и теперь вы можете полноценно приступить к изучению его работы на практике.

Источник

Расширенная настройка web сервера (Apache2 + Nginx)

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

В этой статье будет идти речь о настройке сервера с использованием: Apache2, Nginx, ngx_pagespeed, PHP, PHP-FPM, MariaDB и MemCached.

Nginx

HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения.

Установка

Установите пакеты, необходимые для подключения apt-репозитория:

Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:

Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов:

Проверьте, верный ли ключ был импортирован:

Вывод команды должен содержать полный отпечаток ключа 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 :

Чтобы установить nginx, выполните следующие команды:

Настройка

Проверяем, что пользователь nginx user www-data :

Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://«IP-адрес сервера».

В итоге мы должны увидеть заголовок «Welcome to nginx!».

PHP-FPM

FastCGI — протоколу взаимодействия веб-сервера с программами. FPM расшифровывается как Fastcgi Process Manager.

Установка

Настройка

Разрешаем автозапуск php-fpm и запускаем его:

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

ngx_pagespeed

ngx_pagespeed (или просто pagespeed) – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере. Дополнительную информацию о модуле можно найти на официальном сайте.

Установка

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

Настройка

Создаем и переходим в папку, в которой будем собирать ngx_pagespeed :

Узнаем текущую версию nginx:

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

В нашем случае это nginx 1.18

Скачиваем репозиторий с ngx_pagespeed :

Скачиваем папку psol:

Собираем файл ngx_pagespeed.so :

Копируем файл ngx_pagespeed.so :

Apache2

Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.

Установка

Устанавливаем apache и модуль для php:

Настройка

Заходим в настройки портов:

И редактируем следующее:

мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.

по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.

Разрешаем модуль мультипроцессовой обработки mpm_prefork :

Разрешаем модуль php :

Разрешаем модуль rewrite :

Разрешаем модуль setenvif :

Разрешаем автозапуск и запускаем службу:

Открываем браузер и вводим в адресную строку http://«IP-адрес сервера»:8080. Мы должны увидеть привычную страницу.

в разделе Server API мы должны увидеть Apache.

Apache2 Real IP

Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.

Установка

Создаем конфигурационный файл со следующим содержимым:

Настройка

Для проверки настройки открываем браузер и вводим в адресную строку http://«IP-адрес сервера», где откроется наша страница phpinfo.

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

Устанавливаем необходимые библиотеки для PHP и PHP-FPM:

Mysql (Mariadb)

Установка

Настройка

Разрешаем автозапуск и запускаем СУБД:

Зададим пароль для пользователя root:

Создаем и настраиваем пользователя:

Настраиваем возможность входа в adminer.php

Memcached

Memcached — Программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы.

Установка

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

Настройка

После разрешаем автозапуск и запускаем сервис кэширования:

Для проверки, что модуль memcached появился в PHP, открываем наш сайт в браузере — в phpinfo должна появиться новая секция Memcached.

Доступы и настройка находится в файле memcached.conf :

Настройка пользователя

Добавляем пользователя в группу www-data :

Даем права sudo пользователю:

Настройка сайта

Создаем каталог для сайта

Задаем права на папки:

Создаем индексный файл:

Настройка сайта

Nginx http

Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее).

apache2

Проверяем

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

https (Существующий Сертификат)

Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее).

Apache2

Проверяем

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

ngx_pagespeed on

Загрузка динамического модуля PageSpeed

Откройте файл nginx.conf :

Добавляем в начало:

Настраивается PageSpeed в http контексте, поэтому поместите эти директивы в новый файл конфигурации под названием example.com.conf в файле /etc/nginx/conf.d каталог.

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

Проверяем конфигурацию Nginx и применяем настройки:

  • Разработка веб-сайтов
  • Nginx
  • Серверное администрирование
  • Apache
  • DevOps

Читают сейчас

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

  • Скопировать ссылку
  • Facebook
  • Twitter
  • ВКонтакте
  • Telegram
  • Pocket

Похожие публикации

Как я решил протестировать нагрузочную способность web сервера

Триллер о настройке серверов без чудес с Configuration Management

Хостинг серверов VDSina идёт на помощь — раздаём серверы бесплатно

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Минуточку внимания

Комментарии 10

… мы рассмотрим процедуру установки и настройки работы двух web-серверов с целью использования преимуществ каждого из них…

Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.

Только ради этого ставится Apache? Конечно можно вести споры об удобстве .htaccess, но как по мне, nginx не зря отказался от децентрализированного управления.

Однажды, попался проект, в котором КАЖДАЯ директория (коих были тысячи) содержала свой .htaccess. Долго не мог понять, почему не выходит локально поднять проект, пока не выяснилось, что на продакшене все разруливалось через cPanel, которая в свою очередь проверяла наличие .htaccess в каждой директории, за счет чего проект и работал.
Давно перешел на nginx и забыл об .htaccess как о явлении, чему несказанно рад.

2.
MySQL пользователь

Нет. WITH GRANT OPTION позволяет пользователю назначать права другим пользователям.

Зачем перебивать директивы PHP в конфиге Apache? Логичней изменять конфигурацию PHP в файлах конфигурации PHP (куда уж логичнее).

И в статье, вы дважды создаете конфиг для Apache.

4.
Не понял, зачем вам вообще PHP-FPM, если вы хотите использовать Apache для работы с PHP? И зачем вы проксируете запросы в PHP-FPM из nginx?

  1. Тут в целом рассматривается как отдельную сборку, так и совместную, либо сервер со всеми технологиями, но могут на одних сайтах использоваться связка nginx + php-fpm, а на другом apache2 + nginx и.т.п.
  2. Поправлю
  3. Такой вариант я посчитал более логичным, чем изменять конфигурацию php, так как могут использовать CMS, где эти правила могут отличаться, например в битрикс php_value open_basedir $:/usr/local/share/smarty:/usr/local/share/pear — не должно быть.
  4. В первом пункте ответил, просто представил в одном блоке конфига nginx, как будет выглядеть при php (apache) и при php-fpm (nginx)

Бред какой-то! Nginx прекрасно поддерживает php, необходимость в .htaccess очень спорная, только из-за него (других причин я не увидел) взгромождать такого монстра, как apache http server — чушь, а не решение. Лучше бы эти ресурсы отдали бд и/или nginx.

Я конечно извиняюсь, но зачем здесь очередная статья по развертыванию LAMP/LEMP?

Я не нашел довольно простой статьи и решил написать её, в статье можно развернуть как nginx + php-fpm, так и apache2 + nginx

Эээ, серьезно, ни то что объяснить зачем и что делает ngx_pagespeed, но даже ссылку на сайт не дали? Вы там троян чтоль спрятали?

Люблю такие howto: если это для начинающих, то к чему вызов vi (притом без инструкции, как им пользоваться). Если для опытного пользователя, то зачем подробно мелочи разжевывать, и тогда почему только эта ОС? А если это шпаргалка для себя самого, то я могу накидать небольшой howto, как поднять лично для себя wiki, может, это будет лучше для хранения своих личных заметок?

Модуль ускорителя к nginx, кстати, «палка о двух концах». Его лучше без четкого понимания не использовать, тк выигрыш не всегда даже заметный, а вот проблем можно массу добавить. Важнее отключить сжатие на apache, но включить его на проксируемом через nginx контенте. А хотите модули и проблемы от неумелых рук — добавьте модуль защиты от атак, и попробуйте его отстроить как надо.

Уже 100 лет не поднимал серверы с нуля, кое-какие моменты с тех пор поменялись, так что статья будет полезна в плане краткого руководства.
Но вот на счет apache я присоединюсь к предыдущим товарищам: связка nginx+php-fpm, на мой взгляд, закрывает все вопросы работы php приложений и более эффективна. Т.е. для чего вообще тут apache?

Для односерверного развёртывания сайта и при достаточности оперативки Memcached не только не полезен но и вреден (тупо с ним "медленнее" сайт).

Источник

Как установить веб-сервер Apache с PHP, MySQL и phpMyAdmin на Windows

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

PHP — это язык программирования. Также называется среда для выполнения скриптов, написанных на PHP. В операционной системе, в том числе и Windows, PHP может быть установлен самостоятельно, без веб-сервера. В этом случае программы (скрипты) на PHP можно запускать из командной строки. Но веб-приложения очень часто используют PHP, данный интерпретатор стал, фактически, стандартом веб-серверов и поэтому они почти всегда устанавливаются вместе.

MySQL — это система управления базами данных (СУБД). Это также самостоятельная программа, она используется для хранения данных, поиска по базам данных, для изменения и удаления данных. Веб-приложения нуждаются в постоянном хранилище, поэтому для веб-сервера дополнительно устанавливается и СУБД. Кстати, вполне возможно, что вы слышали про MariaDB — это тоже СУБД. Первой появилась MySQL, а затем от неё ответвилась MariaDB. Для веб-приложений обе эти СУБД являются взаимозаменяемыми, то есть никакой разницы нет. В этой инструкции я буду показывать установку на примере MySQL, тем не менее если вы хотите попробовать новую MariaDB, то смотрите статью «Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows».

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

Особенность Apache и других компонентов веб-сервера в том, что их корни уходят в Linux. И эти программы применяют в своей работе основные концепции этой операционной системы. Например, программы очень гибки в настройке — можно выполнить установку в любую папку, сайты также можно разместить в любой папке, в том числе на другом диске, не на том, где установлен сам веб-сервер. Даже файлы журналов можно вынести на третий диск и так далее. У веб-сервера много встроенных модулей — можно включить или отключить их в любом сочетании, можно подключить внешние модули. Можно создать много сайтов на одном веб-сервере и для каждого из них установить персональные настройки. Но эта гибкая настройка выполняется через текстовые файлы — именно такой подход (без графического интерфейса) позволяет описать любые конфигурации

Не нужно этого боятся — я расскажу, какие файлы нужно редактировать и что именно в них писать.

Мы не будем делать какие-то комплексные настройки — наша цель, просто установить веб-сервер на Windows. Тем не менее было бы странно совсем не использовать такую мощь в настройке. Мы разделим сервер на две директории: в первой будут исполнимые файлы, а во второй — данные (файлы сайтов и баз данных). В будущем, когда возникнет необходимость делать резервные копии информации или обновлять веб-сервер, вы поймёте, насколько удобен этот подход!

Мы установим сервер в отдельную директорию. Для этого в корне диска C:\ создайте каталог Server. В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data (для сайтов и баз данных).

Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).

Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data.

Для работы всех компонентов веб-сервера необходим файл «Visual C++ Redistributable for Visual Studio 2015-2019» — это официальный файл от Microsoft. Чтобы его скачать перейдите по ссылке. После скачивания, запустите этот файл и выполните установку.

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

Как установить Apache на Windows

Перейдите на сайт apachelounge.com/download и скачайте .zip архив с веб-сервером:

Распакуйте папку Apache24 из этого архива в C:\Server\bin\.

Перейдите в каталог C:\Server\bin\Apache24\conf\ и откройте файл httpd.conf любым текстовым редактором.

В нём нам нужно заменить ряд строк.

Сохраняем и закрываем файл. Всё, настройка Apache завершена! Описание каждой изменённой директивы вы найдёте на этой странице.

Откройте командную строку (это можно сделать нажав одновременно клавиши Win+x).

Выберите там Windows PowerShell (администратор) и скопируйте туда:

Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить доступ.

Теперь вводим в командную строку:

И нажмите Enter.

Теперь в браузере набираем http://localhost/ и видим следующее:

Это означает, что веб-сервер работает. Чтобы увидеть там файлы, добавьте их в каталог c:\Server\data\htdocs\ — это главная папка для данных сервера, где будут размещаться все сайты.

Как установить PHP на Windows

PHP 8 скачайте со страницы windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность. Если вы затрудняетесь, какой именно файл скачать, то посмотрите эту заметку.

В папке c:\Server\bin\ создаём каталог PHP и копируем в него содержимое только что скаченного архива.

В файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавляем строчки:

И перезапускаем Apache:

В каталоге c:\Server\data\htdocs\ создаём файл с названием i.php, копируем в этот файл:

В браузере откройте ссылку http://localhost/i.php. Если вы видите что-то похожее, значит PHP работает:

Настройка PHP 8

Настройка PHP происходит в файле php.ini. В zip-архивах, предназначенных для ручной установки и для обновлений, php.ini нет (это сделано специально, чтобы при обновлении случайно не удалить ваш файл с настройками). Зато есть два других, которые называются php.ini-development и php.ini-production. Любой из них, при ручной установке, можно переименовать в php.ini и настраивать дальше. На локалхосте мы будем использовать php.ini-development.

Открываем файл php.ini любым текстовым редактором, ищем строчку

и заменяем её на

Теперь найдите группу строк:

и замените её на:

теперь раскомментируйте эту группу строк:

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

Материалы по дополнительной настройке, в том числе подключение поддержки PERL, Ruby, Python в Apache (только для тех, кому это нужно):

  • Как тестировать отправку писем в PHP на Windows
  • Настройка веб-сервера Apache для запуска программ Ruby на Windows
  • Настройка веб-сервера Apache для запуска программ Perl на Windows
  • Как настроить веб-сервер Apache на запуск Python в Windows

Как установить MySQL в Windows

Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице https://dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив.

На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись — но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download».

В каталог c:\Server\bin\ распаковываем файлы из только что скаченного архива. Распакованная папка будет называться примерно mysql-8.0.17-winx64 (зависит от версии), переименуйте её в mysql-8.0.

Заходим в эту папку и создаём там файл my.ini. Теперь открываем этот файл любым текстовым редактором и добавьте туда следующие строки:

Сохраните и закройте его.

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

По окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы.

Теперь служба MySQL будет запускаться при каждом запуске Windows.

Как установить phpMyAdmin в Windows

Сайт для скачивания phpMyAdmin: phpmyadmin.net.

Прямая ссылка на самую последнюю версию: phpMyAdmin-latest-all-languages.zip.

В каталог c:\Server\data\htdocs\ копируем содержимое только что скаченного архива. Переименовываем эту папку в phpmyadmin.

В каталоге c:\Server\data\htdocs\phpmyadmin\ создаём файл config.inc.php и копируем туда:

В качестве имя пользователя вводим root. Поле пароля оставляем пустым.

Заключение

Вот и всё — теперь у вас есть свой персональный локальный веб-сервер на своём домашнем компьютере.

Если вдруг у вас что-то не получилось, то скорее всего вы пропустили какой-то шаг или сделали его неправильно — попробуйте всё сделать в точности по инструкции. Если проблема осталась, то ознакомьтесь со справочным материалом «Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin» и если даже он не помог, то напишите о своей ошибке в комментарии.

Большое количество материалов по Apache на русском языке специально для Windows вы найдёте на этой странице.

Источник

Adblock
detector