Установка веб-сервера предельно проста:
sudo apt install apache2
При наборе IP сервера видим стандартную заглушку.
{{https://i.imgur.com/c01brV3.png?direct&128x200}}
Вопрос, который следует решить, это права доступа к файлам и папкам сайта. По умолчанию их владельцем должен являться веб-сервер (пользователь и группа www-data), в противном случае скрипты могут работать неожиданным образом или не работать вообще. Более удобно и безопасно запускать содержимое сайтов от имени пользователя, а не веб-сервера. Для этого установим следующий пакет (не проверял):
sudo apt install apache2-mpm-itk
Настройки сервера содержатся в **/etc/apache2/apache2.conf**, к которому подключаются дополнительные файлы из директорий **mods-enabled** и **sites-enabled**. Каталоги **mods-enabled** и **sites-enabled** не содержат файлов конфигурации, а только символические ссылки на директории **mods-available** и **sites-available**, где следует располагать сами файлы. Если мы заглянем в папку **sites-enabled**, то увидим там уже готовую конфигурацию для сайта по умолчанию, т.е. того, что будет показано при наборе IP-адреса сервера. Данная настройка указывает на папку **/var/www/html**, где расположена страница заглушка. Можно просто заменить эту заглушку своим файлом. А можно к примеру задать другое расположение. К примеру мы хотим разместить на нашем сервере содержимое сайта example.com, сначала создадим необходимые директории и сделаем их владельцем пользователя, который будет работать с сайтом:
mkdir /var/www/example.com
chown andrey:andrey /var/www/example.com
Создадим файл
touch /etc/apache2/sites-available/example.com.conf
Заполним его к примеру редактором **nano**
ServerName example.com
ServerAdmin mail@example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
AssignUserID andrey andrey
Options -Includes -Indexes -ExecCGI
AllowOverride All
* **ServerName** - имя виртуального хоста, должен иметь значение полного доменного имени (FQDN), в нашем случае example.com, определяет, какое доменное имя обслуживает данный виртуальный хост.
* **ServerAdmin** - контактный адрес электронной почты администратора домена, включается в сообщения об ошибках веб-сервера, рекомендуется завести для этих целей отдельный ящик.
* **ServerAlias** - алиас имени хоста, обязательно значение [[http://www.example.com|www.example.com]], чтобы ваш сайт работал как с www, так и без.
* **DocumentRoot** - корневая папка виртуального хоста, указываем директорию размещения сайта, т.е. **/var/www/example.com**
* **CustomLog** - имя и расположение лога доступа, переменная **${APACHE_LOG_DIR}** указывает на стандартную директорию логов веб-сервера, это позволяет использовать стандартный механизм ротации логов для всех сайтов, в имени лога рекомендуем указывать имя хоста, чтобы сразу было понятно где какой лог. Не забудьте в конце опцию **combined**, данная опция указывает формат лога и задается в **apache2.conf**.
* **ErrorLog** - имя и расположение лога ошибок, полностью аналогичен логу доступа, но не требуется указывать формат лога.
* **AssignUserID** - имя и группа пользователя (через пробел) от имени которых будет работать данный виртуальный хост, задается только если установлен **apache2-mpm-itk**, ====== в противном случае эта директива не нужна ======. (не проверял)
Чтобы включить сайт необходимо сделать символьную ссылку на файл конфигурации в каталоге **sites-enabled**, а, чтобы выключить - удалить эту ссылку. Это можно сделать вручную, при помощи команды ''ln -s'', или использовать специальную утилиту ''apache'':
a2ensite example.com
Для выключения соответственно
a2dissite example.com
Перезапустим сервер
/etc/init.d/apache2 restart
Теперь создадим наш индекс **/var/www/examlpe.com/index.html** с содержимым
OK!
{{https://i.imgur.com/HIJw7i7.png?nolink&341x210}}