Um die Ldap PHP Extension zu installieren, kann man unter Linux / Ubuntu einfach den Befehl:
sudo apt-get install php-ldap
Um die Ldap PHP Extension zu installieren, kann man unter Linux / Ubuntu einfach den Befehl:
sudo apt-get install php-ldap
Wenn man in einer Homestead Box versucht Ondrej Packages zu installieren bekommt die Fehlermeldung:
sudo apt-get install php-ldap Error:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php7.1-ldap amd64 7.1.10-1+ubuntu16.04.1+deb.sury.org+1 404 Not Found
Dies liegt daran das das Ondrej Repository nicht bekannt ist in der Box. Es kann hinzugefügt werden mit:
sudo add-apt-repository -y ppa:ondrej/php sudo apt-get -y update sudo apt-get install php-ldap
HTTPS und SSL ist wichtig für jede Webseite und oft ein lästiger Zeitvertreib, wenn die Zertifikate ablaufen und man ganz schnell die aktuellen Zertifikate installieren muss.
Eine einfache und ksotenlose Alternative ist Let’s Encrypt, die einen kostenlosen Service anbieten mit dem man nicht nur sehr schnell (5 Minuten) SSL Zertifikate installieren kann, sonder der sich auch um die Aktualisierung der Zertifikate kümmert, die alle 90 Tage ablaufen.
Dazu installiert man einen Client auf der Console namens certbot, der automatisch die Zertifikate beim hauseigenen Webserver/Loadbalancer einbindet (nginx, apache) und später per Cronjob aktuell hält.
Eine tolle Sache, habe ich auf der Seite baby-taschenrechner.de im Live Einsatz und bin sehr zufrieden.
Docker ist ein Virtualisierungs-Tool, mit dem sich Betriebsystemumgebungen und dort lauffähige Software in Container verpackt werden kann und auch auf betriebsystemfremden Umgebungen ausgeführt werden kann.
Die Vorteile von Docker:
– mit Docker können sehr einfach Container ausgetauscht werden, dies hilft bei der Arbeit an gemeinsamen Projekten weiter, wenn Infrastruktur angeapsst werden muss, erst auf der dev Umgebung, dann auf der Test Umgebung usw. So können Test mit der passenden Umgebung ausgeführt werden, man hat somit eine dynamische Testumgebung, anstelle einer statischen
– performance Vorteile gegenüber virtuellen Maschinen
– die Container machen es einfacher, die Entwicklungsumgebung bei Softwareprojekten allen Teilnehmern schnell und einfach zur Verfügung zu stellen. Dadurch wird das Onboarding einfacher und Abhängigkeiten werden vermieden, wie z.B. ein Development Server, auf dem alle arbeiten, der aber nicht verändert werden darf
– auch verteilte Systeme könnne so endlich im Development und Testing Umgebung simuliert und getestet werden. Dadurch könnne Fehler früher gefunden und vermieden werden. Wer kennt das nicht, das Produktivsystem besteht aus mehreren Nodes hinter einem Loadbalancer mit Master/Slave Datenbank, aber das Dev/Test/Staging System hat nur eine Node ohne Slave.
– Plattformunabhängikeit: Man kann auf seinem MAC Windows Applikationen laufen lassen im Container ohne Probleme
Docker besteht aus mehreren Komponenten:
Das gerade fertiggestellt Projekt baby-taschenrechner.de beschäftigt sich mit den Fragestellungen rund um die Entwicklung des eigenen Kindes:
Die Webseite soll Eltern dabei helfen herauszufinden, wann sie welche Kleidergröße kaufen müssen, um im nahenden Winter/Sommer das passende zu Hause zu haben.
Eltern können so einschätzne, ob das Kind zu dünn oder zu dick ist für ihr Alter/Größe/Gewicht-Verhältnis.
Für die Realiserung wurden folgende Technologien verwendet:
Symfony 3, Docker, MySQL, PHP, GIT, Google Material Design, Amazon AWS
Um den ELK Stack, bestehend aus:
auf Amazon AWS zum Testen auf einer einzigen Amazon EC2 Instanz zu installieren, kann man wie folgt vorgehen:
Man fährt eine EC2 Instanz hoch, die nicht zu klein ist, was den Ram anbelangt, mindestens eine m4.large mit 8GB Ram und 2 Prozessoren, da Elasticsearch schon gehobene Ansprüche an die Speicher stellt und auch Logstash sehr ressourcenhungrig ist. Als Betriebsystem habe ich Ubuntu-16 gewählt (ami-1e339e71).
Dann kann man eine Elastic-IP auf die Instanz legen, damit man die Instanzen unkompliziert austauschen kann und man trotzdem die IP weiter behält.
Das letzte Projekt war sehr spannend, es handelte sich um eine Erweiterung des PHP Shop-Systems namens XT-Commerce bzw. des Derivats SEO-Commerce um eine Suche aktuellem Standards für Zeedee Berlin.
Elasticsearch wurde auf einer eigene Amatzon MWS EC2 Instanz gehostet mit 1GB Ram und 1 CPU (sehr kostengünstig).
Die folgende Funktionalität kann ganz einfach wieder deaktiviert werden an zentraler Stelle, wenn es Probleme mit Elasticsearch gibt und die alte MySQL Suche tritt wieder in Kraft.
Beim Eintippen des Suchwortes werden schon Vorschläge gegeben im Millisekundenbereich. Dadurch kann der Kunde viel Zeit sparen und bei der Rechtschreibung wird auch geholfen.
Mit der docker-compose.yml kann man sich schnell eine Container-basierte Umgebung mit Docker bauen. Anpassbar sind die Memory-Werte für die Java-VM (512MB) und für das Docker Image (1GB).
Um einen Cluster mit 2 Nodes zu betreiben, kann man die elasticsearch2 auskommentieren.
version: '2' services: elasticsearch1: image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1 container_name: elasticsearch1 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 mem_limit: 1g volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet # elasticsearch2: # image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1 # environment: # - cluster.name=docker-cluster # - bootstrap.memory_lock=true # - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # - "discovery.zen.ping.unicast.hosts=elasticsearch1" # ulimits: # memlock: # soft: -1 # hard: -1 # mem_limit: 1g # volumes: # - esdata2:/usr/share/elasticsearch/data # networks: # - esnet volumes: esdata1: driver: local # esdata2: # driver: local networks: esnet:
Um eine Elasticsearch Instanz nach außen über HTTP verfübar zu machen, muss man folgendes tun:
1. Den Server nach außen verfübar machen, bei Amazon AWS z.B. durch das konfigurieren einer Security Group
2. Die elasticsearch.yml ändern ( /etc/elasticsearch/elasticsearch.yml):
# ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # network.host: 172.44.11.222
3. Den Elasticsearch Service neustarten:
sudo service elasticsearch restart
4. Danach kann man den Status abfragen von außen um zu schauen, ob alles funktioniert hat:
curl -XGET '172.44.11.222:9200/_cluster/health?pretty'
Response:
{ "cluster_name" : "elasticsearch", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
Mit dem diff Befehl unter Linux kann man sehr einfach herausfinden, welche Unterschiede es in zwei scheinbar identsichen Ordnern gibt.
Ein Anwendungsbeispiel wäre z.B. 2 Projekte miteinander zu vergleichen und die Unterschiede im Code herauszufinden.
#Ausgabe auf der Console stdout diff -qr \ --exclude="css" \ --exclude="tmp" \ /myMaster/folder /mySlave/folder #Pipen der Ausgabe in eine Datei oder less: diff -ur \ --exclude="css" \ --exclude="tmp" \ /myMaster/folder /mySlave/folder | /tmp/diff.txt