Автоматическое монтирование shared folders в VMWare Ubuntu гостевой системе (Ubuntu Guest)

Так, сначала решение , а потом уже и весь текст!

Предусловие:
1. Для виртаулизации системы вы используете продукты компании VMWare.
2. У вас уже установлена и работает виртуальная Ubuntu 12.04 / 14.04.  Работа этого способа проверена лично мной в них.
3. У вас установлен и настроен vmware tools.

Откроем терминал и отредактируем файлик, который статртует вместе с системой каждый раз. В него положим нужную команду, которая будет выполнятся каждый раз при запуске системы:

sudo nano /etc/init.d/rc.local

Прокручиваем содержимое файла в самый низ и там же, в самом низу добавляем эту строчку

mount -t vmhgfs .host:/domains /var/www

И все! Теперь каждый раз после перезагрузки или выключения ваша shared folder будет смонтирована в /var/www . Учтите что у меня папка называется domains,  у вас она может называться иначе, соответственно и название папки в команде нужно поставить свое.

Привет уважаемые читатели моего блога. Сегодня хотел с Вами поделиться некоторым опытом в этом направлении.
Как это все выглядело у меня и для чего это все нужно.
Я очень долго находился в поиске идеального веб-сервера для Windows,  но так и не нашел аналогов и замену операционной системе Ubuntu.  С одной стороны у меня хороший, производительный ноутбук у которого есть лицензия на использование операционной системы Windows 8.1 SL x64, с другой стороны процесс разработки в системе Ubuntu  к которому  я за несколько лет изрядно привык. Я решил что все, что мне нужно я могу реализовать с помощью виртуализирования Линукс системы в Windows и получить все что мне от нее нужно уже в Windows.  Я посвятил этой теме даже целый видеоматериал, как с нуля организовать производительный веб-сервер в среде Windows , на основе операционки Ubuntu 12.04.

Но разговор о том,  что далось мне сложнее всего, а это авто-монтирование расшареной папки между Windows и Ubuntu. Задача стояла полностью абстрагироваться от выполнения каких либо дополнительных задач в гостевой машине.  Она должна была работать исключительно в виде сервера,  обрабатывать PHP код, MySQL запросы и все,  а работа с файлами проекта связкой IDE PHPStorm + GIT и администрирование кода должно было происходить в привычных условиях под Windows.  То есть гостевая Ubuntu должна была выполнять роль XAMPP или DENWER и все.  И вот самое сложно, что давалось это транслировать нужную папку с кодом проектов в гостевую Ubuntu.

А что же здесь сложного спросите вы? Развернул Ubuntu, накатил vmware tools, по средствам vmware расшарил в гостевую нужную папку, она ведь автоматически отобразится в гостевой по пути /mnt/hgfs/your_folder. Да в первое время я так и делал и думал вот как же круто, просто нужно было при создании виртуального хоста указывать Document Root не /var/www/project_folder а mnt/hgfs/project_folder и все будет гуд. Но это продлилось не долго.

Так как я работаю в основном с Magento, со временем я обнаружил некие странности, а именно: при создании backup БД или кода ничего не происходило, при запуске крона по средствам www.hostname.dev/cron.php тоже ничего не происходило. После этого началась чреда попыток переустановок, настроек, патчинга и так далее, но ни к какому результату это не приводило. И вот как-то одним простым днем я нашел одну интересную закономерность. Как вы знаете в юникс системах используется такое понятие как права доступа к папкам и файлам проще chmod. Так вот когда делается бэкап  в Magento, папка, а которую сохраняется архив с бэкапом должна иметь права chmod 777,  то есть права на запись,  только при таких правах бэкап успешно сохранится и ляжет в нужном месте. Я выставлял chmod 777 всей папке с проектом и ничего не происходило.

Как оказалось, причина была в том, что система после установки прав 777 автоматически возвращала папке /mnt и всем вложенным в нее права 644. Таковы ее понятия,  shared folders система понимала как диск что-ли. В общем побороть этот недуг я был не в состоянии. Осталось только промонтировать расшареную папку для полного удобства разработки в /var/www/ но как?
Давайте сразу обратимся на официальный сайт VMWare,  а написано на этот счет там следующее:

Mount Command Syntax

Command

Description

mount -t vmhgfs .host:/ /home/user1/shares

Mounts all shares to /home/user1/shares

mount -t vmhgfs .host:/foo /tmp/foo

Mounts the share named foo to /tmp/foo

mount -t vmhgfs .host:/foo/bar /var/lib/bar

Mounts the subdirectory bar within the share foo to /var/lib/bar

Хорошо согласен, это работает. пишу в терминале mount -t vmhgfs .host:/domains /var/www  и ВУАЛЯ, моя shared folder в /var/www/,  ура, класс, супер! Но что будет если перезагрузить гостевую систему?  Ничего,  папка исчезает и гостя.  Все это одноразовые решения текущей сессии. Как только мы сделаем перезагрузку, все исчезнет. Меня это не устраивало и я решил найти способ такой, чтобы после перезагрузки папки были на месте все время. Опять же обратился на официальный сайт VMWare и увидел следующее:

Для примера, чтобы автоматически смонтировать расшаренную папку в нужно вам место при запуске системы, отредактируйте файл /etc/fstab и добавьте туда вот такую строку .host :/ /mnt/hgfs vmhgfs defaults 0 0.  Мы понимаем что вместо /mnt/hgfs нужно поставить /var/www.  Я так и сделал, но после перезагрузки система сказала что я что-то сделал не так и папка туда не промонтировалась. Мало того, в момент загрузки гоствеой системы, она зависала с ошибкой «не могу смнтировать папку в указанное конфигом место» и пока мы не нажмем на клавиатуре букву «S» (skip — пропустить понтирование) система не загрузится.

Я долго танцевал с бубном, пытался сконфигурировать это,  правкой fstab естественно это не закончилось, пошли в ход системные конфиги и так далее.  Вобщем на одной виртуалке у меня это удалось, но я не смог запомнить алгоритм и что я где как сделал, это было растянуто во времени в 4 дня примерно.

И тут мне приходит одна идея: а зачем все эти трудности, если можно просто при запуске заставить систему каждый раз выполнять команду терминала mount -t vmhgfs .host:/domains /var/www и каждый раз при старте системы у меня папка будет находится в нужном месте.

Итак друзья, наверное это самый простой способ без гаданий на кофейной гуще автоматически смонтировать shared folders  в /var/www/

На этом все, удачной всем работы! 🙂

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

%d такие блоггеры, как: