Установка и запуск веб-сервера 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.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии