06.12.2017

Apache userdir на Ubuntu-сервер

Userdir, он же mod_userdir - модуль Apache, который позволяет пользователям размещать материалы на сайте, без предоставления доступа к директориям Web-сервера. Веб-директория пользователя размещается в его домашнем каталоге, по умолчанию это папка public_html.

В данный момент, этот модуль используется крайне редко. В своей практике я использую данный модуль при разработке/тестировании Web-проектов на тестовой виртуальной машине.


Например, в связке с FTP-сервером получается следующее. При создании пользователя test_user - я получаю удаленный доступ к его каталогу по FTP-протоколу и доступ по HTTP к директории public_html, что для меня является удобным при использовании IDE Netbeans, который после каждого изменения файлов проекта выгружает их на Веб-сервер.

Далее я покажу, как это все настраивается в  Netbeans и выглядит в связке. На установке и настройке FTP-сервера я останавливаться не буду, по скольку делал это ранее. Установка Proftpd на Ubuntu

1. Настройка и включение Userdir

В установленном Apache 2.4 данный модуль присутствует, но по умолчанию он отключен.

Включаем его

sudo a2enmod userdir

sudo service apache2 restart

Файл конфигурации модуля находится /etc/apache2/mods-available/userdir.conf

Для того, чтобы работали PHP-скрипты приводим его к следующему виду.

<IfModule mod_userdir.c>

        UserDir public_html

        UserDir disabled root

        <Directory /home/*/public_html>

                AllowOverride All

                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec FollowSymLinks

                <Limit GET POST OPTIONS>

                        Require all granted

                </Limit>

                <LimitExcept GET POST OPTIONS>

                        Require all denied

                </LimitExcept>

                php_admin_flag engine On

        </Directory>

</IfModule>

После завершения редактирования и сохранения даем команду на перезапуск Apache

sudo service apache2 restart

На этом настройка закончена и Вы можете проверить работу

Для существующего пользователя необходимо предварительно создать директорию public_html в его домашнем каталоге

mkdir ~/public_html

и для проверки работы файл index.php

echo "<?php php_info(); ?>" > ~/public_html/index.php

После этого Вы можете зайти через браузер по адресу http://10.10.10.10/~user/ ,

где 

  • 10.10.10.10 - IP-адрес вашего сервера,
  • user - имя пользователя.

Для автоматизации добавления пользователя, создания директории public_html, пользователя и БД MySQL я набросал bash-скрипт для Ubuntu, скачать можете по ссылке

https://drive.google.com/file/d/1wyx9wC6_IVyFSIf5wnFZVsVSxUdYabeM/view?usp=sharing 

2. Настройка NetBeans

Для каждого проекта я создаю отдельного пользователя при помощи скрипта, ссылку на который я привел выше. Он обеспечивает создание пользователя в системе и базе данных Mysql, например, при создании пользователя wordpress с паролем wppasswd, будет создано:

  • Пользователь wordpress с паролем wppasswd
  • Обеспечен доступ по FTP в его домашний каталог
  • Доступ по HTTP к пользовательской директории public_html
  • Создана база данных wordpress
  • Создан пользователь для доступа к MySQL wordpress с паролем wppasswd

Для меня данные условия существенно облегчают работу над проектом.

Ниже я привожу скриншоты с примером настройки удаленного подключения к серверу и настройки проекта.

Пример настройки подключения Nebeans по FTP

Пример настройки подключения Nebeans по FTP

Пример настройки проекта

Пример настройки проекта

В случае возникновения вопросов, задавайте их в комментариях

Использованные материалы:

Логотип взят с https://www.codevoila.com/post/34/enable-apache2-userdir

Apache Module mod_userdir https://httpd.apache.org/docs/2.4/mod/mod_userdir.html

Per-user web directories https://httpd.apache.org/docs/2.4/howto/public_html.html

Комментариев нет:

Отправить комментарий