{"id":4681,"date":"2016-01-04T07:46:36","date_gmt":"2016-01-04T06:46:36","guid":{"rendered":"https:\/\/www.bdjl.de\/localhost\/?p=4681"},"modified":"2016-01-04T07:50:26","modified_gmt":"2016-01-04T06:50:26","slug":"redis-server-und-hsts-fr-owncloud","status":"publish","type":"post","link":"https:\/\/www.bdjl.de\/localhost\/?p=4681","title":{"rendered":"Redis Server und HSTS f&uuml;r ownCloud"},"content":{"rendered":"<p>Im Backend vermeldete ownCloud schon l\u00e4ngere Zeit, dass es einen funktionierenden <a href=\"https:\/\/doc.owncloud.org\/server\/8.2\/admin_manual\/configuration_server\/caching_configuration.html\" target=\"_blank\">PHP Memory Cache<\/a> vermisse. Bisher war mir das relativ egal, weil ich nicht viele Dateien und auch nicht viele Nutzer\/innen hatte. Das hatte sich in den letzten Wochen und Monaten aber gr\u00fcndlich ge\u00e4ndert, so dass ich bei drei meiner oC Installationen t\u00e4tig werden musste. Nach dem Update auf oC 8.2.2 und Dank etwas freier Zeit ging ich das Problem endlich an.<\/p>\n<p>APC und APCu waren zwar bei allen Servern an Bord, aber unter Ubuntu 14.04 und PHP5 &#8222;zu alt&#8220;. Ich probierte es mit Redis. Hier ist das PHP5 Modul von Ubuntu 14.04 zwar ebenfalls zu alt, aber es gibt in den PECL Repositories einfach zu installierenden Ersatz.<\/p>\n<p>Ein<\/p>\n<pre class=\"lang:default decode:true \">dpkg -l | grep php5-redis<\/pre>\n<p>kl\u00e4rt, ob ein solches PHP Modul installiert ist. Wenn ja, dann muss dieses zuerst runter vom Server. Danach kann der Redis Server an Bord:<\/p>\n<pre class=\"lang:default decode:true\">apt-get install redis-server<\/pre>\n<p>Ein Blick in<\/p>\n<pre class=\"lang:default decode:true \">\/etc\/redis\/redis.conf<\/pre>\n<p>sollte ergeben, dass Redis an 127.0.0.1 lauscht und somit nicht von au\u00dfen zu erreichen ist. Wer sich nicht sicher ist, kann von au\u00dfen mit <em>telnet<\/em> nachsehen. Weiter sollte ein<\/p>\n<pre class=\"lang:default decode:true\">service redis-server status<\/pre>\n<p>zeigen, dass der Redis-Server auch l\u00e4uft.<\/p>\n<p>Um PECL nutzen zu k\u00f6nnen ben\u00f6tigen wir noch die folgenden Pakete<\/p>\n<pre class=\"lang:default decode:true \">apt-get install php-pear php5-dev<\/pre>\n<p>Wer, wie ich hier, Horde5 \u00fcber PEAR bezieht, hat die Pakete schon. Ein<\/p>\n<pre class=\"lang:default decode:true \">pecl install redis<\/pre>\n<p>bringt dann ein frischeres php Modul f\u00fcr Redis an Bord. Am Ende der Installation wei\u00dft PECL darauf hin, dass dieses Modul der vorhandenen PHP Umgebung bekannt gegeben werden muss. Da hilft<\/p>\n<pre class=\"lang:default decode:true\">echo 'extension=redis.so' &gt; \/etc\/php5\/mods-available\/redis.ini\r\nphp5enmod redis\r\nservice apache2 restart<\/pre>\n<p>Dann wird der Memory Cache ownCloud in<\/p>\n<pre class=\"lang:default decode:true\">\/pfad\/zu\/owncloud\/config\/config.php<\/pre>\n<p>bekannt gegeben, indem der folgenden Code ans Ende geh\u00e4ngt wird (vor die letzte schlie\u00dfende Klammer):<\/p>\n<pre class=\"lang:default decode:true\">  'memcache.local' =&gt; '\\\\OC\\\\Memcache\\\\Redis',\r\n  'filelocking.enabled' =&gt; 'true',\r\n  'memcache.distributed' =&gt; '\\\\OC\\\\Memcache\\\\Redis',\r\n  'memcache.locking' =&gt; '\\\\OC\\\\Memcache\\\\Redis',\r\n  'redis' =&gt;\r\n    array (\r\n      'host' =&gt; 'localhost',\r\n      'port' =&gt; 6379,\r\n      'timeout' =&gt; 0,\r\n      'dbindex' =&gt; 0,\r\n     ),<\/pre>\n<p>Im Backend von ownCloud herrscht nun etwas mehr Ruhe.<\/p>\n<p>Was ownCloud leider nicht \u00fcberpr\u00fcft ist, ob es \u00fcberhaupt \u00fcber HTTP zu erreichen ist. Es schimpft immer \u00fcber eine fehlende HSTS Konfiguration, bis eine solche eingerichtet ist.<\/p>\n<p>Das ist mit<\/p>\n<pre class=\"lang:default decode:true\">a2enmod headers\r\n<\/pre>\n<p>und dem Eintrag<\/p>\n<pre class=\"lang:default decode:true \">Header always set Strict-Transport-Security \"max-age=15768000; includeSubDomains\"<\/pre>\n<p>f\u00fcr die ownCloud Domain dann nach einem Neustart des Apachen auch erledigt, hat aber Nebenwirkungen: HTTP Verbindungen sind hiermit f\u00fcr die gesamte Domain ab dem ersten Aufruf \u00fcber HTTPS f\u00fcr den Client-Browser erledigt. Muss man wollen.<\/p>\n<p style=\"text-align: left;\">Geholfen beim Einrichten haben mir die folgenden empfehlenswerten Quellen: <a href=\"http:\/\/www.kiloroot.com\/a-guide-to-owncloud-8-ubuntu-14-04-and-caching-apcu-redis-cache-and-file-locking-oh-my\/\" target=\"_blank\">1<\/a>, <a href=\"https:\/\/pecl.php.net\/package\/redis\" target=\"_blank\">2<\/a>, <a href=\"http:\/\/itigloo.com\/security\/how-to-configure-http-strict-transport-security-hsts-on-apache-nginx\/\" target=\"_blank\">3<\/a>, <a href=\"https:\/\/www.administrator.de\/wissen\/kleine-hsts-http-strict-transport-security-falle-276292.html\" target=\"_blank\">4<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Backend vermeldete ownCloud schon l\u00e4ngere Zeit, dass es einen funktionierenden PHP Memory Cache vermisse. Bisher war mir das relativ egal, weil ich nicht viele Dateien und auch nicht viele Nutzer\/innen hatte. Das hatte sich in den letzten Wochen und Monaten aber gr\u00fcndlich ge\u00e4ndert, so dass ich bei drei meiner oC Installationen t\u00e4tig werden musste. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,5,10],"tags":[340,539,279,538,537],"class_list":["post-4681","post","type-post","status-publish","format-standard","hentry","category-lfb","category-linux","category-schule","tag-apache","tag-hsts","tag-owncloud","tag-php","tag-redis"],"_links":{"self":[{"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/posts\/4681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4681"}],"version-history":[{"count":11,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/posts\/4681\/revisions"}],"predecessor-version":[{"id":4692,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=\/wp\/v2\/posts\/4681\/revisions\/4692"}],"wp:attachment":[{"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bdjl.de\/localhost\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}