программа автоматизации бухучета
"ИНФОБУХГАЛТЕР"
продажа, установка, настройка, сопровождение
Вологда, ул.Козленская, д.35, офис 325
 (8172)21-15-70

Локальные виртуальные хосты (UBUNTU)
 

Практически все "писатели" сайтов рано или поздно сталкиваются с необходимостью работы с несколькими проектами на локальных копиях сайтов. Т.е. иметь несколько рабочих "локальных" сайтов на одном компьютере. До недавнего времени я все это делал в Windows (пакет "Xampp", там апач, PHP, mySQL). Но в LINUX-системах это намного удобнее. В UBUNTU установил LAMP(apache, PHP, mySQL). Причем настроил для работы с сайтами два компа. На другом стоит Win XP. Оказалось что редактор Scite под XP удобнее сделан, хотя родная среда для него - LINUX. Ну это дело вкуса. Да и легче на одном компе писать, а на другом отлаживать. Ну а отладка в UBUNTU и Windows - это земля и небо))). Приятно удивило, что можно не использовать "локальный" mySQL. При открытии локальной копии копии сайта, "удаленные" базы корректно открываются и обрабатываются как "локальные". И это без всяких настроек. В Windows мне этого не удалось добиться. Там приходилось дублировать базу в локальном mySQL. Еще поразила возможность подключившись по FTP к удаленному серверу прямо на нем работать с файлами в локальных программах и сохранять прямо из программ опять же на сервере. 

Ну ладно, можно долго еще описывать преимущества Linuxa. Короче, при работе с одним сайтом проблем нет. Ничего особо настраивать не надо. 

По умолчанию DocumentRoot устанавливается в "/var/www/html". Т.к. это папка только для разработки и должна быть на полную доступна отовсюду из локальной сети, то я установил на нее права 777(полные для всех), а доступ по сети, естественно, запаролил.

DocumentRoot - это корневой каталог для сайта. Устанавливается он в "/etc/apache2/site-available/000-default.conf"

<VirtualHost *:80>

    ServerName "localhost"

    ServerAdmin webmaster@localhost

    DocumentRoot "/var/www/html/"

    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined

   <Directory "/var/www/html">

    Options All

    AllowOverride All

    Order allow,deny

    Allow from all

   </Directory>

</VirtualHost>

Можно конечно здесь все время менять DocumentRoot и Directory, но это не совсем удобно, особенно когда одновременно разрабатываются несколько проектов.

Короче план действий такой:

  1. допустим вам нужно добавить новый сайт "new-SITE".
  2. правим файл "/etc/hosts", добавим строку "127.0.0.1    new-SITE".
  3. копируем "/etc/apache2/site-available/000-default.conf" в "/etc/apache2/site-available/new-SITE.conf" (
    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/new-SITE.conf
    ) и правим новый файл

    <VirtualHost *:80>

        ServerName "new-SITE"

        ServerAdmin webmaster@localhost

        DocumentRoot "/var/www/new-SITE/"

        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined

       <Directory "/var/www/new-SITE">

        Options All

        AllowOverride All

        Order allow,deny

        Allow from all

       </Directory>

    </VirtualHost>

  4. создаем символьную ссылку на новый файл в "/etc/apache2/site-enabled/new-SITE.conf". Это можно командой  "sudo ln -s /etc/apache2/conf-available/new-SITE.conf /etc/apache2/conf-enabled/new-SITE.conf" или проще 
    sudo a2ensite new-SITE
  5. перезапускаем апач "sudo service apache2 restart".
Ну все. Есть один "тонкий" нюанс (который вынес мне весь мозг))) ). Порядок отладки рекомендую следующий.
  1. в терминале набираем "ping new-SITE". И если побежали цифры то все ОК и файл "/etc/hosts" работает.
  2. в броузере набираем "http://new-SITE". Должен открыться сайт из каталога "/var/www/new-SITE". Который там уже должен быть, естественно.
А нюанс в "http://". Я привык просто набирать "localhost". И так же набрал "new-SITE". И никакой реакции, броузер упорно отсылал к Гуглу. Пол-дня рылся в настройках, пока от отчаяния случайно не добавил "http://". Хотя и положено явно указывать протокол именно набрав "http://...."