Das Backend von ComputerBase



Ähnliche Dokumente
Datenverzeichnis backupen MySQLdump Replication. MySQL 4, 5. Kapitel 12: Backup. Marcel Noe

3. Stud.IP-Entwickler-Workshop 2. Juni 2006 Workshop 3c: Stud.IP-Enterprise-Edition André Noack, Frank Elsner

Stud.IP Performance Testing

Typo 3 installieren. Schritt 1: Download von Typo3

Softwareentwicklung in der industriellen Praxis

Anbindung des eibport an das Internet

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

WordPress lokal mit Xaamp installieren

Websites mit Dreamweaver MX und SSH ins Internet bringen

Lehrveranstaltung Grundlagen von Datenbanken

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Einführung in PHP. (mit Aufgaben)

1. Wordpress downloaden

MySQL Replikation - Die Eier legende Wollmilchsau?

Der zweite all unsere Datenbanken. Dieser Befehl ist etwas komplexer, aber bis auf das Passwort (kursiv fett) so zu übernehmen:

Unsere Webapplikation erweitern

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Ablösung von Control-M durch JobScheduler

Sicherheit QUALITÄTSSICHERUNG DESIGNER24.CH V 1.2. ADRESSE Designer24.ch Web Print Development Postfach Turbenthal Schweiz

Collax Web Application

Wordpress am eigenen Server installieren

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

News actum consulting products GmbH. Alle Rechte vorbehalten.

Konfiguration Serverstart Server einrichten. MySQL 4, 5. Kapitel 03: Serverstart und -konfiguration. Marcel Noe

Einrichtung Secure-FTP

Beschreibung Installation SSH Server für sicher Verbindung oder Bedienung via Proxyserver. (Version 5.x)

Herzlich willkommen im Modul Web-Engineering

WordPress installieren mit Webhosting

PHPNuke Quick & Dirty

K-TAG Master. Dateientschlüsselung/ Dateiverschlüsselung für Slaves. Version 1.0

Dokumentation FileZilla. Servermanager

mehr funktionen, mehr e-commerce:

Vorbereitungen zum SIMOTION Webserver Tutorial Anwenderdefinierte Webseiten

Firma und Internet-Server Projekt

Drupal 8 manuell installieren

Step by Step Webserver unter Windows Server von Christian Bartl

Kurzanleitung OOVS. Reseller Interface. Allgemein

Echtzeitanomalieerkennung für Internetdienste (Abschlussvortrag)

Das Einzelplatz-Versionsupdate unter Version Bp810

Seminar DWMX DW Session 015

Sichern des Home-Pools-Verzeichnisses via SFTP

Corporate Documents. Technische Implementierung. 8. Dezember 2012

HINWEISE ZUR ARBEIT IM LABOR

Upgrade auf TYPO3 6.2

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Performance Report OXID eshop 5.0 Enterprise Edition

Migration von statischen HTML Seiten

Daten in der Cloud mit Access, Office 365 und Apps foroffice Dirk Eberhardt

à la Carte KMU - Lösungen im Alltag für Filemaker und das Web

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

kreativgeschoss.de Webhosting Accounts verwalten

Session Management und Cookies

JBoss 7 als Plattform für hochverfügbare Anwendungen

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes

MySQL Backup und Restore

NTCS Synchronisation mit Exchange

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

my.green.ch... 2 Domänenübersicht... 4

Client/Server-Systeme

Abschlussbericht Kernkompetenz

MSDE 2000 mit Service Pack 3a

Gezielt über Folien hinweg springen

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Mapbender3 Workshop. Christian Wygoda. FOSSGIS Dessau 2012

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

How-to: Webserver NAT. Securepoint Security System Version 2007nx

MC-Hx 006. Einbindung des MC-Hx Modul als MODBus TCP Slave. MB DataTec GmbH. Stand:

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

Content Management mit Joomla! 1.7 für Kids Hanke

World4You Kundencenter

SHOPPING CLOUD SHOPPING.GUETSEL.DE

Joomla Schulung. Open Source CM-System. Projekt-Nr Thomas Haussener, MA. 20. Juni 2007

Für die Bearbeitung von MySQL-Datenbanken ist das Administrationswerkzeug phpmyadmin integriert.

Tools are a IT-Pro's Best Friend Diverse Tools, die Ihnen helfen zu verstehen, was auf dem System passiert oder das Leben sonst erleichtern.

Einführung in das Web Content Management System (CMS) Typo3

Inhaltsverzeichnis Abbildungsverzeichnis

1. PHPMyAdmin: Sicherung der DB

Grundlagen der Informatik 2

Softwaren Engineering I

4D Server v12 64-bit Version BETA VERSION

INSTALLATION. Voraussetzungen

Content-Management- Systeme (CMS) Inhaltsverwaltungssystem, Redaktionssystem

Schwachstellenanalyse 2012

Administrator-Anleitung

Einführungskurs MOODLE Themen:

Xampp-Installation und Konfiguration. Stefan Maihack Dipl. Ing. (FH) Datum:

Arbeiten mit einem lokalen PostgreSQL-Server

mit ssh auf Router connecten

Dealer Management Systeme. Bedienungsanleitung. Freicon Software Logistik (FSL) für Updates

Homepage mit einem WCMS: Typo3

Datensicherung. Mögliche Vorgehensweisen:

Legen Sie nun dieses Verzeichnis mit dem Namen "joomla" hier an: C:xampphtdocs.

Quickstep Server Update

Adminer: Installationsanleitung

Performance mit high-traffic TYPO3 sites. Christian Kuhn e-netconsulting KG

Transkript:

Das Backend von ComputerBase Steffen Weber / @Steffen185 01.09.2014 / Webentwickler Paderborn

Gliederung 1. Einleitung 2. Datenbank 3. Webserver 4. Website

ComputerBase

Reichweite 2,5 Mio Unique User ( AGOF Juni 2014) CHIP.de / computerbild.de: ~ 13 Mio Golem.de / pcgameshardware.de: ~ 1,3 Mio 1 Mio Seitenaufrufe pro Tag

Die Köpfe hinter CB 3 Geschäftsführer 3 Festangestellte Redakteure Freie Redakteure Freie Moderatoren

Datenbank 27 GB Größte Tabelle: 13 GB

Dateien 220 GB Bilder 620 GB Videos 130 GB Downloads

Server-Setup Stromverbrauch: je ~ 100 Watt, Anbindung: 500 MBit/s Verantwortung: CB (Software) und Host Europe (Hardware)

Datenbank

MySQL-Setup Basics Percona Server (MySQL + Patches) kein Cluster Master-Slave-Setup DB-Server 1: Master DB-Server 2: Slave

MySQL-Performance 27 GB 64 GB InnoDB > MyISAM RAID-Controller mit 1 GB Cache + BBU Alternative SSD? Tuning-Tipps: MySQL Performance Blog InnoDB performance optimization basics (redux)

Schema-Änderung großer Tabellen Problem: ALTER TABLE Lock Downtime :-( Lösung: pt-online-schema-change $ pt-online-schema-change --alter="add logoid INT" D=cb,t=cb_news Altering `cb`.`cb_news`... Creating new table... Created new table cb._cb_news_new OK. Altering new table... Altered `cb`.`_cb_news_new` OK. Creating triggers... Created triggers OK. Copying approximately 1119 rows... Copied rows OK. Swapping tables... Swapped original and new tables OK. Dropping old table... Dropped old table `cb`.`_cb_news_old` OK. Dropping triggers... Dropped triggers OK. Successfully altered `cb`.`cb_news`.

MySQL-Backups Problem: mysqldump Lock Downtime :-( Lösung: Percona XtraBackup Achtung: Ausgabe ist kein SQL-Dump! XtraBackup GnuPG Amazon S3

Aufwärmen nach Neustart Einfache Lösung: cat /data/mysql/computerbase/* > /dev/null Neue Lösung (InnoDB-only): Percona Server 5.5: Buffer Pool Dump/Restore MySQL 5.6+: Buffer Pool Preloading

Live -Daten in Entwicklungsumgebung Server: db-dev-copy.php 1. Struktur der Datenbank klonen 2. Selektiv Daten in geklonte DB kopieren 3. mysqldumpder geklonten DB an stdoutsenden Entwicklungsumgebung: mysql-sync-dev.sh #!/bin/sh ssh -C db2.computerbase.de 'db-dev-copy.php' \ mysql -u computerbase computerbase $ time mysql-sync-dev.sh real 0m57.651s

Sicherheit: phpmyadmin-zugriff Standard-Lösung: HTTP Auth Separate Benutzer-Datenbank Rate Limiting? Ergänzung: SSH-Tunnel Server: phpmyadmin erreichbar auf Port 1443, der in nginx und iptables nur für 127.0.0.1 / ::1 freigegeben ist Client-Terminal: ssh -N -L 1443:localhost:1443 <server> Client-Browser: https://localhost:1443/

Vollständige UTF-8-Unterstützung UTF-8 kodiert Zeichen mit 1 4 Byte utf8in MySQL: maximal 3 Byte je Zeichen Lösung ab MySQL 5.5: utf8mb4

Webserver

PHP-Einbindung Steinzeit: PHP-Modul läuft in jedem Apache-Prozess Heute: FastCGI, PHP als separater Daemon Umstellung auf nginx um 9 Uhr (22. Juli 2008)

Mehrere PHP-Prozess-Pools (1) Beispiel Preisvergleich: Proxy auf PHP-Ebene

Mehrere PHP-Prozess-Pools (2) [www] listen = 127.0.0.1:9000 pm = static pm.max_children = 16 [preisvergleich] listen = 127.0.0.1:9001 pm = static pm.max_children = 2 location /preisvergleich { fastcgi_pass 127.0.0.1:9001;... } php-fpm.conf nginx.conf

PHP-Performance PHP selten das Bottleneck, aber... PHP 5.6 > PHP 5.5 > PHP 5.4 > PHP 5.3 APC / OpCache

DoS-Schutz in iptables 1. Beschränken der Anzahl neuer Verbindungen iptables-modul hashlimit 2. Beschränken der Anzahl gleichzeitiger Verbindungen iptables-modul connlimit 3. Connection-Tracking-Timeouts herabsetzen Datei /etc/sysctl.conf net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10 net.netfilter.nf_conntrack_tcp_timeout_established = 3600...

DoS-Schutz in nginx Motivation: HTTP-Requests nach dynamischen Seiten sind sehr viel teurer als HTTP-Requests nach statischen Dateien http {... limit_req_zone $binary_remote_addr zone=flood:10m rate=2r/s; server {... } } location ~ \.php$ { limit_req zone=flood burst=8;... }

Bonus: gzip_static + Zopfli 1. nginx-modul gzip_static : auf Requests nach main.css antwortet nginx mit main.css.gz 2. Deployment: Erstellen der.gz-dateien mit Zopfli Größe [Byte] Zeit [ms] main.css 72.865 - gzip 14.471 10 gzip -9 14.366 13 zopfli 13.618 355

Website

Website: Grundlagen BaseCMS Content Management System (für Redakteure) Eigenentwicklung, 50k SLOCs (PHP) vbulletin Forum-Software Off the Shelf

Website: Performance Erfahrung: PHP ist (fast) nie das Bottleneck, daher Konzentration auf die Datenbank! 1. Während der Entwicklung: jede neue SQL-Query mit EXPLAIN SELECT...analysieren 2. Im Live-Betrieb: Einen Blick werfen in MySQL Slow Query Log PHP-FPM Slow Log 3. Caching: nächste Folie

Website: Caching Memcached: Speichern von HTML-Fragmenten Startseiten-Aufruf $code = $this->memcache->get('index-news', function() { $html =...; // Generate HTML return $html; }); Speichern einer News $this->memcache->delete('index-news');

Website: Message Queue Gearman: Aufgaben an andere Server verteilen Bei News-Veröffentlichung $this->gearman->dobackground('feed-update', 'news'); Hintergrund-Prozess $worker = new Lib\GearmanWorker();... $worker->addfunction('feed-update', [Lib\Feeds::class, 'updatefeed']);... while ($worker->work()); Weitere Beispiele: Bild-Upload, Twitter-Status,

HTTPS Drei Vorteile Sicherheit: Vertraulichkeit, Authentizität, Integrität Performance: SPDY / HTTP 2.0 SEO: Besseres Google-Ranking (angeblich) Warum (noch) nicht auf CB? HTTPS-inkompatible Anzeigen Ausnahmen: Login-Seite, Passwort ändern,

Deployment mehrmals täglich, möglichst atomar 1. git pullin temporärem Verzeichnis 2. CSS und JS komprimieren (wenn geändert) 3. Kopieren der Dateien ins Ziel-Verzeichnis via rsyncmit dem Parameter --delay-updates

Fragen? Steffen Weber / @Steffen185