URL Shortener »Yourls« auf Linux Debian installieren

Manche URLs können furchtbar lang und der Umgang damit recht umständlich werden. Gerade in Blogs oder Foren gehört es mitunter zum guten Ton vernünftig lesbare URLs zu veröffentlichen aber auch zB in E-Mails sind sie ggf nützlich um den Gesamteindruck nicht negativ zu beeinflussen. Es gibt etliche Anbieter die solch einen Service anbieten, Sie können sich aber bei geeigneter, vorhandener Infrastruktur auch solch einen Service selbst installieren. Das hat diverse Vorteile: Zum einen treten Sie auch mit einer kurzen URL immer noch mit Ihrer Domain auf, zum anderen haben Sie die volle Kontrolle über den Short Link, bis hin zum Löschen.

»Yourls«1) ist eine Sammlung aus PHP-Skripten und stellt eine (Web-)Plattform bereit, welche mit Admin Menü, benutzerdefinierten URL Schlüsselwörtern, Statistiken, einer Entwickler API und vieles mehr ausgestattet ist. Die Installation ist recht simpel und läuft folgendermaßen ab:

  • Anlegen des Document Root Verzeichnis:
    # mkdir /home/yourls.prontosystems.org
  • Anlegen der MySQL Datenbank:
    # mysqladmin -u root -p create yourls
  • Anlegen eines Datenbankbenutzers und Rechte auf soeben erstellte Datenbank einstellen:
    # mysql yourls -u root -p -e"GRANT ALL ON yourls.* TO yourls_admin@localhost IDENTIFIED BY 'yourlspasswd'"
  • Herunterladen und entpacken der Yourls Quellen:
    /home/yourls.prontosystems.org# wget https://github.com/YOURLS/YOURLS/archive/1.7.tar.gz

    /home/yourls.prontosystems.org# tar -zxvf 1.7.tar.gz
  • »config.php« konfigurieren:
    /home/yourls.prontosystems.org/YOURLS-1.7/user# mv config-sample.php config.php

    /home/yourls.prontosystems.org/YOURLS-1.7/user/config.php

    <?php
    /* This is a sample config file.
     * Edit this file with your own settings and save it as "config.php"
     */
     
    /*
     ** MySQL settings - You can get this info from your web host
     */
     
    /** MySQL database username */
    define( 'YOURLS_DB_USER', 'yourls_admin' );
     
    /** MySQL database password */
    define( 'YOURLS_DB_PASS', 'yourlspasswd' );
     
    /** The name of the database for YOURLS */
    define( 'YOURLS_DB_NAME', 'yourls' );
     
    /** MySQL hostname.
     ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */
    define( 'YOURLS_DB_HOST', 'localhost' );
     
    /** MySQL tables prefix */
    define( 'YOURLS_DB_PREFIX', 'yourls_' );
     
    /*
     ** Site options
     */
     
    /** YOURLS installation URL -- all lowercase and with no trailing slash.
     ** If you define it to "http://site.com", don't use "http://www.site.com" in your browser (and vice-versa) */
    define( 'YOURLS_SITE', 'http://yourls.prontosystems.org' );
     
    /** Timezone GMT offset */
    define( 'YOURLS_HOURS_OFFSET', 0 ); 
     
    /** YOURLS language or "locale".
     ** Change this setting to "localize" YOURLS (use a translation instead of the default English). A corresponding .mo file
     ** must be installed in the user/language directory.
     ** See http://yourls.org/translations for more information */
    define( 'YOURLS_LANG', '' ); 
     
    /** Allow multiple short URLs for a same long URL
     ** Set to true to have only one pair of shortURL/longURL (default YOURLS behavior)
     ** Set to false to allow multiple short URLs pointing to the same long URL (bit.ly behavior) */
    define( 'YOURLS_UNIQUE_URLS', true );
     
    /** Private means the Admin area will be protected with login/pass as defined below.
     ** Set to false for public usage (eg on a restricted intranet or for test setups)
     ** Read http://yourls.org/privatepublic for more details if you're unsure */
    define( 'YOURLS_PRIVATE', true );
     
    /** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated. Hint: copy from http://yourls.org/cookie **/
    define( 'YOURLS_COOKIEKEY', 'askjdadjedjaoij' );
     
    /** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as encrypted hashes
     ** YOURLS will auto encrypt plain text passwords in this file
     ** Read http://yourls.org/userpassword for more information */
    $yourls_user_passwords = array(
    	'admin' => 'admin'
    	);
     
    /** Debug mode to output some internal information
     ** Default is false for live site. Enable when coding or before submitting a new issue */
    define( 'YOURLS_DEBUG', false );
     
    /*
     ** URL Shortening settings
     */
     
    /** URL shortening method: 36 or 62 */
    define( 'YOURLS_URL_CONVERT', 36 );
    /*
     * 36: generates all lowercase keywords (ie: 13jkm)
     * 62: generates mixed case keywords (ie: 13jKm or 13JKm)
     * Stick to one setting. It's best not to change after you've started creating links.
     */
     
    /** 
    * Reserved keywords (so that generated URLs won't match them)
    * Define here negative, unwanted or potentially misleading keywords.
    */
    $yourls_reserved_URL = array(
    	'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', 'gay',
    );
     
    /*
     ** Personal settings would go after here.
     */
  • Erstellen Sie den VHost und konfigurieren Sie Ihren Webserver. Eine Beispiel Installation von Apache2 finden Sie im Artikel Virtuelle Hosts auf Apache2 Webserver einrichten. Zu dieser Konfiguration müssen Sie ggf noch (zusätzlich) das Apache2 Modul »rewrite« aktivieren:
    # a2enmod rewrite
  • Legen Sie im Document Root eine ».htaccess« Datei an:
    # touch /home/yourls.prontosystems.org/YOURLS-1.7/.htaccess
  • Und machen Sie diese für Ihren Webserver beschreibbar:
    # chown www-data:www-data /home/yourls.prontosystems.org/YOURLS-1.7/.htaccess
  • Zur weiteren Installation können Sie bereits ins Webinterface wechseln, rufen Sie Ihre Yourls URL mit dem Verzeichnis »admin« auf und klicken Sie auf »Install YOURLS«. Sie erhalten im Anschluß möglicherweise eine Fehlermeldung, dass die Datenbank Tabellen nicht angelegt werden, was aber so nicht stimmt. Die Tabellen wurden angelegt und die Datenbank und »Yourls« funktioniert im Anschluss auch. Keine Ahnung wo die Meldung herkommt:
  • Zum Schluss müssen Sie noch die »index.php« im Document Root Verzeichnis erstellen, damit Sie auch ein Frontend zur Verfügung haben:
    /home/yourls.prontosystems.org/YOURLS-1.7# cp sample-public-front-page.txt index.php

  • Im Admin Interface stehen Ihnen dann weitere Möglichkeiten zur Verfügung:

pronto 2014/08/06 15:56

Spam Schutz

Bei einem öffentlich erreichbaren URL Shortener wird es unweigerlich dazu kommen, dass Spammer diesen missbrauchen. Bei uns ist das relativ schnell gegangen und wir mussten umgehend reagieren. Es gibt verschiedene Ansätze sich dem Problem zu nähern, wir haben uns dafür entschieden, das Webinterface nur für unser Haus, also interne IP-Adressen, freizugeben. Dazu haben wir folgendes PHP-Snippet am Anfang unserer »index.php« eingefügt:

index.php

$remoteIP = $_SERVER['REMOTE_ADDR'];
$pos = strpos($remoteIP, '192.168.');
if($pos === false)
{
        echo "ACCESS DENIED";
        exit;
}

Das og Snippet liest die IP-Adresse, welche die Seite aufruft, in eine Variable ein und vergleicht diese mit dem STring '192.168' welches die ersten beiden Oktetts des bei uns verwendeten privaten IP-Adressbereichs darstellt und stoppt das Skript, wenn es nicht von einer internen, privaten Adresse aufgerufen wird.

It's just that simple ;-)
prontosystems - we are connecting more than computers

pronto 2014/11/25 13:49

tux/install_yourls.txt (28249 views) · Zuletzt geändert: 2014/11/25 14:05 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0