Работасветками
Работасветками
Существуетмножествоспособоворганизацииработыскодомвпроекте。Однакофиксироватьизменениянепосредственновmaster-веткеGitинапрямуюразвёртыватькодвпродакшенбезтестирования,пожалуй,нелучшийвариант。
Тестирование——этонетолькомодульныеилифункциональныетесты,ноипроверкаповеденияприложениясиспользованиемреальныхданных。Есливыиливашизаинтересованныестороныможетепросмотретьприложениевтомсамомвиде,вкоторомонопредстанетпередконечнымипользователями,этостановитсяогромнымпреимуществомипозволяетвамразвёртыватьприложениясуверенностью。Особеннополезно,когданетехническиеспециалистымогутпроверятьновуюфункциональность。
Дляупрощенияичтобыизбежатьповторениянаследующихшагахмыпродолжимработувmaster-веткеGit,однакодавайтепосмотрим,какэтоможноорганизоватьполучше。
ОрганизациярабочегопроцессаспомощьюGit
Созданиеотдельнойветкинакаждуюновуюфункциональностьилиисправлениебага——одинизпростыхиэффективныхвариантоворганизациирабочегопроцесса。
Созданиеветок
РабочийпроцессначинаетсяссозданияветкивGit:
1
美元git分支- d sessions-in-db | |真正的
1
美元git checkout - b sessions-in-db
Командаизпримерасоздаётветкуsessions-in-db
изветки主
。Этодействиесоздаётответвлениекодаиконфигурацииинфраструктуры。
Хранениесессийвбазеданных
Вероятно,выужепонялиизназванияветки,чтодляхранениясессийвместофайловойсистемымыбудемиспользоватьхранилищебазыданных(PostgreSQLвнашемслучае)。
Необходимыешагидляреализацииэтоговполнетипичны:
- СоздайтеновуюветкувGit;
- ОбновитеконфигурациюSyob娱乐下载mfony,еслипотребуется;
- Принеобходимостинапишитеи/илиобновитекод;
- 如果需要更新PHP配置(比如添加PostgreSQL PHP扩展);
- Принеобходимостиобновитеинфраструктуру码头工人и平台。sh(добавивсервисPostgreSQL);
- Протестируйтелокально;
- Протестируйтеудалённо;
- Выполнитеслияниеветкисосновнойветкой;
- Развернитевпродакшене;
- Удалитеветку。
Чтобыхранитьсессиивбазеданных,изменитеконфигурационнуюопциюsession.handler_id
наDSNбазыданных:
1 2 3 4 5 6 7 8 9 10 11
- - - / config /包/ framework.yaml+ + + b / config /包/ framework.yaml@@ 8 7 + 8 7 @@框架:#使会话的支持。注意,会议才会开始如果你读或写。#删除或注释本节明确禁用会话的支持。会话:- handler_id:零+ handler_id: ' % env(解决:DATABASE_URL) % 'cookie_secure:汽车cookie_samesite:宽松storage_factory_id: session.storage.factory.native
Дляхранениясессийвбазеданныхнамнужносоздатьтаблицу会话
。Создадимеёспомощьюмиграции学说:
1
美元ob娱乐下载symfony控制台:迁移
Отредактируйтефайл,чтобыдобавитьсозданиетаблицывметоде()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
- - - /迁移/ Version00000000000000.php+ + + b /迁移/ Version00000000000000.php@@ -21年6 + 21日15 @@最终类Version00000000000000延伸AbstractMigration{/ /这个()迁移是自动生成的,请修改它来满足您的需求+ $ this - > addSql ('+创建表会话(+ sess_id VARCHAR (128) NOT NULL主键,+ sess_data BYTEA非空,+ sess_lifetime整数非空,+ sess_time整数NOT NULL+)+ ');+ $ this - > addSql(“会话(sess_lifetime)上创建索引失效”);}公共函数(模式美元):空白
Применитемиграциюкбазеданных:
1
美元ob娱乐下载symfony控制台学说:迁移:迁移
Протестируйтесайтнасвоёмкомпьютере,просматриваяразличныестраницы。Посколькумыневносилиникакихвизуальныхизмененийипоканеиспользуемсессии,всёдолжноработатькакираньше。
请注意
Пропуститешаги3 - 5,посколькумыповторноиспользуембазуданныхвкачествехранилищасессий。Вглавепро复述нагляднопоказано,насколькопростодобавить,протестироватьиразвернутьновыйсервискакв码头工人,такивPlatform.sh。
Посколькуноваятаблицане“управляется”学说,намследуетнастроить学说такчтобытаблицанеудаляласьприследующеймиграциибазыданных:
1 2 3 4 5 6 7 8 9 10 11
- - - / config /包/ doctrine.yaml+ + + b / config /包/ doctrine.yaml@@ 5、6 + 5 8 @@学说:#重要:您必须配置您的服务器版本,#在这里或在DATABASE_URL env var(见.env文件)# server_version:“14”++ schema_filter: ~ ^ ~(? !会话)orm: auto_generate_proxy_classes:真正naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
Зафиксируйтеизменениявновойветке:
1 2
美元git添加。美元git commit - m“配置数据库会话”
Развёртываниеветки
Передразвёртываниемвпродакшене,мыдолжныпротестироватьветкувокруженииемуидентичному。Намнеобходимоубедиться,чтовсёработаеткорректновSymfony-ob娱乐下载окружении刺激
(локальныйсайтиспользуетокружениеdev
)。
ТеперьдавайтесоздадимPlatform.sh-окружениенаосновеGit-ветки:
1
美元ob娱乐下载syob直播appmfony云:env:删除sessions-in-db
1
美元ob娱乐下载syob直播appmfony云:部署
Даннаякомандасоздаётновоеокружениевследующемпорядке:
- ВетканаследуеткодиинфраструктуруоттекущейGitветки(
sessions-in-db
); - Данныепоступаютизосновногоокружения(т.е。продакшена)путёмсозданияпоследовательныхслепковвсехслужебныхданных,включаяфайлы(например,загруженныепользователями)ибазыданных;
- Создаётсяновыйвыделенныйкластердляразвёртываниякода,данныхиинфраструктуры。
Посколькуразвёртываниепроходиттежеэтапы,чтоиразвёртываниевпродакшене,миграциибазыданныхтакжебудутвыполнены。Этоотличныйспособпроверить,чтомиграцииработаютсданнымивпродакшене。
Окружения,отличныеот主
,насамомделеоченьнанегопохожи,ноестьнебольшиеотличия。Например,отправкаэлектронныхписемотключенапоумолчанию。
Послезавершенияразвёртыванияоткройтеновуюветкувбраузере:
1
美元ob娱乐下载syob直播appmfony云:url 1
Обратитевнимание,чтовсекоманды平台。shвыполняютсявпределахтекущейGit-ветки。ВыполненнаявышекомандаоткроетURL-адресдлятолькочторазвёрнутойветкиsessions-in-db
。Адресбудетвыглядетьпримернотак:https://sessions - - db - xxx.eu - 5. platformsh.site/
。
Протестируйтесайтвновомокружении:выувидитетежеданные,чтоивосновномокружении。
Еслидобавитьновыеконференциивосновноеокружение(主
),онинепоявятсявокруженииsessions-in-db
инаоборот,таккакокруженияявляютсянезависимымииполностьюизолированнымидруготдруга。
Есликодизменитсявосновнойветке,вывсегдаможетевыполнитьперебазированиеGit-веткииразвернутьобновлённуюверсию,разрешивконфликтывкодеиинфраструктуре。
Втомчислевыможетесинхронизироватьданныесосновногоокружениявокружениеsessions-in-db
:
1
美元ob娱乐下载syob直播appmfony云:env:同步
Предварительнаяотладкаразвёртываниявпродакшене
Поумолчаниювсе平台。sh-окруженияиспользуюттеженастройки,чтоиокружение主
/刺激
(тоже,чтоиокружение刺激
вSob娱乐下载ymfony)。Этопозволяетпротестироватьприложениевреальныхусловиях(какивпродакшене)。Такимобразомсоздаётсяощущениеразработкиитестированиянепосредственнонапродакшен-серверах,нобезсвязанныхсэтимрисков。Мненапоминаетэтостарыедобрыевремена,когдамыразвёртывалипроектычерезFTP。
ПривозникновениипроблемывыможетепереключитьсянаSymfonyob娱乐下载-окружениеdev
:
1
美元ob娱乐下载syob直播appmfony云:env:调试
Кактолькозакончите,переключитесьобратнокпродакшен-настройкам:
1
美元ob娱乐下载syob直播appmfony云:env:调试——了
警告
Никогданеактивируйтеокружениеdev
иникогданеиспользуйтепрофилировщикSymfoob娱乐下载ny,находясьвветке主
,этоприведётктому,чтовашеприложениестанеточеньмедленнымиоткроетмножествосерьёзныхдырбезопасности。
Предварительноетестированиеразвёртываниявпродакшене
Возможностьпредварительногопросмотрабудущейверсиисайтаспродакшен-даннымиоткрываетширокиевозможности:отвизуальногорегрессионноготестированиядотестированияпроизводительности。黑焰——идеальныйинструментдлятакогородазадач。
ПерейдитекшагуПроизводительность,чтобыузнатьбольшепроиспользование黑焰длятестированиякодапередразвёртыванием。
Развёртываниевпродакшене
Есливыполностьюудовлетвореныизменениямивветкесновойфункциональностью,выполнитеслияниекодаиинфраструктурывmaster-веткувGit:
1 2
美元git checkout主美元git合并sessions-in-db
Иразверните:
1
美元ob娱乐下载syob直播appmfony云:部署
Приразвёртываниив平台。shотправляютсятолькоизменениявкодеиинфраструктуре;данныеостанутсятакимиже,какибылидоразвёртывания。