LEMP стек - это адекватный вариант стека для разработки на PHP. Стек включает в себя следующие сервисы:

Наиболее удобный способ установки полноценного LEMP стека для разработки - использование Docker Compose. Инструкции по установке Docker есть на их официальном сайте.

Установка

Создаем в любом удобном месте любую директорию, отведенную под LEMP (например, lempstack). В этой директории создаем и заполняем следующие файлы:

  • docker-compose.yml

    services:
      php:
        build:
          dockerfile: php-dockerfile
        volumes:
          - ./public:/var/www/html
        depends_on:
          - mariadb
     
      nginx:
        image: nginx
        ports:
          - 127.0.0.1:80:80
        links:
          - php
        volumes:
          - ./public:/var/www/html
          - ./nginx:/etc/nginx/conf.d
        depends_on:
          - php
     
      mariadb:
        image: mariadb
        environment:
          MYSQL_ROOT_PASSWORD: P@ssw0rd
        volumes:
          - mariadb_data:/var/lib/mysql
     
      phpmyadmin:
        image: phpmyadmin/phpmyadmin:latest
        ports:
          - 127.0.0.1:8080:80
        environment:
          PMA_HOST: mariadb
        depends_on:
          - mariadb
     
    volumes:
      mariadb_data:
  • php-dockerfile

    FROM php:8.2-fpm-bookworm
     
    RUN apt update && \
        apt install -y zip libzip-dev libpng-dev
     
    RUN docker-php-ext-install mysqli pdo pdo_mysql gd zip
  • nginx/nginx.conf

    server {
      listen 80 default_server;
      listen [::]:80 default_server;
     
      server_name localhost;
     
      root /var/www/html;
      index index.php index.html;
     
      location / {
        try_files $uri $uri/ /index.php?$args;
      }
     
      location ~* \.php$ {
        fastcgi_pass php:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
      }
    }

После создания всех описанных файлов открываем терминал (или командную строку) в директории с docker-compose.yml и поднимаем компоуз:

docker compose up -d

После этого создаем в директории public файл index.php и для теста вписываем в нем следующий код:

<?php
  phpinfo();
?>

Сохраняем файл, заходим в браузере на localhost. Если там открывается страница php info, значит все настроено правильно и работает. phpMyAdmin доступен на localhost:8080

Удаление

Так как в данном случае мы имеем дело с докером, удалить данный набор софта с компьютера будет крайне просто:

  1. Выключаем компоуз командой docker compose down
  2. Очищаем систему от отключенных образов, контейнеров, дисков и сетей командой docker system prune -a
  3. Удаляем директорию с компоузом.