Заставьте Linux и Windows совместно использовать файлы и базу данных localhost (веб-сервер)
Я хотел бы, чтобы Ubuntu и Windows использовали мои базы данных htdocs и mysql для локальной разработки. Это не веб-сайт, предназначенный только для личного использования. Есть ли способ сделать это? Это ужасная идея?
1 ответ
Когда я впервые сделал это, у меня было много проблем с тем, чтобы мой стек LAMP работал хорошо с моим стеком WAMP - у меня было много ошибок "у вас нет доступа к этому", когда я переходил на localhost.
Я пробовал различные конфигурации виртуальных хостов Apache, ни одна из которых не позволяла мне получить доступ к файлам.
Что работало, чтобы использовать mount --bind
положить мои папки Windows в соответствующие папки Linux. Если это работает, вы увидите, что целевая страница Ubuntu по умолчанию для localhost заменена на "все работает" из окон. Обратите внимание, что любые файлы Linux будут скрыты файлами Windows с таким же именем.
у меня есть fstab
запись, которая монтирует мой раздел Windows на /media/windows
,
Решение было
Смонтируйте и привяжите файлы в правильные места:
Сначала создайте файл "upstart" с этим содержимым, как указано здесь.
Запустите это в терминале:
gksu gedit /etc/init/mount-bind.conf
Вставьте это в него, изменив... путь к вашим htdoc. Очевидно, протестируйте эти команды в терминале, чтобы убедиться, что у вас есть правильные пути. Расположение файлов Linux является важным битом.
#
# bind mounts
#
description "bind"
start on stopped mountall
script
mount --bind '/media/windows/.../htdocs' /var/www/html
mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysql
end script
С этими двумя командами я подошел близко, но InnoDB препятствовал запуску mysql. Проблема заключается в проверке размера файла журнала InnoDB. Простое решение состоит в том, чтобы одна ОС использовала другой файл журнала, чем другая. В противном случае MySQL будет запускать только самая последняя версия ОС. Вы также можете удалять файлы при каждом запуске или завершении работы, но проще вести отдельные журналы. Они делятся изменениями просто отлично, только не лог-файлы.
Изменить расположение файла журнала MySQL
В Ubuntu, в /etc/mysql/my.cnf
добавьте эту строку в раздел InnoDB:
innodb_log_group_home_dir = /var/log/mysql
Это решило это для меня.
Предостережение: Linux более "чувствителен к регистру", чем Windows. Там, где окна с радостью пойдут, возьмите изображение с другой прописной буквой и подайте его, linux - нет. Конечно, настоящие веб-разработчики всегда точны в своей капитализации.