Kategorie: Betriebssysteme

MailHog – Einrichten eines lokalen Mailservers

Bei manchen Projekten ist es unvermeidbar einen lokalen Mailserver einzurichten, um gewissen Funktionalitäten zu prüfen bzw. zu entwickeln. Oftmals ist es jedoch gerade für Anfänger eine Herausforderung solch alltäglich gebräuchliche Tools zu verwenden bzw. einzurichten. Aus diesem Grund widmet  sich dieser Artikel dem Installieren eines lokalen Mailservers (MailHog) auf einem Linux Server, sowie dessen Konfiguration in einer TYPO3 7.6 Instanz.

Zu Beginn ist das richtige MailHog Packet (v0.2.1 hier) von https://github.com/mailhog/MailHog/ releases zu downloaden. Ein guter Workaround hierfür ist:

1) Link der richtigen Version kopieren
2) In der Command Line via wget im Root Verzeichnis der lokalen Instanz herunterladen

Kleines Shell Script zum Auffinden von Bildern mit gewisser Größe

Voraussetzungen:

  • Bash
  • find, awk
  • identify von ImageMagick oder GraphicsMagick
#!/bin/bash

MIN_WIDTH=240
MIN_HEIGHT=200

# internal field separator, https://bash.cyberciti.biz/guide/$IFS
# changed to make file names with spaces work
OIFS="$IFS"
IFS=$'\n'
# find all files with type image
for image in `find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'`; do
# get image dimensions (width/height), ignore errors
       width_and_height=`identify -format '%w %h' "$image" 2>/dev/null`
       if test -n "$width_and_height"; then
               width=`echo "$width_and_height" | awk '{print $1}'`
               height=`echo "$width_and_height" | awk '{print $2}'`

               if [ "$width" -lt $MIN_WIDTH ] || [ "$height" -lt $MIN_HEIGHT ]; then
                       echo "wrong dimensions: $image $width x $height"
               fi
       else
               echo "unable to get image dimensions for $image"
       fi
done
IFS="$OIFS"

Sie verfügen momentan nicht über die Berechtigung des Zugriffs auf diesen Ordner. Die Lösung

„Sie verfügen momentan nicht über die Berechtigung des Zugriffs auf diesen Ordner.“  sagt mir mein Windows. Na Danke!

Ich bin Administrator auf dem System und darf also bestimmte Files nicht verschieben oder löschen, weil sie einem gewissen „trusted installer“ gehören.

Nun gibt es zwar zahlreiche Anleitungen, wie man sich über +100 (ok, übertrieben, es sind nur 12) Konfigurations-Dialoge durchhandeln kann um die Berechtigungen zu ändern. sh. https://support.microsoft.com/en-gb/kb/980023/de

Das ist jedoch nicht nur unverständlich und mühsam, sondern vor allem lähmend.

Also zurück zur Shell, und da gibts „Cacls“ mit dem man die ACLs (Berechtigungen ), nicht nur auslesen sondern auch ändern kann. sh. https://technet.microsoft.com/en-us/library/bb490872.aspx

[rpm] nginx-rpm mit pagespeed bauen

sudo -s
yum install rpm-build
cd
wget http://nginx.org/packages/centos/6/SRPMS/nginx-1.6.1-1.el6.ngx.src.rpm
rpm -i nginx-1.6.1-1.el6.ngx.src.rpm
NPS_VERSION=1.8.31.4
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz
cd rpmbuild/SPECS/
vim nginx.spec

–add-module=/root/ngx_pagespeed-release-1.8.31.4-beta in den beide configure-blöcken hinzufügen.

rpmbuild -ba nginx.spec

fertiges rpm landet in /root/rpmbuild/RPMS/x86_64/

hilfreiche Quellen f. obigen Workflow:
https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source und
http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

[vagrant] new cool vagrant features discovered

https://vagrantcloud.com/help/shares/what
In Verbindung mit einem vagrantcloud.com account sind vagrant boxen nicht mehr auf die lokale Maschine beschränkt.

Super Feature um mal ein Feature „schnell herzeigen zu können“ oder einen Kollegen zu bitten mal was auf der Maschine nachzuschauen/zu fixen.

[bash] VCS Info im Shell-Prompt

folgender Code in der .bashrc zeigt den VCS-Status (git oder svn) des aktuellen Verzeichnisses an.
Getestet unter Windows8/cygwin, sollte aber auf jeder Plattform funktionieren (wenn eine bash verwendet wird).
export LC_MESSAGES=C ist nötig wenn svn oder git lokalisierte Meldungen ausgeben (ein ewiges Ärgernis).


export LC_MESSAGES=C
GREEN="\[\033[0;32m\]"
LIGHT_GREEN="\[\033[1;32m\]"
GRAY="\[\033[1;30m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_GRAY="\[\033[0;37m\]"
COLOR_OFF="\[\e[0m\]"
function prompt_func() {
branch_pattern="\* ([^$IFS]*)"
PS1="$LIGHT_GRAY\u$COLOR_OFF $LIGHT_GREEN\w$COLOR_OFF"
if [[ -d "./.git" && "$(git branch --no-color 2> /dev/null)" =~ $branch_pattern ]]; then
branch="${BASH_REMATCH[1]}"
PS1+=":$LIGHT_BLUE$branch$COLOR_OFF"
elif [[ -d "./.svn" ]]; then
path_pattern="URL: ([^$IFS]*).*Repository Root: ([^$IFS]*).*Revision: ([0-9]*)"
if [[ "$(svn info 2> /dev/null)" =~ ${path_pattern} ]]; then
branch=${BASH_REMATCH[1]##`expr ${BASH_REMATCH[2]}`}
revision="${BASH_REMATCH[3]}"
PS1+=":$LIGHT_BLUE$branch$GRAY@$revision$COLOR_OFF"
fi
fi
PS1+=" "
}
PROMPT_COMMAND=prompt_func

[vagrant] centos 7 box

Da ich im Netz keine gefunden habe.
Hier gibts jetzt eine.

[rpm] Liste installierter Packete OHNE Versionsnummer

rpm -qa zum erzeugen einer Liste der installierten Packete eines RPM-basierten Linux-Systemes ist gut und schön um die Liste zwischen Maschinen mit der selben Distributions-Version zu übertragen (centos 6.5 -> centos 6.5).

Das funktioniert aber im allgemeinen nicht wenn es unterschiedliche Versionen sind (z.B. centos 6.5 -> centos 7).

Hier hilft das -f Flag des rpm-Kommandos weiter. Damit lässt sich die Ausgabe anpassen und beispielsweise nur der Packetname ausgeben.

rpm -qa --qf "%{NAME}\n" > rpm.lst

Die so erzeugte Liste lässt sich dann z.B. wie folgt am Zielsystem einspielen um einen mehr oder weniger brauchbaren Softwarestand zu kriegen (da nicht immer alle Packete auch am neuen System verfügbar sind ist manchmal/immer Nacharbeit nötig)

mit vagrant & virtualbox schnell zu einer debian-vm mit allen(?) für typo3 nötigen komponenten


mkdir mein-typo3-server
cd mein-typo3-server
git clone https://github.com/thegass/vagrant-box-typo3-ready.git .
vagrant up

Dabei wird eine mit allen(?) nötigen Komponenten ausgestattete Box heruntergeladen und mit folgenden features konfiguriert und gestartet.
Gast Port 80 gemappt auf Host Port 8080
Host-Verzeichnis htdocs gemountet auf /var/www im Gast.
Mysql-Root Passwort: vagrant

Alles was dann noch fehlt ist die eigentliche Typo3-Installation in htdocs.

Mavericks (OS X 10.9) Upgrade Notes WIP

Problem: Virtual Box not working
Solution: Manually load kernel modules


#!/bin/bash

sudo kextload -r "/Library/Extensions/" "/Library/Extensions/VBoxDrv.kext"
sudo kextload -r "/Library/Extensions/" "/Library/Extensions/VBoxNetFlt.kext"
sudo kextload -r "/Library/Extensions/" "/Library/Extensions/VBoxNetAdp.kext"
sudo kextload -r "/Library/Extensions/" "/Library/Extensions/VBoxUSB.kext"

source

Problem: MacPorts upgrade fails
Solution: Reinstall MacPorts

  • Follow steps 1, 2 & 3 of the Migration page: https://trac.macports.org/wiki/Migration
  • Install XCode 5 and Lauch XCode to install the commandline-tools
  • Get MacPorts-Source, extract & configure

  • curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.2.0.tar.bz2

    tar jxvf MacPorts-2.2.0.tar.bz2

    cd MacPorts-2.2.0

    CC=/usr/bin/cc ./configure --prefix=/opt/local --with-install-user=root \
    --with-install-group=admin --with-directory-mode=0755 --enable-readline

  • make && make install
Anfrage