Detaillierte Schritte zum Einrichten des Hosts Nginx + Docker WordPress Mysql

Detaillierte Schritte zum Einrichten des Hosts Nginx + Docker WordPress Mysql

Umfeld

  • Linux 3.10.0-693.el7.x86_64
  • Docker-Version 18.09.0
  • Docker-Compose Version 1.17.0

Installieren

Installieren Sie Docker-Abhängigkeiten

$ sudo yum install -y yum-utils Gerätemapper-Persistent-Data lvm2

Installieren Sie docker-ce

 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 $ sudo yum installiere docker-ce
 $ sudo systemctl Docker starten
 $ docker --version
 $ sudo docker run hallo-welt

Installieren Sie Docker-Compose

$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
$ sudo chmod +x /usr/bin/docker-compose
$ docker-compose --version

Schreiben Sie docker-compose.yml

$ mkdir ./blog
$ CD-Blog
$ sudo vim docker-compose.yml
Version: '3'

Leistungen:
 db:
  Bild:mysql:5.7
  volumes: #Datenvolume, Zuordnung lokaler Ordner - db_data:/var/lib/mysql
  Ports: # Wenn Sie keine Portzuordnung schreiben, kann die Außenwelt keine Verbindung zu MySQL herstellen (die WordPress-Verbindung unten ist in Ordnung)
  - „3306:3306“                       
  Neustart: immer
  Umfeld:
  MYSQL_ROOT_PASSWORD: xxx
  MYSQL_DATABASE: WordPress
  MYSQL_USER: WordPress
  MYSQL_PASSWORD: wordpress

 Wordpress:
  depends_on: #Hängt vom oben genannten Datenbankdienst ab
  -db
  Bild: wordpress:latest
  Bände:
  - wp_site:/var/www/html
  Häfen:
  - "8000:80"
  Neustart: immer
  privilegiert: wahr
  Umfeld:
  # Sie können den obigen Dienstnamen + Port direkt verwenden, um den Link WORDPRESS_DB_HOST zu erhalten: db:3306
  WORDPRESS_DB_USER: WordPress
  WORDPRESS_DB_PASSWORD: WordPress
  # Domänennamen definieren WORDPRESS_CONFIG_EXTRA: "define('WP_HOME','https://blog.amoyiki.com'); define('WP_SITEURL','https://blog.amoyiki.com');"

Bände:
 Datenbankdaten:
 wp_site:

Ausführen des Containers

# Starten Sie $ sudo docker-compose up -d
# Herunterfahren$ sudo docker-compose down

Jetzt können Sie über http://ip:port darauf zugreifen. Wenn Sie feststellen, dass Sie nicht darauf zugreifen können, können Sie das Containerprotokoll auf Fehler überprüfen.

$ sudo docker-compose ps
 Name Befehl Status Ports    

blog_db_1 docker-entrypoint.sh mysqld Hoch 0.0.0.0:3306->3306/tcp, 33060/tcp
blog_wordpress_1 docker-entrypoint.sh apach ... Nach oben 0.0.0.0:8000->80/tcp 
# Das „WordPress“ am Ende ist der Name des Dienstes. Dies unterscheidet sich vom Containernamen, der zum Anzeigen von Protokollen in Docker verwendet wird. $ sudo docker-compose logs -f --tail=10 wordpress 
$ sudo docker-compose logs -f --tail=10 db

Verwenden Sie den Host Nginx, um Docker WordPress umzukehren

Die Konfigurationsdatei von nginx lautet wie folgt (irrelevanter Inhalt weggelassen)

Benutzer root; # Dies liegt daran, dass der WordPress-Dateibenutzer im Docker-Container www-data ist.

Server {
 hören Sie 80;
 Servername *.amoyiki.com;
 gibt 301 https://$host$request_uri zurück;                
}
Upstream WordPress-Arbeitspferd {
 Server 127.0.0.1:8000 Fehlerzeitüberschreitung = 10 s;
}
Server { 
 Servername blog.amoyiki.com;
 hören Sie 443 SSL;
 SSL aktiviert;
 ssl_zertifikat /ssl/pfad/fullchain.pem;
 ssl_zertifikatsschlüssel /ssl/pfad/privkey.pem;
 Zugriffsprotokoll /var/log/nginx/access.log Haupt;
 # Speicherort des WordPress-Datenträgers im Host-Stammverzeichnis /var/lib/docker/volumes/blog_wp_site/_data;


 Standort / {
  Proxy-Passwort http://wordpress-workhorse;
  Proxy_Set_Header Host $host;
  Proxy_Set_Header X-Real-IP $Remote_Addr;
  proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
  Proxy_set_header X-Forwarded-Proto https;
 }
 
 Standort ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
  läuft am 7. Tag ab;
  Zugriff_Abmeldung;             
 }

 Fehlerseite 500 502 503 504 /50x.html;
 Standort = /50x.html {
  Stamm-HTML;
 }
} 

Fehlersammlung

nginx-Fehler: Berechtigung verweigert

"/var/lib/docker/volumes/myblog_wp_site/_data/wp-includes/css/dashicons.min.css" ist fehlgeschlagen (13: Berechtigung verweigert)

Zuvor verwendete mein nginx.conf-Benutzer den Standard-Nobody, der die Benutzergruppendaten von www-data in wp im Docker nicht lesen konnte. Daher habe ich den nginx-Benutzer direkt zum Root befördert, was später optimiert werden kann.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • In sechs Schritten lernen Sie, von Grund auf ein persönliches Blog auf WordPress-Basis zu erstellen.
  • Detaillierte Erklärung des gesamten Prozesses zum Erstellen eines persönlichen Blogs mit nginx+WordPress
  • Detaillierte Erläuterung der WordPress-Multisite-Konfiguration in der Nginx-Umgebung
  • Beispiel zum Festlegen der pseudostatischen WordPress-Eigenschaft in Nginx
  • So konfigurieren Sie WordPress mit Nginx
  • Detailliertes grafisches Tutorial zur Lösung des Problems des langsamen Zugriffs auf die WordPress-Website

<<:  So verwenden Sie die Typerweiterung ohne Typingscript

>>:  mysql 5.7.11 winx64 anfängliche Passwortänderung

Artikel empfehlen

Detaillierte Erklärung von JavaScript zur Überwachung von Routenänderungen

Inhaltsverzeichnis Geschichte pushState() Methode...

Detaillierte Erklärung der MySQL 8.0.18-Befehle

Öffnen Sie den gerade entpackten Ordner C:\web\my...

Gestaltung von Popup-Fenstern und schwebenden Ebenen im Webdesign

Im Zuge des schrittweisen Übergangs von herkömmli...

Fünf Möglichkeiten zur Implementierung der Vererbung in js

Ausleihen von Konstruktoren Die Grundidee dieser ...

CSS erzielt farbenfrohe und intelligente Schatteneffekte

Hintergrund Haben Sie sich jemals gefragt, wie Si...

Analyse der Initialisierung des Quellcodes des Linux-Kernel-Schedulers

Inhaltsverzeichnis 1. Einleitung 2. Grundkonzepte...

Lassen Sie uns ausführlich über die gemeinsame MySQL-Abfrage sprechen

Inhaltsverzeichnis Union-Abfrage 1. Fragen Sie di...

So verwenden Sie JS WebSocket zur Implementierung eines einfachen Chats

Inhaltsverzeichnis Kurze Umfrage Langfristige Abf...

MySQL-Schnellwiederherstellungslösung basierend auf dem Zeitpunkt

Der Grund für das Schreiben dieses Artikels ist, ...

JS implementiert einen Stoppuhr-Timer

In diesem Artikelbeispiel wird der spezifische JS...

Tabellen-Paging-Funktion implementiert durch Vue2.0+ElementUI+PageHelper

Vorwort Ich habe kürzlich an einigen Front-End-Pr...

Das Vue-CLI-Framework implementiert eine Timer-Anwendung

Technischer Hintergrund Diese Anwendung verwendet...