Доброго всем времени суток.
После долгого перерыва вернулся на Linux (поскольку с одной стороны отпала необходимость стыковаться с коллегами и партнерами обязательно через MS Office, с другой стороны надоели кракозябры в GitBash по `ls -la`, надоел запрет на длинные пути к файлам, напрягает отсутствие возможности назначить разные уровни доступа для папок).
Но вот беда: третий день пытаюсь "завести" набор из apache2, php5, mysql5.5 и phpmyadmin. - Перелопатил тонны туториалов на эту тему и документацию апача по виртуальным хостам, но на последнем шаге - облом: не получается штатно передать файлы из домашней папки (типа ~/sites/test1) в apache2 для вывода в браузере.
1. в домашней папке - папки test1 и test2, а также HTML файлы внутри них имеют chmod 755 рекурсивно.
2. в файле /etc/hosts прописана строчка `127.0.0.1 localhost test1 test2`.
3. ставил последовательно метапакеты apache2, php5, mysql-server, phpmyadmin, а также пакеты php5-cli и libapache2-mod-auth-mysql .
4. после sudo a2enmod rewrite, sudo a2enmod userdir, sudo a2enmod include, sudo php5enmod mcrypt, добавления строки `extension=mcrypt.so` в /etc/php5/apache2/php.ini - перезагрузил компьютер.
5. приветствие апача на http://localhost и главная страница phpmyadmin на http://localhost/phpmyadmin открываются ОК.
6. в папке /etc/apache2/sites-available создал 2 конфига - test1.conf и test2.conf. - В test1.conf вписал следующее (в test2.conf - по аналогии):
<VirtualHost *:80>
ServerName test1
DocumentRoot /home/baursak/sites/test1
<Directory /home/baursak/sites/test1/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
7. активировал их через sudo a2ensite test1 и sudo a2ensite test2, после чего выполнил service apache2 reload.
8. при вводе в строку браузера test1/index.html открывается стандартное приветствие апача (а не содержимое моего файла).
9. при вводе в строку браузера test1/foo.html выдает `Not Found The requested URL /foo.html was not found on this server. Apache/2.4.7 (Ubuntu) Server at test1 Port 80`.
10. Можно, конечно, XAMPP все-в-одном для Linux поставить. - Но, во-первых, это же черный ящик (хоть и с 2003 г.), во-вторых, там все-равно php5-cli отдельно нужен, поскольку из командной строки даже composer не скачаешь через curl, чтобы потом православно laravel 4 поставить, в-третьих, XAMPP - это не unix-way (так и до nano можно скатиться вместо vi).
В общем, надеюсь на вашу помощь. - Stackoverflow, кстати, по этому вопросу слился: не хватает у них понятия. - Максимум, новые дистры развернуть и в бложиках своих на эту тему отписаться.
не могу осилить виртуальные хосты LAMP в Linux Mint 17 KDE
Вот так выглядят у меня в конфиге виртуальные хосты и все работает.
<VirtualHost *:80>
ServerName symfony2.dev
DocumentRoot "/var/www/html/symvony_project_name/web"
DirectoryIndex app.php
<Directory "/var/www/html/symvony_project_name/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
Вот в этом видео подробно описывается установка и настройка виртуальных хостов.
http://www.youtube.com/watch?v=-PFDGYqIQMc
Если будет непонятно, посмотрите видео прешествующее этому.
Спасибо за ссылку.
- Видео я это смотрел еще пару недель назад, будучи на Windows.
- Именно после него, кстати, намучившись с подключением к сети виртуальной машины через WiFi рутер (оказалось в итоге, что bridge + WiFi для ВМ - давний глюк, что для VirtualBox, что для VMware), я и принял окончательное решение просто перейти на Linux, не желая тащить ethernet кабель к компьютеру через всю квартиру (это при наличии WiFi!).
- Кстати, обсуждение на toster.ru подтвердило данный глюк и реального выхода из ситуации так никто там и не предложил (да и на stackoverflow.com - тоже слились).
- Может, быть, я все еще мыслю Windows-way, но ведь полно в сети Linux + LAMP туториалов, показывающих как вся веб-разработка выносится из стандартной папки апача (/var/www/html) в пользователькую папку вида /home/user/www/test1.
- Но, вот, нормально сосуществовать рядом несколько виртуальных хостов у меня не могут, хотя вчера решил уже просто тупо копировать все (ну, или почти все) шаги.
- Примеры тут http://elementary-os.ru/forum/viewtopic.php?id=483 и тут http://blog-youtoo.ru/?p=4601 (плюс еще сотни полторы).
- Похоже, что в соответствии с этим http://httpd.apache.org/docs/2.2/en/vhosts/ мне нужен вариант "Name-based Virtual Hosts (More than one web site per IP address)", описанный здесь http://httpd.apache.org/docs/2.2/vhosts/name-based.html .
- Но для этого мне нужно раскомментировать или прописать директиву "NameVirtualHost *:80" в конфиге httpd.conf .
- Однако по этой ссылке https://wiki.apache.org/httpd/DistrosDefaultLayout#Debian.2C_Ubuntu_.28Apache_httpd_2.x.29: указано, что в Debian и Ubuntu дистрах вместо httpd.conf используются 2 других конфига: /etc/apache2/apache2.conf и /etc/apache2/ports.conf . - Поскольку у меня Linux Mint (форк Ubuntu), то ровно та же структура оказалась и в моем случае.
- И, вот, оказывается, что директивы "NameVirtualHost *:80" нет ни в одном из моих конфигов. - Debian (и его форки) сломал родную структуру конфигов апача. - И, значит, локально я могу закинуть в апач и просматривать в браузере только один хост. - Для просмотра другого хоста нужно деактивировать текущий, перегрузить апач, активировать другой, активировать апач. - Я глянул в окно, - а там уже 21-й век, оказывается :(
- Менять дистр на Fedora Core или CentOS? - Они, вроде, не в фаворе на distrowatch.com . - openSUSE использует Apache 2.2 (а сейчас уже повсюду - 2.4).
(оказалось в итоге, что bridge + WiFi для ВМ - давний глюк, что для VirtualBox, что для VMware)
***
- Кстати, обсуждение на toster.ru подтвердило данный глюк и реального выхода из ситуации так никто там и не предложил (да и на stackoverflow.com - тоже слились).
Я настраивал, никаких проблем не заметил.
====================
Я работаю на сервере в основном на centos. Никаких проблем с настройкой виртуальных хостов не встречал.
По другим linux подсказывать не возьмусь.
Я настраиваю приблизительно следующим образом.
(Только команды для docker выполнять не нужно)
не все рутеры позволяют по WiFi дать 2 и более IP на один mac адрес. - Через ethernet такой проблемы не возникает.
official update 2.4.6 для opensuse 13.1. И 2.4.10 лежит в http://download.opensuse.org/repositories/Apache/openSUSE_13.1/.openSUSE использует Apache 2.2 (а сейчас уже повсюду - 2.4).
не все рутеры позволяют по WiFi дать 2 и более IP на один mac адрес. - Через ethernet такой проблемы не возникает.
А для чего это вам нужно?
official update 2.4.6 для opensuse 13.1. И 2.4.10 лежит в http://download.opensuse.org/repositories/Apache/openSUSE_13.1/.[/quote][quote="baursak"]openSUSE использует Apache 2.2 (а сейчас уже повсюду - 2.4).
Да. Уже увидел, спасибо.
[quote=baursak]не все рутеры позволяют по WiFi дать 2 и более IP на один mac адрес. - Через ethernet такой проблемы не возникает.
А для чего это вам нужно?[/quote]
Чтобы иметь на своем ноуте ВМ и чтобы ноут и ВМ были на разных IP адресах. - в этой ситуации рутеру придется раздать на mac-адрес моего ноута два разных IP. Мой рутер этого не позволяет.
Делал через NAT с пробросом портов. Все бы хорошо, но не осилил как пробросить порт 21 чтобы бродить через FTP по папкам в ВМ. - FileZilla понимает только IP.
baursak - а бридж вы как настраивали?
================
По поводу того, что на 1 mac имеет смысл вешать разные ip у меня имеются большие сомнения.
Как и в необходимости настраивать NAT, если ваш компьютер подключен к WI-FI роутеру.
===============
Как настраиваю виртуальные машины с разными IP на одном хосте я.
Без всяких NAT, пробросом портов и т.д.
не все рутеры позволяют по WiFi дать 2 и более IP на один mac адрес. - Через ethernet такой проблемы не возникает.
С чего вы решили, что на один MAC будет выдано два IP адреса? На ноутбуке у вас WIFI адаптер, а в виртуальной машине у вас виртуальный Ethernet адаптер, вы их объединяете в мост и DHCP сервер роутера просто выдас виртуальному Ethernet адаптеру, который имеет свой MAC адрес, другой IP адрес.
[quote="baursak"]не все рутеры позволяют по WiFi дать 2 и более IP на один mac адрес. - Через ethernet такой проблемы не возникает.
С чего вы решили, что на один MAC будет выдано два IP адреса? На ноутбуке у вас WIFI адаптер, а в виртуальной машине у вас виртуальный Ethernet адаптер, вы их объединяете в мост и DHCP сервер роутера просто выдас виртуальному Ethernet адаптеру, который имеет свой MAC адрес, другой IP адрес.[/quote]
Спасибо за инструкцию. - Там, правда, ВМ в среде Linux. - Для меня это пока неактуально. - Что же касается сетевых упражнений вообще, то тут я не настолько силен: не моя область :) - Да и оффтопик это уже.
с конфигом /etc/apache2/apache2.conf по умолчанию браузер выдавал:
Not Found The requested URL /foo.html was not found on this server. Apache/2.4.7 (Ubuntu) Server at test1 Port 80
после того, как прописал в конце /etc/apache2/apache2.conf такие строки:
# Include NameVirtualHost directive
NameVirtualHost *:80
браузер стал выдавать:
Forbidden You don't have permission to access /foo.html on this server. Apache/2.4.7 (Ubuntu) Server at test1 Port 80
Forbidden You don't have permission to access /bar.html on this server. Apache/2.4.7 (Ubuntu) Server at test2 Port 80
т.е. все-таки виртуальные хосты он подхватил и файлы в них увидел, и теперь что-то нужно делать с правами доступа (хотя они в домашней папке 755)
куда копать ...
Ура !!!
Все работет !!
Перезагрузил компьютер (sudo a2dissite test1.conf, sudo a2ensite test1.conf, service apache2 reload не хватило) - и все в браузере выводится !
Ну, вот, ни разу я не видел ни от убунтоводов, ни от минтоводов, ни от дебианутых этого простейшего решения (ребята из XAMPP наверняка его знают, но молчат).
Ну, вот, куда мне это все выложить, чтобы другие не убивали на это уйму времени ???
P.S. Перезагружать комп - это все-таки не linux way... - А по-другому, классически, - не прокатило. - Куда катится linux...
wiki ubuntu пишет sudo /usr/sbin/apache2ctl restart а не reload.service apache2 reload
wiki ubuntu пишет sudo /usr/sbin/apache2ctl restart а не reload.[/quote][quote="baursak"]service apache2 reload
из моего опыта, порой reload срабатывал там, где restart не срабатывал
к тому же где-то мне уже попадалось, что reload - это restart "gracefully" (типа, "мягко")
вот
http://forum.ubuntu.ru/index.php?topic=129826.0
reload запускает команду apache2ctl gracefully
что reload - это restart "gracefully" (типа, "мягко")
reload - перечитать конфигурационный файл
resart - остановка процесса и последующий запуск.
[quote="baursak"]что reload - это restart "gracefully" (типа, "мягко")
reload - перечитать конфигурационный файл
resart - остановка процесса и последующий запуск.[/quote]
Спасибо.