Debian 9 веб сервер

Debian 9 веб сервер

Недавно приобрел виртуальный выделенный сервер (VPS) для размещения сайтов. Выбор пал на ОС Debian 9 x64, который поставщик услуг разворачивает сам,
но, по сути, самостоятельно поднять сервер Debian с нуля тоже не составит труда. Поэтому перейдем к установке LAMP – Linux, Apache, MySQL, PHP.

Итак, имеем Debian 9 с уже установленным подключением SSH.

Переходим командой su в режим SuperUser и далее все происходит под этим пользователем.

Обновляем пакеты и устанавливаем aptitude

Установка apache + php

Настраиваем MySQL. Вводим пароль, убираем демо базы

Устанавливаем PhpMyAdmin для удобной работы с базами MySQL

После установки PhpMyAdmin будет доступен по адресу http(s)://<ваш_сервер>/phpmyadmin

Разрешаем вход в PhpMyAdmin от MySQL пользователя которого мы сейчас создадим:

Подключаемся к MySQL

Создаем пользователя для phpMyAdmin. Для этого построчно запускаем (заменяем some_user и some_pass на желаемый юзер/пароль):

Дополнение:

На момент написания статьи версия PHP, устанавливаемая из пакетов Debian это PHP 7.0.

Возможно вам понадобится более ранняя версия PHP. В репозиториях Debian я не нашел 5-й версии PHP, он оказался тут — https://packages.sury.org/php/

Подключим его к нашему серверу:

Получаем ключ gpg:

Добавляем новый репозиторий в свои источники:

Теперь можно установить PHP5

Устанавливаем PHP 5.6

Для переключения между версиями PHP

Аналогично можно установить версии 7.1, 7.2

Мы получили полноценный веб-сервер на Debian с несколькими версиями PHP.

В конце добавлю, что все это работает на виртуальной машине с 512 Мб памятью, процессором в 1000 МГц и диском в 10 Гб. Сама сборка занимает порядка 1,5 Гб.

Технический блог специалистов ООО"Интерфейс"

  • Главная
  • Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server

Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server

  • Автор: Уваров А.С.
  • 09.06.2015

Веб-сервер Apache без преувеличения можно назвать стандартом де-факто в интернет. Большинство популярных систем управления сайтами и иных веб-приложений разрабатываются таким образом, чтобы работать с данным веб-сервером "из коробки". Поэтому, если вам нужен веб-сервер широкого применения, то Apache будет лучшим выбором. В данной статье мы расскажем, как установить и настроить полноценный веб-сервер на базе Debian / Ubuntu Server.

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

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

Для установки мы будем использовать платформу Debian / Ubuntu. Системы, в зависимости от релиза, отличаются набором ПО, но все изложенное ниже будет одинаково применимо к любой из них. Существующие отличия будут оговорены отдельно. На момент написания статьи актуальны следующие релизы систем и версии ПО:

  • Debian 8 Jessie: Apache 2.4.10, PHP 5.6.7, MySQL 5.5.43
  • Debian 7 Squeeze: Apache 2.2.22, PHP 5.4.39, MySQL 5.5.43
  • Ubuntu Server 14.04 LTS: Apache 2.4.7, PHP 5.5.9, MySQL 5.5.43
  • Ubuntu 12.04 LTS: Apache 2.2.22, PHP 5.3.10, MySQL 5.5.43

Все вышеуказанные выпуски содержат относительно современные версии ПО, но есть некоторые особенности. Так входящий в состав Ubuntu 14.04 и Debian 8, Apache 2.4 имеет достаточно серьезные отличия от Apache 2.2 и не все CMS (системы управления контентом, "движки") и веб-приложения умеют работать с ним, особенно это касается старых версий. Так, например, вы не сможете использовать Apache 2.4 для веб-доступа к базам 1С:Предприятие. Поэтому, если вы решили выбрать версию 2.4 — уточните совместимость с нею всех планируемых к размещению CMS и веб-приложений.

Кроме того, MySQL из состава Ubuntu Server 12.04 / 14.04 не работает внутри контейнеров OpenVZ, которые широко используются для предоставления услуги VPS. Проблема решается заменой MySQL из репозитория на версию от MySQL Community (разработчики) или один из форков, например, MariaDB.

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

Мы не будем останавливаться на установке и подготовке серверной ОС, более подробно вы можете ознакомиться с этим процессом в наших статьях для Debian и Ubuntu Server. Также не забудьте правильно настроить язык и региональные стандарты системы. Все приведенные ниже действия следует выполнять с правами суперпользователя, например, с помощью команды sudo.

Установка Apache

Установка веб-сервера предельно проста:

Для проверки его работы наберите в браузере IP-адрес сервера, и вы увидите стандартную страницу заглушку:

Для Apache 2.4 она выглядит несколько иначе, но смысл от этого не меняется.

Настройки сервера содержатся в /etc/apache2/apache2.conf, к которому подключаются дополнительные файлы из директорий mods-enabled и sites-enabled. При этом никто не мешает вам внести все указанные настройки непосредственно в apache2.conf — все будет работать, но это резко снижает удобство администрирования, так как требует постоянной правки основного файла конфигурации, в то время как настройки во внешних файлах легко включаются и отключаются при помощи специальных инструментов.

Читайте также:  86 Или 64 разрядная система как узнать

С этой целью каталоги mods-enabled и sites-enabled не содержат файлов конфигурации, а только символические ссылки на директории mods-available и sites-available, где следует располагать сами файлы. Как понятно из названий, в данных каталогах находятся настройки модулей и виртуальных хостов. Если с модулями дело приходится иметь редко, то управлять таким образом виртуальными хостами, т.е. сайтами, очень удобно.

Подробно о виртуальных хостах и расположении содержимого сайта мы уже писали в статье по Lighttpd, все сказанное там справедливо и для нашего случая. Вы вольны выбрать любую схему размещения данных, мы же предпочитаем хранить содержимое сайтов внутри /var/www в папках с именем домена.

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

В Ubuntu 14.04 при установке данного пакета вы можете столкнуться с ошибкой:

Это известный баг, для его исправления выполните:

Если мы заглянем в папку sites-enabled, то увидим там уже готовую конфигурацию для сайта по умолчанию, т.е. того, что будет показано при наборе IP-адреса сервера. Данная настройка указывает на папку /var/www или /var/www/html для Apache 2.4, где расположена страница заглушка. После того как вы добавите свои сайты, выводиться будет первый по списку сайт.

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

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

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

Внутри разместите следующий текст:

Разберем содержимое более подробно. Начинается секция виртуального хоста с ее определения , где указывается IP-адрес и порт, на котором данный хост работает, если вы хотите принимать соединения на всех сетевых интерфейсах, то вместо адреса поставьте "звездочку" — *. Внутри секции располагаются следующие директивы:

  • ServerName — имя виртуального хоста, должен иметь значение полного доменного имени (FQDN), в нашем случае example.com, определяет, какое доменное имя обслуживает данный виртуальный хост.
  • ServerAdmin — контактный адрес электронной почты администратора домена, включается в сообщения об ошибках веб-сервера, рекомендуется завести для этих целей отдельный ящик.
  • ServerAlias — алиас имени хоста, обязательно значение www.example.com, чтобы ваш сайт работал как с www, так и без.
  • DocumentRoot — корневая папка виртуального хоста, указываем директорию размещения сайта, т.е. /var/www/example.com
  • CustomLog — имя и расположение лога доступа, переменная $ указывает на стандартную директорию логов веб-сервера, это позволяет использовать стандартный механизм ротации логов для всех сайтов, в имени лога рекомендуем указывать имя хоста, чтобы сразу было понятно где какой лог. Не забудьте в конце опцию combined, данная опция указывает формат лога и задается в apache2.conf.
  • ErrorLog — имя и расположение лога ошибок, полностью аналогичен логу доступа, но не требуется указывать формат лога.
  • AssignUserID — имя и группа пользователя (через пробел) от имени которых будет работать данный виртуальный хост, задается только если установлен apache2-mpm-itk, в противном случае эта директива не нужна.

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

  • ±Includes — разрешает / запрещает SSI (Server Side Includes — включения на стороне сервера), в нашем случае выключено в целях безопасности. Имеет смысл включать только в том случае, если ваш сайт явно требует данной опции.
  • ±Indexes — разрешает / запрещает показывать содержимое каталога при отсутствии индексного файла, отключено в целях безопасности.
  • ±ExecCGI — разрешает / запрещает выполнение сценариев CGI, отключаем в целях безопасности.

За ней следует директива AllowOverride, которая устанавливает использование директив из файлов .htaccess, по умолчанию сервер устанавливает для /var/www данную директиву в None, что запрещает использовать директивы .htaccess во всех вложенных директориях. Для того чтобы разрешить использование директив .htaccess установите данную директиву в All, что разрешит использовать в .htaccess любые директивы.

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

Закрываем открытые секции: и , затем сохраняем файл. Конфигурация виртуального хоста готова.

Чтобы включить сайт необходимо сделать символьную ссылку на файл конфигурации в каталоге sites-enabled, а, чтобы выключить — удалить эту ссылку. Это можно сделать вручную, при помощи команды ln -s, или использовать специальную утилиту apache:

Данная команда включит сайт, для выключения введите:

В качестве опции команде передается имя конфигурационного файла из sites-available, в случае Apache 2.4 без расширения. После каждого такого действия веб-сервер необходимо перезапустить:

Читайте также:  Amd a8 5600k разгон

Чтобы проверить работу виртуального хоста разместите в его корневой директории любой html-файл и обратитесь к серверу по имени домена (при этом А-запись домена должна быть настроена и указывать на ваш веб-сервер).

Например, создадим индексный файл:

И разместим в нем строку:

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

Установка PHP

Если веб-сервер был нужен вам для размещения статического содержимого или сторонних веб-приложений, например, публикации баз 1С:Предприятия, то дальше можно не читать. Но если вы собираетесь создать сайт на основе популярных CMS — вам потребуется поддержка скриптового языка PHP, на базе которого разработаны большинство современных "движков".

Важно! В современных дистрибутивах используется более новая версия PHP7, чтобы работать с новой версией языка вместо php5 в приведенных ниже командах следует указывать php7.x или просто php, например, вместо php5-imagick нужно набрать php7.0-imagick или php-imagick.

Будет установлен сам интерпретатор и необходимые для работы с веб-сервером модули. Модули позволяют гибко изменять функциональность PHP, управление модулями осуществляется аналогично Apache, когда конфигурации модулей располагаются в одной директории, а для их подключения делается символьная ссылка в другую.

По умолчанию PHP устанавливается с базовым набором модулей, который удовлетворяет большинство потребностей, однако применяемая вами CMS может требовать дополнительных модулей, которые нужно будет установить отдельно.

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

После чего не забудьте перезапустить веб-сервер:

Кстати, GD2, на наш взгляд не самый лучший выбор, в актив библиотеки можно записать низкое потребление ресурсов и высокую скорость работы, но по качеству работы с изображениями она уступает альтернативной утилите imagemagick, иногда значительно. Поэтому имеет смысл установить обе утилиты и выбрать ту, работа которой наиболее вам подойдет. Если ресурсы сервера позволяют, то предпочтительно использовать imagemagick.

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

Для проверки работы PHP создадим в корневой директории сайта специальный скрипт:

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

Теперь наберем в браузере http://example.com/info.php, в результате работы данного скрипта вы увидите стандартную страницу с информацией о PHP, установленных модулях, настройках и т.д.

Установка MySQL

СУБД MySQL — третий необходимый компонент полноценного веб-сервера, основное назначение базы данных — хранение информации сайта, как пользовательской, так и служебной. При этом по важности СУБД превосходит все остальные компоненты, так как потеря базы данных равносильна потере всей информации вашего ресурса.

Установим сервер баз данных и модуль PHP для работы с ним:

Важно! В свежих выпусках Debian (и его производных) вместо пакета mysql-server следует установить mariadb-server, который полностью совместим с MySQL.

В процессе установки вам будет предложено ввести пароль для суперпользователя MySQL (root), которого не следует путать с суперпользователем системы.

Для удобного управления базами данных имеет смысл установить phpMyAdmin — удобную веб-утилиту для управления сервером MySQL:

Инсталлятор утилиты умеет автоматически настраивать популярные веб-сервера Apache и Lighttpd, нужный сервер следует указать при установке:

Веб-интерфейс утилиты будет доступен по адресу http://example.com/phpmyadmin, для входа следует использовать учетные данные пользователя MySQL, в нашем случае это root (других еще нет) с паролем, который мы указали во время установки MySQL.

В Ubuntu 14.04 мы столкнулись с небольшой проблемой, утилита сообщила нам, что расширение mcrypt не найдено, хотя соответствующий модуль PHP был установлен среди зависимостей.

Проверим. В /etc/php5/apache2/conf.d ссылка на данный модуль отсутствует, в то время как в /etc/php5/mods-available нужный файл есть. Следовательно, модуль установлен, но, по какой-то причине, не подключен. Возможно это связано с Apache 2.4 и тогда подобная ситуация может иметь место и в Debian 8.

Однако ничего страшного не произошло, все что нам нужно — это подключить модуль, создав символьную ссылку:

Никаких дополнительных настроек MySQL сервер не требует, благо кодировка UTF-8 стала стандартом де-факто. В принципе на этом можно закончить, но все базы данных размещаемые на сервере будут работать с правами суперпользователя MySQL, что небезопасно. Поэтому следует создать пользователей сервера баз данных с ограниченными правами, чтобы они могли управлять только своими базами.

Откроем phpMyAdmin и перейдем на страницу Привилегии (Пользователи), где выберем Добавить нового пользователя.

Теперь прокрутим страничку чуть ниже и установим опцию Предоставить полные привилегии на базы данных подпадающие под шаблон (имя пользователя\_%)

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

Для проверки создадим базу данных phpMyAdmin — Базы данных — Новая база данных.

При создании БД обращайте внимание на кодировку. Сегодня большинство движков и веб-приложений работают с UTF-8 (utf8_general_ci), однако старые версии движков могут использовать национальные кодировки, поэтому нужно будет правильно указать их еще на стадии создания базы, в противном случае, залив в базу, созданную в UTF-8 дамп в кодировке Windows-1252 вместо русских букв на сайте окажутся "крякозяблики".

Создав базу, проверим ее привилегии, нажав одноименную ссылку рядом с именем базы.

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

Читайте также:  Evga gtx 1070 ftw gaming acx

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

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

В этой статье мы рассмотрим как выполняется установка LAMP Debian 9. Аббревиатура LAMP расшифровывается как Linux Apache Mysql PHP, это набор программного обеспечения, который чаще всего используется для размещения сайтов. Раньше мы уже говорили про установку LAMP в Ubuntu, процесс не будет очень сильно отличаться в Debian, но все же есть нюансы.

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

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

sudo aptitude update && sudo aptitude upgrade

1. Установка компонентов

Сначала установим веб-сервер и интерпретатор языка программирования PHP:

sudo aptitude install apache2 php php-mysql libapache2-mod-php php-mbstring php-zip php-gd

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

Перед тем как перейти к настройке всего этого, нужно установить систему управления базами данных. Вы можете использовать MySQL либо же версию, разрабатываемую сообществом — MariaDB. Для установки MariaDB выполните:

sudo aptitude install mariadb-server mariadb-client mariadb-common

А для установки MySQL:

sudo aptitude install mysql-server mysql-client mysql-common

В этой статье мы будем рассматривать MariaDB, но работа с MySQL не будет очень сильно отличаться.

2. Настройка Apache и PHP

Уже прошли те времена, когда для того чтобы подключить PHP к Apache нужно было пересмотреть кучу конфигурационных файлов, теперь установка LAMP Debian 9 выполняется достаточно просто. Если уже сейчас запустить Apache, и ввести адрес localhost, то все будет работать. Но давайте сначала добавим домен к нашему сайту. На локальной машине это тоже полезно. Сначала создадим папку для сайта:

sudo mkdir /var/www/test-site/

Конфигурационные файлы виртуальных хостов хранятся в каталоге /etc/apache2/sites-available/ просто скопируйте конфигурацию по умолчанию 000-default в новый файл:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test-site.conf

Теперь полученный файл нужно отредактировать. Нас будут интересовать директивы ServerName и DocumentRoot. Установите для них правильные значения:

ServerName test-site.com
DocumentRoot /var/www/test-site/

Все остальное можно оставить по умолчанию. Дальше сохраните изменения и активируйте сайт командой:

sudo a2ensite test-site.conf

Теперь осталось перезапустить Apache:

Чтобы проверить как все работает создайте файл index.php со следующим содержимым в папке /var/www/test-site/:

Если домен зарегистрирован в интернете и все запросы к нему направляются на ваш ip то уже можно открыть сайт в браузере. Если же нет, вы можете настроить маршрут для домена локально с помощью файла /etc/hosts:

sudo vi /etc/hosts

Теперь можете открывать сайт в браузере и проверять:

Если вы увидели информацию о версии php, как на снимке экрана, значит все работает и нам осталось только настроить базу данных.

3. Настройка базы данных

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

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

sudo mysql -u root -p

Далее, для создания базы выполните:

CREATE DATABASE testsite;

Затем создайте пользователя и дайте ему доступ к этой базе данных:

CREATE USER ‘testuser’@’localhost’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON testsite.* TO ‘testuser’@’localhost’;

Ну и для тестирования добавим таблицу:

USE testsite;
CREATE TABLE testtable (
id INT NOT NULL AUTO_INCREMENT,
str VARCHAR(100) NOT NULL,
PRIMARY KEY(id)
);

Теперь добавим одну запись в только что созданную таблицу:

INSERT INTO testtable (str) VALUES (‘test1’), (‘test2’), (‘test3’);

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

sudo vi /var/www/test-site/testmysql.php

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

Если вы не увидели никаких ошибок, а на экран были выведены строки из базы данных, задача установить LAMP Debian выполнена. Если же возникли какие-либо ошибки, например, подключения к базе данных, проверьте правильность написания пароля пользователя, имени базы, а также посмотрите логи mysql.

Выводы

Установка и настройка lamp Debian 9 полностью завершена, теперь вы можете перейти к развертыванию собственного приложения или веб-сайта. Эта инструкция подходит как для локальной системы, так и для боевого сервера. Надеюсь, информация была полезной для вас.

Ссылка на основную публикацию
Adblock detector