Установка и запуск веб-сервера Apache на Orange Pi Zero

Сайт: 

Ранее мной был описал процесс установки ОС Armbian на Orange Pi Zero, а также процесс настройки сети. Сегодня, как и обещал, расскажу как установить и настроить для работы веб-сервер Apache. Подробнее о нем можете почитать здесь:

https://ru.wikipedia.org/wiki/Apache_HTTP_Server

Итак, запускаем Putty и входим в терминал ОС Armbian. Установочный пакет Apache2 хранится в репозитории на сервере ubuntu.com. Поэтому для установки пользователю достаточно ввести команду и согласиться с установкой клавишей Enter:

sudo apt-get install apache2

После установки сервер запустится автоматически. Чтобы убедиться, что это произошло, откройте браузер и введите в адресной строке IP-адрес устройства. В своем случае я ввожу адрес http://192.168.74.125/ 

Вы должны увидеть страницу с таким содержанием.

Это стартовая страница Apache2, которая запускается по умолчанию после установки сервера. Хранится она здесь /var/www/html/index.html

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

Итак, создаем в домашнем каталоге два подкаталога:

mkdir ~/public
mkdir ~/public/www

Символ ~ равносилен пути к домашнему каталогу. В моем случае ~ = /home/andrey

Теперь нам необходимо создать виртуальный хост, для которого каталог ~/public/www будет корневым. Четкого определения что такое виртуальный хост не нашел, но в моем понимании виртуальный хост – это такая настройка для сервера, позволяющая по одному и тому же IP-адресу обратиться к разным сайтам на сервере. Т.е. вы можете содержимое одного сайта хранить в каталоге /var/www/html, а содержимое другого – в /home/andrey/public/www и оба они будут доступны по одному и тому же IP-адресу. Но, чтобы сервер мог понять к какому сайту идет обращение, есть такой параметр как имя хоста (в настройках Apache – это ServerName). Когда пользователь вводит в браузере адрес сайта, то браузер посылает HTTP-запрос на DNS-сервер (сервер доменных имен) и в заголовках HTTP-запроса хранится имя хоста. DNS-сервер в свою очередь перенаправляет запрос браузера на IP-адрес сервера, где хранится сайт. А уже сервер по имени хоста понимает из какой директории пользователь хочет получить содержимое.

На локальной машине сайты будут доступны по адресу http://localhost/ или http://127.0.0.1/. Т.е. если бы Orange Pi Zero мы могли бы подключить к монитору, а также подключили клавиатуру, то мы могли бы запустить браузер и введя адрес http://localhost/ получили бы точно такое же содержимое как в том случае, когда мы на другом компьютере в сети вводили IP-адрес http://192.168.74.125/ 

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

sudo apt-get install lynx

Теперь если набрать в командной строке команду

lynx http://localhost/

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

На другой машине в сети получить доступ к сайту по имени хоста мы не сможем, потому как нет DNS-сервера, который бы направил запрос браузера на IP-адрес устройства. Поэтому, даже если мы зададим в настройках виртуального хоста его имя, то доступ к сайту по имени мы можем получить только на локальной машине (через браузер lynx в нашем случае). Но тут тоже есть  одна тонкость: имя хоста необходимо будет прописать в файле /etc/hosts и назначить ему IP-адрес 127.0.0.1. Это такая своего рода имитация DNS-сервера на локальной машине. Об этом подробнее напишу дальше.

Файлы настроек виртуальных хостов хранятся в каталоге /etc/apache2/sites-available/

Изначально в данном каталоге хранится две настройки 000-default.conf и default-ssl.conf. Именно настройка 000-default.conf указывает на стартовую страницу в /var/www/html и позволила увидеть нам ее после установки Apache. Мо создадим новый виртуальный хост на основе 000-default.conf просто сделав его копию:

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

Открываем только что созданный файл настроек:

sudo mcedit /etc/apache2/sites-available/mysite.conf

Здесь мы видим, что заданы e-mail адрес администратора сайта и корневой каталог, где хранятся файлы сайта.

Задаем имя виртуального хоста orangepi.home, меняем путь к корневому каталогу:

ServerName orangepi.home
ServerAdmin webmaster@localhost
DocumentRoot /home/andrey/public/www

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

<Directory /home/andrey/public/www>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  Require all granted
</Directory>

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

sudo a2ensite mysite

Хост под именем 000-default выключаем командой:

sudo a2dissite 000-default

После всех выполненных операций необходимо перезапустить веб-сервер одной из команд:

systemctl reload apache2
sudo /etc/init.d/apache2 reload

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

Warning: The unit file, source configuration file or drop-ins of apache2.service changed on disk. Run 'systemctl daemon-reload' to reload units.

В этом случае необходимо выполнить команду:

systemctl daemon-reload

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

ls /etc/apache2/sites-enabled/

В директории sites-enabled должен быть только файл mysite.conf. Если это не так, где-то была допущена ошибка.

Теперь открыв браузер и введя в адресную строку IP-адрес устройства можно вместо стандартной страницы Apache2 увидеть такое содержимое:

Так как веб-сервер не нашел в корневом каталоге файла index.html, index.htm, то он просто выдал содержимое директории, которая в данный момент пуста.

Настало время создать первую веб-страницу index.html. Создаем новый текстовый файл командой:

mcedit ~/public/www/index.html

В файл записываем такие строки и сохраняем его:

<html>
<head>
<title>Привет из Orange Pi Zero</title>
</head>
<body>
<h1>Веб-сервер на Orange Pi Zero</h1>
</body>
</html>

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

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

sudo mcedit /etc/apache2/conf-available/charset.conf

В файле charset.conf убираем комментарий со строчки (символ #) AddDefaultCharset UTF-8 и сохраняем его. Дальше необходимо известным ранее способом перезапустить сервер:

sudo /etc/init.d/apache2 reload

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

Вернемся к браузеру Lynx и откроем наш новоиспеченный веб-сайт прямо на Orange Pi:

lynx http://localhost/

Войти на сайт не удастся по адресу http://orangepi.home/ потому как данное имя еще необходимо внести в файл /etc/hosts, чтобы сайт был доступен по адресу 127.0.0.1

sudo mcedit /etc/hosts

Теперь команда

lynx http://orangepi.home/

даст такой же результат, что и

lynx http://localhost/

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

Все что нам понадобится – это программа Total Commaner и плагин для нее SFTP plugin, который можно скачать, например, здесь http://wincmd.ru/plugring/sftp4tc.html

Открываем скачанный архив через Total Commander и программа автоматически предложит установить плагин:

Когда установка будет окончена, переходим на вкладку Сеть /FS-плагины и открываем Secure FTP Connections:

Дальше будем представлен список соединений, импортированный из программы Putty.

При необходимости можно настроить новое соединение нажав на <edit connection>.

Запускаем созданное ранее нами соединение Orange Ethernet и вводим имя пользователя и пароль те, которыми мы пользуемся при входе в командную строку.

Мы получили доступ к файловой системе Armbian. Дальше можно выполнять все такие же операции с файлами, как и с обычными разделами (дисками) на персональном компьютере.

На этом завершаю статью. В следующей статье расскажу как настроить FTP-сервер, который можно использовать как альтернативу для закачки файлов по сети на SD-карту миникомпьютера Orange Pi Zero.