Detaillierte Erläuterung des Tutorials zum Erstellen einer PHP-Umgebung für Docker

Detaillierte Erläuterung des Tutorials zum Erstellen einer PHP-Umgebung für Docker

Docker-Installation

Verwenden Sie das offizielle Installationsskript, um die neueste Version von Docker zu installieren

curl -sSL https://get.docker.com/ | sh

Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Daemon mit dem folgenden Befehl und lassen ihn beim Systemstart automatisch laden

sudo service docker start
sudo chkconfig Docker ein
## oder
sudo systemctl starte Docker
sudo systemctl Docker aktivieren

Benutzer (Jerry) zur Docker-Gruppe hinzufügen

sudo usermod -aG docker jerry

Befehlshinweise (Centos), basierend auf Docker-Image 2233466866/lnmp

Bild herunterladen

docker pull 2233466866/lnmp

Erstellen Sie ein Basisverzeichnis

mkdir -p /app/lnmp/default /docker/lnmp/data/mysql /docker/lnmp/conf/vhost /docker/lnmp/logs /docker/lnmp/temp /docker/lnmp/backup

Laden Sie die Containerkonfigurationsdatei in das entsprechende lokale Verzeichnis herunter

docker run -itd -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name=lnmp 2233466866/lnmp
docker exec -it lnmp /bin/bash
docker cp lnmp:/etc/meine.cnf /docker/lnmp/conf/meine.cnf
docker cp lnmp:/usr/local/nginx/conf/nginx.conf /docker/lnmp/conf/nginx.conf
cp /docker/lnmp/conf/my.cnf /docker/lnmp/backup/my.cnf
cp /docker/lnmp/conf/nginx.conf /docker/lnmp/backup/nginx.conf

Grundlegende Konfiguration anzeigen oder ändern (Codeverzeichnis, Protokollspeicherverzeichnis und Vhost-Verzeichniskonfigurationsergänzung)

meine.cnf

[mysqld]
Datenverzeichnis=/Daten/MySQL
socket=/var/lib/mysql/mysql.sock
symbolische Links = 0
log-error=/var/log/mysqld.log
pid-Datei=/var/run/mysqld/mysqld.pid

nginx.conf

Benutzer www;
Arbeiterprozesse automatisch;
worker_cpu_affinity automatisch;


worker_cpu_affinity automatisch;
pid-Protokolle/nginx.pid;

Ereignisse {
  Arbeiterverbindungen 102400;
}

http {
  Zeichensatz UTF-8;
  Server-Tokens aus;

  log_format main '$remote_addr - $remote_user [$time_iso8601] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" "$http_x_forwarded_for"';

  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;

  Maximale Client-Körpergröße: 20 M;

  sendfile an;
  KeepAlive-Timeout 20;

  gzip an;
  gzip_vary ein;
  gzip_comp_level 1;
  gzip_types Text/CSS-Anwendung/JavaScript-Anwendung/JSON-Bild/PNG-Bild/WebP-Bild/Apng-Bild/JPEG-Bild/X-Symbol;

  autoindex_localtime ein

  Fehlerprotokoll /logs/z_error.log;
  Zugriffsprotokoll /logs/z_$host.log main;

  Server {
    hören Sie 80 Standard;
    Wurzel /www/Standard;
    500 zurückgeben;
  }
  vhost/*.conf einschließen;
}

Stoppen und Löschen des Testcontainers

Docker stoppt lnmp
Docker RM lnmp

Erstellen Sie den Container neu

docker run -dit \
-p 80:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
-e TC="Asien/Shanghai" \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /app/lnmp:/www \
-v /docker/lnmp/data/mysql:/data/mysql \
-v /docker/lnmp/conf/meine.cnf:/etc/meine.cnf \
-v /docker/lnmp/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf \
-v /docker/lnmp/conf/vhost:/usr/local/nginx/conf/vhost \
-v /docker/lnmp/logs:/Protokolle \
--privilegiert=true \
--name=lnmp \
2233466866/lnmp

MySQL-Datenbankkonfiguration (/etc/my.cnf)

/bin/mysql_secure_installation
cat /var/log/mysqld.log|grep 'Ein temporäres Passwort'
PASSWORT FESTLEGEN = PASSWORT('123456');

php.ini-Konfiguration (/usr/local/php7/lib/php.ini)

mysqli.default_socket = /var/lib/mysql/mysql.sock

Änderung von Linux-bezogenen Einstellungen

Benutzer hinzufügen (www), der sich nicht anmelden kann

groupadd www
useradd -M -g www -s /usr/sbin/nologin www

Zeitzone ändern (/etc/profile)

TZ='Asien/Shanghai'; TZ exportieren
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

Multisite-Konfiguration

www.test.test.conf

Server {
  hören Sie 80;
  Servername test.test;

  schreibe ^(.*)$ $scheme://www.test.test$1 permanent um;
}
Server {
  hören Sie 80;
  Servername www.test.test;

  wenn ($time_iso8601 ~ "^(\d{4}-\d{2}-\d{2})") {
    setze $ttt $1;
  }
  Zugriffsprotokoll /logs/$host-$ttt-access.log main;

  Wurzel /www/test;

  Standort / {
    index.php index.html index.htm;
  }

  Standort ~* \.php {
    fastcgi_params einschließen;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name;
  }

}

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:
  • So konfigurieren Sie die PHP-Entwicklungsumgebung über Docker auf dem Mac
  • Docker-Installation von PHP und Bereitstellungsbeispiel mit Nginx
  • Erläuterung der Schritte zur Installation der PHP-Erweiterung in Docker
  • So verwenden Sie Docker zum Erstellen einer einheitlichen OpenLDAP+phpLDAPadmin-Benutzerauthentifizierung
  • Detailliertes Tutorial zur Installation des PHP-FPM-Dienstes/der PHP-FPM-Erweiterung/-Konfiguration in Docker
  • Dockers flexible Implementierung zum Aufbau einer PHP-Umgebung
  • So stellen Sie LNMP und phpMyAdmin in Docker bereit
  • PHP verwendet Docker, um Workerman-Fallerklärung auszuführen

<<:  Einige Probleme, die bei der Installation von MySQL auftreten können

>>:  JavaScript fügt Ereignis-Listener zur Ereignisdelegierung in Batches hinzu. Detaillierter Prozess

Artikel empfehlen

So optimieren Sie MySQL-Indizes

1. Wie MySQL Indizes verwendet Indizes werden ver...

Detaillierte Erklärung der benutzerdefinierten Swiper-Komponente in JavaScript

Inhaltsverzeichnis Effektanzeige Komponenteneinst...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

HTML-Versionsdeklaration DOCTYPE-Tag

Wenn wir den Quellcode einer normalen Website öff...

Eine kurze Diskussion zur Auftragsrekonstruktion: MySQL-Sharding

Inhaltsverzeichnis 1. Ziele 2. Umweltvorbereitung...

Detaillierte Erläuterung der Live-Übertragungsfunktion von Vue

Vor kurzem hat das Unternehmen zufällig Live-Über...

Natives JS zum Erreichen von Spezialeffekt-Meldungsfeldern

In diesem Artikel wird ein Nachrichtenfeld mit Sp...

Der Unterschied zwischen KEY, PRIMARY KEY, UNIQUE KEY und INDEX in MySQL

Das im Titel angesprochene Problem lässt sich sch...

Auszeichnungssprachen – Was lernen, nachdem man HTML gelernt hat?

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

So verwenden Sie vue.js zum Implementieren der Drag & Drop-Funktion

Vorwort Durch das Hinzufügen einer Drag & Dro...

CSS realisiert den Maskeneffekt, wenn die Maus über das Bild bewegt wird

1. Setzen Sie den HTML-Code der Maskenebene und d...

Docker erstellt CMS-On-Demand-System mit Player-Funktion

Inhaltsverzeichnis Text 1. Maschine vorbereiten 2...