溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker下如何部署lnmp

發布時間:2021-12-06 12:21:16 來源:億速云 閱讀:195 作者:小新 欄目:開發技術
# Docker下如何部署LNMP

## 目錄
1. [前言](#前言)
2. [LNMP架構概述](#lnmp架構概述)
3. [Docker基礎準備](#docker基礎準備)
4. [部署MySQL容器](#部署mysql容器)
5. [部署PHP-FPM容器](#部署php-fpm容器)
6. [部署Nginx容器](#部署nginx容器)
7. [容器互聯與網絡配置](#容器互聯與網絡配置)
8. [數據持久化方案](#數據持久化方案)
9. [多項目環境配置](#多項目環境配置)
10. [性能優化建議](#性能優化建議)
11. [常見問題排查](#常見問題排查)
12. [安全加固措施](#安全加固措施)
13. [CI/CD集成](#cicd集成)
14. [總結](#總結)

## 前言
(約1500字)
- Docker的普及與優勢
- LNMP傳統部署痛點
- 容器化部署的價值
  - 環境一致性
  - 快速部署
  - 資源隔離
- 本文目標讀者群體

## LNMP架構概述
(約2000字)
```mermaid
graph LR
    Client --> Nginx
    Nginx --> PHP
    PHP --> MySQL
  • 各組件功能解析
  • 傳統部署與容器化對比
  • 流量處理流程詳解
  • 版本選擇建議(PHP7.48.x, MySQL5.78.0等)

Docker基礎準備

(約2500字)

環境要求

  • 支持的操作系統
  • 硬件資源建議

Docker安裝

# CentOS示例
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

Docker Compose安裝

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

核心概念

  • 鏡像(Image)與容器(Container)
  • 數據卷(Volume)
  • 網絡(Network)
  • Dockerfile最佳實踐

部署MySQL容器

(約3000字)

官方鏡像選擇

docker pull mysql:8.0

啟動命令詳解

docker run -d \
  --name mysql8 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -e MYSQL_DATABASE=app_db \
  -e MYSQL_USER=app_user \
  -e MYSQL_PASSWORD=userpass \
  -v /data/mysql:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

配置文件定制

# my.cnf示例
[mysqld]
innodb_buffer_pool_size = 1G
max_connections = 200

安全建議

  • 密碼策略
  • 遠程訪問控制
  • 備份方案

部署PHP-FPM容器

(約3500字)

鏡像選擇比較

  • 官方鏡像
  • webdevops/php-nginx
  • 自定義鏡像構建

Dockerfile示例

FROM php:8.1-fpm

RUN apt-get update && \
    apt-get install -y \
        libzip-dev \
        libpng-dev \
        libjpeg-dev \
        libfreetype6-dev

RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install -j$(nproc) \
        gd \
        pdo_mysql \
        zip \
        opcache

COPY php.ini /usr/local/etc/php/conf.d/custom.ini

擴展安裝指南

  • 常見擴展列表
  • Pecl安裝方法
  • 性能相關擴展(OPcache等)

PHP配置優化

; php.ini優化片段
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000

部署Nginx容器

(約3000字)

基礎配置

server {
    listen 80;
    server_name localhost;
    
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

與PHP-FPM通信

  • Unix socket vs TCP
  • 健康檢查配置
  • 靜態資源緩存策略

HTTPS配置

  • Let’s Encrypt證書申請
  • HTTP/2啟用
  • 安全頭設置

容器互聯與網絡配置

(約2000字)

自定義網絡創建

docker network create lnmp-network

Docker Compose完整示例

version: '3.8'

services:
  nginx:
    image: nginx:1.21
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./html:/var/www/html
    networks:
      - lnmp-net

  php:
    build: ./php
    volumes:
      - ./html:/var/www/html
    networks:
      - lnmp-net

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - lnmp-net

volumes:
  mysql-data:

networks:
  lnmp-net:
    driver: bridge

數據持久化方案

(約1500字)

數據卷類型對比

  • 綁定掛載(bind mount)
  • 命名卷(named volume)
  • 臨時卷(tmpfs)

備份與恢復

# MySQL備份示例
docker exec mysql-container sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql

多項目環境配置

(約2000字)

多站點Nginx配置

# 基于server_name的虛擬主機
server {
    listen 80;
    server_name project1.test;
    # ...其他配置
}

server {
    listen 80;
    server_name project2.test;
    # ...其他配置
}

環境變量管理

  • .env文件使用
  • 不同環境配置切換

性能優化建議

(約1500字)

容器資源限制

services:
  php:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 1G

OPcache配置

opcache.validate_timestamps=60
opcache.revalidate_freq=0

常見問題排查

(約1500字)

日志查看方法

docker logs -f nginx-container

常見錯誤代碼

  • 502 Bad Gateway
  • 連接數據庫失敗
  • 權限問題

安全加固措施

(約1000字)

最佳實踐

  • 非root用戶運行
  • 鏡像簽名驗證
  • 定期更新策略

CI/CD集成

(約1000字)

GitHub Actions示例

name: Deploy LNMP

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: docker-compose up -d --build

總結

(約500字) - 方案優勢總結 - 后續學習建議 - 社區資源推薦 “`

注:實際word計數會根據具體內容擴展調整,此處提供了完整的章節結構和部分內容示例。如需完整2萬字內容,每個章節需要進一步擴展技術細節、配置示例和原理說明。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女