GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie Ihren WordPress-Entwickler-Stack auf OpenShift 4

Es war ein kalter Herbstnachmittag im Jahr 2019 und ich saß nach einem Gespräch mit meinem Vorgesetzten mit einer Tasse dampfend heißem Tee hinter meinem Schreibtisch. Ich hatte mich schließlich entschieden, die Initiative zu ergreifen und die Migration einer globalen Produktionswebsite von einer einzelnen virtuellen Maschine in die Cloud zu planen. Ich hatte bereits Erfahrung mit Nginx und Apache als Administrator der virtuellen Maschine. Der zweite Teil meiner Stellenbeschreibung war die Entwicklung der Website-Features in PHP. Ich wusste, dass das Verständnis der Anforderungen sowohl aus der Entwickler- als auch aus der Administratorperspektive für meinen Ansatz zur Bereitstellung eines WordPress-Entwickler-Stacks auf OpenShift wichtig sein würde. Meine Motivation als junger Mensch war es, neue Technologien zu erforschen und zu lernen, während ich meine ersten Experimente in einer sicheren Sandbox-Umgebung durchführte.

[ Das könnte Ihnen auch gefallen:Lernen Sie OpenShift mit Minishift ]

Mir war bewusst, dass ich vor der Arbeit mit OpenShift in einer Produktionsumgebung ein solides Verständnis der Produktkomponenten und ihrer Wechselwirkungen haben musste. In den kommenden Wochen verbrachte ich Zeit damit, mich auf die Red Hat OpenShift Administration II-Prüfung vorzubereiten und bei Bedarf nach Antworten auf meine Fragen von OpenShift-Architekten zu suchen.

Als ich nicht für die Prüfung lernte, habe ich mir die Produktfunktionen von OpenShift 4 angesehen. Ich konnte sehen, dass viele dieser Funktionen für eine globale Website sehr wichtig sind und meine Entwicklungserfahrung viel einfacher machen würden. Hier sind einige der Vorteile:

  • Hohe Verfügbarkeit
  • Skalierung automatisieren
  • Anwendungsverwaltung
  • Leichtgewichtiges Betriebssystem

Konfiguration und Bereitstellung von Anwendungen

Hier sind einige Hinweise, die Sie beachten sollten:

  • In diesem Artikel gehe ich nicht auf die Auswahl eines Hosting-Dienstes oder die Installationsschritte von OpenShift 4 ein.
  • Der Quellcode und die Datenbank, die in diesem Leitfaden verwendet werden, sind Beispiele und spiegeln oder verwenden keine Daten von Produktionswebsites.
  • Diese Anleitung stammt aus meiner persönlichen Erfahrung bei der Arbeit mit den unten genannten Tools.
  • Wenn Ihr OpenShift-Cluster öffentlich zugänglich ist, können Sie anstelle der Docker-basierten Build-Konfiguration stattdessen die quellenbasierte Build-Konfiguration verwenden.

1) Cloud-IDE – Red Hat CodeReady

Hinweis :Ich verwende dieses Dokument als Referenz.

Voraussetzungen:

  • cluster-admin-Rolle

Schritte:

Erstellen Sie ein neues Projekt:

$ oc new-project wordpress-deploy

Klicken Sie im linken Dashboard-Menü auf Operatoren und navigieren Sie zum OperatorHub Tab. Projekt ändern links oben auf der Seite zu wordpress-deploy Projekt. Wählen Sie Red Hat CodeReady Workspaces und klicken Sie auf Installieren Taste. Auf dem Operator installieren Seite, wählen Sie Vorhandenen Namespace auswählen und stellen Sie sicher, dass wordpress-deploy Namensraum ist ausgewählt. Klicken Sie abschließend auf Installieren Schaltfläche.

Fahren Sie nach der Installation fort, indem Sie auf Operator anzeigen klicken Taste. Unter Bereitgestellte APIs , klicken Sie auf Instanz erstellen .

Auf CheCluster erstellen Seite, behalten Sie die Standardeinstellungen bei und klicken Sie auf Erstellen Schaltfläche.

Überprüfen Sie die Installation des Red Hat CodeReady Workspaces Operator:

$ oc get csv -n wordpress-deploy
NAME                                  DISPLAY                        VERSION   REPLACES   PHASE
crwoperator.v2.4.0   Red Hat CodeReady Workspaces   2.4.0                Succeeded

Vergewissern Sie sich, dass sich alle Pods im Running-Modus befinden Status und Bereit . Folgen Sie den Bedienerprotokollen, um den Installationsfortschritt zu verfolgen. Bitte beachten Sie, dass die Route nicht Seien Sie bereit, bis die Protokolle des Operator-Pods „CodeReady Workspaces is now available at http://xyz.org“ anzeigen. Es kann einige Minuten dauern.

$ oc get pods -n wordpress-deploy
NAME                                  READY   STATUS    RESTARTS   AGE
codeready-5d7b8f64d6-2rzkm            1/1     Running     0          60s
codeready-operator-5bc96f8c5f-c7hbt   1/1     Running     0          7m56s
devfile-registry-786f455b84-t45l8     1/1     Running     0          2m8s
keycloak-688b5d48f5-mgqn4             1/1     Running     0          2m41s
plugin-registry-8fb66b5cb-9kw8q       1/1     Running     0          99s
postgres-785f5864b-mmlpx              1/1     Running     0          5m1s

$ oc logs codeready-operator-5bc96f8c5f-c7hbt -f
...
time="2020-10-28T14:29:29Z" level=info msg="CodeReady Workspaces is now available at: https://codeready-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org"
...

Codeready-Route abrufen:

$ oc get route -n wordpress-deploy | grep codeready
NAME               HOST/PORT                                                                   PATH   SERVICES           PORT   TERMINATION     WILDCARD
codeready          codeready-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org                 che-host           8080   edge/Redirect   None

Besuchen Sie die codeready-Route und aktualisieren Sie Ihre Kontoinformationen . Unter Erste Schritte Wählen Sie auf der Registerkarte PHP CakePHP aus stapeln.

Stellen Sie sicher, dass der Red Hat CodeReady Workspace wurde erstellt:

2) CI/CD Teil 1 – Tekton CLI und OpenShift Pipelines installieren

Hinweis :Als Referenz verwende ich dieses Openshift/Pipelines-Tutorial. Wenn Sie interessiert sind, können Sie sich die High-Level-Konzepte von OpenShift-Pipelines ansehen. In meinem Fall habe ich mich für Tekton entschieden, aber Sie können gerne Jenkins, CircleCI oder ein anderes von Ihnen oder Ihrem Unternehmen bevorzugtes Pipeline-Tool verwenden.

Tekton ist ein leistungsstarkes und dennoch flexibles Kubernetes-natives Open-Source-Framework zum Erstellen von Continuous-Integration- und Continuous-Delivery-Systemen (CI/CD). Es ermöglicht Ihnen das Erstellen, Testen und Bereitstellen über mehrere Cloud-Anbieter oder lokale Systeme hinweg, indem Sie die zugrunde liegenden Implementierungsdetails abstrahieren. Tekton Pipelines 2020-Roadmap.

Schritte:

Installieren Sie Tekton CLI (tkn) von hier aus gemäß der Readme-Datei im Repository.

Installieren Sie OpenShift Pipelines Operator.

Überprüfen Sie die Installation von Tekton CLI und Pipelines Operator:

$ tkn version
Client version: 0.13.1
$ oc get csv -n wordpress-deploy
NAME                                  DISPLAY                        VERSION   REPLACES   PHASE
crwoperator.v2.4.0                    Red Hat CodeReady Workspaces   2.4.0                Succeeded
openshift-pipelines-operator.v1.0.1   OpenShift Pipelines Operator   1.0.1                Succeeded

3) Wenden Sie eine benutzerdefinierte Vorlage an, die Anwendungs-Pods erstellt

Hinweis :Ich habe Beispiel-Quellcode aus dem Github-Repository verwendet.

Schritte:

Laden Sie die Vorlagendatei mit curl herunter Befehl:

$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/openshift-template.yaml

Laden Sie die Vorlage in Ihren Namespace hoch:

$ oc create -f openshift-template.yaml

Bevor Sie die Anwendung erstellen, listen Sie zunächst die erforderlichen Variablen für die Vorlage auf:

$ oc process --parameters wordpress-nginx-php
NAME                        DESCRIPTION                                                                  GENERATOR           VALUE
NAME                        The name assigned to all of the frontend objects defined in this template.   expression          wordpress-[a-f0-9]{6}
NAMESPACE                   The OpenShift Namespace where the ImageStream resides.                                           
APP_MEMORY_LIMIT            Maximum amount of memory limits the App container can use.                                       512Mi
APP_CPU_LIMIT               Maximum amount of cpu limits the App container can use.                                          200m
APP_MEMORY_REQUEST          Maximum amount of memory requests the App container can use.                                     512Mi
APP_CPU_REQUEST             Maximum amount of cpu requests the App container can use.                                        200m
DB_MEMORY_LIMIT             Maximum amount of memory limits the MariaDB container can use.                                   512Mi
DB_CPU_LIMIT                Maximum amount of cpu limits the MariaDB container can use.                                      200m
DB_MEMORY_REQUEST           Maximum amount of memory requests the MariaDB container can use.                                 512Mi
DB_CPU_REQUEST              Maximum amount of cpu requests the MariaDB container can use.                                    200m
DB_VOLUME_CAPACITY          Volume space available for DB data, e.g. 512Mi, 2Gi                                              1Gi
FILES_VOLUME_CAPACITY       Volume space available for sites/default/files, e.g. 512Mi, 2Gi                                  1Gi
ROUTER_CANONICAL_HOSTNAME   Clusters Router Canonical Hostname is self-explanatory.                                          
MYSQL_DATABASE                                                                                                               wordpress
MYSQL_USER                                                                                                                   wordpress
MYSQL_ROOT_PASSWORD         Password for the MySQL root user.                                            expression          [a-zA-Z0-9]{16}
MYSQL_PASSWORD                                                                                           expression          [a-zA-Z0-9]{16}

Verarbeiten Sie die bereitgestellte Vorlage einschließlich Ihrer Parameterwerte:

$ oc process wordpress-nginx-php -p NAME=wordpress -p NAMESPACE=wordpress-deploy -p ROUTER_CANONICAL_HOSTNAME=apps.tgabriel-test.y2pm.s1.devshift.org -p MYSQL_ROOT_PASSWORD=nKatIcTRIToR -p MYSQL_PASSWORD=eSoiDenThicO | oc create -f -

Vergewissern Sie sich, dass sich alle Pods im Running-Modus befinden oder Abgeschlossen Zustand:

$ oc get pods -n wordpress-deploy
NAME                                                    READY   STATUS      RESTARTS   AGE
codeready-5dc8dcd6f8-xm6tx                              1/1     Running     0          69m
codeready-operator-864446f6b-dpp52                      1/1     Running     0          74m
keycloak-7c4f96b7d9-m6nv9                               1/1     Running     0          72m
phpmyadmin-1-build                                      0/1     Completed   0          11m
phpmyadmin-1-deploy                                     0/1     Completed   0          3m36s
phpmyadmin-1-fmt7b                                      1/1     Running     0          3m28s
postgres-769b855b45-tlhcs                               1/1     Running     0          73m
wordpress-app-1-build                                   0/1     Completed   0          11m
wordpress-app-1-25p6n                                   2/2     Running     0          2m28s
wordpress-app-1-7mc4z                                   2/2     Running     0          2m28s
wordpress-app-1-deploy                                  0/1     Completed   0          2m43s

4) CI/CD Teil 2 – Ausführen der Tekton-Pipeline

Schritte:

Überprüfen Sie die Liste der erstellten Ressourcen:

$ tkn resource ls
NAME              TYPE    DETAILS
app-git         git         url: https://github.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4
app-image   image   url: image-registry.openshift-image-registry.svc:5000/wordpress-deploy/openshift-nginx-phpfpm-s2i
$ tkn task ls
NAME               AGE
openshift-client   58 seconds ago
s2i-php            1 minute ago
$ tkn pipeline ls
NAME                   AGE                 LAST RUN                                                              STARTED         DURATION   STATUS
build-and-deploy  3 minutes ago   openshift-nginx-phpfpm-deploy-pipelinerun-vt7cf  3 minutes ago   1 minutes      Succeeded

Überwachen Sie die Tekton-Pipeline:

$ tkn pipeline logs -f
...
[deploy : oc] build.build.openshift.io/wordpress-2 started
...

Zum Starten eines neuen Pipelinelaufs:

$ tkn pipeline start build-and-deploy-2 -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/01_pipeline/03_persistent_volume_claim.yaml -p deployment-name=wordpress -r app-git=app-git -r app-image=app-image -s pipeline

5) Import der Musterproduktionsdaten mit CLI

Hinweis :Aufgrund der Größe unserer exportierten Datenbankdatei werden wir mit CLI-Befehlen fortfahren. Bitte beachten Sie, dass Sie bei Verwendung des Phpmyadmin-Importtools aufgrund der Beschränkungen des Phpmyadmin-Imports einen 504 Gateway Timeout-Fehler erhalten würden.

Schritte:

Gehen Sie in den DB-Pod-Container:

$ oc get pods -n wordpress-deploy
NAME                        READY   STATUS       RESTARTS   AGE
phpmyadmin-1-build          0/1     Completed    0          19h
phpmyadmin-1-deploy         0/1     Completed    0          19h
phpmyadmin-1-fjhfn          1/1     Running      0          19h
wordpress-app-1-8jtzg       2/2     Running      0          19h
wordpress-app-1-build       0/1     Completed    0          19h
wordpress-app-1-deploy      0/1     Completed    0          19h
wordpress-app-1-ks48k       2/2     Running      0          19h
wordpress-app-db-1-bcmnn    1/1     Running      0          19h
wordpress-app-db-1-build    0/1     Completed    0          19h
wordpress-app-db-1-deploy   0/1     Completed    0          19h
$ oc rsh wordpress-app-db-1-bcmnn
sh-4.2$

Importieren Sie die Sicherungsdatei mit der CLI:

sh-4.2$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/database_backup.sql
sh-4.2$ mysql -h 127.0.0.1 -u root -D wordpress < database_backup.sql

(Optional) Innerhalb von wp_options Tabelle, siteurl bearbeiten und Zuhause Werte, die Ihrem Anwendungspfad entsprechen.

Rufen Sie die WordPress-Anwendungsroute ab:

$ oc get route wordpress-app
NAME            HOST/PORT                                                                 PATH   SERVICES        PORT    TERMINATION   WILDCARD
wordpress-app   wordpress-app-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org          wordpress-app   <all>                 None

Besuchen Sie die Bewerbungsroute, wo Sie die Startseite der Bewerbung sehen sollten .

[ Holen Sie sich dieses kostenlose E-Book:Verwalten Ihrer Kubernetes-Cluster für Dummies. ]

Abschluss

Dieser Leitfaden bietet einen guten Ausgangspunkt für die Erstellung Ihres WordPress-Entwickler-Stacks auf OpenShift 4 und bereitet Sie auf eine erfolgreiche Konfiguration vor.

Ressourcen und Credits

  • Quellcode-Repository
  • Drupal auf OpenShift:Bereitstellung Ihrer ersten Drupal-Site
  • Drupal auf OpenShift:Verbesserung der Entwicklererfahrung

Linux
  1. So stellen Sie Ihren ersten Pod in einem Kubernetes-Cluster bereit

  2. So erstellen Sie eine Subdomain für Ihre Website

  3. So erstellen Sie Ihre Plesk-Site

  4. So erstellen Sie ein PEM für Ihr vorhandenes SSL

  5. So erstellen Sie eine Bildergalerie in WordPress

So fügen Sie Ihrer WordPress-Website ein reCAPTCHA hinzu

So erstellen Sie Ihr eigenes VPN – Detaillierte Anweisungen

So installieren Sie WordPress auf einem Nginx LEMP-Stack mit Ubuntu 14.04

So richten Sie Ihre erste WordPress-Website ein

So sichern oder härten Sie Ihre WordPress-Website

So erstellen Sie eine WordPress-Staging-Umgebung