Установка php debian. Установка apache и php на Debian

Установка php debian. Установка apache и php на Debian

Несколько часов назад, о классном хостинге DigitalOcean . Если ты заинтересовался и хочешь попробовать его в действии, то тебе необходимо создать свой первый дроплет и установить/настроить все необходимые серверные компоненты (Apache , MySQL , PHP ). В этой заметке я хочу рассказать, как правильно установить и настроить популярную для всех хостингов связку: Apache , MySQL и PHP (LAMP). Заметка ориентирована на новичков в linux-мире.

Обновляем репозитории

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

Apt-get update

Установка Apache в Debian 7

Установка Apache не должна вызвать сложностей. Все сводится к вызову одной единственной команды (репозитории классная вещь):

Apt-get install apache2

Поле ее выполнения будет выдано сообщение об отсутствии некоторых пакетов и предложение на загрузку. Соглашайся, и приготовься пару минут лицезреть бегущие в консоли надписи. После завершения процесса установки протестируй работоспособность web-сервера. Для этого открой браузер и перейди по адресу http://ip_твоего_сервера. Если ты поднимаешь хост в DigitalOcean , то IP адрес ты узнаешь из панели управления дроплетами или выполнив в консоле команду:

Ifconfig eth0 | grep inet | awk "{ print $2 }"

Корректно установленный web-сервер выдаст страницу с надписью “It works! ”.

Следующим компонентом, который нам предстоит установить, будет СУБД MySQL. Для загрузки и установки MySQL требуется выполнить опять же одну команду:

Apt-get install mysql-server

Менеджер пакетов нам также предложит загрузить и установить зависимые компоненты, а после их загрузки будет запущена конфигурационная утилита. Первым ее вопросом будет запрос пароля для учетной записи “root”. Придумываем пароль посложней и жмем “enter”. Советую вводить пароль с клавиатуры самостоятельно, а не из буфера. Одина раз, таким образом я ввел ошибочный пароль и потом пришлось переустанавливать MySQL .

После завершения установки MySQL тебе потребуется выполнить сценарий: mysql_secure_installation . Для этого в окне терминала напиши команду:

Mysql_secure_installation

Сценарий сразу запросит у тебя пароль от учетной записи «root», который ты задавал во время установки. Вводи пароль и жми клавишу “Enter”. Если пароль был введен правильно, сценарий предложит его сменить. Поскольку ты наверняка придумал хороший пароль во время установки, вводи «N», тем самым отказавшись от смены пароля.

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

Далее сценарий предложит заблокировать root пользователю возможность подключаться с удаленных хостов. Для безопасности это очень хорошо, поэтому соглашаемся. Пользователь с полными правами должен подключаться к серверу баз данных только локально. Вводим «Y» и жмем клавишу «Enter». В очередном вопросе мастер предложит удалить тестовые базы. Они нам не нужны, поэтому соглашаемся. Последний вопрос будет связан с разрешение перезагрузки таблицы привилегий. Соглашаемся, и все наши ответы на предыдущие вопросы немедленно вступят в силу.

Устанавливаем PHP5 в Debian 7

Последним шагом будет установка PHP. Выполняется она также просто, как и установка Apache. Вводим в окне терминала команду:

Apt-get install php5 php-pear php5-mysql

Установка php5 в debian 7 занимает немного времени. Чтобы убедиться в корректности установки интерпретатора, потребуется перезапустить Apache . PHP взаимодействует с WEB-сервером посредством модуля, который будет автоматически запущен с перезапуском Apache. Для перезапуска Apache используй команду:

Service apache2 restart

Проверяем работоспособность PHP

Последним шагом на сегодня станет проверка работоспособности PHP. Попробуем создать тестовый сценарий и обратиться к нему через браузер. Вводим в терминале команду

Nano /var/www/phpinfo.php

Она запустит текстовый редактор «nano». В нем вводим стандартную, для проверки работы интерпретатора PHP строчку:

Сохраняем изменения в файле (ctrl + o ) и закрываем файл (ctrl + x ). Этим нехитрым действием мы создали файл по пути /var/www/phpinfo.php – папке хоста по умолчанию. Соответственно, чтобы обратиться к данному файлу удаленно мы должны вбить в браузере:

Http:///phpinfo.php

Если все компоненты были установлены правильно, то ты увидишь примерно страницу как на рисунке ниже.

Готов к труду и обороне

На этом шаге можешь считать, что WEB-сервер на Debian 7 полностью готов к работе. Ключевые компоненты установлены и готовы обслуживать толпы клиентов. Для полного счастья не хватает FTP доступа и удобной панели управления базами данных. Об этом, я расскажу завтра.

21 апреля 2014 в 14:36

Установка и настройка веб-сервера LAMP для разработки на PHP

  • Разработка веб-сайтов ,
  • PHP
  • Tutorial

Много начинающих веб-разработчиков переходят на дистрибутивы на базе Linux только лишь для того, чтобы создать свой стабильный веб-сервер для тестирования и отладки своих проектов. И проекты чаще всего, конечно же, на PHP. В данной статье я предлагаю Вам свой способ развертывания веб-сервера LAMP (Linux+Apache+MySQL+PHP) в очень доступной форме.

Данный способ уже несколько лет использую на.deb-based дистрибутивах. Ранее веб-сервер был установлен и отлично работал на Debian, Mint, Ubuntu, LMDE (с некоторыми поправками) и сейчас работает на elementaryOS.

Итак, начнем.

Заранее предполагаем, что наш сайт должен быть доступен по адресу mysite.zz , а папка с файлами сайта расположена по пути /home/user/server/mysite.zz. Веб-сервер будет устанавливаться на ElementaryOS. Поэтому в процессе настройки будет использован стандартный текстовый редактор scratch-text-editor. Можно использовать любой текстовый редактор, заменив «scratch-text-editor» на название своего редактора.

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

Вводим в терминале
sudo apt-get install apache2 mysql-server php5 phpmyadmin
При установке пакетов нам будет необходимо выполнить их предварительную настройку в псевдографическом режиме терминала.
В первом окне нам предлагают ввести пароль для MySQL пользователя «root». Вводим пароль и подтверждаем его:

ввод пароля для MySQL пользователя root


подтверждение пароля для MySQL пользователя root


Далее идет настройка phpmyadmin.
Здесь нас спросят, какой веб-сервер использовать для запуска phpmyadmin. Отмечаем apache2 клавишей пробела и жмем enter:

выбор веб-сервера для запуска phpmyadmin


На следующем экране читаем некоторую информацию и жмем enter

некоторая информация


Далее подтверждаем настройку базы при помощи dbconfig-common:

подтверждение настройки при помощи dbconfig-common


Вводим введенный выше пароль в

трех следующих экранах

2. Проверка работы сервера и phpmyadmin

Переходим в любом браузере по адресу localhost . Если сервер нормально установлен, то мы должны увидеть тестовую страницу сервера:

тестовая страница сервера


Для доступа к phpmyadmin переходим по ссылке localhost/phpmyadmin . Вводим логин «root» и пароль, введенный ранее:

страница входа phpmyadmin


Там же можно изменить язык интерфейса phpmyadmin.

Если все сделано верно, то мы перейдем к управлению нашими базами:

главная страница phpmyadmin

3. Настройка сервера

Создаем ссылку на phpmyadmin в /var/www
sudo ln -s /etc/phpmyadmin /var/www
Открываем конфигурационный файл сервера:
sudo scratch-text-editor /etc/apache2/apache2.conf
и добавляем в конец файла строчку:
ServerName localhost:80

/etc/apache2/apache2.conf

4. Добавление нашего сайта

Открываем файл hosts для добавления нашего сайта:
sudo scratch-text-editor /etc/hosts
и добавляем в файл строчку
127.0.1.1 mysite.zz

/etc/hosts

Создаем в любой папке конфигурационный файл сайта с названием «mysite.zz» с содержанием
AllowOverride All
и копируем его с правами суперпользователя в /etc/apache2/sites-available
sudo cp полный_путь_к_файлу /etc/apache2/sites-available/
Активируем наш сайт:
sudo a2ensite mysite.zz
Активируем модуль mod-rewrite (необходим для реализации ЧПУ):
sudo a2enmod rewrite
И перезапускаем сервер:
sudo /etc/init.d/apache2 restart

5. Проверка работы нашего сайта

Создаем файл index.php в папке нашего сайта (/home/user/server/mysite.zz), например, с таким содержанием:

Далее в любом браузере переходим по адресу mysite.zz

тестовая страница нашего сайта


Если мы видим нашу страничку, то все сделали верно.

6. Возможные проблемы

Phpmyadmin не доступен по адресу localhost/phpmyadmin
Для исправления этой ошибки необходимо переконфигурировать phpmyadmin
sudo dpkg-reconfigure phpmyadmin

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

Доступ к нашему сайту может быть запрещен сервером
Для исправления этой проблемы к имени конфигурационного файла нашего сайта в /etc/apache2/sites-available необходимо добавить расширение.conf
mysite.zz.conf
содержание файла должно быть отредактировано следующим образом
ServerAlias mysite.zz www.mysite.zz DocumentRoot /home/user/server/mysite.zz AllowOverride All Require all granted
А активация сайта должна производиться по имени конфига
sudo a2ensite mysite.zz.conf
Не определяется логин и пароль при входе в phpmyadmin
Для исправления этой ошибки внесем некоторые изменения в конфигурационный файл phpmyadmin.
Открываем его
sudo scratch-text-editor /etc/phpmyadmin/config.inc.php
и добавляем следующие строчки
$dbuser = "root"; $dbpass = "kenny";
после строк
$cfg["Servers"][$i]["controluser"] = $dbuser; $cfg["Servers"][$i]["controlpass"] = $dbpass;
Теперь phpmyadmin должен распознать наш логин и пароль.

Дополнение

В данной статье не было рассмотрено подключение проекта к базе данных. Вариантов подключения очень много как в процедурном PHP, так и в объектно-ориентированном. Единственное, что могу сказать по этому поводу, это то, что при любой реализации подключения к определенной базе необходимо будет использовать пользователя «root» и пароль, который мы указывали при настройке пакетов при их установке.

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

И в заключение отмечу, что настройки конфигурационный файл PHP php.ini находится в директории /etc/php5/apache2/.

Удачных Вам проектов и чистого кода!

В современном Web-е Linux является основной платформой для размещения разнообразных веб-серверов. Бесперебойность работы, удобство развертывания и обслуживания — наше все.

При рассмотрении развертывания веб-сервера на системе Linux за основу возьмем один из самых популярных дистрибутивов – Debian. Он зарекомендовал себя как один из самых стабильных дистрибутивов, имеет наиболее из всех дистрибутивов хранилище пакетов, а каждая его версия сопровождается длительным периодом поддержки. Использование Debian позволяет быть уверенным, что при обновлении пакетов на сервере, в большинстве, случаев ничего не поломается. Но это не точно.

Быстрый, надежный, хостинг в Европе!

Ищете хороший, и при этом недорогой хостинг для сайтов? Хотите быстрый, по-европейски надежный и самый лучший для вашего проекта? Компания FORNEX рада Вам помочь.

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

Теперь стоит перейти к LAMP.

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

L – Linux – операционная система

A – Apache2 – веб-сервер

M – Mysql (на данный момент пакет Mysql заменен на MariaDB) – система управления базами данных

P – PHP – язык программирования

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

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

Установка Apache не представляет никаких сложностей – необходимо просто установить одноименный пакет из репозитория Debian.

Для начала обновим список пакетов, если по какой-то причине вы не сделали этого после установки операционной системы:

Теперь можно перейти по ссылке http://(IP_адресвеб сервера) и проверить, появилась ли страница-заглушка.

Для начала остановимся на этом и перейдем к следующему пункту.

Mysql (MariaDB)

Как уже было сказано выше, в Debian 9 стандартный пакет Mysql был заменен на MariaDB. Данная СУБД является полностью совместимой, обладает идентичным синтаксисом и полностью открытым исходным кодом. Присутствие MariaDB, и СУБД как таковой, на веб-сервере необходимо для работы разнообразных систем управления контентом (CMS), таких как WordPress, Joomla и прочих.

Также, при установке MariaDB понадобится один из пакетов PHP, необходимый для работы с СУБД:

sudo apt install mariadb-server mariadb-client php7.0-mysql -y

Утилита просит на ввести пароль root-пользователя, но так как мы его еще не задали, то просто нажимаем Enter .

Задаем пароль привилегированного пользователя, утвердительно ответив на первый вопрос (вводим y на клавиатуре и жмем Enter) . Набираем придуманный нами пароль и подтверждаем его, введя еще раз.

Не переживайте из-за того, что не видите на экране символов, которые вводите с клавиатуры – так и должно быть.

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

  1. Удалить анонимных пользователей?

Отвечаем утвердительно – нам необходимо, чтобы вход в консоль управления СУБД осуществлялся только после ввода пароля.

  1. Запретить удаленное подключение к пользователю root?

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

  1. Удалить тестовую базу данных?

Удаляем не боясь. Она нам не к чему.

  1. Обновить привилегии пользователей?

Снова отвечаем утвердительно.

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

Sudo mysql –u root –p

sudo mysql –u root –p

Mysql – вызов утилиты управление СУБД

u root – подключаемся от пользователя root

p – указываем, что необходим ввод пароля

Вводим команду status; , чтобы получить информацию о состоянии сервера и убедиться, что MariaDB готова к работе:

Для выхода из консоли управления СУБД вводи команду exit;

PHP7.0

Мы подошли к заключительному компоненту стека LAMP – гипертекстовому процессору PHP. Он представляет собой скриптовый язык общего назначения, применяемый для разработки web-приложений. Давайте установим его интерпретатор и некоторые библиотеки для работы с Apache:

sudo apt install php7.0-common libapache2-mod-php7.0 php7.0-cli -y

Теперь проверим корректность установки PHP. Для этого перейдем в каталог веб-сервера:

ИНФО: каталогом для хранения web-приложений по умолчанию является /var/www/html. Изменить каталог или добавить новый можно путем редактирования виртуальных хостов – файлов конфигурации Apache, что будет рассмотрено в следующем пункте.

Cd /var/www/html

В этом уроке вы узнаете, как установить Apache, MariaDB и PHP7 (LAMP stack) на растяжку Debian 9. LAMP является наиболее распространенным стеком веб-сервисов для создания динамических веб-сайтов и веб-приложений.

Он состоит из четырех компонентов: Linux, Apache, MySQL / MariaDB, PHP — Linux — это операционная система; Apache — это веб-сервер; MySQL / MariaDB — это база данных; PHP — это серверный скриптовый язык.

Вообще, установка LAMP в Debian 9 как и в другом дистрибутиве основанном на Linux является очень простой. Особенно если вы хорошо знакомы с командной стройкой. Мы расскажем все очень подробно, чтобы даже новичок смог справиться.

Установка LAMP в Debian 9

Все четыре компонента являются свободными и с открытым исходным кодом. Однако, поскольку MySQL теперь принадлежит Oracle, и есть вероятность, что Oracle превратит его в продукт с закрытым исходным кодом, мы выберем MariaDB вместо MySQL. Вы можете следовать этому руководству на VPS (Virtual Private Server) или на локальном компьютере с Debian 9.

Обратите внимание, что при установке программного обеспечения на Debian вам необходимо иметь привилегии root. Можете добавить sudo в начале команды или использовать su-команду для переключения на пользователя root.

Шаг 1. Обновление пакетов программного обеспечения

LAMP (серверный стек) означает Linux, Apache, MySQL и PHP; четыре популярных программных компонента с открытым исходным кодом, используемых большинством веб-хостинга, веб-разработчиков, блогов и других. Мы подготовили справочник по установке вашего веб-сервера для тестовой среды в последней версии Debian. Вообще, установка LAMP в Debian 9 является очень простой, главное разобраться с основными функциями.

MariaDB заменяет сервер MySQL в качестве базы данных по умолчанию в Debian 9.

Установите Linux:
о том, что хорошего, интересного и инновационного преподнесли в Debian 9. Это является главным условием для установки всего остального. Также, рекомендуем ознакомиться с другими руководствами на сайте. Например, мы уже говорили о том, на вашей системе с Ubuntu.

Теперь мы перейдем к установке AMP (Apache версии 2, PHP версии 7, MariaDB версии 10.2) на Debian 9. Итак, давайте установим один за другим.

Установите Apache HTTP-сервер:
Для начала мы установим веб-сервер Apache. Откройте терминал, а затем переключитесь на пользователя root.

Обновите индекс репозитория пакета.

Имя пакета веб-сервера Apache — apache2. Установите пакет apache2, используя команду apt-get.

apt-get -y install apache2

Управление HTTP-сервером Apache:

Чтобы запустить сервер Apache2, запустите.

systemctl start apache2.service

Чтобы остановить сервер Apache2, запустите.

systemctl stop apache2.service

Чтобы перезапустить сервер Apache2, запустите.

Чтобы проверить статус сервера Apache2, запустите.

systemctl status apache2.service

Брандмауэр:

Разрешить HTTP-сервер Apache через брандмауэр.

ufw allow 80/tcp

ufw allow 443/tcp

Тестирование HTTP-сервера Apache:

Теперь мы проверим веб-сервер Apache, чтобы убедиться, что он работает правильно или нет. Откройте любой веб-браузер, а затем перейдите к следующему URL-адресу.

HTTP: // локальный /
ИЛИ

Http: // ваш-ф-надстройку ССГ /
Вы получите страницу «Apache2 Debian по умолчанию», эта страница по умолчанию подтверждает, что HTTP-сервер Apache работает нормально.

Установка сервера MySQL (MariaDB):
MariaDB — это замена MySQL-сервера, разработанная первоначальными разработчиками MySQL, чтобы остаться и иметь открытые исходные RDBMS. MariaDB теперь является одним из самых популярных серверов баз данных в мире.

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

apt-get -y install mariadb-server

Эта команда позволяет улучшить безопасность вашей установки MariaDB следующими способами:

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

Вы можете ограничить учетные записи root локальному хосту.

Вы можете удалить анонимные учетные записи пользователей.

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

Установите PHP:
По умолчанию сервер Apache поддерживает только.html, а не PHP, для этого вам нужно установить PHP и пакет расширения php для сервера MariaDB. Здесь мы установим PHP 7 на Debian 9.

apt-get -y install php php-mysql

После установки пакета PHP вам потребуется перезапустить HTTP-сервер Apache.

systemctl restart apache2.service

Тестирование PHP:

Используйте редактор VI для создания файла info.php.

vi /var/www/html/info.php

Эта команда vi откроет файл с именем info.php. Скопируйте / Вставьте ниже строки в файл info.php:

Сохраните и закройте файл, используя Esc +: wq.

Теперь откройте свой интернет-браузер и введите следующий URL-адрес в веб-адрес.

Http: //localhost/info.php

Http: //your-ip-add-ress/info.php
Страница будет выглядеть вот так:

Установка LAMP в Debian 9, как мы говорили выше, оказалась очень простой. Надеемся, вы быстро разобрались в основных значениях при установке. Но если у вас есть вопросы, то обязательно их задавайте в комментариях.

Выводы

Это все! Поздравляем, вы успешно установили LAMP на Debian 9. Если статья была полезной для вас, то не забудьте - поделитесь ссылкой.

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

В первой части этой истории был показан один из возможных вариантов настройки графического интерфейса Debian для удобного и привычного (исключительно субъективная точка зрения автора) использования человеком, пришедшим в Linux из Windows. И если для настройки виртуальной машины с Debian я пользовался только хостовой системой, то далее я специально работал только в этой виртуальной машине, ища информацию в интернете, конспектируя её в Notepadqq или gedit, слушая музыку через Аudacious, открывая файлы через LibreOffice и тому подобное. Таким образом можно обжиться и гораздо глубже почувствовать и оценить работу с операционной системой и её окружения, которое в стандартной поставке Debian довольно полноценно и функционально.

На данный момент, наша система настроена таким образом, что в дальнейшей можно только пользоваться командной строкой с консольным текстовым редактором, например, nano или использовать файловый менеджер Double Commander с интегрированным редактором Notepadqq. Возможно и комбинировать эти два метода, например, осуществляя навигацию в системе и правку конфигурационных файлов через файловый менеджер, а все остальные команды – через консоль. Все методы равнозначны для достижения конечного результата.

Текущая цель – создание сервера, чему и будет посвящена эта часть. Сервер можно настроить как с установкой и использованием графического интерфейса, так и без него. Во втором случае из предыдущей части можно просто пропустить разделы, касающиеся установки и настройки ПО для графического интерфейса и его настройки, установки пакетов графический программ и vmware-tools.

Я ничего не вижу плохого в использовании графического интерфейса при создании сервера: если человеку привычнее, удобнее и комфортнее сделать свой первый или второй сервер с графической средой – почему бы и нет? В конце концов, мой веб-сервер с графическим интерфейсом отработал год и отработает еще столько лет, сколько потребуется. Однако нужно иметь ввиду некоторые моменты.

В идеальном варианте единожды настроенная система должна будет работать без нашего вмешательства очень долго время. Мой сервер в «чистовом» варианте был настроен за два дня, а отработал без вмешательства практически год. Это значит, что графический интерфейс был задействован 0,05% времени активного существования сервера (компьютер работает только половину суток) и при этом занимал ресурсы: оперативную память, дисковое пространство, процессорное время. Все эти ресурсы лучше направить на обеспечение функционирования самого сервера: например, поднять memory_limit для PHP или вместить больше пользовательских данных на жесткий диск. Кроме этого, в случае проблем и неполадок при работе с реально удалённым сервером зачастую гораздо проще задействовать SSH-доступ . В данном контексте наличие графического интерфейса нежелательно и именно поэтому вторым сервером в моей сети уже была виртуальная машина без графического окружения, на которой из графического ПО был установлен только Midnight Commander, который я использовал для перемещения по файловой системе и редактирования файлов настроек через его редактор mcedit. Поэтому ниже приведена универсальная инструкция: даны команды с упором на использование командной строки, однако подразумевается, что в самый первый раз пользователь настраивает машину с графическим окружением, чем обусловлено использование браузера для локальной проверки доступности созданных сайтов и некоторые особенности настройки почтовой программы.

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

Примечание
При дальнейшем чтении в конструкциях вида http:// 127.0.0.1 (https:// 127.0.0.1) пробел после http:// (https://) необходимо убирать при вводе в адресную строку браузера. Пробел вставлен при публикации этой статьи с целью воспрепятствовать автоматической конвертации движком сайта текста в ссылки.

Установка веб-сервера Apache2:

# apt-get install apache2 apache2-doc

И это – всё. Каких-то двадцать мегабайт и веб-сервер уже установлен. Не надо никаких перезагрузок или настроек - сервер уже умеет открывать странички HTML . Однако современный сайт в интернете – это не только набор статичных файлов, стилей, шрифтов и прочего подобного как двадцать лет назад. Современный сайт содержит скрипты, написанные на PHP , а динамическая информация (например, текстовой контент, комментарии, профили пользователей) пишется не в файлы рядом с PHP файлами, а в специальную базу данных SQL . Для полноценного сервера необходимо обеспечить поддержку этих технологий. Тем более – это несложно:

# apt-get install mysql-server mysql-client phpmyadmin
# apt-get install php5 php5-mysql libapache2-mod-php5

В процессе установки MySQL будет задан запрос для установки пароля суперпользователя mysql и нужно будет выбрать сервер apache2 для автоматической настройки работы с mysql. При установке пакета phpmyadmin я согласился с автоматической настройкой пакета и везде ввёл пароль суперпользователя mysql. Установка PHP происходит без каких-либо запросов.

Я не стал использовать более быстрый PHP7 или свободный MariaDB в качестве альтернативной открытой замены SQL и решил построить свой сервер на «каноническом» LAMP = Linux + Apache + MySQL + PHP, используя старые и проверенные решения, в случае проблем с которыми я бы мог быстро и беспроблемно найти информацию в интернете.

Три команды (которые на самом деле можно свести в одну) и у нас локально установлен полноценный и современный сервер. Это совсем просто!

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

Настройка веб-сервера Apache2

Для начала необходимо убедиться в том, что веб-сервер работает. Для этого нужно открыть браузер и набрать адрес http:// 127.0.0.1 (localhost). Должна открыться веб-страница с обнадёживающей надписью: «Apache2 Debian Default Page. It"s works!». Сервер действительно работает. Если у вас есть набор файлов сайта 2000-го года, то его можно разместить в директории /var/www/html и он наверняка будет открываться на нашем сервере.

Все основные настройки веб-сервера хранятся по пути /etc/apache2. Если открыть эту директорию, то можно увидеть основной файл конфигурации apache2.conf и директории conf-available, mod-available, sites-available. В этих директориях содержатся заранее сконфигурированные файлы с настройками (так называемые сниппеты), которые можно просто использовать по умолчанию, со своими правками или взять их как шаблон для создания своих конфигураций. Например, в директории sites-available находится конфигурационный файл хоста по умолчанию 000-default.conf. Если его открыть и поизучать, то окажется, что этот файл как раз и задаёт путь, по которому открывается наш сайт по адресу http:// 127.0.0.1: «DocumentRoot /var/www/html». Мало того, строчка «» означает, что если я выпущу свою машину в локальную сеть и буду обращаться к ней по порту 80 (порт для HTTP), то мне будет открываться сайт, расположенный по пути /var/www/html. Как в этом убедиться?

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

# ifconfig

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

Inet addr:192.168.233.138

Теперь на хостовой машине я открываю в браузере адрес http:// 192.168.233.138 и ожидаю, что откроется знакомая страница. Но… она не открывается. Через некоторое время мой браузер пишет: «Время ожидания соединения истекло». И правильно пишет. Ведь в первой части я включил файрвол, но порт 80 не открыл! Исправим это:

# ufw allow 80

Снова пробуем открыть адрес http:// 192.168.233.138 и убеждаемся, что ожидаемая страница открывается. Виртуальный хост в виртуальной машине открылся из вне всей этой виртуализации. Мы сделали небольшой шаг в деле постройки своего маленького виртуального интернета.

Помимо директорий -available так же присутствуют ещё директории -enabled, которые содержат то, что на данный момент «включено». Если заглянуть в них, то можно увидеть, что эти директории содержат ссылки на файлы, находящиеся в директориях -available. В директории sites-enabled на данный момент только одна ссылка – на файл /etc/apache2/sites-available/000-default.conf. Это очень удобно - ярлыками мы можем управлять включением или отключением хостов без правки их конфигурационных файлов. Кроме этого источник конфигурации – один файл в независимости включена эта конфигурация сейчас или нет и это предотвращает ошибки, когда что-то правится в каком-то одном файле, а в другом - забывается. Для отключения нашего хоста нужно удалить требуемый ярлык, а для его включения – создать его. Для того, чтобы не удалять или создавать ярлыки вручную проще и надёжнее использовать специальные утилиты.

Отключаем виртуальный хост:

# a2dissite 000-default

Включаем виртуальный хост:

# a2enssite 000-default

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

# service apache2 reload

# service apache2 restart

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

Начать нужно с того, что при отключении виртуального хоста 000-default отключения как такового не происходит. То есть, сайт как открывался изнутри и снаружи виртуальной машины – так и будет открываться в независимости от нахождения его конфигурации в папке sites-enabled. Это было неожиданно и я потратил относительно много времени, чтобы понять всё ли я правильно сделал или понял. До конца я с этим так и не разобрался, видимо это связано с тем, что путь /var/www/html задан глобально как директория по умолчанию для DocumentRoot. Так как мне не хотелось, чтобы было включено и доступно что-то лишнее я решил избавиться от самой директории html, а для всех вложенных /var/www по умолчанию доступ запретить.

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

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

ServerName localhost ServerAdmin user@localhost DocumentRoot /var/www ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Этой конфигурацией я переустановил директорию по умолчанию на /var/www, разрешил серверу следовать по символическим ссылкам в этой директории, разрешил серверу выполнять все директивы, объявленные в найденных файлах.htaccess и запретил доступ в этот каталог. Логика этих действий в том, чтобы я мог управлять доступом в эту директорию не обращаясь к настройкам веб-сервера вообще и не перезагружая его. Теперь нужно проверить это решение.
Переносим файл:

# mv /var/www/html/index.html /var/www/index.html

И удаляем каталог:

# rm /var/www/html

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

# service apache2 restart

Создаём файл:

# nano /var/www/.htaccess

В котором прописываем одну строку (без кавычек): «Require all granted».

Подытожим. Теперь пути /var/www/html нет, но хост по умолчанию переконфигурирован на путь /var/www, по которому находится файл index.html, причём по умолчанию, на уровне веб-сервера, доступ в эту директорию запрещён, но разрешается содержимым локально расположенного там файла.htaccess.

Открываем в браузере http:// 127.0.0.1 и видим уже знакомую страницу «Apache2 Debian Default Page. It"s works». Теперь проверим работоспособность «локального» управления доступом:
Удаляем файл.htaccess:

# rm /var/www/.htaccess

И обновляем в браузере открытую страничку - должна открыться страница с уведомлением об ограничении доступа (Forbidden). Да, всё это работает, значит всё сделано правильно.

В принципе, этих нехитрых настроек вполне достаточно для дальнейшей беспроблемной работы веб-сервера. Но мне этого показалось мало. Сейчас наш веб-сервер умеет работать только по протоколу HTTP. Но как быть с протоколом HTTPS? Ведь если в будущем выводить проекты на базе этого веб-сервера в интернет, то умение работать по этому протоколу как минимум желательно. И я решил организовать поддержку HTTPS на основе создания самоподписного сертификата SSL .

Сначала нужно получить SSL сертификат, который будет установлен на наш сервер. Никакого домена у нас нет, да и статичного IP адреса тоже по сути не имеется. Но это всё неважно, потому что сертификат я буду генерировать самостоятельно, используя средства своей системы.

Внимание! В приведённой ниже инструкции считается, что сервер установлен на «безымянную» машину. Если имеется реальный IP или доменное имя, то их нужно указать в ТРЁХ местах: ; ; - в соответствующих конструкциях заменить IP/Domain на IP адрес или доменное имя. В приведённом ниже тексте вместо IP/Domain используется localhost.

Сгенерируем SSL-сертификат:

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Данная команда создаст самоподписной сертификат стандарта Х.509 сразу аж на 10 лет с пропуском опции защиты сертификата парольной фразой - это нужно чтобы при запуске сервер Apache имел возможность читать файл без вмешательства пользователя, так как установив пароль, придется вводить его после каждой загрузки или перезагрузки сервера. Вместе с сертификатом будет создан новый ключ RSA на 2048 бит, которым и будет подписан сертификат. Опции –keyout и –out указывают пути, по которым OpenSSL должен сгенерировать ключ и сертификат.

В процессе создания сертификата будут заданы вопросы, на которые я указал следующие данные:

Country Name = MW
State or Province Name = Sun System
Locality Name = Lunar
Organization Name = Hellium Inc.
Organizational Unit Name = 2
Common Name = localhost
Email Address = user@localhost

Далее нужно создать ключи Диффи-Хеллмана для обеспечения поддержки PFS :

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

В терминале побегут точечки и плюсики и после окончания мультфильма можно создать файл ssl-params.conf, в котором будут определены параметры SSL для сервера:

# nano /etc/apache2/conf-available/ssl-params.conf

Для безопасной актуальной настройки я использовал код, сгенерированный в генераторе для конфигурации SSL на mozilla.github.io . В генераторе я выбрал сервер Apachе2, профиль Modern и правильно выставил версии сервера и OpenSSL, которые можно узнать по следующим командам:

# apache2 -v
# openssl version

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

# 14-01-2018 / for apache2 2.4.10 & openssl 1.0.1t # from https://mozilla.github.io/server-side-tls/ssl-config-generator/ # parametrs help: https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html # modern configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder on SSLCompression off # OCSP Stapling, only in httpd 2.3.3 and later SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000)
Теперь настроим виртуальный хост с поддержкой SSL:

Текст этого файла я привёл к следующему виду:

ServerAdmin user@localhost ServerName localhost DocumentRoot /var/www Options FollowSymLinks AllowOverride All Require all denied SSLOptions +StdEnvVars SSLOptions +StdEnvVars
Из вышеприведённого следует, что у нас в качестве директории DocumentRoot определена так же /var/www, доступ к которой настроен аналогично предыдущим настройкам. Включен механизм HSTS , который способствует принудительной установке соединения через протокол HTTPS. Включена поддержка SSL с указанием используемых сертификата и ключа, а также подключена поддержка обработки данных сертификата в PHP и CGI -скриптах. Последняя секция призвана обеспечить совместимость с ранними версиями браузера Internet Explorer и, в целом, необходимой не является.

Теперь сделаем финальные штрихи.

Откроем порт для SSL:

# ufw allow 443

Включим модули apache для поддержки SSL и HSTS:

# a2enmod ssl
# a2enmod headers

Включим конфигурацию SSL:

# a2enconf ssl-params

Включим виртуальный хост с поддержкой SSL:

# a2ensite default-ssl

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

# service apache2 restart

Вот и наступил интересный момент – проверки работоспособности нового функционала настроенной системы.

Создаём файл:

# nano /var/www/.htaccess

Открываем в браузере https:// 127.0.0.1. Должна открыться страница о неизвестном сертификате, после принятия которого (однократное или постоянное разрешение) откроется уже знакомая страница с уведомлением о запущенном веб-сервере.

Удаляем файл.htaccess:

# rm /var/www/.htaccess

И обновляем в браузере открытую страничку - должна открыться страница с уведомлением об ограничении доступа (Forbidden). Всё работает корректно. Теперь наши сайты доступны и по HTTP и через HTTPS.

Доступ по HTTP можно оставить включенным, отключить или сделать принудительное перенаправление на HTTPS.

Для включенного доступа HTTP делать ничего не нужно, так как запросы на порты 80 и 443 сервер обрабатывает индивидуально и наш сайт в папке /var/www будет открываться как через HTTP, так и через HTTPS.

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

# a2dissite 000-default
# service apache2 restart

Теперь, если открыть в браузере http:// 127.0.0.1 должна открыться страница с уведомлением об отсутствии страницы (Not Found).

Самый интересный третий вариант. В этом случае HTTP формально остаётся включенным, но обработка данных будет принудительно перенаправлена через HTTPS.

Для этого сначала включим модуль перенаправления:

# a2enmod rewrite

Теперь откроем файл 000-default.conf:

# nano /etc/apache2/sites-available/000-default.conf

И перед закрывающимся тегом добавим нижеприведённый текст:

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Перезапустим сервер:

# service apache2 restart

Создаим файл:

# nano /var/www/.htaccess

В котором прописываем одну строку: «Require all granted».

Теперь, если открыть в браузере адрес http:// 127.0.0.1 нас автоматически перенаправит на https:// 127.0.0.1 с предупреждением о неизвестном сертификате (если ранее он не был внесён в список исключений в браузере), после принятия которого откроется уже знакомая страница с уведомлением о запущенном веб-сервере.

Настройка SQL

Для первичной настройки mysql достаточно выполнить следующую команду:

# mysql_secure_installation

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

  • отказался от изменения пароля root;
  • подтвердил удаление анонимных пользователей из БД;
  • подтвердил блокировку удаленного подключения для root (в целях безопасности пуcть root подключается только локально);
  • подтвердил удаление тестовых БД;
  • согласился с перезагрузку таблиц привилегий.
Для проверки работоспособности mysql можно выполнить следующую команду:

# mysql -uroot -p

После ввода пароля суперпользователя mysql мы видим приглашение mysql – значит сервис запущен и работает. Выйти из терминала mysql можно введя команду «exit».

Для проверки работоспособности phpmyadmin открываем в браузере адрес http:// 127.0.0.1/phpmyadmin. Если открылась страница c приглашением войти в phpmyadmin значит сервис запущен и работает.

Настройка PHP

После установки PHP я открыл файл его настроек:

# nano /etc/php5/apache2/php.ini

И привёл некоторые параметры к следующему виду:

  • memory_limit = 1024M
  • default_charset = «UTF-8»
  • upload_max_filesize = 256M
  • sendmail_path = /usr/bin/fake_sendmail.sh
С помощью модуля PHP можно обеспечить кеширование данных в памяти. Кеширование полезно при высокой нагрузке на сервер для данных, генерация которых требует большого количества ресурсов, например, результатов запросов к базе данных или обработкой «тяжелых» кусков шаблона сайта. В качестве сервера кеширования я выбрал модуль memcached .

Установка memcache:

# apt-get install memcached php5-memcached

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

# nano /etc/memcached.conf

В настройках я увеличил размер используемой памяти для кеширования: -m 64 -> -m 256. И проверил наличие режима работы только в локальной зоне: -l 127.0.0.1.

Перезапускаем сервис кеширования и веб-сервер:

# service memcached restart
# service apache2 restart

Теперь нужно убедиться в работоспособности сервиса. Для этого создаём файл:

# nano /var/www/info.php

И добавим в него следующий текст:


Не забываем проверить наличие файла.htaccess в директории /var/www с соответствующим разрешающим содержимым, если его там нет – создаём.

Теперь можно открыть в браузере http:// 127.0.0.1/info.php - должна открыться страница со сведениями о PHP, в которой нужно проверить наличие в ней секции memcached. Если таблица появилась - PHP работает.

Проверить запущенный сервис memcached можно так:

$ ps -aux | grep memcached

В терминале должна вернуться строка, содержащая настройки memcached.

Создание почтовой заглушки для PHP

При настройках PHP в качестве параметра sendmail_path был указан шелл-скрипт. Функция этого скрипта - сохранять письма, отправленные через стандартную функцию php mail(), на локальной машине, в какой-то удобной папке, а не отправлять их куда-то.

Создадим файл:

# nano /usr/bin/fake_semdmail.sh

Со следующим содержимым:

#!/bin/sh prefix="/var/mail/sendmail/new" numPath="/var/mail/sendmail" if [ ! -f $numPath/num ]; then echo "0" > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num name="$prefix/letter_$num.txt" while read line do echo $line >> $name done chmod 777 $name /bin/true
Сделаем этот файл исполняемым:

# chmod +x /usr/bin/fake_semdmail.sh

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

# mkdir /var/mail/sendmail /var/mail/sendmail/cur /var/mail/sendmail/new /var/mail/sendmail/tmp

И назначаем права, чтобы сервер мог записывать файлы в этой папке:

# chmod 777 -R /var/mail/sendmail

Теперь все исходящие письма будут складываться в /var/mail/sendmail. Их можно просматривать текстовым редактором, а можно собирать почтовой программой. В комплекте предустановленного ПО Debian есть почтовый клиент Evolution. При настройке учётной записи в качестве типа сервера нужно выбрать «Почтовые каталоги в формате Maildir» и указать путь к почтовому каталогу (/var/mail/sendmail), а в качестве сервера указать «Sendmail».

Всё. В целом с сервером мы закончили - получена универсальная виртуальная машина, на базе которой можно строить свои сетевые сервисы. Я оставил и HTTP, и HTTPS доступы. Однако, после того как получен опыт по созданию и настройке сервера, а также добавлению сайтов (см. ниже) на него, я бы рекомендовал создать новую виртуальную машину с сервером без графического интерфейса как более оптимальную по потреблению ресурсов.

Настройка доступа SSH

Сервер не был бы полноценным сервером без наличия доступа через SSH. Так называемый «шелл» позволяет быстро и безопасно подключиться к удалённому серверу, используя, например, небольшую программку putty, - на локальном компьютере мы получаем прямой доступ к терминалу удалённого сервера.

Установка сервиса:

# apt-get install ssh

Откроем порт для SSH (вообще-то, порт по умолчанию должен быть под номером 22, но ниже я переопределил порт в конфигурации SSH):

# ufw allow 106

Для организации доступа для нашего пользователя user нужно открыть файл:

# nano /etc/ssh/sshd_config

И добавить в конец файла директиву:


Кроме этого, в целях безопасности я сделал в этом файле следующие изменения:
  • сменил порт с 22 на какой-то другой (список портов): Port 22 -> Port 106
  • отключил устаревший протокол: Protocol 2,1 -> Protocol 2
  • отключил удалённый доступ для root: PermitRootLogin yes (или PermitRootLogin without-password) -> PermitRootLogin no
После чего перезапускаем сервис:

# service sshd restart

Теперь я могу запустить программу putty на хостовой машине и подключиться к своему серверу в консольном режиме введя адрес подключения 192.168.233.138, порт 106 и имя пользователя user. При подключении необходимо ответить утвердительно на принятие ключей и ввести пароль пользователя user. Если понадобиться выполнить команды от суперпользователя, то можно использовать уже известную команду su.

Защита доступа

Я не стал заниматься защитой веб-сервера от DDoS, изначально полагая, что если он будет размещаться на VPS/VDS, то эффективную защиту обеспечит хостинг, а если делать свой сервер «торчащий» в интернет, то этим вопросом надо заниматься серьёзно и это тема отдельной статьи. Защита от Slow HTTP DDoS делается относительно просто в соответствии с многочисленными инструкциями в интернете, но она не спасёт от распределенной атаки, производимой с множества разных IP адресов.

При DDoS наш сервер просто перестанет работать на какое-то время. Но после атаки, которая не будет длиться вечно, работа сервера восстановится. А вот если кто-то сумеет заполучить доступ по SSH, то контроль за сервером будет потерян, а данные на нём скомпроментированы, поэтому контроль доступа к серверу по SSH – здравая идея.

Самое простое и банальное, что можно сделать – сменить стандартный порт, что мы и сделали при настройке SSH. Лет пять назад я «выставил» только что созданный сервер в интернет по недавно полученному реальному IP адресу и был удивлён тому, что за неделю существования сервера, про который ещё никто ничего не знал, в логах системы накопилось большое количество записей о неудачных попытках авторизации по SSH и FTP. Очевидно, что в современном интернете существует немалое количество сервисов-роботов, которые ищут компьютеры с открытыми портами и пытаются к ним подключиться, перебирая пароли по имеющейся базе или используя метод полного перебора.

К счастью для нас, существует такая штука как fail2ban:

# apt-get install fail2ban

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

Параметры блокировки можно задавать индивидуально:

# nano /etc/fail2ban/jail.local

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

# общие настройки
ignoreip = 127.0.0.1
bantime = 2592000
findtime = 43200
maxretry = 6
banaction = iptables-multiport
# настройка отправки сообщения на почту
destemail = user@localhost
sendername = Fail2Ban
mta = sendmail
action = %(action_mwl)s

# защита SSH
enabled = true
port = 106
filter = sshd
logpath = /var/log/auth.log

# выявляем неудачные попытки ввода пароля
enabled = true
port = http,https
filter = apache-auth

# выявляем потенциальные сканирования для применения эксплойтов и php уязвимостей
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log

# выявляем попытки переполнения Апача
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2

# выявляем неудачные попытки в поиске домашней директории на сервере
enabled = true
port = http,https
filter = apache-nohome
logpath = /var/log/apache*/*error.log
maxretry = 2

Приведённая выше настройка позволяет не контролировать локальный доступ, а при шести неверных попыток входа в течение 12 часов банит IP адрес атакующего, используя iptables, на 30 дней. Контролируется не только доступ по порту для SSH, но и подозрительные действия, направленные на дестабилизацию работы веб-сервера.

Справочный материал по веб-серверу

Запуск, остановка и перезагрузка сервера:

# service apache2 start
# service apache2 stop
# service apache2 restart

# service apache2 reload

Включение и отключение хоста test:

# a2ensite test
# a2dissite test

Включение и отключение конфигурации test:

# a2enconf test
# a2disconf test

Проверка синтаксиса файлов (должно вернуться: «Syntax OK»):

# apache2ctl configtest

Вариант добавление сайта с доступом по HTTP или HTTPS используя имеющийся виртуальный хост

Допустим, на наш сервер нужно добавить новый сайт, размещённый в директории site.com, расположенной в /home/user/www. Это может быть удобно, так как пользователю user не нужно будет покидать пределы своего домашнего каталога при работе с сайтом.

# chmod 755 /home/user

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

$ mkdir /home/user/www /home/user/www/site.com

Для добавления доступа по HTTP открываем файл:

# nano /etc/apache2/sites-available/000-default.conf

Или для добавления доступа по HTTPS открываем файл:

# nano /etc/apache2/sites-available/default-ssl.conf

И добавляем в открытый файл нижеприведённое содержимое перед закрывающимся тегом /VirtualHost:


Перезапускаем веб-сервер:

# service apache2 restart

Проверяем доступность сайта по адресу http:// 127.0.0.1/site.com или https:// 127.0.0.1/site.com (методика проверки - см. ниже). Нужно обратить внимание, что сайт будет открываться в независимости от наличия файла.htaccess, так как для директории с сайтом установлена директива: «Require all granted».

Вариант добавление сайта с доступом по HTTP или HTTPS используя новый виртуальный хост и настройкой обращения к сайту через его доменное имя, а не IP

Условия задачи – те же, что и выше: допустим, на наш сервер нужно добавить новый сайт, размещённый в директории site.com, расположенной в /home/user/www. Но теперь я ещё хочу обращаться к сайту вводя в строку браузера только его доменное имя.

Выставляем права для пользовательского каталога (на всякий случай):

# chmod 755 /home/user

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

$ mkdir /home/user/www/site.com

# ln -s /home/user/www/site.com /var/www/site.com

Для добавления доступа по HTTP создаём файл:

# nano /etc/apache2/sites-available/site.com.conf

Options FollowSymLinks AllowOverride All Require all granted # Redirect HTTP->HTTPS #RewriteEngine On #RewriteCond %{HTTPS} off #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Или для добавления доступа по HTTPS создаём файл:

# nano /etc/apache2/sites-available/site.com-ssl.conf

И добавляем в него следующее содержимое:

ServerName site.com ServerAlias www.site.com ServerAdmin user@localhost DocumentRoot /var/www/site.com Options FollowSymLinks AllowOverride All Require all granted # HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security "max-age=15768000" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE " \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE " ssl-unclean-shutdown
В /etc/hosts добавляем строку «127.0.0.1 site.com»:

# echo >> /etc/hosts 127.0.0.1 site.com

Активируем HTTP хост:

# a2ensite site.com.conf

Или активируем HTTPS хост:

# a2ensite site.com-ssl.conf

Перезапускаем веб-сервер:

# service apache2 restart

Проверяем доступность сайта по адресу http:// site.com или https:// site.com (методика проверки – см. ниже). Нужно обратить внимание, что сайт будет открываться в независимости от наличия файла.htaccess, так как для директории с сайтом установлена директива: «Require all granted».

Все действия производятся внутри гостевой виртуальной машины. Было бы интересно «открыть» сайт в браузере хостовой системы. Это несложно. Мы знаем доменное имя и IP адрес гостевой машины. Если хостовая система Windows, то необходимо открыть файл c:\Windows\System32\drivers\etc\hosts и в самый конец добавить следующую строчку:


После этого изменения компьютер или хостовую систему придётся перезагрузить. Теперь, при открытии в браузере сайта site.com обращение к нему будет перенаправлено на нашу виртуальную машину. Фактически, мы сделали простейшую маршрутизацию в своём личном интернете на уровне хостовой операционной системы.

В случае, если нужен доступ к виртуальному хосту только по HTTPS, но не хочется терять соединения по протоколу HTTP можно настроить редирект:

Создать файл /etc/apache2/sites-available/site.com.conf по вышеприведённой инструкции, если он не создан
- в файле /etc/apache2/sites-available/site.com.conf раскомментировать три строки RewriteEngine/RewriteCond/RewriteRule
- активировать хост site.com.conf, если он не активирован
- перезапустить сервер: # service apache2 restart

Проверка работоспособности добавленного сайта

Самый простой способ проверки доступности сайта - разместить в его корневой директории файл index.html с каким-то содержимым.

Создаём файл index.html:

$ nano /home/user/www/site.com/index.html

И добавляем в него следующее содержимое:

TEST OK

TEST OK


В зависимости от метода добавления сайта открыть в браузере адрес http:// 127.0.0.1/site.com (https:// 127.0.0.1/site.com) или http:// site.com (https:// site.com) - должна открыться страница содержащая текст «TEST OK».

Справочный материал по MySQL

Создание пользователя user123 с паролем pass123 и базой данных db123 через консоль.

Войти в mysql, введя пароль суперпользователя mysql при запросе:

# mysql -u root -p

И создать базу данных (префикс «mysql>» набирать не нужно, точка с запятой в конце обязательна):

mysql> CREATE DATABASE `db123`;

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

mysql> CREATE USER "user123"@"localhost" IDENTIFIED BY "pass123";

Выдать привилегии пользователю на базу данных:

mysql> GRANT ALL PRIVILEGES ON `db123`.* TO "user123"@"localhost";

Обновить таблицу привилегий:

mysql> FLUSH PRIVILEGES;

Выйти из mysql:

mysql> exit

Для проверки открыть адрес http:// 127.0.0.1/phpmyadmin и авторизоваться с реквизитами доступа user123/ pass123. Должен открыться доступ к базе данных db123.

Изменение пароля для root mysql c pass123 на pass456:

# mysqladmin -uroot -ppass123 password pass456

Изменение пароля пользователя user123 c pass123 на pass456:

# mysqladmin -uuser123 -ppass123 password pass456

Удаление пользователя user123:

mysql> DROP USER "user123"@"localhost";

Удаление таблицы db123:

mysql> DROP DATABASE `db123`;

Справочный материал по fail2ban

Перезапуск сервиса:

# service fail2ban restart

Проверка запущенных правил:

# fail2ban-client status

Подробная статистика по правилу sshd:

# fail2ban-client status ssh

Разбанивание:

# fail2ban-client set ssh unbanip Banned_IP



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows