-6

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

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


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


Задача.

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


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

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


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


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


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

Спасибо)

Дубликаты не найдены

+6

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

раскрыть ветку 3
0

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


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

раскрыть ветку 2
+4

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

раскрыть ветку 1
+4

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

раскрыть ветку 4
0

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

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


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

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

раскрыть ветку 3
+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

...

```


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

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

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

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

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

раскрыть ветку 1
+1

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

+2

Docker + Gitlab CI/CD это просто)

Я сейчас деплою проекты под 400 rps без простоя)  если будут вопросы пиши)

+1

Таскал подобные ресурсы не раз. Задача бьется на 4:

1. Перенести файловое хранилище. Rsync, git или тупое копирование.

2. Синхронизировать пакеты, тут или обнова до последних версий или скрипт устанавливающий пакеты по версиям.

3. Синхронизация БД.

4. Синхронизация (выборочная) /etc каталога


Для решения задачи делается mirror-prod в локальной сети, оттуда идёт синхронизация на прод в Интернете. Локальное зеркало нужно на случай ЧП.


Зеркала развертывать лучше на KVM т.к. VDS/VPS в проде на нём обычно.

раскрыть ветку 5
0
все делается нормальной CI/CD системой.
раскрыть ветку 4
0

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


А что касается уже моего прода - то самописная CI/CD есть и давно работает.

раскрыть ветку 3
+1

Смотри системы деплоя веб приложений или системы развертывания. Там разного уровня есть смотря насколько подробно и с каким окружением надо работать. В большинстве случаев хватает git+ssh. Тут разобрано более менее https://toster.ru/q/28553

+1

из множества 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 ), который на лету правит некоторые моменты в БД


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

раскрыть ветку 11
0

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

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

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

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

раскрыть ветку 10
0

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

раскрыть ветку 1
0

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

раскрыть ветку 1
0

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

раскрыть ветку 5
0
концепция докера - 1 контейнер 1 приложение. если сайт крупный, то туда и балансировщики, и редис, и мемкеши, да кучу всего вспомогательного деплоить в контейнерах, а рулить всем хозяйством через k8s/helm
0
а хосты готовить с помощью ansible, например
0
ну вообще завернуть все в докер, рядом контейнеры с проксей и базой. деплоить на нужные энвы при помощи дженкинса. при правильном подходе можно деплоить на прод без даунтайма. ну и да, все в гите держать. для dev env - просто сделать базу с тестовыми данными.
0

Гит

Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: