Samstag, 5. März 2011

Äusterst praktisch

Suche nach einer Datei
find . -name filename -print
Suche nach großen Dateien:
find / -size +1G -exec ls -l {} \;
100M, 2G, 500K, etc.

Tomcat 7 im Ubuntu 10.10 Server Edition

Da der buildin tomcat nicht läuft, muss ich doch einen eigenen aufsetzen:
Hier nach folgender anleitung:
http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/

Richtigs Java installieren

Dafür benötigen wir http://archive.canonical.com/ in unsere 'apt/sources.list'.
Also fügen wir es dem hinzu:
$ sudo nano /etc/apt/sources.list
deb http://archive.canonical.com/ lucid partner
Und nun installieren:
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
Nun müssen wir noch die JAVA_HOME variable permanent setzen lassen.
In den beiden Dateien,
$ nano /home/tomcat/.bashrc
$ nano /home/michael/.bashrc
fügen wir folgendes hinzu:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
Tomcat einrichten

Desweiteren möchte ich das mein Tomcat sein eigenes Homverzeichniss bekommt. Desshalb spendiere ich ihm einen eigenen User:
$ sudo adduser tomcat
Tomcat donloaden und entpacken
$ su tomcat
$ wget http://apache.openmirror.de/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz$ tar xvzf apache-tomcat-7.0.8.tar.gz
Nun möchte ich dass Tomcat als 'Dienst' verwendet werden kann. Deshalb lege ich die folgende Datei an:
$ exit # user tomcat verlassen
$ sudo touch /etc/init.d/tomcat
$ sudo chmod 755 /etc/init.d/tomcat
$ sudo nano /etc/init.d/tomcat
# Tomcat auto-start
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

export JAVA_HOME=/usr/lib/jvm/java-6-sun

case $1 in
start)
        sh /home/tomcat/apache-tomcat-7.0.8/bin/startup.sh
        ;; 
stop)   
        sh /home/tomcat/apache-tomcat-7.0.8/bin/shutdown.sh
        ;; 
restart)
        sh /home/tomcat/apache-tomcat-7.0.8/bin/shutdown.sh
        sh /home/tomcat/apache-tomcat-7.0.8/bin/startup.sh
        ;; 
esac    
exit 0

Dann benötigen wir noch ein paar Verknüpfungen:

$ sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
$ sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat
Um Tomcat zu starten kann folgendes verwendet werden:
$ sudo /etc/init.d/tomcat start
Nach einem Neustart wird Tomcat nun ebenfalls automatisch gestartet. Dies man man testen mit:
$ sudo /etc/init.d/tomcat start
Und dem anschießenden Browser-Aufruf von:
http://deine-url:8080/

Maven2 mit Ubuntu

sudo apt-get install maven2
$ mvn -version
Apache Maven 2.2.1 (rdebian-4)
Java version: 1.6.0_20
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.35-22-generic" arch: "i386" Family: "unix"


/usr/bin/mvn
/usr/share/maven2/
/etc/maven2

Maven Konfiguration in /etc/maven2

ll /home/michael/.m2/repository/

Hudson in Tomcat

Hudson kann man als war downloaden und direkt im Tomcat ausführen lassen.

Welches gerade die aktuellste Version ist kann hier nachgeschaut werden:

http://java.net/nonav/projects/hudson/downloads/directory/war

Ich holde mir das gerade aktuelle hudson.war und verschiebe es in mein Tomcat-Webapp-Verzeichniss:

wget http://java.net/nonav/projects/hudson/downloads/download/war/hudson-1.393.war

sudo mv hudson-1.393.war /var/lib/tomcat6/webapps/hudson.war

Nun benötigt Hudson ein Arbeits-Verzeichniss mit genügend Rechten:

(http://wiki.hudson-ci.org/display/HUDSON/Containers)

mkdir /home/michael/hudson
chmod 777 /home/michael/hudson

Nun muss noch das Verzeichniss als HUDSON_HOME bekannt gegeben werden:
sudo nano /etc/default/tomcat6
JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -DHUDSON_HOME=/home/michael/hudson/"

Jetzt noch den Tomcat neustarten:

$ sudo /etc/init.d/tomcat6 restart

Und nun die Hudson Web Console aufrufen:

http://deine-url:8080/hudson/

In hundson MAVEN_HOME setzen (in der web-consolen config)
/usr/share/maven2/

dann mercurial plugin installieren

User für Hudson anlegen:
sudo htpasswd -c /etc/hg/htpasswd hudson

lokales mavenrepo anpassen:
sudo nano /usr/share/maven2/conf/settings.xml
/usr/share/maven-repo/




[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Unable to locate the Javac Compiler in:
  /usr/lib/jvm/java-6-openjdk/jre/../lib/tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.


Hiermit kann man die java version wählen wenn man mehrere installiert hat
sudo update-alternatives --config java

Freitag, 4. März 2011

Mercurial per Ubuntu und Apache2






Die folgende Anleitung basiert unter anderem auf folgende Artikel:
http://malor.se/blog/?p=60
http://wiki.ubuntuusers.de/Mercurial_Repository_aufsetzen
http://stackoverflow.com/questions/2671279/hgwebdir-push-permission-denied-error
Voraussetzung:

Eine frische Ubuntu 10.10 Installation in eine VirtualBox. (Da Tomcat später noch benötigt wird, habe ich bei der Installation Tomcat direkt installieren lassen).
Die Ubuntu-Version kann wie folgt überprüft werden:
$ cat /etc/issue
Ubuntu 10.10 \n \l
Mecurial und Apache installieren
$ sudo apt-get install apache2
$ sudo apt-get install mercurial
Mercurial Repository vorbereiten
$ sudo mkdir /srv/hg
$ sudo mkdir /srv/hg/cgi-bin
Statt hgwebdir.cgi nutze ich hgweb.cgi (da hgwebdir.cgi nicht mit installiert wurde).
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi /srv/hg/cgi-bin/
$ sudo chmod a+x /srv/hg/cgi-bin/hgweb.cgi
Folgende Zeile in der hgweb.cgi muss angepasst werden:
$ sudo nano /srv/hg/cgi-bin/hgweb.cgi

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/srv/hg/cgi-bin/hgweb.config"
Dateien anlegen mit dem jeweiligem Inhalt:
$ sudo nano /srv/hg/cgi-bin/hgweb.config

[collections]
/srv/hg/ = /srv/hg/
$ sudo nano /srv/hg/hgrc-template

[web]
allow_push = *
push_ssl = false
Das hgrc-template wird in jedem neuen Projekt kopiert und erlaubt das pushen von allen registreirten Benutzern (mehr zu den Benutzern weiter unten).
Skript erstellen, zu einfachen Erzeugung neuer Mercurial Projekte:
$ sudo touch /srv/hg/create-new-project.sh
$ sudo chmod +x /srv/hg/create-new-project.sh
$ sudo nano /srv/hg/create-new-project.sh

#!/bin/bash

usage(){ echo "You gave me no Projectname. Use me like this: $0 new_project_name"; exit 1; }

[ "$(whoami)" != "root" ] && { echo "Sorry, you are not root."; usage; }

[ $# -eq 0 ] && { usage; }

PROJECT_NAME=$1
DIR_NAME=`dirname "$0"`

echo "Creating new Mercurial Project in $DIR_NAME/$PROJECT_NAME"

sudo mkdir $DIR_NAME/$PROJECT_NAME

cd $DIR_NAME/$PROJECT_NAME

hg init

sudo cp ../hgrc-template .hg/hgrc

sudo chmod -R 777 .hg

echo Done.

Ein neues Projekt kann nun angelegt werden mit:
$ sudo /srv/hg/create-new-project.sh test-projekt
Apache configurieren

Datei anlegen:
$ sudo nano /etc/apache2/sites-available/hg
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

DocumentRoot /srv/hg/cgi-bin/

ScriptAliasMatch ^/hg(.*) /srv/hg/cgi-bin/hgweb.cgi$1

<Directory "/srv/hg/cgi-bin/">
SetHandler cgi-script
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AuthUserFile /etc/hg/htpasswd
AuthName "Dev Repo"
AuthType Basic
<Limit GET POST PUT>
Require valid-user
</Limit>
</Directory>

ErrorLog /var/log/apache2/hg.log
</VirtualHost>
Nun wird die standard Apache Seite dektiviert und die neue Mercurial Seite aktiviert:
$ sudo a2dissite default
$ sudo a2ensite hg
$ sudo /etc/init.d/apache2 reload
Um einen neuen Benutzer anzulegen wird folgendes ausgeführt:
$ sudo mkdir /etc/hg/
$ sudo htpasswd -c /etc/hg/htpasswd cheneym
Weitere Benutzer werden ohne "-c" angelegt.
Voalá! Fertig ist das Mondgesicht.

Web-Oberfläche, pullen und pushen:
$ http://deine-url/hg/
$ hg clone http://deine-url/hg/