Как создать девелопер-версию продакшен сервера на linux?

Подскажите пожалуйста, в каком направлении искать и может есть уже какие то готовые решения.


Есть рабочий debian сервер обслуживающий на nginx довольно крупный сайт в обвязке php+mysql. Все кастомное, никаких фреймворков, код раскидан по разным папкам, разные разработчики в разное время придерживались разных подходов к проектированию приложений и сейчас это такой большой "снеговик" сложно управляемый.


Задача.

Облегчить развертывание актуальных версий проекта из множества php приложений или на dev сервере или что еще лучше, чтобы разработчик мог получить полноценную локальную версию копии рабочего сайта со всем серверным окружением под любой клиентской операционной системой. Нужно еще учитывать, что есть конфиденциальные данные пользователей в БД, которые не нужно давать разработчику, дабы не утекли.


Для себя, по простому делаю бэкапы файлов, бэкапы базы и перекидываю на свой уже настроенный локальный сервер. Для каких то частных задач это подходит, но концептуально это не правильно - нет полноценного окружения и возможны ошибки в продакшене.

И довольно много времени уходит на бэкап и развертывание актуального состояния файлов и базы.


Смотрю в сторону  виртуализации и контейнеризации.


Есть идея сделать образ всей системы "на живую". Перекинуть в VirtualBox или Docker (на винде на маке или линукс), но там диски по несколько терабайт, по сети дергать это нереально. Может быть сделать это один раз,  типа базовый образ системы, а потом добавлять только изменения.


Подскажите, кто сталкивался с подобными задачами, как можно это реализовать?

Спасибо)

GNU/Linux

1K постов15.5K подписчика

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

6
Автор поста оценил этот комментарий
Нужно еще учитывать, что есть конфиденциальные данные пользователей в БД, которые не нужно давать разработчику

Сомнительно себе это представляю, только если создать БД с тестовыми данными.

А так это всё напоминает анекдот про уровни доступа, а самый высокий уровень оказывается у уборщицы.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

данные с базы уже потом настроить. Первично, чтобы вообще это все заработало. А за совет спасибо)

1
Автор поста оценил этот комментарий

Докерфайл за вас писать не буду )

Но это РЕАЛЬНО элементарный формат.

К примеру - вот кусочек файла, который в проекте, где я работаю, используется для сборки бинарей (ну, не сам файл, а докер, построенный из него в результате выполнения над ним docker build -t) Он реально настолько прост, что я в него (и подобные) подсматриваю просто как в инструкцию, когда надо вспомнить "а что нам там вообще надо?"


```

FROM ubuntu:precise


ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \

libmysqlclient-dev \

libexpat-dev \

libpq-dev \

unixodbc-dev \

flex \

bison \

git \

cmake \

build-essential \

devscripts \

wget \

gawk \

autoconf \

automake \

debhelper

...

```


Это и есть самая элементарная установка "с нуля" - берём убунту заданной версии, в неё ставим конкретные пакеты, которые тоже очевидны прямо из текста.

И вся работа по построению докера - она прямо вот такая. Нет совершенно никаких неопределённостей (тут поставил вот так - не сработало, надо иначе - а вдруг получится). Тут всё детерминировано. Если есть последовательность по установке настройке - тупо пишем строчку за строчкой в файл, получаем после сборки докер, в котором всё будет именно так установлено и настроено.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Попробую, спасибо

Автор поста оценил этот комментарий

БД выноситься на отдельный сервак, синхронизация кода делается через git одной командой.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

а настройки веб сервера?...например у нас еще один домен появился vasya.com, надо вносить в настройки nginx, + может быть этот вася захочет на django делать проект, так надо еще python с wsgi(жуткая вещь) по верх устанавливать на деве. Это довольно утомительное занятие)....Хотелось бы просто кнопку - Снять образ -> Развернуть образ на другой машине

Автор поста оценил этот комментарий

что значит"инфраструктура не настроена". моя не понимать как можно умудриться сделать так, что нельзя внедрить git :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

нее, гит тут не причем... есть есть настроенный nginx с ssl сертификатами, есть список портов разрешенных/запрещенных и много всяких зависимостей на уровне самой ос.

Каждый раз для локальных копий все это настраивать занятие утомительное, хочется просто все это скачать и поместить в какой нибудь контейнер аля Docker или образ Virtualbox

Автор поста оценил этот комментарий

я вообще ни разу не девопс и к этому по стольку по скольку) работаю с чем дано обычно. так, максимум мелкое почиксить. но могу скинуть примерно как у нас это поднимается, конфиг файлы. стучите в скайп "itman.green"

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

тут девопсом быть не надо)...это больше серверное администрирование. Ок, по возможности завтра постучу), спасибо

Автор поста оценил этот комментарий

ну у нас под дев выделен отдельный сервак, и все опыты проводим на нём

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

у нас тоже есть такое, но есть проблема, что синхронизация этих серверов делается вручную и очень очень сложно. Поэтому там база годичной давности + появляются новые сервисы на других доменах и поддоменах продакшена, которые синхронизировать с девом даже не предаставляю как

показать ответы
Автор поста оценил этот комментарий

что вам мешает, сделать копию кода рядом в папку DEV_ВАШРАБОЧИЙКОД и натравить на него домен третьего уровня? И работать с этой папкой через другой домен (dev.вашдомен.блабла).

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

мешает то что нет изоляции окружения. Бывало пару раз у меня да и у других коллег когда бесконечный цикл получается да и любые другие тяжелые операции вешают веб сервер вместе с продакшеном.


И как вы представляете, 5 разработчиков используют ресурсы продакшен сервера, можно, но плохо

показать ответы
4
Автор поста оценил этот комментарий

Ты сможешь "с нуля" настроить всю эту катавасию на новом "чистом" хосте? (при условии, что всё нужное заранее запаковано/разложено по полочкам вместе с вменяемой инструкцией?)
(скопировать все нужные скрипты/настройки куда надо и т.д.?)
Тогда пиши докерфайл и генери докер-image. Нужные файлы клади прям рядом с докерфайлом. Он будет инструкцией (если посмотреть, он по формату такой и есть), нужные файлы будут лежать рядом и попадут в итоге в финальный докер.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Воо! Это уже близко к тому что хотел)...

Да я уже собирал этот проект на ноутбуке, OpenServer, но чтобы он заработал хотябы частично, очень много сил и времени в это вложил.


А можешь помочь за деньги?

Мне просто нужен помощник кто сможет проконсультировать

показать ответы
2
Автор поста оценил этот комментарий

из множества php приложений

что значит пхп-приложение? вангую по факту там просто есть папка WebSite и в ней куча подпапок, а все это под одной версией php крутится. И в чем проблема их тупо архивнуть и скопировать тогда?

и да, там нет версионной системы? если нет - кастрировать тим лида, добавить git и заставить работать с ним всех разработчиков. причем кастрировать медленно и у всех на виду.


ну а дальше, к примеру Vagrant box, куда кроме дефолтных LAMP стека прописываем поэтапно шаги:

1. git pull master ну или скачать архив с сервера бекапов

что бы локально создать все файлы нужные для работы сайта


2. дернуть бекап БД

опять же они обязаны быть как минимум ежедневные по крону на лайв сервере!)


3. выполнить скрипт очистки и правки БД

можно посидеть денек, посоставлять SQL запросы, которые бы просто меняли данные на одинаковые типа credit_card_cumber = '1111-1111...' customer_name='vaisa pupkin' и т.д. это достаточно просто сделать.

у нас еще к примеру подключен скрипт "search_replace" (из популярной одноименной библотеки, у которой есть CLI либа - search-replace-db/srdb.cli.php ), который на лету правит некоторые моменты в БД


собственно, готово. ну а дальше пихать все, что душе угодно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

дельный совет, спасибо.

git есть, но им пользуюсь только я частично чтобы в случае косяков быстро откатить), но в целом инфраструктура проекта не настроена на такую работу.

PHP приложения имел ввиду классы и реализации для определенных задач.

а как передать в Vagrant box серверное окружение? он это умеет? я не знаком с этой технологией(

показать ответы
4
Автор поста оценил этот комментарий

Как, как, делать всё заново с нуля или засучивать рукава и расчищать эти авгиевы конюшни. Другого варианта приведения старого легаси-говна в нормальный вид человечество ещё не придумало.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

с нуля не вариант. В данном случае нельзя терять данные и структуру. Можно поэтапно это переводить на новые рельсы

6
Автор поста оценил этот комментарий

По-моему надо не страдать хуйнёй с образами имеющегося пиздеца "на живую", а привести сначала сервер в нормальное состояние.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

тоже верно). Но как его привести в такое состояние, когда он уже рабочий?), для этого и нужна копия.


Проекту уже больше 10 лет без фреймворков. А неизбежно даже лучшие фреймворки обрастают мусором и выходят за рамки стандартов со временем

показать ответы