Установка И Настройка Apache, PHP, MySQL, PhpMyAdmin И Настройка Виртуальных Хостов На Ubuntu 14.04 LTS

Шаг 1. Установка Apache.

$ sudo apt-get install apache2

Далее перейдите по адресу http://localhost и вы должны увидеть стартовую страницу apache. Для того, чтобы после каждой перезагрузки апача, не получать уведомления вида:

apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message

Откройте конфиг апача:

$ sudo nano /etc/apache2/apache2.conf

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

ServerName 127.0.0.1

Шаг 2. Установка MySQL.

$ sudo apt-get install mysql-server mysql-client

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

$ sudo service mysql status

в ответ должны увидеть что-то типа:

$ mysql start/running, process 3470

Шаг 3. Установка PHP.

$ sudo apt-get install php5 php5-mysql libapache2-mod-php5

Теперь проверим PHP Создадим файл test.php

$ sudo nano /var/www/html/test.php

Добавим следующее содержание

<?php
   phpinfo();
?>

И откроем в браузере ссылку: http://localhost/test.php Вы должны увидеть информацию о установленном php, его версию, модули, и т.д. Настройка php.ini Откроем php.ini для редактирования.

$ sudo nano /etc/php5/apache2/php.ini

Находим директиву short_open_tag , и включаем ее, заменяем off на on Этим мы включили возможность использования коротких тегов php: ?>P.S Если не включить, возможная ошибка:

 

Parse error: syntax error, unexpected ‘}’ in …

Раньше данная директива по-умолчанию была включена

Шаг 4. Установка phpMyAdmin.

$ sudo apt-get install phpmyadmin

Отвечаем на все вопросы, заданные при установке. Проверим установку, перейдя по адресу http://localhost/phpmyadmin/ Вы увидите страничку авторизации. Вводим логин и пароль, заданный администратора баз данных, при установке MySQL. Веб-сервер Apache является самым популярным средством размещения веб-контента в интернете. На его счету более половины всех действующих веб-сайтов. Это очень мощный и гибкий инструмент. Apache разделяет свои функциональные возможности и компоненты на отдельные части, которые могут быть настроены и сконфигурированы независимо друг от друга. Базовая часть, которая отвечает за отдельный сайт или домен называется виртуальным хостом (virtual host). Эта система позволяет администратору использовать один сервер, чтобы раздавать несколько сайтов используя один интерфейс или IP. Это удобно для тех, кто хочет использовать один VPS для хранения нескольких сайтов. Каждый настроенный соответствующим образом домен будет направлять пользователя к определенной директории сервера, содержащей информацию этого сайта, соответствующего домену. При этом посетитель сайта не узнает, что данный сервер хранит и другие сайты. Эта схема может расширяема без каких-либо ограничений со стороны программного обеспечения до тех пор, пока сервер будет справляться с нагрузкой. В этом руководстве мы расскажем, как настроить виртуальные хосты в Apache на VPS с Ubuntu 14.04. В процессе вы узнаете, как отображать разный контент для разных пользователей в зависимости от того, какой домен они запрашивают.

Необходимые условия

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

Шаг 1 - Логин с рутовой учетной записью

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

ssh root@SERVER_IP_ADDRESS

Завершите процесс входа, приняв предупреждение о подлинности хоста (host authenticity), если оно возникнет, а затем идентифицируя себя как root пользователя (с помощью пароля или секретного ключа). Если вы впервые заходите на сервер с использованием пароля, Вам будет предложено изменить пароль учетной записи root. Об учетной записи root Пользователь root является администратором в среде Linux и имеет очень широкий набор привилегий (прав). Из-за повышенных привилегий root-аккаунта не рекомендуется пользоваться этой учетной записью на регулярной основе. Причиной этого является возможность случайно внести в систему деструктивные изменения. Следующий шаг заключается в создании альтернативной пользовательской учетной записи с ограниченными привилегиями для повседневной работы. Мы продемонстрируем, как при необходимости получить расширенные полномочия во время использования этой учетной записи.

Шаг 2 - Создание нового пользователя

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

adduser demo

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

Шаг 3 - Привилегии пользователя "root"

Теперь у нас есть новая учетная запись по стандартными привилегиями. Однако иногда нам может потребоваться выполнять задачи с привилегиями администратора. Во избежание необходимости выхода из-под учетной записи обычного пользователя и входа с учетной записью root-пользователя, мы можем настроить возможность использования режима так называемого "супер-пользователя", в котором наша обычная учетная запись временно получает привилегии root-пользователя. Это позволит нашему обычному пользователю выполнять команды с привилегиями администратора с помощью добавления слова sudo перед каждой командой. Чтобы добавить эти привилегии нашей новой учетной записи, необходимо добавить ее в группу "sudo". По умолчанию, в Ubuntu 14.04 пользователи, входящие в группу "sudo", могут использовать команду sudo. Из-под root-пользователя выполните следующую команду для добавления Вашего нового пользователя в группу "sudo" (замените выделенное красным на имя Вашей новой учетной записи):

gpasswd -a demo sudo

Теперь Ваш пользователь сможет выполнять команды с привилегиями супер-пользователя!

Шаг 4 - Добавление авторизации по публичному ключу (Public Key Authentication) (Рекомендуется!)

Следующий шаг в усилении безопасности Вашего сервера - это настройка авторизации по публичному ключу для Вашего нового пользователя. Данная настройка повысит безопасность Вашего сервера, требуя секретный SSH ключ для входа. Создание пары ключей Если у Вас ещё нет пары SSH-ключей, которая состоит из публичного (открытого) и секретного (закрытого) ключей, Вам необходимо её создать. Если у Вас уже есть ключ, который Вы хотите использовать, перейдите к подразделу "Копирование публичного ключа". Чтобы создать новую пару ключей, выполните следующую команду в терминале на Вашей локальной машине (т.е. на Вашем компьютере):

ssh-keygen

Если Ваш локальный пользователь называется "localuser", Вы увидите вывод следующего вида:

Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

Нажмите "ENTER", чтобы согласиться с адресом и именем файла (или введите другой адрес/имя файла). Далее Вам будет предложено ввести кодовую фразу для защиты ключа. Вы можете ввести кодовую фразу или оставить ее пустой. Обратите внимание: Если Вы оставите кодовую фразу пустой, Вы сможете использовать приватный ключ для авторизации без ввода кодовой фразы. Если Вы зададите кодовую фразу, Вам потребуется и приватный ключ и кодовая фраза для входа. Добавление кодовой фразы к ключам является более безопасным, но оба метода имеют свои области применения и являются более безопасными, чем базовая авторизация паролем. В результате этого, в поддиректории .ssh домашней директории пользователя localuser будет создан секретный ключ id_rsa и публичный ключ id_rsa.pub. Не передавайте секретный ключ никому, кто не должен иметь иметь доступ к Вашим серверам! Копирование публичного ключа После создания пары SSH-ключей, Вам необходимо скопировать публичный ключ на Ваш новый сервер. Если Вы создали пару SSH-ключей, как описано в предыдущем пункте, выполните следующую команду в терминале на Вашей локальной машине для печати публичного ключа (id_rsa.pub):

cat ~/.ssh/id_rsa.pub

В результате выполнения данной команды на экран будет выведен Ваш публичный SSH-ключ, выглядящий примерно так:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47 d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6x N+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpn pzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZ vaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXB nWSUdf localuser@machine.local

Выделите публичный ключ и скопируйте его в буфер обмена. Добавление публичного ключа к новому удаленному пользователю Чтобы сделать возможным использование SSH-ключа для авторизации под учетной записью нового удаленного пользователя (remote user), Вам необходимо добавить публичный ключ в специальный файл в домашней директории этого пользователя. На сервере, осуществив вход с учетной записью root-пользователя, выполните следующие команды для переключения на нового пользователя (замените demo на Ваше имя пользователя):

su - demo

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

mkdir .ssh chmod 700 .ssh

Теперь откройте файл в директории .ssh с названием authorized_keys в текстовом редакторе. Мы будем использовать nano для редактирования файла:

nano .ssh/authorized_keys

Далее добавьте Ваш публичный ключ (который должен быть в буфере обмена) путем вставки в текстовый редактор. Нажмите CTRL-X для закрытия файла, затем Y для сохранения внесенных изменений, затем ENTER для подтверждения имени файла. Теперь ограничьте права на доступ к файлу authorized_keys при помощи следующей команды:

chmod 600 .ssh/authorized_keys

Введите следующую команду один раз для возврата к пользователю root.

exit

Теперь Вы можете заходить на сервер по SSH с учетной записью Вашего нового пользователя, используя секретный ключ для авторизации. После завершения этих шагов, мы можем начать настройку виртуальных хостов. В этом руководстве мы создадим виртуальный хост для доменов example.com и test.com. Мы будет ссылаться на них в руководстве, однако вам следует заменить их на свои домены при настройке ваших виртуальных хостов. Если у вас нет свободных доменов, на которых можно потренироваться, вы можете использовать фиктивные доменные имена. Чуть позже мы покажем, как отредактировать файл с локальными хостами для проверки конфигурации в случае, если вы используете фиктивные доменные имена. Это позволит протестировать конфигурацию с вашего домашнего компьютера, даже несмотря на то, что контент сайта не будет доступен по этому доменному имени другим пользователям.

Шаг 1 - Создание структуры директорий

Первый шаг, который мы собираемся предпринять, это создать структуру директорий, содержащую данные сайта, которые будут отображаться посетителям. Наш document root (корневой каталог - директория верхнего уровня, которую просматривает Apache в поисках контента для отображения) будет настроен на использование директорий внутри директории /var/www. Здесь мы создадим директории для обоих виртуальных хостов, которые мы планируем сделать в этом руководстве. В каждой из этих директорий мы создадим вложенную директорию public_html, которая будет содержать реальные файлы. Это дает нам некоторую гибкость в плане хранения контента. Например, для наших сайтов мы создадим директории следующим образом:

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

sudo mkdir -p /var/www/test.com/public_html

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

Шаг 2 - Назначение прав

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

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

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

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

sudo chmod -R 755 /var/www

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

Шаг 3 - Создание демо-страниц для каждого виртуального хоста

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

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

В этом файле создайте простой HTML-документ, который показывает, к какому сайту он относится. Наш файл выглядит следующим образом:

<html>
   <head>
      <title>Welcome to Example.com!</title>
   </head>
   <body>
      <h1>Success! The example.com virtual host is working!</h1>
   </body>
</html>

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

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

После этого вы можете открыть файл и исправить его содержимое:

nano /var/www/test.com/public_html/index.html

<html>
   <head>
      <title>Welcome to Test.com!</title>
   </head>
   <body>
      <h1>Success! The test.com virtual host is working!</h1>
   </body>
</html>

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

Шаг 4 - Создание файлов нового виртуального хоста

Файлы виртуальных хостов задают их конфигурацию, и определяют, как именно веб-сервер Apache будет отвечать на запросы к разным доменам. По умолчанию, Apache имеет файл виртуального хоста 000-default.conf, который мы можем использовать в качестве отправной точки. Мы собираемся скопировать его, чтобы создать файлы виртуального хоста для каждого из наших доменов. Мы начнем с одного домена, сконфигурируем его, скопируем для другого домена, и затем снова сделаем необходимые правки. Конфигурация Ubuntu по-умолчанию требует, чтобы каждый файл виртуального хоста заканчивался расширением .conf.

Создание файла первого виртуального хоста

Начнем с копирования файла для первого домена:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Откройте новый файл в редакторе с root-правами:

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

Файл будет похож на этот (мы удалили комментарии, чтобы сделать его более читабельным):

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Как видите, файл совсем небольшой. Мы поправим его для нашего первого домена и добавим некоторые новые директивы. Эта секция конфигурации виртуального хоста относится к любом запросам, которые сделаны по 80 порту (порт по-умолчанию для HTTP). Прежде всего, мы должны изменить директиву ServerAdmin на адрес электронной почты, на который администратор сайта будет получать электронные письма.

ServerAdmin admin@example.com

Затем мы должны добавить две новые директивы. Первая, ServerName устанавливает основной домен, который должен соответствовать названию виртуального хоста. Это должно быть ваше доменное имя. Вторая, ServerAlias, определяет другие имена, которые должны интерпретироваться так, как будто это основной домен. Это удобно для использования дополнительных доменных имен, например, с использованием www:

ServerName example.com ServerAlias www.example.com

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

DocumentRoot /var/www/example.com/public_html

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

ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

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

Копирование первого виртуального хоста и настройка для второго домена

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

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте новый файл в редакторе с правами root-пользователя:

sudo nano /etc/apache2/sites-available/test.com.conf

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

ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте файл после внесения правок.

Шаг 5 - Включение новых виртуальных хостов

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

sudo a2ensite example.com.conf

sudo a2ensite test.com.conf

После завершения необходимо перезапустить Apache, чтобы изменения вступили в силу:

sudo service apache2 restart

Скорее всего, вы получите сообщение, похожее на это:

* Restarting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Это сообщение безобидно и не влияет на наш сайт.

Шаг 6 - Настройка файла локальных хостов (опционально)

Если до этого вы использовали не реальные доменные имена, которыми вы владеете, а тестовые, вы можете протестировать работоспособность виртуальных хостов, временно изменив файл hosts на вашем локальном компьютере. Это позволит перехватывать любой запрос к доменам, которые вы настроили и перенаправлять его на ваш VPS сервер так, как это сделала бы система DNS в случае использования реально зарегистрированных доменов. Это будет работать только с вашего локального компьютера и используется только для тестирования. Убедитесь, что дальнейшие шаги вы будете проделывать на вашем локальном компьютере, а не на VPS сервере. Вам необходимо знать пароль администратора или быть членом группы администраторов. Если вы используете компьютер с Mac или Linux, вы можете редактировать локальный файл с правами администратора, введя команду:

sudo nano /etc/hosts

Если у вас компьютер с Windows, вы можете найти инструкции по редактированию файла хостов здесь. Вам необходимо добавить в файл публичный IP-адрес вашего VPS сервера и, следом, доменное имя, по которому вы хотите обращаться к этому VPS. Для доменов, используемых в этом руководстве, предположим, что IP-адрес нашего VPS 111.111.111.111. В этом случае мы можем добавить следующие строки в конец файла hosts:

127.0.0.1 localhost 127.0.1.1 guest-desktop 111.111.111.111 example.com 111.111.111.111 test.com

В результате этого любые запросы к example.com и test.com с нашего компьютера будут перенаправляться на наш сервер по адресу 111.111.111.111. Это удобно для проверки правильности настройки наших виртуальных хостов для случая, когда мы не являемся реальными владельцами этих доменных имен. Сохраните и закройте файл.

Шаг 7 - Тестирование результатов

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

http://example.com

Вы должны увидеть похожую страницу: Аналогично, вы можете зайти на вторую страницу:

http://test.com

Вы увидите файл, созданный для второго сайта: Если оба сайта работают, значит вы успешно сконфигурировали два виртуальных хоста на одном и том же сервере. Еси вы вносили изменения в файл hosts на вашем локальном компьютере, теперь можете удалить добавленные строки, т.к. уже убедились в работоспособности конфигурации. Таким образом мы не будем хранить в файле "hosts" ненужные записи. Если вы хотите, чтобы пользователи могли достучаться к вашим сайтам на постоянной основе, рассмотрите возможность приобретения доменных имен для своих сайтов и их настройки для работы с вашим VPS сервером.

Заключение

Если вы следовали нашим инструкциям, теперь у вас должен быть один сервер, работающий с двумя разными доменными именами. Для добавления других виртуальных хостов следуйте инструкциям в этом руководстве. Apache может работать с любым количеством доменных имен, так что можете добавлять новые сайты до тех пор, пока ваш сервер справляется с нагрузкой. Выборка из материалов с сайтов: http://gansik.ru/ubuntu/ustanovka-i-nastroyka-apache-php-mysql-phpmyadmi... и https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru