Da ich es immer wieder vergesse:
$ pacman -Rdd package
Durch eine kleine Diskussion auf G+ wurde ich wieder daran erinnert, dass ich seit einigen Wochen schon einen Blick in die Sabayon Linux Distribution werfen möchte. Ich nutze die ruhige Phase zwischen den Jahren um das System mal auf in einer VBox zu installieren.
Was ist Sabayon? Sabayon ist eine auf Gentoo basierende Linux Distribution. Die Philosophie hinter dem Projekt ist, dass alles out of the box funktioniert und die best mögliche UserExperience bietet.
Klingt für mich im ersten Moment nach einer Distribution, welche die Vorteile von Gentoo und Ubuntu vereint. Und damit schonmal sehr interessant. Ich hatte lange Zeit Ubuntu und Gentoo verwendet und bin nun seit knapp 2 Jahren ein Arch Linux User. Mal sehen, ob mich Sabayon begeistern kann
Im Zuge meiner Umstellung von Apache auf Nginx mussten auch vier WordPress-Installationen migriert werden. Interessant dabei waren in erster Linie die Permalinks zu erhalten (und damit die RewriteRules zu portieren).
Da es sich um vier voneinander unabhängige WordPress-Installationen handelt und ich die Server Config DRY halten möchte, gibt es für die WordPress-spezifischen Sachen mal wieder eine include Datei:
# vim /etc/nginx/wordpress.inc
rewrite ^(/[^/]+/)?files/(.+) /wp-includes/ms-files.php?file=$2 last;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
rewrite ^/(.*)$ /index.php?q=$1 last;
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
Nun müssen die VHost-Konfigurationen noch entsprechend um ein Include erweitern werden:
# blog.itws.de
server {
server_name blog.itws.de;
root /var/www/itws.de/blog;
include defaults.inc;
include enable_php.inc;
include wordpress.inc;
}
Fertig. Wie ihr sehen könnt, an sich also kein Hexenwerk.
Wie im ersten Teil beschrieben, muss ich ein paar meiner VHosts per Basic Authentication schützen. Hier zeige ich euch noch kurz, wie ich das mit nginx angestellt habe.
In meinem Fall möchte ich die Subdomain ci.itws.de schützen. Dazu lege ich mir erstmal ein Verzeichnis auth an, in dem ich die htpasswd-Dateien speichere:
# mkdir /etc/nginx/auth
Und ich lege mir einen Benutzer an:
# htpasswd -c /etc/nginx/auth/ci ghost
Danach muss ich nur noch den server-Block in der Datei /etc/nginx/sites-available/itws.de anpassen:
server {
server_name ci.itws.de;
root /var/www/itws.de/ci;
include defaults.inc;
include enable_php.inc;
auth_basic "ITWS CI";
auth_basic_user_file auth/ci;
}
Fertig. Nach einem schnellen Restart von Nginx ist ci.itws.de per BA geschützt.
Ich möchte den Nginx auch auf meinem Notebook verwenden um dort die gleiche Umgebung wie auf dem Server zu haben. Und auch die gleiche Performance.
Da ich aber in der Firma mit dem Tomcat arbeite (den ich zur Zeit über mod_proxy an den Apachen angeklingt habe), muss ich meinen Nginx auch entsprechen konfigurieren. Da die Proxy-Funktionen im Nginx kein Modul sind, sondern der Nginx selbst ein Proxy-Server ist, ist das spielend einfach:
server {
server_name ci.itws.de;
root /var/www/itws.de/ci;
index index.jsp index.html index.htm;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
Um eine aktuelle Version (1.0.6) auch unter Debian zu bekommen, kann man einfach das dotdeb Repository in die sources.list aufnehmen:
dotdeb.org bietet ein umfangreiches Repository um Debian Systeme in perfekte LAMP Server zu verwandeln. Hier ist nicht nur die aktuelle Version von PHP 5.3 mit dem FPM, den ich später noch brauchen werde, sondern auch die aktuelle Version des nginx zu finden. Außerdem ist die Default-Konfiguration des Nginx aus dem dotdeb Repo etwas sauberer als die aus dem offiziellen Debian Nginx Repo …
(weiterlesen …)
In diesem und den folgenden Beiträgen (es gibt jeden Tag einen) berichte ich euch ein wenig über meine Migration von Apache zu Nginx. Es war eigentlich nicht beabsichtigt, dass da ganze fünf Beiträge draus werden, aber irgendwie wurde es doch ziemlich viel Text und das war dann für einen einzelnen Artikel etwas zu viel. Da könnte man ja fast den Eindruck bekommen, ich würde gerne schreiben … Keine Angst, das einzige was ich gerne in großen Mengen schreibe ist Programmcode
However, ich hatte meinen VPS (Debian 6) bisher immer mit dem apache2 betrieben und auch meine Entwicklungsumgebung auf meinem Desktop und dem Notebook ebenfalls. Das hatte mehrere Gründe. Zum Einen bin ich mit dem Apache aufgewachsen und hatte eigentlich nie etwas anderes verwendet. Ich war auch immer sehr zufrieden mit dem Apachen. Es ist ein guter Webserver mit einer großen Auswahl an mächtigen Modulen und er ist sehr leicht zu konfigurieren. Da ich aber ab und an gerne etwas Neues ausprobiere und immer Spaß daran habe, an meinem Server zu schrauben (auf Software-Ebene), wollte ich mal einen anderen Webserver ausprobieren. Genaugenommen war das Projekt yaana.de einer der Auslöser. Ich möchte da noch etwas Performance aus dem Server quetschen. Und dafür sollte ich mich zu allererst vom Apachen verabschieden.
Zur Auswahl stehen also – neben dem Apachen – Lighttpd und Nginx (ausgesprochen: engine-x).
Auf Github findet ihr im Projekt itws/dotfiles meine Linux config Dateien. Im Moment liegen dort nur die configs für die ZSH und git, wird aber noch mehr
Hier meine fertige .zshrc. Habe dabei zusätzlich noch die grml-zsh-config installiert (aus dem ArchLinux Repository)
# autoload modules
autoload -U colors && colors
autoload -U compinit && compinit
autoload -U zsh-mime-setup
# the terminal
export TERM=rxvt
# prompt
export PS1="%{$bold_color%}[%{$fg[grey]%}%* %{$fg[green]%}%n@%m %{$reset_color%}%{$fg[blue]%}%c%{$reset_color%}%{$bold_color%}]%#%{$reset_color%} "
# options for zsh
setopt auto_pushd
setopt pushd_ignore_dups
setopt correct
setopt glob_complete
setopt rm_star_wait
setopt no_flow_control
setopt no_beep
setopt histignorespace
setopt auto_cd
# key bindings
#bindkey "\e[1~" beginning-of-line # Home
#bindkey "\e[4~" end-of-line # End
#bindkey "\e[5~" beginning-of-history # PageUp
#bindkey "\e[6~" end-of-history # PageDown
#bindkey "\e[2~" quoted-insert # Ins
#bindkey "\e[3~" delete-char # Del
#bindkey "\e[5C" forward-word
#bindkey "\eOc" emacs-forward-word
#bindkey "\e[5D" backward-word
#bindkey "\eOd" emacs-backward-word
#bindkey "\e\e[C" forward-word
#bindkey "\e\e[D" backward-word
#bindkey "\e[Z" reverse-menu-complete # Shift+Tab
case "$TERM" in
cons25*|linux) # plain BSD/Linux console
bindkey 'e[H' beginning-of-line # home
bindkey 'e[F' end-of-line # end
bindkey 'e[5~' delete-char # delete
bindkey '[D' emacs-backward-word # esc left
bindkey '[C' emacs-forward-word # esc right
;;
*rxvt*) # rxvt derivatives
bindkey 'e[3~' delete-char # delete
bindkey 'eOc' forward-word # ctrl right
bindkey 'eOd' backward-word # ctrl left
# workaround for screen + urxvt
bindkey 'e[7~' beginning-of-line # home
bindkey 'e[8~' end-of-line # end
bindkey '^[[1~' beginning-of-line # home
bindkey '^[[4~' end-of-line # end
;;
*xterm*) # xterm derivatives
bindkey 'e[H' beginning-of-line # home
bindkey 'e[F' end-of-line # end
bindkey 'e[3~' delete-char # delete
bindkey 'e[1;5C' forward-word # ctrl right
bindkey 'e[1;5D' backward-word # ctrl left
# workaround for screen + xterm
bindkey 'e[1~' beginning-of-line # home
bindkey 'e[4~' end-of-line # end
;;
screen)
bindkey '^[[1~' beginning-of-line # home
bindkey '^[[4~' end-of-line # end
bindkey 'e[3~' delete-char # delete
bindkey 'eOc' forward-word # ctrl right
bindkey 'eOd' backward-word # ctrl left
bindkey '^[[1;5C' forward-word # ctrl right
bindkey '^[[1;5D' backward-word # ctrl left
;;
esac
zsh-mime-setup
# aliases
alias l='ls -lAh --color'
alias g='grep -i --color'
alias lg='l | g'
alias gf='grep -nriH'
alias vg='grep -iv'
alias cd..='cd ..'
alias cdd='cd ~/Desktop'
alias p='pwd'
alias c='clear'
alias cc='cd ~; c; source .bashrc'
alias pacman='pacman-color'
alias install='yaourt -S'
alias search='yaourt -Ss'
alias update='yaourt -Suya'
alias edit='gedit'
alias tl='translate -l de-en -i'
alias keys='setxkbmap'
# uncompress depending on extension...
e() {
if [ -f "$1" ] ; then
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.gz) tar xvzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xvjf "$1" ;;
*.tgz) tar xvzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*)
echo "'$1' cannot be extracted"
return 1
;;
esac
else
echo "'$1' is not a valid file"
return 1
fi
return 0
}
# the editor is vim
export EDITOR="/usr/bin/vim"
# midnight commander color config
export MC_COLOR_TABLE="$MC_COLOR_TABLE: editnormal=lightgray,black: editbold=yellow,black: editmarked=black,cyan"
# less config
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
# alt+s inserts sudo at the beginning of the line
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo