sobota 30. června 2012

VirtualBox, Debian, Hg, Trac

Prostředí se bude používat jako server pro Mercurial a Trac.
Vytvoření virtuálního počítače a instalace Debianu
  1. Vytvořit standardní Virtual Machine (VM) pro Debian:
    • Jméno: HgTrac
    • OS: Linux, Version: Debian
    • RAM: 256 MB
    • HDD: 100 GB data
    • CD-ROM: CD1 ISO image - i386 verze
    • Network: Bridged Adapter
  2. Spustit VM a vybrat textovou instalaci: Install
  3. Locale: english-us
  4. Hostname: hgtrac, Domain: cendaweb.cz
  5. User: trac - uživatel, pod kterým běží trac i má uložený hg repositáře
  6. Partition disks:
    • Guided - use entire disk
    • one partition
  7. Software collections: Standard system utilities, Web server, SSH server
  8. Příhlásit se vzdáleně přes SSH
  9. SSH s klíčema
    1. Na stroji odkud se chci hlásit si vygeneruju klíče:
      ssh-keygen
      Windows: spustit puttygen.exe, vygenerovat klíč, uložit privátní klíč
    2. Veřejný klíč zkopíruju na stroj kam se chci hlásit:
      scp -P 22 id_dsa.pub user@remote:~/
      Windows: nic
    3. Na stroji kam se chci hlásit přidám zkopírovaný klíč do autorizovaných klíčů:
      cat id_dsa.pub >> ~/.ssh/authorized_keys2
      Windows: vložit vše z políčka Public key for pasting... do authorized_keys2
    4. Smažu id_dsa.pub:
      rm id_dsa.pub
    5. Případně pořeším práva:
      chmod 600 ~/.ssh/authorized_keys2
  10. Zakázání SSH autorizace heslem
    V /etc/ssh/sshd_config musí být:
    • RSAAuthentication yes (defaultní hodnota)
    • PubkeyAuthentication yes (defaultní hodnota)
    • ChallengeResponseAuthentication no
    • PasswordAuthentication no
    • UsePAM no
    Pak aktualizovat ssh: sudo /etc/init.d/ssh reload


Konfigurace Apache
  1. Nastavit správné ServerName v /etc/apache2/httpd.conf:
    ServerName moje.domena.cz
    Nenastavení správné domény vede později k obskurní chybě:
    svn: OPTIONS of 'https://svn.example.com/repos':
    SSL negotiation failed: SSL error code -1/1/336032856
  2. Povolit SSL:
    a2enmod ssl
  3. Povolit port 443 přidáním řádku do /etc/apache2/ports.conf:
    Listen 443
  4. Vygenerovat SSL certifikát (hostname svntrac):
  5. mkdir /etc/apache2/ssl
    make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
  6. Vytvořit virtuálního hosta:
    • cp /etc/apache2/sites-available/default /etc/apache2/sites-enabled/hgtrac
    • Upravit konfiguraci: vim /etc/apache2/sites-enabled/hgtrac přidáním chybějících řádků:
      NameVirtualHost *:443
      <virtualhost *:443="">
              ServerAdmin mail@mail.cz
              ErrorLog /var/log/apache2/error.log
              LogLevel warn
              CustomLog /var/log/apache2/access.log combined
              SSLEngine on
              SSLCertificateFile /etc/apache2/ssl/apache.pem
              SSLProtocol all -SSLv2
              SSLCipherSuite HIGH
      </virtualhost>
      
  7. Restartovat Apache: /etc/init.d/apache2 restart
    • Varování o jménu serveru jde zrušit přidáním ServerName svntrac do /etc/apache2/apache2.conf
    • Virtuální host už je povolený - pokud ne, povolit ho: a2ensite svntrac
  8. Vyzkoušet https://localhost/. Bude si stěžovat na neplatný certifikát, protože jsme si ho sami vytvořili. Na stránce by mělo být zobrazeno:
    It works!
Konfgurace Hg
  1. Nainstalovat Mercurial:
    1. Use www.backports.org to install the newest mercurial
    2. apt-get -t squeeze-backports install mercurial -V
  2. Nainstalovat Trac (příště na všechno použít easy-install):
    1. apt-get install -V python-setuptools
    2. apt-get install -V python-genshi
    3. apt-get install -V python-babel
    4. apt-get install -V python-pygments
    5. apt-get install -V python-docutils
    6. apt-get install subversion
    7. easy_install -U Trac==dev
    8. svn co http://svn.edgewall.com/repos/trac/plugins/0.13/mercurial-plugin
      1. cd mercurial-plugin
      2. python setup.py bdist_egg
      3. python setup.py install
  3. Hg repositáře vytvořit uživatelem trac v jeho home adresáři. Vzdáleně se k nim přistupuje i z Windows přes ssh
    1. Grab putty.exe and plink.exe from PuTTY website.
    2. Connect to remote ssh host over ssh using PuTTY once and have PuTTY save its key as a known host.
       Or run "C:\path to\plink.exe" -ssh -i "C:\your path to\private.key" user@server.com to add it.
    3. Add the following to the [ui] section of your ~/Mercurial.ini file
       ssh="C:\path to\plink.exe" -ssh -i "C:\your path to\private.key"
    4. Profit:
       hg clone ssh://user@server.com:/hg/repository (repository must exist)
    
  4. Configure Trac
    1. trac-admin trac/local initenv
    2. trac-admin /home/trac/trac/local/ deploy /home/trac/deploy
    3. mv deploy/* trac/
    4. Změnit vlastníka adresáře /home/trac/trac: chown www-data:www-data -R /home/trac/trac
    5. Vytvořit administrátora: trac-admin /home/trac/trac/local permission add jmeno TRAC_ADMIN
    6. Upravit konfiguraci Trac: vim /home/trac/trac/local/conf/trac.ini
    7. apt-get install libapache2-mod-wsgi
    8. Přidat do konfigurace Apache: vim /etc/apache2/sites-enabled/hgtrac
      WSGIScriptAlias /trac /home/trac/trac/cgi-bin/trac.wsgi
      
      <Directory /home/trac/trac/cgi-bin>
          WSGIApplicationGroup %{GLOBAL}
          Order deny,allow
          Allow from all
      </Directory>
      
    9. Vytvořit soubor s hesly na basic authentification pro Apache:
      htpasswd -c /etc/apache2/trac.passwd cenovsky
      Další uživatelé už bez -c:
      htpasswd /etc/apache2/trac.passwd honza
    10. Upravit /etc/apache2/sites-enabled/hgtrac:
      RedirectMatch ^/$ /trac/
      <location /trac>
          AuthType Basic
          AuthName "Trac"
          AuthUserFile /etc/apache2/trac.passwd
          Require valid-user
          SSLRequireSSL
      </location>
      
    11. Přesměrovat vše z portu 80 na 443 (/etc/apache2/sites-enabled/default):
      Redirect permanent / https://vase.stranky.cz/
      
  5. Konverze svn -> hg na Windows:
    1. hg clone svn+https://trac.bakalari.cz/svnprivate C:\src\svnprivate
      
    2. Create c:\src\svnprivate\rename.py:
      import sys
      for path in sys.stdin:
          old = path[:-1] # strip newline
          new = old.decode("utf-8").encode("cp1250")
          print 'rename "%s" "%s"' % (old, new)
      
    3. V c:\src\svnprivate\ spustit:
      hg manifest --all | C:\Python27\python.exe rename.py > rename.txt
      
    4. hg convert --filemap C:\src\svnprivate\rename.txt svnprivate svnprivate2
      
  6. Zprovoznění Hg v Tracu

Trac plugins
Pluginy jsou popsány v samostatném článku.
Ostatní
  • Přidat do cronu aktualizaci času pomocí ntpdate pool.ntp.org

čtvrtek 11. února 2010

Trac plugins

Po instalaci pluginu se obvykle musí restartovat Apache.
  1. TracWiki WYSIWYG Editor Plugin
    • easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11
    • tracwysiwyg.* = enabled
  2. Add a "Clone" button to tickets
    •  Instalovat přes Admin rozhraní
    • ve skriptu změněno TICKET_ADMIN na TICKET_CREATE. ticket_clone.* = enabled
  3. Autocomplete user fields (assigned to and CC) on tickets
    • easy_install http://trac-hacks.org/svn/autocompleteusersplugin/0.11
    • autocompleteusers.* = enabled
  4. A Tagging System for Trac
    • easy_install http://trac-hacks.org/svn/tagsplugin/tags/0.6
    • tractags.* = enabled
    • Spustit: trac-admin projekty upgrade
    • Přidat práva TAGS_VIEW, TAGS_MODIFY autentifikovaným uživatelům.
  5. Add support for ticket dependencies to Trac
    • easy_install http://trac-hacks.org/svn/masterticketsplugin/0.11
    • apt-get install graphviz
    • Upravit konfiguraci Trac: vim /home/trac/projekty/conf/trac.ini
      [components]
      mastertickets.* = enabled
      [ticket-custom]
      blocking = text
      blocking.label = Blocking
      blockedby = text
      blockedby.label = Blocked By
      [mastertickets]
      dot_path=/usr/bin/dot
    • trac-admin /home/trac/projekty/ upgrade
  6. email2trac utilities
    • apt-get install trac-email2trac fetchmail
    • fetchmail se spouští jako démon pod uživatelem fetchmail, proto musíme tohoto uživatele přidat do skupiny www-data a upravit práva v /home/trac tak, aby uživatel fetchmail mohl vytvořit nový ticket: adduser fetchmail www-data chmod g+w -R /home/trac/
    • upravit /etc/default/fetchmail:
      START_DAEMON=yes
    • vytvořit /etc/fetchmailrc:
      poll mail.domena.cz with proto POP3
      user 'trac@domena.cz' with password 'xxx' is 'trac' here
      mda "/usr/bin/email2trac"
    • fetchmail je náchylný na správný práva: chmod 710 /etc/fetchmailrc
    • upravit konfiguraci /etc/email2trac.conf podle potřeby - například:
      project: /home/trac/projekty
      ticket_update: 1
      ...
      default_type: task
    • spustit fetchmail: /etc/init.d/fetchmail start
  7. Hierarchical navigation menus
    • easy_install http://trac-hacks.org/svn/menusplugin
    • Restart Tracu (tj. Apache)
    • Povolit TracMenusPlugin plugin přes WebAdmin
    • Nakonfigurovat menu
    • Upravit CSS (/usr/lib/python2.5/site-packages/TracMenusPlugin-0.1-py2.5.egg/tracmenus/htdocs/css/tracmenus.css)
  8. Never receive emails for tickets your change
    • easy_install http://trac-hacks.org/svn/nevernotifyupdaterplugin/0.11
    • Restart Tracu (tj. Apache)
    • Povolit nevernotifyupdaterplugin plugin přes WebAdmin
  9. Table of Contents Macro
    • easy_install http://trac-hacks.org/svn/tocmacro/0.11
    • Restart Tracu (tj. Apache)
    • Povolit TracTocMacro plugin přes WebAdmin
  10. BackLinksMenu
    • cd trac/plugins
    • wget http://trac-hacks.org/svn/backlinksmenumacro/0.11/BackLinksMenu.py
    • Aplikovat patch pro BackLinksMenu.py
    • Restart Tracu (tj. Apache)
    • Povolit BackLinksMenuMacro plugin přes WebAdmin
  11. TicketBackLinksMacro
    • easy_install http://trac-hacks.org/svn/ticketbacklinksmacro/0.11
    • Aplikovat patch pro /usr/lib/python2.5/site-packages/TicketBackLinksDescription-0.1-py2.5.egg/TicketBackLinksDescription/macro.py (odstranit mezeru za číslem ticketu v query)
    • Restart Tracu (tj. Apache)
    • Povolit TicketBackLinks* plugin přes WebAdmin
  12. Display user login stats
    • cd trac/plugins
    • wget http://trac-hacks.org/svn/userstatsmacro/0.11/UserStats.py
    • Restart Tracu (tj. Apache)
    • Povolit UserStats Rev plugin přes WebAdmin
  13. Automatically add a Last Modified line at the end of each wiki page
    • Edit trac/templates-site.html and add:
      <div py:match="div[@id='content' and @class='wiki']" py:attrs="select('@*')">
        ${select('*')}
        <div class="lastmodified">Last modified by ${format_author(page.author)}, ${format_datetime(page.time)} (${dateinfo(page.time)} ago)</div>
      </div>
      
    • Restart Tracu (tj. Apache)
  14. List change log from repository
    • easy_install http://trac-hacks.org/svn/changelogmacro/branches/0.11
    • Restart Tracu (tj. Apache)
    • Povolit ChangeLogMacro 0.2-r7923 plugin přes WebAdmin
  15. Doxygen plugin
    • easy_install http://trac-hacks.org/svn/doxygenplugin/0.11
    • Restart Tracu (tj. Apache)
    • Povolit TracDoxygen 0.11.0.2 plugin přes WebAdmin
    • Přidat uživatelům právo DOXYGEN_VIEW (ve WebAdminu)
    • Přidat (upravit) sekci [doxygen] v traci.ini:
      [doxygen]
      path = /var/cache/doxygen/myproject
      html_output = html
      
  16. Ticket list in a box on the wiki page - netestováno
  17. Integration of the Buildbot continuous integration server into trac - netestováno

pátek 4. prosince 2009

Ubuntu 9.10 na HP Compaq nc6220

Rychlost TrackPointu
Do Startup Applications přidat:
xinput set-ptr-feedback "PS/2 Generic Mouse" 1 9 1

SSH s klíčema
  1. Na stroji odkud se chci hlásit si vygeneruju klíče:
    ssh-keygen
    Windows: spustit puttygen.exe, vygenerovat klíč, uložit privátní klíč
  2. Veřejný klíč zkopíruju na stroj kam se chci hlásit:
    scp -P 22 id_dsa.pub user@remote:~/
  3. Na stroji kam se chci hlásit přidám zkopírovaný klíč do autorizovaných klíčů:
    cat id_dsa.pub >> ~/.ssh/authorized_keys2
    Windows: vložit vše z políčka Public key for pasting... do authorized_keys2
  4. Smažu id_dsa.pub:
    rm id_dsa.pub
  5. Případně pořeším práva:
    chmod 700 .ssh/
    chmod 600 ~/.ssh/authorized_keys2
SSH Port forwarding
  • ssh -L 1234:localhost:23 username@host
    lokální port 1234 bude přeposílán na host:23
  • ssh -R 1234:localhost:23 username@host
    host:1234 bude přeposílán na lokální port 23
    • SSH on host must have GatewayPorts yes in /etc/ssh/sshd_config
Zakázání SSH autorizace heslem
V /etc/ssh/sshd_config musí být:
  • RSAAuthentication yes (defaultní hodnota)
  • PubkeyAuthentication yes (defaultní hodnota)
  • ChallengeResponseAuthentication no
  • PasswordAuthentication no
  • UsePAM no
Pak aktualizovat ssh: sudo /etc/init.d/ssh reload

Zamykání obrazovky při hibernaci
Spustit gconf-editor a zkontrolovat:
  • /apps/gnome-screensaver/user_swith_enabled - vypnutý
  • /apps/gnome-power-management/lock/hibernate - vypnutý
Rozlišení ve VirtualBoxu
Tenhle příkaz nastaví maximální rozlišení pro všechny virtuální počítače:
VBoxManage setextradata global GUI/MaxGuestResolution 1280,1024

Win32 kodeky
Nainstalovat SMPlayer, stáhnout kodeky, rozbalit je do /usr/lib/codecs/

Problémy se síťovou kartou u ACER 5635Z
Karta se náhodně odpojuje - viz ubuntu forums. Vyřešeno pomocí
sudo apt-get install linux-backports-modules-karmic

pátek 2. října 2009

SVN a Trac hooks

SVN a Trac hooks slouží k provázání SVN a Trac. Commit do SVN se nepovolí pokud není v komentáři odkazovaný nějaký ticket. Během commitu se v souborech nahradí proměnné odkazující na aktuální verzi, datum a čas commitu a člověka, který soubor commitoval. Po commitu se automaticky připojí komentář ke všem odkazovaným ticketům a případně se tickety zavřou.

Instalace

Trac
  • Nakopírovat skripty trac-pre-commit-hook a trac-post-commit-hook do /home/trac/projekty/conf (pozor na stažení správně verze skriptů podle verze nainstalovaného Trac)
  • Nastavit práva pro spuštění: chmod u+x /home/trac/projekty/conf/trac-pre-commit-hook /home/trac/projekty/conf/trac-post-commit-hook

SVN
  • mv /home/svn/projekty/hooks/pre-commit.tmpl /home/svn/projekty/hooks/pre-commit
  • Upravit /home/svn/projekty/hooks/pre-commit na
    REPOS="$1"
    TXN="$2"
    TRAC_ENV="/home/trac/projekty/"
    LOG=`/usr/bin/svnlook log -t "$TXN" "$REPOS"`
    /home/trac/projekty/conf/trac-pre-commit-hook "$TRAC_ENV" "$LOG" || exit 1
    
    # Exit on all errors.
    set -e
    
    # All checks passed, so allow the commit.
    exit 0
  • Nastavit práva pro spuštění: chmod u+x /home/svn/projekty/hooks/pre-commit
  • mv /home/svn/projekty/hooks/post-commit.tmpl /home/svn/projekty/hooks/post-commit
  • Upravit /home/svn/projekty/hooks/post-commit na
    REPOS="$1"
    REV="$2"
    TRAC_ENV="/home/trac/projekty/"
    
    /home/trac/projekty/conf/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV"
    
  • Nastavit práva pro spuštění: chmod u+x /home/svn/projekty/hooks/post-commit
  • Ve skriptech doplnit lokalizavi klíčových slov: vizrefoprava
Nahrazování proměnných

Nastavení se musí udělat na klientu v souboru <uživatelský adresář>\Application Data\Subversion\config pomocí auto-props. A když už se edituje, tak doporučuju nastavit global-ignore. Moje nastavení:
[miscellany]
global-ignores = *.~* *.bak *.dcu *.DCU *.old *.pyc tags *.swp
enable-auto-props = yes

[auto-props]
*.txt = svn:eol-style=native
*.py = svn:eol-style=native;svn:keywords="Date Author Revision Id"
*.pas = svn:eol-style=native;svn:keywords="Date Author Revision Id"
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
V souborech *.pas a *.py se budou při commitu nahrazovat aktuálním stavem tyto řetězce:
  • $Rev$
  • $Author$ 
  • $Date$
  • $Id$

Zálohování a obnova SVN a Trac

Debian se SVN a Trac běží ve VirtualBoxu, který je hostovaný ve Windows 7 - viz předchozí blog. Zálohovat se tedy bude do sdíleného adresáře z Windows 7.

Nastavení Windows 7
  • vytvořit adresář na zálohy: c:\backup
  • vytvořit uživatele Backup s heslem
  • nasdílet c:\backup tak, že jen uživatel Backup do něj má právo zápisu a ostatní nic
Nastavení Debianu
  • apt-get install winbind smbclient smbfs bzip2
  • nastavit Workgroup, nepoužívat WINS z DHCP
  • v /etc/nsswitch.conf upravit řádku s host na:
    hosts:     files wins dns
  • otestovat sdílení: smbclient -L server -U Backup
    po zadání hesla vypíše seznam sdílených adresářů
    svntrac:~# smbclient -L server -U Backup
    Enter Backup's password:
    Domain=[SERVER] OS=[Windows 7 Professional 7600] Server=[Windows 7 Professional 6.1]
    
            Sharename       Type      Comment
            ---------       ----      -------
            ADMIN$          Disk      Remote Admin
            Backup          Disk
            C$              Disk      Default share
            IPC$            IPC       Remote IPC
    Domain=[SERVER] OS=[Windows 7 Professional 7600] Server=[Windows 7 Professional 6.1]
    
            Server               Comment
            ---------            -------
    
            Workgroup            Master
            ---------            -------
    
  • vytvořit mount-adresář : mkdir /mnt/backup
  • namountovat ručně: mount -o user=backup -t smbfs //server/backup /mnt/backup
  • pokud funguje, tak nastavit automatické mountování upravením /etc/fstab:
    //server/backup /mnt/backup     smbfs   user=backup,password=backup,file_mode=0777,dir_mode=0777 0 0
  • restart a zkusit, že to funguje
  • pokud je heslo příliš dlouhé (víc jak 16 znaků) anebo vadí, že je v /etc/fstab viditelné, tak se musí vytvořit soubor s hesly:
    vim /root/.smbcredentials
    username=backup
    password=backuppassword
    chmod 700 /root/.smbcredentials
    //server/backup /mnt/backup     smbfs   credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777 0 0

Zálohování

Trac
  • mkdir /mnt/backup/trac
  • Vytvořit skript trac-backup.sh
    #!/bin/sh
    projekt="bakalari"
    tmpdir="/tmp/trac"
    rm -rf $tmpdir
    mkdir $tmpdir
    
    backupfile=$tmpdir"/"$projekt"."`eval date +%Y%m%d%H%M`".tgz"
    trac-admin /home/trac/$projekt hotcopy $tmpdir"/"$projekt
    tar -jcf $backupfile -C $tmpdir $projekt 
    cp $backupfile /mnt/backup/trac
  • chmod u+x trac-backup.sh
  • Spustit: ./trac-backup.sh
    V /mnt/backup/trac by se měl vytvořit soubor projekty.YYYYmmddHHMM.tgz, který obsahuje zálohu Tracu. Je komprimovaný pomocí bzip2.
  • Nastavit denní zálohování: do crontab -e přidat
    35 3 * * * /root/trac-bakalari-backup.sh
SVN
Zálohuje se jak hotcopy, tak dump. Hotcopy není jednoduše přenositelný na jiný systém, ale zálohuje i pre/post commit skripty.
  • mkdir /mnt/backup/svn
  • Vytvořit skript svn-backup.sh:
    #!/bin/sh
    projekt="bakalari"
    tmpdir="/tmp/svn"
    rm -rf $tmpdir
    mkdir $tmpdir
    
    backupfile=$tmpdir"/"$projekt".dump."`eval date +%Y%m%d%H%M`".tgz"
    svnadmin dump /home/svn/$projekt | bzip2 -c > $backupfile
    cp $backupfile /mnt/backup/svn
    
    backupfile=$tmpdir"/"$projekt"."`eval date +%Y%m%d%H%M`".tgz"
    svnadmin hotcopy /home/svn/$projekt $tmpdir"/"$projekt
    tar -jcf $backupfile -C $tmpdir $projekt 
    cp $backupfile /mnt/backup/svn
  • chmod u+x trac-backup.sh
  • Spustit: ./svn-backup.sh
    /mnt/backup/svn by se měly vytvořit soubor projekty.dump.YYYYmmddHHMM.tgz, a projekty.YYYYmmddHHMM.tgz které obsahují dump a hotcopy zálohu SVN. Jsou komprimovaný pomocí bzip2.
  • Nastavit denní zálohování: do crontab -e přidat
    35 3 * * * /root/svn-bakalari-backup.sh
Poznámka: Nakonec zálohuju jen hotcopy - přenos na jinej systém nehrozí, protože SVN běží ve virtuálním počítači. A případný dump se dá jednoduše udělat.

Obnova

Trac
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální verzi: rm -rf /home/trac/projekty
  • Nahrát zálohu: tar -xvkjf zaloha.tgz -C /home/svn/
  • Upravit práva:
    • chown -R www-data.www-data /home/svn/projekty
    • chmod -R g+ws /home/svn/projekty
  • Spustit Apache: /etc/init.d/apache2 start
Obnova SVN - z hotcopy
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální repozitář: rm -rf /home/svn/projekty
  • Nahrát zálohu: tar -xvkjf zaloha.tgz -C /home/svn/
  • Upravit práva:
    • chown -R www-data.www-data /home/trac/projekty
  • Spustit Apache: /etc/init.d/apache2 start
  • Klienti musí znovu provést checkout pokud jsou na vyšší verzi než byla záloha.
Obnova SVN - z dump
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální repozitář: rm -rf /home/svn/projekty
  • Vytvořit ho znovu: svnadmin create /home/svn/projekty
  • Upravit práva:
    • chown -R www-data.www-data /home/svn/projekty
    • chmod -R g+ws /home/svn/projekty
  • Nahrát zálohu: bunzip2 -kc zaloha.dump.tgz | svnadmin load /home/svn/projekty
  • Spustit Apache: /etc/init.d/apache2 start
  • Klienti musí znovu provést checkout pokud jsou na vyšší verzi než byla záloha.

čtvrtek 1. října 2009

Instalace Debianu do VirtualBoxu pro SVN a Trac

Prostředí se bude používat jako server pro SVN a Trac.

Vytvoření virtuálního počítače a instalace Debianu
  1. Vytvořit standardní Virtual Machine (VM) pro Debian:
    • Jméno: SVNTrac
    • OS: Linux, Version: Debian
    • RAM: 256 MB
    • HDD: 500 GB data
    • CD-ROM: ISO image debian-503-i386-businesscard.iso (Official businesscard images for the "stable" release - i386 verze)
  2. Spustit VM a vybrat textovou instalaci: Install
  3. Hostname: svntrac, Domain: <nic>
  4. Partition disks:
    • Guided - use entire disk
    • Separate /home partition
  5. User: trac
  6. Software collections: Standard system
  7. Přihlásit se lokálně jako root:
    • Do /etc/apt/sources.list přidat:
      deb http//:ftp.cz.debian.org/debian unstable main
    • Vytvořit /etc/apt/apt.conf a vložit do něj (viz Jak udržovat smíšený systém):
      APT::Default-Release stable
    • Spustit:
      apt-get update
      apt-get upgrade
    • Instalace balíčků ze stabilního repositáře:
      apt-get install ssl-cert openssh-server libapache2-mod-python libapache2-mod-python-doc
    • Instalace balíčků ze nestabilního repositáře (chceme poslední dostupnou verzi):
      apt-get install -t unstable subversion subversion-tools trac python-setuptools libapache2-svn
    • Odhlásit se lokálně a příhlásit se vzdáleně přes SSH
Konfigurace Apache
  1. Nastavit správné ServerName v /etc/apache2/httpd.conf:
    ServerName moje.domena.cz
    Nenastavení správné domény vede později k obskurní chybě:
    svn: OPTIONS of 'https://svn.example.com/repos':
    SSL negotiation failed: SSL error code -1/1/336032856
  2. Povolit SSL:
    a2enmod ssl
  3. Povolit port 443 přidáním řádku do /etc/apache2/ports.conf:
    Listen 443
  4. Vygenerovat SSL certifikát (hostname svntrac):
  5. mkdir /etc/apache2/ssl
    make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
  6. Vytvořit virtuálního hosta:
    • cp /etc/apache2/sites-available/default /etc/apache2/sites-enabled/svntrac
    • Upravit konfiguraci: vim /etc/apache2/sites-enabled/svntrac
      NameVirtualHost *:443
      <virtualhost *:443="">
              ServerAdmin mail@mail.cz
              ErrorLog /var/log/apache2/error.log
              LogLevel warn
              CustomLog /var/log/apache2/access.log combined
              SSLEngine on
              SSLCertificateFile /etc/apache2/ssl/apache.pem
              SSLProtocol all -SSLv2
              SSLCipherSuite HIGH
      </virtualhost>
      
  7. Restartovat Apache: /etc/init.d/apache2 restart
    • Varování o jménu serveru jde zrušit přidáním ServerName svntrac do /etc/apache2/apache2.conf
    • Virtuální host už je povolený - pokud ne, povolit ho: a2ensite svntrac
  8. Vyzkoušet https://localhost/. Bude si stěžovat na neplatný certifikát, protože jsme si ho sami vytvořili. Na stránce by mělo být zobrazeno:
    It works!
Konfgurace SVN
  1. Vytvořit adresář pro svn data: mkdir /home/svn
  2. Vytvořit repozitář pro projekty: svnadmin create /home/svn/projekty
  3. Upravit práva: 
    • chown -R www-data.www-data /home/svn/projekty
    • chmod -R g+ws /home/svn/projekty
  4. Vytvořit soubor s hesly na basic authentification pro Apache:
    • htpasswd -c -m /etc/apache2/dav_svn.passwd cenovsky
    • Další uživatelé už bez -c: htpasswd -m /etc/apache2/dav_svn.passwd honza
  5. Povolit WebDAV v Apachi: vim /etc/apache2/mods-available/dav_svn.conf
    <Location /svn>
        DAV svn
        SVNParentPath /home/svn
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
        SSLRequireSSL
        Require valid-user
    </Location>
    
    V konfiguračním souboru je předdefinovaná varianta, kdy anonymní uživatelé mohou repozitář číst. Já to nechci, takže jsem <LimitExcept> zrušil a přidal SSLRequireSSL.
  6. Restartovat Apache: /etc/init.d/apache2 restart
    Vyzkoušet: https://localhost/svn/projekty. Na stránce by mělo být zobrazeno:
    projekty - Revision 0:/
  7. Naimportovat SVN repozitář (pokud už existoval): svnadmin load /home/svn/projekty <projekty.dump
Konfigurace Trac
  1. Trac je nainstalovaný v /usr/share/pyshared/trac
  2. Měl by být k dispozici adresář /home/trac. Pokud ne, tak vytvořit.
  3. Vytvořit prostředí pro projekty:
    • cd /home/trac
    • trac-admin projekty initenv
  4. Změnit vlastníka adresáře /home/trac: chown www-data:www-data -R /home/trac
  5. Vytvořit administrátora: trac-admin projekty permission add jmeno TRAC_ADMIN
  6. Upravit konfiguraci Trac: vim /home/trac/projekty/conf/trac.ini
  7. Přidat do konfigurace Apache: vim /etc/apache2/sites-enabled/svntrac
    <location /trac>
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnvParentDir /home/trac
        PythonOption TracUriRoot /trac
        AuthType Basic
        AuthName "Projekty"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
        SSLRequireSSL
    <location>
    
  8. Restartovat Apache: /etc/init.d/apache2 restart
  9. Vyzkoušet https://localhost/trac/projekty - měla by se zobrazit hlavní stránka Tracu s přihlášeným uživatelem (na základě Basic autentikace).
Trac plugins

Pluginy jsou popsány v samostatném článku.

Ostatní

  • Přidat do cronu aktualizaci času pomocí ntpdate pool.ntp.org
  • Zakázat ssh pro roota: vim /etc/ssh/sshd_config
    PermitRootLogin no
    /etc/init.d/ssh restart
  • Zakázání uživatele: passwd trac -l
  • český formát datumu
    • dpkg-reconfigure locales - přidat cs_CZ.UTF-8 UTF-8
    • přidat do /etc/apache2/sites-enabled/svntrac, sekce <location /trac>
    • PythonOption TracLocale "cs_CZ.utf-8"