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

Implementierung der Fastdfs+Nginx-Clusterkonstruktion

1. Einführung in Fastdfs 1. Was ist Fastdfs? Fast...

Tutorial zu HTML-Tabellen-Tags (3): Breiten- und Höhenattribute WIDTH, HEIGHT

Standardmäßig werden Breite und Höhe der Tabelle ...

Eine detaillierte Diskussion der Komponenten in Vue

Inhaltsverzeichnis 1. Komponentenregistrierung 2....

4 Prinzipien für sauberes und schönes Webdesign

In diesem Artikel werden diese 4 Prinzipien im Hi...

Tutorial zur Installation, Bereitstellung und Verwaltung von KVM-Virtualisierung

Inhaltsverzeichnis 1.kvm-Bereitstellung 1.1 KVM-I...

Die am häufigsten verwendete HTML-Escape-Sequenz

In HTML haben <, >, & usw. eine speziell...

Detaillierte Erläuterung der sieben Wertübertragungsmethoden von Vue

1. Vom Vater zum Sohn Definieren Sie das props Fe...

Detaillierte Beschreibung allgemeiner Ereignisse und Methoden von HTML-Text

Veranstaltungsbeschreibung onactivate: Wird ausgel...