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

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

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

Как в Ubuntu запустить виртуальные хосты Apache под разными пользователями

Зачем нужно запускать виртуальные хосты под разными пользователями?

По-умолчанию Apache работает “от имени и по поручению” юзера www-data. Это значит что для веб-сервера будут доступны только те ресурсы (файли и каталоги), которые доступны для юзера www-data, соответственно и изменить он сможет только их. Как правило, на одном веб-сервере может располагаться сразу несколько виртуальных хостов (несколько сайтов), по-умолчанию все они будут доступны для юзера www-data и в случае взлома или поражения одного из ресурсов, остальные также могут быть поражены. Поэтому с целью обеспечения дополнительной безопастности существет возможность запуска виртуальных хостов от имени разных юзеров.

Читать

Запуск MoinMoin2.0 под Apache22 на FreeBSD9

Предполагается, что moin2 расположен в /home/ishayahu/moin-2.0
Для начала нам надо установить сам апач и mod_wsgi, чтобы он мог работать с Flask (я использую для этого portmaster (/usr/ports/ports-mgmt/portmaster)):
#portmaster www/apache22 www/mod_wsgi
Далее создаём файл moin-2.0/moinmoin2.wsgi, чтобы апач мог запускать Flask приложение:
#для работы mod_wsgi, так как он блокирует sys.stdout
import sys
sys.stdout=sys.stderr
# Собственно для Flask
from MoinMoin.app import create_app
application = create_app('/home/ishayahu/moin-2.0/wikiconfig.py')

Теперь будем настроивать апач. Создадим конфигурацию виртульного хоста: файл /usr/local/etc/apache22/Includes/wiki.local.conf

    ServerAdmin meoc-it@mail.ru
    DocumentRoot /home/ishayahu/moin-2.0
    ServerName wiki.local
    ServerAlias www.wiki.local
    ErrorLog /home/ishayahu/wiki.local-error_log
    CustomLog /home/ishayahu/wiki.local-access_log combined
    WSGIDaemonProcess moinmoin2 user=ishayahu group=ishayahu threads=5
    WSGIScriptAlias / /home/ishayahu/moin-2.0/moinmoin2.wsgi
   
        WSGIProcessGroup moinmoin2
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
   
Настроиваем запуск вики как сервиса. Создаём файл для запуска апача в виртуальном окружении (нужно виртуальное окнужение для работы moin; не забыть chmod +x /root/start_wiki) /root/start_wiki:
#!/bin/bash
source /home/ishayahu/moin-2.0/env/bin/activate
/usr/local/etc/rc.d/apache22 onestart
Создаём файл для регистрации вики как сервиса /etc/rc.d/wiki (не забыть chmod +x /etc/rc.d/wiki):
#!/bin/sh
#
# PROVIDE: wiki
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name=»wiki»
start_cmd=»${name}_start»
stop_cmd=»/usr/local/etc/rc.d/apache22 stop»

wiki_start()
{
    /bin/bash /root/start_wiki
}

load_rc_config $name
run_rc_command «$1»
И в /etc/rc.conf:
wiki_enable=»YES»

Автор: Ishayahu Lastov