12/1/16

RVM und Apache

Manage Ruby Versions and gem-packages

Mit RVM kann man pro Anwendung individuelle Railsversionen und gem-Packete definieren, die verwendet werden sollen. Extrem praktisch, um z.B. ein Projekt mit neuen Ruby oder Railsversionen zu testen oder umgekehrt dem Updatezwang zu entgehen.

Einführung in RVM

Ruby 2.1.1 installieren und benutzen

$ rvm install 2.1.1
$ rvm use 2.1.1

Um wieder das Default System-Ruby ohne rvm zu nutzen:

$ rvm use system

Gemsets Basics

Erst werden 1 oder mehrere (leere) gemsets erstellt.
Dann wird ein gemset mit der Rubyversion aktiviert. Dann können für dieses gemset gems installiert werden.

$ rvm gemset create rails410 rails320
Gemset 'rails410' created.
Gemset 'rails320' created.

$ rvm 2.1.1@rails410
$ gem install rails -v 4.1.0

$ rvm 2.1.1@rails320
$ gem install rails -v 3.2.0

Gemset erstellen und nutzen
rvm --create use 1.8.7@some-gemset-name
gem install rails -v 2.3.14

Infos zu den Gemsets:
Name des aktuelles Gemsets

$rvm gemset name

Show path des aktuellen gemsets

$rvm gemdir

Auflisten aller gemsets (für den aktuellen Rubyintepreter, alle)

$rvm list
$rvm list_all

 

RVM in Entwicklungsumgebung

myproject$ rvm 2.1.1@rails320
myproject$ ./script/server

Lädt das richtige gemset und startet den mongrel Testserver, der dann auf die Development_DB zugreift.

RVM in Apache

Ausführliche Behandlung des Themas

Unter sites-available in der x.conf den Pfad zum RVM-gemset angeben:

<VirtualHost *:80>
    PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p551@rails2318/ruby
...
</VirtualHost>
11/15/16

Datumsoperationen

Immer wieder werden in PHP Datumsumrechnungen benötigt. Hier der Spickzettel mit einigen gängigen Ausdrücken dazu:

 

$now = date('Y-m-d H:i:s');
    error_log($now."\n");
    $today = date('Y-m-d');
    error_log($today."\n");
    $LastCall = date('Y-m-d H:i:s',strtotime($metainfos['lastCallTimestamp']));    
    $dayOfLastCall = date('Y-m-d',strtotime($metainfos['lastCallTimestamp']));    
    error_log($dayOfLastCall."\n");

    error_log('$dayOfLastCall < $today: '.strval($dayOfLastCall < $today));
    
    $d1Str = '2016-10-20 15:00:23';
    $d2Str = '2016-10-20 16:00:23';
    $testdate1 = date('Y-m-d H:i:s',strtotime($d1Str));    
    $testdate2 = date('Y-m-d H:i:s',strtotime($d2Str));            
    error_log($testdate2 - $testdate1);    


    $diffHours = (strtotime($testdate2)-strtotime($testdate1)) / (60 * 60);
    echo $diffHours;
    if($diffHours < 1)echo "<"; 
    else if($diffHours == 1)echo "="; 
    else echo ">";

    $date1=  new DateTime("2016-10-20 20:10:23");
    $date2= new DateTime("2016-10-20 15:00:23");
    
    echo "\n".$date1->diff($date2)->format('%H:%I:%S')."\n";
11/20/14

Server Backup

Full system backup with rsync
======================
/backup/SERVER_XY/system::
rsync -avz –exclude={“/dev/*”,”/proc/*”,”/sys/*”,”/tmp/*”,”/run/*”,”/mnt/*”,”/media/*”} root@SERVER_XY:/* .

DB-Backup
=========
auf host::
mysqldump -u root -p –all-databases > fulldb-backup.sql

/backup/SERVER_XY/system::
scp root@SERVER_XY:fulldb-backup.sql .
WICHTIG:
========
Für ein richtiges Backup muss ein Skript erstellt werden, dass dann regelmäßig backups durchführt::
https://www.heinlein-support.de/howto/backups-und-snapshots-von-linux-servern-mit-rsync-und-ssh

06/25/13

Privatsphäre Online

Anonym Surfen

Benutzung von “Onion routing” bzw. “TOR”

=> Post zum Thema anonym surfen und Tor

Sichere Mail

Verschlüsselung per PGP nutzen.

Anonymes Chatten (Voice+Text)

Es gibt sie: die Alternative zu Skype mit der man Chatten, Video-Telefonieren, Screensharen etc. kann und das mit ordentlicher Verschlüsselung und OpenSource:

Ein von Hackern empfohlener Client ist JITSI. Downloaden unter jitsi.org. Eine Alternative wäre der Client Pidgin mit der otr-Erweiterung.

Für alle Clients wird ein XMPP(Jabber)-Account benötigt. Ein beliebter u. empfehlenswerter Jabber-Server ist z.B. der Server des Chaos Computer Clubs – https://web.jabber.ccc.de. Der neuen Account kann aus JITSI heraus angelegt werden.
Die XMPP Standards Foundation bietet eine Lange Liste weiterer öffentlicher Jabber-Server an.

Bebilderte Anleitung für JITSI+Jabber-Account: Weg von Skype, hin zu JITSI

=> Tutorial

=> Wikipedia-Artikel

Mac: OTR-Plugin für Adium

Kurzanleitung in 4 Schritten:
1. JITSI runterladen (für Mac/Win):
https://jitsi.org/Main/Download und

2. installieren und starten und dann

3. einen neuen Account anlegen:
Im Menü auf Datei->Konto hinzufügen->Netzwerk auswählen->XMPP. Dann “Neues XMPP-Konto erstellen” auswählen. Jetzt einen Benutzernamen ausdenken und den dann mit der Endung @jabber.ccc.de verbinden: erfundenes Bsp.: jhonnybegood@jabber.ccc.de und ein Passwort wählen und Hinzufügen klicken. Wenn der Benutzer noch nicht vorhanden ist wird der Account sofort erstellt.

4. Freunde hinzufügen:
Im Menü unter Datei->”Kontakt hinzufügen” auswählen. In das Feld “ID oder Nummer” kommt der vollständige Accountname (z.B. johnnybegood@jabber.ccc.de) und bei Anzeigename könnt Ihr frei wählen, was in Eurer Liste angezeigt werden soll (z.B. “Johnny B.”).

 

Cloud-Dienste

Cloud-Dienste sind so praktisch, dass sie für viele nicht mehr wegzudenken sind (Dropbox, Google-Kalender, …): – Synchronisieren von Dateien, Kalendern/Aufgaben, Musikstreaming: Opensourcesoftware Owncloud. Funktioniert mit verschlüsselter Verbindung. Entweder auf eigenem Server oder einen Account auf vertrauenswürdigem Server erstellen.

=> Owncloud-Installationsanleitung

Projektseiten/Wikis

Projektseiten/Wikis a la Googlesites lassen sich im Handumdrehen mit WordPress selbst erstellen: Entweder auf eigenem Server oder einen Account auf vertrauenswürdigem Server erstellen.

=> WordPress-Installationsanleitung

06/25/13

Mein digitaler Schutzschild

Artikel auf Zeit-online: Mein digitaler Schutzschild

Befasst sich mit folgenden Themen:

 

06/25/13

Security Update Debian

Security-update bei Debian
http://www.debian.org/doc/manuals/securing-debian-howto/ch4.de.html#s-security-update
Seit Debian Woody 3.0 wird Ihnen nach der Installation die Möglichkeit eingeräumt, Sicherheitsaktualisierungen Ihrem System hinzuzufügen. Wenn Sie hier ‘ja’ sagen, wird das Installationssystem die passenden Schritte unternehmen, um die Quellen der Sicherheitsaktualisierungen Ihren Paketquellen hinzuzufügen.

Damit reichen dann folgende beiden Befehle:
# aptitude update
# aptitude upgrade

oder

# apt-get update
# apt-get upgrade

05/5/13

WordPress

Wie ich zu WordPress kam
Ich war auf der Suche nach einer Technologie, mit der ich meine Homepage gestalten kann. Und zwar als OpenSource CMS mit der Möglichkeit Blogposts integrieren zu können. Außerdem sollten auch bestimmte Freunde die Seite mitgestalten können. Mit dem selben System wollte ich aber auch kleine nichtöffentliche Projektwikis anlegen können, auf die natürlich nur die jeweiligen Projektteilnehmer zugreifen können sollen. Für die Projektseiten soll es dann auch noch einen Issuetracker geben.

Fündig geworden bin ich bei WordPress. Welche Schritte dafür nötig sind, zeigt dieser Post.
Viel Erfolg 🙂

Basisinstallation

Das geht in wenigen Minuten 🙂

http://www.linuxcandy.com/2012/02/how-to-install-wordpress-in-ubuntudebain-system-or-server.html

Multisite

Damit kann man dann als Admin mit einem Klick neue Blogs/Sites hinzufügen, die komplett unterschiedliche Nutzergruoppen haben können.

http://www.redirect301.de/wordpress-multisite-mit-subdomains-installieren.html#blog-netzwerk-aktivieren

Multisite Privacy

Damit man bei den Multisites jeweils individuell einstellen kann, ob die Seite öffentlich sichtbar ist oder nur für die Nutzer der jeweiligen Site oder für alle Nutzer aus allen Blogs der Multisite, braucht es dieses Plugin.

http://wordpress.org/extend/plugins/more-privacy-options/installation/

Roles & Cpabilities

http://codex.wordpress.org/Roles_and_Capabilities

Issue tracker

Ganz einfacher Weg eine Issueliste anzulegen mit den üblichen Eintragungen (Task,  Verantwortlicher, Dauer, Zustand, …). Geht im Backend und kann als Widget in der Seitenleiste eingevlendet werden.

http://wordpress.org/extend/plugins/really-simple-issue-tracker/

CMS

WordPress lässt sich wunderbar als CMS verwenden. Einfach Pages anlegen. In den Settings bei Reading -> Front page displays -> A static page aussuchen. Geht nicht mit allen Templates (geht aber z.B. mit dem aktuellen Standarttheme “Twenty Twelve” ).

http://wordpress.lernenhoch2.de/handbuch/wordpress-als-cms/

http://www.websitestartup.de/wordpress-als-cms

Themes

http://www.tripwiremagazine.com/2013/01/wordpress-cms-themes.html

http://themeforest.net/item/avada-responsive-multipurpose-theme/full_screen_preview/2833226?ref=lvraa&ref=lvraa&clickthrough_id=129481994&redirect_back=true

Hilfe beim ersten großen Fehler

Description

All the default categories/tags links are not working, showing error..

“This is somewhat embarrassing, isn’t it?”

Steps to reproduce:

  1. Install WP 3.3.1 on domain, e.g.  http://blog.example.com
  2. Enable multi-site features, using subfolder instead of subdomain
  3. Create a site, e.g.  http://blog.example.com/test1
  4. Create a post, e.g.  http://blog.example.com/test1/2012/03/04/test1/
  5. Enter the default category link, e.g.  http://blog.example.com/test1/category/uncategorized/

Now you will see the message: “This is somewhat embarrassing, isn’t it?”

Fix:

  1. Enter this link:  http://blog.example.com/test1/wp-admin/options-permalink.php
  2. Change nothing, press “Save Changes”
  3. Now you can view the link correctly:  http://blog.example.com/test1/category/uncategorized/

The above issue also apply to tags

Hat bei mir wunderbar funktioniert 🙂

05/4/13

GIT version control

Git Schnellüberblick

https://rogerdudler.github.io/git-guide/index.de.html

Git Book

http://git-scm.com/book/en/

http://git-scm.com/book/de/

GIT – Version control

Proggen.org GIT

Git-Zyklus

git

lokal:

cd mein_projekt
git init

git add .

git commit -m ‘dummy file’
git remote add origin git@mein-git-server.de:mein_projekt.git
git push origin master:refs/heads/master

“your branch is ahead by…” => You need to push to the remote master. Run “git diff origin/master” to see what the differences are between your local repository and the remote master repository.

server:

cd projectroot

git clone /srv/git/repositories/”project”.git/

Lokal: entwicklung

git push origin master

Server:

git pull origin master

Um einen pull rückgängig zu machen:

  git reset HEAD@{1}

Updatezyklus

Commit
$ git commit -m "Initial commit" //speichert lokale Änderungen mit Kommentar "Init...
$ git commit -a -m "Improved xy"  //-a 
$ git log  //zeigt alle lokalen commits mit Kommentaren
$ git status  //Überblick über noch nicht commitette Änderungen am Code
Checkout
hole neuste bzw. letzte eingecheckte Version
$ git checkout -f  //macht die letzten, nichtcommiteten Änderungen rückgängig
$ git status

zeige alle gespeicherten Stände
$ git log
-> liefert alle Stände mit Beschreibunge und id

gehe auf bestimmten Stand
$ git checkout [id]
mache alle Änderungen rückgängig und gehe wieder zum Anfang vom aktuellen checkout
$ git checkout .

gehe zurück zum Master
$ git checkout master
Branch
Erzeugt neuen Branch mit Namen 'modify-README' 
$ git checkout -b modify-README
Switched to a new branch 'modify-README'
$ git branch
Edit
Dateien umbenennen
$ git mv README README.markdown
$ mate README.markdown
$ git rm -r  -filename-
Merge
$ git checkout master
Switched to branch 'master'
$ git merge modify-README

optional: delete topic branch
$ git branch -d modify-README
Global Repository
Iniales Anlegen
$ git remote add origin 
 git@github.com:/sample_app.git //initiales Anlegen eines remote repositories
oder
$ git clone 
 git@github.com:/sample_app.git  //verwende existierendes remote repository
$ gi remote -v  //zeigt alle existierenden remote git-locations an
$ git pull origin master  //holt letzten Stand vom repository
$ git push origin master  //pushed lokalen master branch nach remote
$ git push origin stable   //pushed lokalen stable branch nach remote

Hilfreiche Befehle:

Git log -p -2

p zeigt, was sich verändert hat
2 nur die letzten 2 Änderungen

git log –pretty=oneline
Jeder commit wird nur einzeilig ausgegeben

Autocompletion
http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks

git config –list
Zeige pers. Infos in Konf

Git diff
Um festzustellen, welche Änderungen du bisher nicht gestaged hast

gitk
Grafische Ausgabe von git log

git checkout -b iss53
:=>
$ git branch iss53
$ git checkout iss53

$ git branch -d hotfix
Deleted branch hotfix (3a0874c).

Branches

Branching

Git Datatransport commands

 

Gitolite

Einrichtung-eines-git-servers-unter-debian-via-gitolite

Gitosis (veraltet)

Git Repositories gemeinsam nutzen

Gitosis – the Debian way

Gitosis – auf git.com

Installation im Approot-Verzeichnis (siehe hier)

Deployment

server: edit

nano /srv/git/repositories/gitosis-admin.git/gitosis.conf

enter new project + members:

[group planner]
writable = planner
members = user@email.de

05/4/13

Owncloud

Owncloud ist eine wirklch tolle Möglichkeit, eine eigene Cloud zu nutzen und damit alle tollen Vorteile  einer Cloud zu haben und dabei maximale Sicherheit und Privatsphäre zu behalten. Ersetzt Dropbox, Googlecalender, Contacts, u.v.m. 🙂

Installation unter Linux (Debian/Ubuntu):

http://jstr.se/archives/easy-owncloud-install-on-debianubuntu/

Die komplette Installation geht in einem Befehl:

cd && apt-get update && apt-get -y install apache2 php5 php-pear php-xml-parser php5-sqlite php5-json sqlite php5-mysql mp3info curl libcurl3 libcurl3-dev php5-curl zip php5-gd wget && wget http://owncloud.org/releases/owncloud-4.5.5.tar.bz2 && tar xfj owncloud-4.5.5.tar.bz2 && cp -r owncloud /var/www/ && chown -R www-data:www-data /var/www/owncloud && /etc/init.d/apache2 restart

Hat tatsächlich geklappt 🙂 Vorher noch gegebenenfalls “4.5.5” durch die neuste Version austauschen. Der Rest wird einfach online eingerichtet und administriert: [www.YOUR-PAGE.de]/owncloud

Update+Upgrade:

Da Owncloud noch recht jung ist und es dementsprechend noch einige Bugs und noch vieles zu verbessern gibt, ist es ratsam immer ein Auge auf Aktualisierungen zu haben. Auf der Seite Admin-Settings ganz unten sieht man, ob eine neue Version verfügbar ist. Die Features der neuen Version gibt es im Changelog.

Hat man sich dann für ein Update oder Upgrade entschieden, steht hier wie’s geht: Update or upgrade (der Unterschied ist wichtig!).

Immer zuerst auf das letzte Point-Release der aktuellen Version updaten. Danach immer nur eine Version weiter (dort auf das neuste Point-Release) upgraden:
Ab 6.x mit dieser Upgrade-Anleitung!

 

Weitere Hilfen:

http://mein.homelinux.com/wiki/cloud/owncloud
http://mein.homelinux.com/wiki/dienste/apache