Beiträge zu “Subversion”

Kernel Panic nach Kernel update in Debian 8

Der Inhalt dieses Posts ist etwas länger weil er auch teilweise meinen zeitlichen Erkenntnisgewinn mit beschreibt. Vielleicht ist es aber für andere hilfreich.

Nach einem Kernelupgrade von 3.2 auf 3.16 im Rahmen eines Debian Upgrades von 7 nach 8 auf einem Root Server führte das Neustarten des Server zu einem Kernel Panic.

Kernel Panic

Der Panic kam so früh das man gar keine richtige Fehlermeldung sehen konnte. Glücklicherweise konnte ich den Fehler in einer Virtualbox restaurieren.

Da dieser Panic auch in einer virtuellen Umgebung auftrat habe ich erst einmal Hardware Probleme ausgeschlossen.

Leider brachten auch Nachfragen in den üblichen Debian Foren keine Hinweise.

Nach etwas herumprobieren kam ich auf die Idee den Kernel und die initiale Ramdisdk initrd von der nativen Debian 8 Boot CD zu nehmen und in der virtuellen Umgebung zu booten. Und es ging.

In einem Gespräch auf einem Debian Stand der OpenRheinRuhr bekam ich den Hinweis mich mit dieser ominösen initrd näher zu beschäftigen. Ich kannte (und kenne auch heute noch) nicht die genauen Abläufe beim Booten. Diese initrd ist eine Datei die direkt nach dem Booten geladen wird und die unbedingt notwendigen Dateien für den weiteren Bootverlauf enthält. Deswegen wird diese auch immer für jeden Rechner neu gebaut. Das Werkzeug das diese initrd baut heist “initramfs-tools”.

Man kann sich den Inhalt solche einer initrd mit dem Programm lsinitramfs auch anschauen.

Als bin ich hingegangen und habe den Inhalt der funktionierenden und der nicht funktionieren initrd in Textdateien mit einander vergleichen und Stück für Stück die Unterschiede eliminiert und immer wieder eine neue initrd gebaut bis ich dann am Ende den “Bösewicht” gefunden hatte.

Der “Bösewicht” waren versteckte svn Verzeichnisse in /etc/initramfs-tools die ich vor einiger Zeit verwendet hatte meine Änderungen in der Konfiguration nachzuvollziehen.

Heute konnte die Lösung auch auf dem Root Server erfolgreich testen.

Also: Augen auf bei Subversion im /etc Verzeichnis.

16.11.15
Weitere Beiträge zu: Debian   initramfs-tools   Subversion  

Subversion: Den Repository Server wechseln

Wenn man nach dieser Anleitung ein SVN Repository auf einen anderen Server gelegt hat kann man mit diesem Befehl einfach bestehende Arbeitskopien auf den neuen Server “umleiten”

 svn sw --relocate file:///path/to/old/repo/ svn+ssh://user@newserver/path/to/newrepo/
10.8.15
Weitere Beiträge zu: Subversion  

WebSVN

WebSVN ist ein nettes Werkzeug um einen etwas komfortableren Zugriff auf ein Subversion Repository zu haben.

Unter Debian installiert es sich recht einfach wenn man einen lesenden Zugriff haben möchte

  apt-get install websvn

und dann kommen noch ein paar Konfigurationsfragen die man mit den Vorgabewerten und dem Pfad zu dem Subversion Repository beantworten muß.

Websvn-1

Websvn-2

Websvn-3

Websvn-4 Und dann ist man auch schon fertig und man kann mit dem Browser auf den Dienst zugreifen

Websvn-5

24.1.15
Weitere Beiträge zu: WebSVN   Subversion  

Subversion: Das Aufsetzen eines Backup Servers

Das Ziel dieser Übung ist es, einen weiteren Server mit den Inhalten eines Subversion Repositories zu versorgen. In meinem Fall steht dieser Server im Internet und soll nur lesenden Zugriff erhalten. Zuerst erstellen wir auf dem Backup Server das Repository

svnadmin create /var/svn/neues-repository

Damit nur ein bestimmter Benutzer hier Änderungen einpflegen darf:

vi  /var/svn/neues-repository/hooks/pre-revprop-change

#!/bin/sh
USER="$3"
if [ "$USER" = "benutzername" ];
  then exit 0;
fi
echo "Only benutzername may change revision properties" >&2 exit 1

Und dieser Benutzer sollte auch schreibrechte bekommen

chown benutzer-name:benutzer-name  -R /var/svn/neues-repository

Dann das Zielrepository auf die neuen Daten vorbereiten und dann den sync starten (Bei mir läuft alles über ssh).

svnsync init svn+ssh://ziel-server/var/svn/neues-repository svn+ssh://quellserver/var/svn/quell-repository
Copied properties for revision 0.

svnsync sync svn+ssh://ziel-server/var/svn/neues-repository


Zurücklehnen und warten. Das kann natürlich lange dauern
 

12.12.12
Weitere Beiträge zu: Subversion  

Mein Subversion Panik Button

Damit ich beim nächsten mal nicht lange suchen muss.

svn info | grep Rev
Revision: NNN
svn merge -r NNN:NNN-1 .
svn commit -m "Rolled back to rNNN-1"

 

17.11.12
Weitere Beiträge zu: Subversion  

Meld als SVN Frontend

Meld ist ein Programm mit dem man Verändungen in Textdateien vergleichen kann und Änderungen einer Datei einfach in eine andere Version übernehmen kann.

Durch Zufall bin ich heute darauf gestoßen das Meld auch direkt mit SVN zusammenarbeiten kann. Gibt mal Meld als Verzeichnis ein Repository an, das mit SVN verwaltet wird kann man direkt SVN Aktionen aus Meld heraus anstossen.

201206-meld-svnfrontend.png

24.6.12
Weitere Beiträge zu: meld   Subversion  

Subversion: Einzelne Verzeichnisse ignorieren

In einem PHP Projekt das ich über SVN verwalte möchte ich ein Cache Verzeichniss aus der Verwaltung aussschliessen.

Folgende Verzeichnisstruktur

html
-admin
-templates
 ...
 ...
- templates_c

Templates_c enthält die Cache Daten. Änderungen in dem Verzeichniss möchte ich bei svn st nicht sehen

cd html
svn propedit svn:ignore templates_c/

Der default editor wird geöffnet und man tippt '*' (ohne Hochkommata). Schon ist Ruhe

9.1.12
Weitere Beiträge zu: Subversion  

Subversion: Quellserver für svnsync wechseln

Mit svnsync kann man eine Kopie eines Subversion Repositories anlegen. Ich verwende es um die Entwicklungen die ich auf einem Entwicklungsrechner durchführe auf den produktiven Server in das Internet zu synchronisieren. Wie man dies anlegt wird an dieser Stelle nicht behandelt. Wichtig ist aber zu wissen, das die Synchronisationsquelle im Mirror eingetragen ist. Wechselt man den Subversion Server (Addresse oder Zugriffsprotokoll) scheitert danach die Synchronisation. Will man die "Quelle" umstellen wechselt man in eine Arbeitskopie und benutzt folgenden Befehl

svn propset svn:sync-from-url --revprop -r 0 "pfad-zum-neuen-repository"

Quelle

5.9.10
Weitere Beiträge zu: Subversion  

Einen xtcModified Entwicklungsserver aus Subversion aufsetzen

Dieser Blogeintrag beschreibt den Prozess den ich verwende um auf Basis eines existierenden Subversion Repositories einen neuen Debian Server als Entwicklungsumgebung für xtcModified aufzusetzen. Dieses Dokument dient mehr meiner persönlichen Dokumentation könnte aber auch als Anregung dienen. Es werden auch keine Erläuterungen zu der generellen Arbeit mit xtcModified oder Subversion gegeben. Das Wissen hierzu ist Vorraussetzung.

Da es sich um einen reinen Entwicklungsserver handelt, der lokal ohne Internetanbindung läuft, spielen hier Aspekte wie Sicherheit oder Zugriffskontrolle keine Rolle. Also nicht so einfach übernehmen wenn man den Server "draussen" stehen hat.

Vorraussetzungen sind
- Subversion Repository
- Backup der Verzeichnisse media / images
- Backup der Shop Mysql Datenbank. 
- ein nackter Debian Server mit minimal Setup

Zuerstmal Postfix installieren (sonst installiert mir die Datenbank MySQL später exim4). Dann den ganzen Kram für Apache, MySQL und PHP (kann sein das ein Packet zu viel ist)

apt-get install postfix
apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql mysql-server

Jetzt geht es an die Konfiguration der Webserver Verzeichnisses. Zuerst legen wir die notwendigen Verzeichnisse im www Directory an, disablen den default host und richten die Konfiguration unseres neuen Servers ein. Der Benutzer "yourid" wird der Gruppe www-data hinzugefügt damit er später auch das Verzeichniss beschreiben kann.

cd /var/www
mkdir -p /var/www/dev-server/{html,logs,cgi-bin,backup}
chown www-data:www-data dev-server/ -R
usermod -a -G www-data yourid
chmod 770 html -R
a2dissite default
cd /etc/apache2/sites-available
cp default dev-server

vi dev-server
    DocumentRoot /var/www/dev-server/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/dev-server/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
a2ensite dev-server
a2enmod rewrite

Jetzt brauchen wir unsere Daten. Wenn man die aktuellen Daten aus dem Live Shop braucht sind das die Verzeichnisse "media" und "images" und natürlich die Datenbank. Zuerst eine leere Datenbank auf dem neuen Server erstellen

mysql -u root -p
create database shop;
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'geheim';
GRANT ALL ON shop.* TO 'admin'@'localhost';

und dann den Datenbankinhalte einspielen. Ich sichere immer in eine gepackte Sql-Datei die ich natürlich aus der Sicherung von meinem Live Shop nehme

gunzip shop-datenbanken.sql.gz
mysql --user=admin --password='geheim' shop < shop-datenbanken.sql

Dann die Bilder und anderen Medien. Auf dem Live Server kann man einfach die beiden Verzeichnisse in ein Tar File packen

tar cvf dev-server.tar media/* images/*

und dann auf dem dev-server auspacken.

cd /var/www/dev-server/html
tar xvf /path-to-your-tarfile/dev-server.tar

Die Installation von Subversion wird hier nicht beschrieben. Da ich mein Projekt alleine entwickele und ich auch sonst nur noch einen anderen Benutzer auf meinem System habe arbeite ich einfach mit svn+ssh. Die Verzeichniss und Repository Angaben sind natürlich nur als Beispiel zu verstehen. Sie geben meine Konfiguration wieder.

Zum Testen erstmal probieren ob man "was sieht". Dann in das html Verzeichniss wechseln und den ganzen xtcmodified Baum auschecken.

svn list svn+ssh://your-svn-server/var/svn/repository/directory/trunk
cd /var/www/dev-server/html/
svn co svn+ssh://your-svn-server/var/svn/repository/directory/trunk .

Jetzt brauche ich noch die Konfigurationsdateien. Die verwalte ich getrennt, da der Inhalt ja Servernamen und Datenbank Informationen enthält die auf meinem QA / Development / Live Servern ja  verschieden sind. Jeweils für den Shop und das Admin Backend.

cd includes
svn export svn+ssh://your-svn-server/var/svn/repository/config-directory/dev/includes/configure.php
vi configure.php
cd ../admin/includes/
svn export svn+ssh://your-svn-server/var/svn/repository/config-directroy/dev/admin/includes/configure.php
vi configure.php

So. Das wars - wenn alles richtig ist solltet Ihr jetzt eine exakte Kopie des Servers haben. Und los kanns gehen mit "Basteln mit Fallschirm"

 

25.8.10
Weitere Beiträge zu: xtcmodified   Subversion  

Migration einer existierenden Trac Installation nach Debian mit MySQL

Trac_logo.pngTrac ist eigentlich ein webbasiertes Projektmanagement Werkzeug für die Software Entwicklung. Es hat Wiki und Fehlermanagementfunktionen. Was mich aber am meisten interessiert ist die Oberfläche auf Subversion. Zusammenn mit dem Wiki kann damit schön Änderungen, die man in Subversion festhält, dokumentieren. Ich habe Trac zum ersten mal bei xtcmodified kennengelernt und auch Piwik nutzt es unter anderem

Im Rahmen meiner Servermigration von Gentoo nach Debian war es jetzt an der Zeit meine vorhandene Installation von Trac zu migrieren.

Zuerst installieren wir Trac und python-mysqldb da ich mit MySQL arbeiten möchte. Im den nächsten Schritten wird zuerst das Verzeichniss erstellt in das die Projekte kommen und wir erstellen die MySQL Datenbank

apt-get install trac python-mysqldb
mkdir /your-root-to-trac/trac
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> create database trac;
Query OK, 1 row affected (0.04 sec)
mysql> create user 'trac'@'localhost' identified by 'geheim';
Query OK, 0 rows affected (0.11 sec)
mysql> grant all on trac.* to 'trac'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Jetzt haben wir die Voraussetzungen geschaffen und nun initialisieren wir die Trac Umgebung

trac-admin /your-root-to-trac/trac initenv
Creating a new Trac environment at /your-root-to-trac/trac/projekt
Project Name [My Project]>
  Please specify the connection string for the database to use.
  Database connection string [sqlite:db/trac.db]> mysql://trac:geheim@localhost/trac  
 
 Please specify the type of version control system,
 By default, it will be svn.

Repository type [svn]>

 Please specify the absolute path to the version control
 repository, or leave it blank to use Trac without a repository.

Path to repository [/path/to/repos]> /var/svn/project
Creating and Initializing Project
 Installing default wiki pages
[.......]
[.......]
[.......]
[.......]
[.......]

The latest documentation can also always be found on the project
website:

  http://trac.edgewall.org/

Congratulations!

Jetzt die alten Daten sichern. Auf dem alten Server in das Verzeichnis mit den Trac Daten gehen und ein Archiv der Anhänge erstellen sowie die Datenbank sichern.

cd /var/trac/old-trac
tar cvzf trac-attachments.bak attachments
mysqldump --user=trac --password=geheim trac | gzip > trac-datenbanken.sql.gz

Beide Sicherungen müssen auf den neuen Server kopiert werden. Dort auspacken und den Datenbankbackup einspielen

cd /your-root-to-trac/trac/projekt
tar xzvf /path/to/old-backup/trac-attachments.bak
gunzip /path/to/old-backup/trac-datenbanken.sql.gz
mysql --user=trac --password='geheim' trac < /path/to/old-backup/trac-datenbanken.sql

Dann kann man das ganze wie gewohnt aufrufen

tracd --port 8000 /your-root-to-trac/trac/projekt/

Wenn man jetzt noch die Anmeldung einrichten will

cd /your-root-to-trac/trac/projekt
htpasswd -c .htpasswd adminuser
tracd --port 8000 --basic-auth=projekt,/your-root-to-trac/trac/projekt/.htpasswd,/your-root-to-trac/trac --env-parent-dir /your-root-to-trac/trac

Nun brauchen wir noch ein Startup Script damit Trac auch beim Booten gestartet wird.

cd /etc/init.d
cp skeleton tracd
vi tracd

# Provides:          track
DESC="trac"
NAME=tracd
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d --port 8000 --basic-auth=projekt,/your-root-to-trac/trac/projekt/.htpasswd,/your-root-to-trac/trac --env-parent-dir /your-root-to-trac/trac"

chmod +x tracd

update-rc.d tracd defaults
 

15.8.10
Weitere Beiträge zu: Trac   Subversion  

Migration eines SVN Repositories auf einen neuen Server

Ich wollte ein existierendes SVN Repository von einem Server auf einen neuen umziehen. Nach der Installation von SVN auf dem neuen Server ist mir die Migraton mit folgenden Schritten gelungen:

Auf dem "alten" Server:

svnadmin dump /var/svn/ast4iphone/ > svn-dump-ast4iphone

Auf dem neuen Server zuerst das Verzeichniss anlegen. Dann mit svnadmin das das leere Repository anlegen und die alten Daten laden

mkdir /var/svn
svnadmin create /var/svn/ast4iphone
svnadmin load /var/svn/ast4iphone/ < /path/to/yourdumpfile/svn-dump-ast4iphone

Das wars.
 

15.8.10
Weitere Beiträge zu: Subversion  

Wiederherstellen einer gelöschten Datei aus Subversion

Hat man aus Versehen eine Datei gelöscht die sich in einem Verzeichniss befindet das man unter die Versionskontrolle von Subversion gelegt hat kann man mit folgenden einfachen Schritten diese Datei restaurieren

cd directory-with-delete-file-or-directory

# svn log --verbose
------------------------------------------------------------------------
r8 | root | 2010-07-14 21:01:59 +0200 (Wed, 14 Jul 2010) | 1 line
Changed paths:
   A /etc/nagios3
   A /etc/nagios3/apache2.conf
   A /etc/nagios3/cgi.cfg

.......
.......
.......

svn up -r 8 nagios3

22.7.10
Weitere Beiträge zu: Subversion  

Konfigurationsdateien mit Subversion verwalten

Subversion (SVN) ist ein System zu Verwaltung von Dateien und Verzeichnissen. Den Ursprung hat es in der Softwareentwicklung und dort hilft es, verschiedenen Entwicklern an unterschiedlichen Bereichen des Programms zu arbeiten und diese dann zusammenzuführen (und noch tausend andere Dinge aber das führt hier zuweit). Eingearbeitet hatte ich mich um die Entwicklung unseres PHP basierenden Internetshops xtcmodified zu unterstützen. Ich arbeite zwar nur mit mir selbst aber es hilft hervorragend die unterschiedlichen Versionen zu verwalten. Der eine oder andere kennt das vielleicht. Man arbeitet an einer Datei, macht eine Sicherrungskopie und hat dann schnell den Überblich verloren. Geschweige das man später noch weiss was man in welcher Reihenfolge gemacht hat.

Dieses Problem hat man natürlich nicht nur für Programmquellen sondern auch für Konfigurationsdateien und die liegen bei einem Unixsystem in einem Verzeichniss namens /etc. Auch hier mache ich Änderungen und hätte gerne die unterschiedlichen Versionen aufbewahrt.

Die folgenden Zeilen sind meine Notizen. (es fehlt natürlich der Part Installation aber das ist meistens nur ein kleiner Befehl. Zeilen mit # sind Kommentar)

# Wo wollen wir unsere svn Daten halten?  
mkdir svnrepos  
# Lege ein svn Repository an   
svnadmin create svnrepos/etcrepository  
# Noch nicht viel drin aber so schaut man rein.  
svn list file:///root/svnrepos/etcrepository/  
# jetzt gehts los: lege ein directory im Repository  
# das -m "..." ist nur der kommentar  
svn mkdir file:///root/svnrepos/etcrepository/etc -m "Make a dir in the repository for /etc"  
# und jetzt in das Verzeichniss das wir wollen   
cd /etc/  
# und ab damit in unser Repository. WICHTIG der Punkt am Ende  
svn co file:///root/svnrepos/etcrepository/etc .                    
Checked out revision 1.  
# So die oberste Ebene haben wir eingecheckt. Jetzt fügen dir Verzeichniss hinzu.   
# Fangen wir mit apache2 an. Da wo unser Webserver konfiguriert wird.  
svn add apache2   
# und "Feuer"  
svn ci -m "Initial import of etc apache2 config files"  

Natürlich gibt es auch grafische Oberflächen aber die mag ich nicht. ;-) Die Befehle sind recht einfach und man braucht für diesen Zweck nicht viel.

svn add  
svn diff  
svn commit  
svn revert

Vor allem wegen des letzten Befehls ist das Ganze sein Aufwand wert. Man hat eine Änderung gemacht und möchte gerne zur letzten gültigen Version zurück. Hier ist mein Spickzettel.

8.2.10
Weitere Beiträge zu: Linux   Subversion  

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License