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

Tiefgreifendes Verständnis des Linux-Lastausgleichs LVS

Inhaltsverzeichnis 1. LVS-Lastausgleich 2. Grundl...

Abfrage der Daten des Tages vor dem aktuellen Zeitintervall in MySQL

1. Hintergrund In tatsächlichen Projekten stoßen ...

Mit HTML+CSS3 implementierte Anmeldeschnittstelle

Ergebnisse erzielen Bauen Sie zunächst mit HTML e...

Vue.js implementiert Musikplayer

In diesem Artikel wird der spezifische Code von V...

Grafisches Tutorial zur Offline-Installation und Konfiguration von MySQL 8.0.2

Die Offline-Installationsmethode von MySQL_8.0.2 ...

JS-Implementierung des Karussell-Karussell-Falls

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Analyse des Unterschieds zwischen Ref und Reactive in Vue3.0

Inhaltsverzeichnis Ref und Reaktiv Referenz Reakt...

Vue implementiert einen Countdown zwischen angegebenen Daten

In diesem Artikelbeispiel wird der spezifische Co...

Detailliertes Installationstutorial von Docker unter CentOS

Docker ist in CE und EE unterteilt. Die CE-Versio...

Vue implementiert das Hinzufügen von Wasserzeichen zu hochgeladenen Bildern

In diesem Artikel wird der spezifische Implementi...

Vor- und Nachteile gängiger MySQL-Speicher-Engines

Inhaltsverzeichnis Alle Speicher-Engines anzeigen...

MySQL-Join-Abfragesyntax und Beispiele

Verbindungsabfrage: Es ist das Ergebnis der paarw...