Домашний сервер на Orange Pi — часть 4: установка LAMP-сервера

Вот и настало время превратить наш домашний сервер в настоящий WEB-сервер. В прошлой статье, мы установили и настроили все необходимые компоненты для успешной работы сервера, сегодня мы установим LAMP-сервер.

LAMP — это набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается на сервер для отрисовки динамических веб-сайтов и веб-приложений. LAMP назван по первым буквам входящих в его состав компонентов:
1. Linux — операционная система Linux;
2. Apache — веб-сервер с открытым исходным кодом;
3. MySQL — открытая система управления базами данных (СУБД);
4. PHP — скриптовый язык программирования общего назначения, активно используемый для разработки веб-приложений.

Установка LAMP-сервера аналогична установке любого другого пакета в системе Ubuntu, как и раньше первым шагом, заходим по ssh на сервер и выполняем обновление системы.
Для того, чтобы каждый раз не вводить ssh example@192.168.1.211, я добавил alias sshexample="ssh example@192.168.1.211". И теперь команда для входа на сервер, выглядит следующим образом

sshexample

Набиаем в терминале

sudo apt install lamp-server

для установки сервера из репозитория и скорее всего видим следующую ошибку: E: Невозможно найти пакет lamp-server

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

1. Установка WEB-сервера Apache

Набираем в терминале

sudo apt install apache2


Следующим шагом мы его включаем для автоматичиского старта при запуске системы и запускаем его.

sudo systemctl enable apache2
sudo systemctl start apache2

Для проверки работы нашего сервера, в адресной строке браузера вводим http://192.168.1.211

и убеждаемся в том, что наш сервер успешно стартовал и работает. Что ж, apache мы установили и теперь можем создать нашу первую web-страничку, которая будет доступна (пока) в нашей внутренней сети.

Настройки сервера содержатся в /etc/apache2/apache2.conf, к которому подключаются дополнительные файлы из директорий mods-enabled и sites-enabled.

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

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

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

sudo mkdir /var/www/example.ru
sudo chown example:example /var/www/example.ru


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

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

и вставим следующий текст::

<VirtualHost 192.168.1.211:80>
    ServerName example.ru
    ServerAdmin mail@example.com
    ServerAlias www.example.ru
    DocumentRoot /var/www/example.ru
    CustomLog ${APACHE_LOG_DIR}/example.ru.access.log combined
    ErrorLog ${APACHE_LOG_DIR}/example.ru.error.log
    AssignUserID example example
    <Directory /var/www/example.ru>
        Options -Includes -Indexes -ExecCGI
        AllowOverride All 
    </Directory>
</VirtualHost>


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

ServerName - имя виртуального хоста, должен иметь значение полного доменного имени (FQDN), в нашем случае example.ru, определяет, какое доменное имя обслуживает данный виртуальный хост.
ServerAdmin - контактный адрес электронной почты администратора домена, включается в сообщения об ошибках веб-сервера, рекомендуется завести для этих целей отдельный ящик.
ServerAlias - алиас имени хоста, обязательно значение www.example.ru, чтобы ваш сайт работал как с www, так и без.
DocumentRoot - корневая папка виртуального хоста, указываем директорию размещения сайта, т.е. /var/www/example.ru
CustomLog - имя и расположение лога доступа, переменная ${APACHE_LOG_DIR} указывает на стандартную директорию логов веб-сервера, это позволяет использовать стандартный механизм ротации логов для всех сайтов, в имени лога рекомендую указывать имя хоста, чтобы сразу было понятно где какой лог. Не забудьте в конце опцию combined, данная опция указывает формат лога и задается в apache2.conf.
ErrorLog - имя и расположение лога ошибок, полностью аналогичен логу доступа, но не требуется указывать формат лога.
AssignUserID - имя и группа пользователя (через пробел) от имени которых будет работать данный виртуальный хост, задается только если установлен apache2-mpm-itk, в противном случае эта директива не нужна.
Внутри секции виртуального хоста размещаем еще одну секцию <Directory /var/www/example.ru>, которая включает директивы, применяемые не к хосту, а к каталогу, в нашем случае к корневому каталогу виртуального хоста. Там располагается директива Options, которая содержит следующие опции (перед каждой из которых ставится + или -, разрешая или запрещая опцию):

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

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

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

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

sudo a2dissite 000-default

И включаем наш:

sudo a2ensite example.ru

После чего перезапускаем веб-сервер:

sudo systemctl reload apache2

Чтобы проверить работу нашего сайта, необходимо в каталоге /var/www/example.ru разместить любой html-файл и обратитесь к серверу по IP адресу, как мы это делали раньше.

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

nano /var/www/example.ru/index.html

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

<body><h1>Hello World!</h1></body>

После чего перезапускаем веб-сервер:

sudo systemctl reload apache2

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

2. Установка сервера баз данных MySQL

Для того, чтобы устаовить MySQL сервер, надо взять и установить MySQL сервер.

sudo apt install mysql-server

3. Установка интерпритатора PHP

Установка интерпретатора языка программирования PHP 7.2, расширений, необходимых для его работы с Apache и MySQL и утилиты, которая упрощает администрирование базы данных MySQL:

sudo apt install php7.2 libapache2-mod-php7.2 php7.2-mysql php7.2-curl php7.2-json php7.2-cgi php7.2-gd php7.2-zip imagemagick php7.2-imagick php7.2-mbstring php7.2-xml php7.2-xmlrpc phpmyadmin

Во время установки и настройки пакета phpmyadmin, вам предложат выбрать web-сервер для запуска phpmyadmin.

Далее, вам предложат настроить базу MySQL - соглашаемся.

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

Затем подтверждаем пароль

Теперь нам осталось проверить, что установленный интерпритатор php установлен и работает. Для этого, в каталоге /var/www/example.ru создадим файл index.php и внесём в него следующий текст:

<?php
phpinfo();
?>
nano /var/www/example.ru/index.php

перезапустим наш WEB-сервер

sudo systemctl restart apache2

и проверим работу php через браузер: в адресной строке введём http://192.168.1.211/index.php и убедимся, что мы все сделали правильно.

Наш WEB-сервер запущен и настроен, и на его базе можно реализовать практически любой интернет проект.
На этом всё, до следующих встреч.

Домашний сервер на Orange Pi часть 1: установка ОС и первичная настройка

Домашний сервер на Orange Pi — часть 2: подключение USB-диска

Домашний сервер на Orange Pi — часть 3: установка и настройка серверов ssh, samba и ftp

Похожие записи

Добавить комментарий