Устанавливаем и настраиваем LAMP и Trac+SVN на Ubuntu

    Прочитав эту статью, я осознал, что Trac+SVN очень помогут в работе и решил настроить эту связку у себя на машине.

    С недавних пор я использую Убунту линукс, потому установка и настройка проходили с учетом особенностей данной системы. LAMP у меня уже был установлен ранее, так же как и inadyn. В итоге я получил достаточно гибкую и удобную систему управления своими проэктами, к которой есть доступ по сети. Интересно, как сделать? (в конце ждет бонус ;)

    Новичкам советую пройти Семь Шагов от mdevils

    Установка Apache+PHP+MySQL


    Открываем консоль и пишем:

    sudo aptitude update
    sudo aptitude install apache2 php5 php5-mysql mysql-server

    Теперь у вас установлен веб-сервер Apache, PHP и MySQL, а также модуль для работы с базами. Если вам нужны дополительные модули для PHP, то их установить достаточно легко, например:

    sudo aptitude install php5-gd php5-imagick php5-xsl — устанавливает библиотеки GD, Imagick, XSL.

    mysqladmin -u root password ваш_пароль_для_root — устанавливает пароль администраторской учетной записи для доступа к БД.

    Настройка


    Для управления модулями Apache и виртуальными хостами существуют команды: a2enmod (включает модуль), a2ensite (включает хост), a2dismod и a2dissite (выключают модуль и хост).

    sudo a2enmod php5 — включаем модуль PHP

    sudo /etc/init.d/apache2 force-reload — перезагружаем апач

    Alt+F2 gksu gedit /var/www/phpinfo.php

    там пишем знакомое <?php phpinfo() ?>, сохраняем и закрываем.
    Открываем браузер:
    http://localhost — для проверки работы апача
    http://localhost/phpinfo.php — для проверки PHP

    Наш любимый mod_rewrite


    sudo a2enmod rewrite — активируем сам модуль

    Alt+F2 gksu gedit /etc/apache2/sites-available/default
    Меняем AllowOverride None на AllowOverride All, вот так:
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>

    sudo /etc/init.d/apache2 force-reload — да, сервер нужно перезапускать после внесения изменений в настройках :)

    Вам надо SSL? Пожалуйста


    sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/apache.pem — создаем сертификат

    sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl — копируем настройки для будущего хоста

    Alt+F2 gksu gedit /etc/apache2/sites-available/default
    меняем первые две строки на:
    NameVirtualHost *:80
    <VirtualHost *:80>


    Теперь к нему доступ будет происходить только по 80-му порту.

    Alt+F2 gksu gedit /etc/apache2/sites-available/ssl
    NameVirtualHost *:443
    <VirtualHost *:443>
            …
            DocumentRoot …
            SSLEngine on
            SSLCertificateFile /etc/apache2/apache.pem

    А тут по 443, порту SSL

    a2enmod ssl — включаем SSL модуль
    a2ensite ssl — включаем хост

    sudo /etc/init.d/apache2 force-reload — уже пора запомнить, перезагружаем апач.

    https://localhost — проверяем (скорее всего скажет, что неправильный сертификат)

    А для того, чтобы апач не ругался при перезагрузке:
    Alt+F2 gksu gedit /etc/apache2/httpd.conf

    ServerName localhost

    Итак, у нас теперь есть готовый веб-сервер с PHP и MySQL.

    А как же насчет Trac и SVN?


    Есть несколько подходов к организации репозиториев, можно использовать для каждого проекта новый репозиторий, а можно использовать один репозиторий на несколько проектов. Первый способ лучше подходит для крупных компаний и для работы средней группы разработчиков над проектом, чтобы не путаться в большом потоке данных; второй проще, и лучше подходит для фрилансеров и небольших студий, на нем я и остановился.

    Subversion


    sudo apt-get install trac libapache2-svn subversion python-subversion libapache2-mod-python — устанавливаем необходимые компоненты

    sudo a2enmod mod_python — включаем модуль для работы с Python’ом

    sudo groupadd svn — создаем группу для работу с SVN
    sudo usermod -a -G svn имя_вашего_пользователя — добавляем вашего пользователя в созданную группу
    sudo usermod -a -G svn www-data — добавляем пользователя Apache в группу

    sudo mkdir /var/svn — папка для будущего репозитория
    sudo svnadmin create /var/svn — создаем сам репозиторий
    sudo chown -R www-data:svn /var/svn — меняем права папке для доступа пользователям из группы SVN
    sudo chmod -R g+ws /var/svn
    sudo htpasswd -c -m /etc/apache2/svn.htpasswd имя_вашего_пользователя — создайте пароль, который будет в последствии использоваться в Apache для доступа к папке
    Теперь создадим правило для Apache:

    Alt+F2 gksu gedit /etc/apache2/conf.d/svn
    <Location "/svn">
            DAV svn
            SVNPath /var/svn
            AuthType Basic
            AuthName "SVN Repositories"
            AuthUserFile /etc/apache2/svn.htpasswd
            Require valid-user
    </Location>

    Trac


    Повторяем практически идентичные операции, только для Trac

    sudo mkdir /var/trac
    sudo trac-admin /var/trac initenv
    sudo chown -R www-data:svn /var/trac
    sudo chmod -R g+ws /var/trac
    sudo htpasswd -c -m /etc/apache2/trac.htpasswd имя_вашего_пользователя

    Alt+F2 gksu gedit /etc/apache2/conf.d/trac
    <LocationMatch "/trac/login">
            AuthType Basic
            AuthName "Projects"
            AuthUserFile /etc/apache2/trac.htpasswd
            Require valid-user
    </LocationMatch>
    <Location /trac>
            SetHandler mod_python
            PythonInterpreter main_interpreter
            PythonHandler trac.web.modpython_frontend
            PythonOption TracEnv /var/trac
            PythonOption TracUriRoot /trac                                           
    </Location>


    Вот и все. По-моему ничего не забыл :)
    Итого:
    http://localhost — обычный доступ
    https://localhost — безопасный доступ
    http://localhost/svn — SVN, требует авторизации
    http://localhost/trac — сам Trac
    http://localhost/trac/login — вход в Trac, требует авторизации

    Обещанный бонус


    У многих из нас есть широкополосный интернет, для доступа к вашему вышенастроенному серверу можно использовать ваш айпи-адрес. Но мне, например, такое не нравится. Для подобных целей есть достаточно удобный сервис DynDNS. После регистрации вы можете создать свой домен и привязать его к вашему адресу. У меня адрес меняется динамически, каждый раз редактировать на сайте я его не хочу. Для этого существует небольшой клиент inadyn

    sudo aptitude install inadyn — устанавливаем

    Alt+F2 gksu gedit /etc/inadyn.conf — создаем файл настройки
    --username ваше_имя_в_системе_DynDNS
    --password ваш_вароль
    --update_period 60000
    --alias название.вашего.хоста
    --background
    

    sudo /usr/sbin/inadyn — запускаем клиент

    Теперь нужно добавить его в кронтаб, чтобы запускался автоматически
    export EDITOR=gedit
    sudo crontab -e


    добавляем строку
    @reboot /usr/sbin/inadyn
    сохраняем и выходим

    sudo crontab -l — проверяем, записалось ли
    ps -A | grep inadyn — смотрим, запущен или нет

    Спасибо за внимание


    в одной из следующих статей расскажу о настройке Eclipse для работы с PHP и Subverion.

    ПС спасибо людям из этой темы за поднятие кармы до уровня написания постов ;)
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 34
      0
      Классный мануал, спасибо!
        0
        спасибо! Статья полезная, но какая-то отрывочная и кусочная... хотелось бы чуть-чуть подробнее про работу скриптов a2* и виртуальные хосты :(
          0
          просто первая статья на хабре :) спасибо за критику, в следующих постараюсь рассмотреть более сложные варианты конфигурации. здесь охватил самый минимум
            +1
            А ты обращайся ;) помогу по любым вопросам ;)
              0
              Заранее спасибо :) Я пока проекты гудят временно на XAMPP (только недавно на линь переполз, а времени изучать нет... в моей ситуации изучать в процессе - не лучший выход). Так что как только устаканится - так сразу :)
                0
                Jabber локальный? правильный подход.. в некоторых случаях. спорно.. надо обдумать..
                Жду, если понадоблюсь - обращайтесь ;)
                  0
                  не, это не джаббер локальный, хотя было бы неплохо... XAMPP это что-то типа денвера только неудобнее :(
                    0
                    А, плин, забыл совсем ;) я думал вы в названии протокола Jabber'а опечатались :)
                    Да, у нас один умник на production сервер установил XAMPP.. веселья то было...
              0
              Я недавно немного писал о настройке виртуальных хостов здесь
                0
                Почему-то не сработало добавление гиперссылки, вот:
                http://www.miroling.org.ua/2008/07/14/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-apachemysqlphp-%D0%B2-linux-ubuntu-804-hardy-herron/
                0
                Чорт! Я два дня назад чуть голову об стену не разбил пока этот Trac+svn под убунтой поднимал! Какие только мануалы не читал - и везде по разному пишут. Надеюсь, ваш пример рабочий. Спасибо
                  0
                  два дня назад поднял их под убунтой без особых проблем о_О
                  0
                  СУПЕР!!! Я 3 дня разбирался, но так и не осилил, а тут всё так элегантно и понятно! СПАСИБО!!!

                  Маленькое замечание об опечатках:
                  В строке sudo chown -R www-data.svn /var/trac должна быть не точка, а двоеточие между пользователем и группой sudo chown -R www-data:svn /var/trac
                  В строке htpasswd -c -m /etc/apache2/trac.htpasswd имя_вашего_пользователя не хватает в начале sudo, то есть должно быть sudo htpasswd -c -m /etc/apache2/trac.htpasswd имя_вашего_пользователя
                    0
                    Опа! Ошибка при перезагрузке Apache:

                    Syntax error on line 10 of /etc/apache2/conf.d/trac:
                    Invalid command 'PythonInterpreter', perhaps misspelled or defined by a module not included in the server configuration
                    ...fail!

                    Нет модуля python для apache. Лечится sudo apt-get install libapache2-mod-python
                      0
                      совсем выпало из головы, когда писал, спасибо… исправил этот и предыдущие ляпы
                      0
                      Забыли сделать
                      sudo apt-get install libapache2-mod-python
                      sudo a2enmod mod_python
                        0
                        Не увидел что выше это уже написали ;)
                        0
                        Лично мне после настройки SVN + Trac по данному мануалу пришлось перед
                        "Вот и все. По-моему ничего не забыл :)
                        Итого:"
                        сделать перезагрузку апача, причем не тем способом, что встречается тут, а "sudo /etc/init.d/apache2 restart"
                        Просто даже на localhost не заходил...
                          0
                          Класс! На andLinux заработало влёт! Спасибо!
                            0
                            http://localhost/trac/login - отсюда редиректит на http://localhost/trac
                            Не подскажите почему?
                              0
                              идентификация идет через сервер, если в браузере выбрали «запомнить логин и пароль», то всё будет автоматом логиниться по ссылке http://localhost/trac/login с последующим редиректом на главную ;)
                              0
                              спасибо, дельная статья. особенно касательно ssl.
                                0
                                а у меня ругается на "Unknown DAV provider" в самом конце ((
                                  0
                                  Отличная статья. Побольше бы таких. Несколько коментов от себя: про dyndns хорошо написано здесь: http://tigro.info/blog/index.php?id=366 (регистрация, сервис), еще встретился неприятный баг для ubuntu 7.10 x86_64 (silverlight) при установке trac'a, который вылечился пакетом с ланчпада: https://bugs.launchpad.net/ubuntu/+source/clearsilver/+bug/86685
                                    0
                                    люди а как поставить плагин WebAdmin. Прочитал все мануалы - но работает он почему-то наполовину. Например обещанной кнопки "Admin" - нет, хотя milestone' и тикеты добавлять можно, но самой админки (как здесь : http://www.hosted-projects.com/trac/Trac…) нет :(
                                      0
                                      добавить права надо в trac-admin
                                      –1
                                      балин как всегда у меня не так как у людей:
                                      nik@eee:~$ sudo apt-get install libapache2-mod-python
                                      Чтение списков пакетов… Готово
                                      Построение дерева зависимостей
                                      Чтение информации о состоянии… Готово
                                      Уже установлена самая новая версия libapache2-mod-python.
                                      обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 3 пакетов не обновлено.
                                      nik@eee:~$ sudo a2enmod mod_python
                                      ERROR: Module mod_python does not exist!

                                      все остальное до сюда прошло идеально :)
                                        0
                                        sudo a2enmod python
                                          0
                                          Тоже столкнулся с подобным
                                          $ sudo a2enmod python
                                          Module python already enabled
                                          $ sudo a2enmod mod_python
                                          ERROR: Module mod_python does not exist!
                                            0
                                            Тажа самая проблема!
                                            Вроде мод питона активирован, но при выполнении
                                              0
                                              sudo trac-admin /var/trac initenv ругается!
                                        0
                                        спасибо, ваша статья мне очень помогла
                                          0
                                          Спасибо за инструкцию. Как раз хотел настроить такую связку.
                                          Но как нубу, хотелось бы еще знать как достучатся до виртуальных серверов в рамках локальной сети.
                                            0
                                            Добавить в /etc/hosts. Если компьютеров много, думаю можно поднять на сервере DNS с изменённой записью для ваших доменов и прописать его первым для остальных компьютеров в сети.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое