Работа с с етками
Работа с с етками
Существуетмножествоспособоворганизацииработыскодомвпроекте。Однакофиксироватьизменениянепосредственнов大师——веткеGitинапрямуюразвёртыватькодвпродакшенбезтестирования,пожалуй,нелучшийвариант。
Тестировани——эетонетолькомодульныеилифункциональныетесты,ноипроверкаповеденияприложениясиспользованиемреальныхданных。Если вы или а а изаинтересованныестороныможетепросмотретьприложениевтомсамомвиде,вкоторомонопредстанетпередконечнымипользователями,этостановитсяогромнымпреимуществомипозволяетвамразвёртыватьприложениясуверенностью。Особеннополезно,когданетехническиеспециалистымогутпроверятьновуюфункциональность。
Дляупрощенияичтобыизбежатьповторениянаследующихшагахмыпродолжимработув大师——веткеGit,однакодавайтепосмотрим,какэтоможноорганизоватьполучше。
Организация рабо о е е есса сс помощью Git
Созданиеотдельнойветкинакаждуюновуюфункциональностьилиисправлениебага-одинизпростыхиэффективныхвариантоворганизациирабочегопроцесса。
Созданиеветок
РабочийпроцессначинаетсяссозданияветкивGit:
1
$Git checkout -b sessions-in-db
Команда из прим мера созда а к еткуsessions-in-db
изветки主
.Этодействиесоздаётответвлениекодаиконфигурацииинфраструктуры。
Хранение сесси т в ба а е данн
Вероятнов,ыужепонялиизназванияветки,чтодляхранениясессийвместофайловойсистемымыбудемиспользоватьхранилищебазыданных(PostgreSQLвнашемслучае)。
Необходимыешагидляреализацииэтоговполнетипичны:
- Создайте но о у у с етку у в Git;
- Обновите конф - и а с ob娱乐下载с с с с с с о л о пот еб те тс;
- При необходимости на апи и ит т т /или об о о ит т код;
- 如果需要更新PHP配置(比如添加PostgreSQL PHP扩展);
- Принеобходимостиобновитеинфраструктуру码头工人иPlatform.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 @@ framework: #启用会话支持。请注意,只有在对会话进行读写时才会启动会话。#删除或注释此部分以显式禁用会话支持。会话:—handler_id: null+ handler_id: '%env(resolve:DATABASE_URL)%'Cookie_secure: auto cookie_sameite: lax storage_factory_id: session.storage.factory.native
Дляхранениясессийвбазеданныхнамнужносоздатьтаблицу会话
.Создадим её с с с ии ии с ии и
1
$ob娱乐下载Symfony控制台make:迁移
Отредактируйтефайл,чтобыдобавитьсозданиетаблицывметоде()
:
12 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 extends AbstractMigration{//这个up()迁移是自动生成的,请根据您的需要修改它+ $ this - > addSql ('+创建表会话(+ sess_id VARCHAR(128) NOT NULL主键,+ sess_data BYTEA NOT NULL,+ sess_lifetime INTEGER NOT NULL,+ sess_time INTEGER NOT NULL+)+ ');+ $this->addSql('CREATE INDEX expiry ON sessions (sess_lifetime)');}公共函数关闭(Schema $ Schema):无效
Примените ми и и и и и а а а а а а анн:
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 @@ doctrine: #重要的是:您必须配置您的服务器版本,#在这里或在DATABASE_URL env var(参阅。env文件)#server_version: '14'++ schema_filter: ~^(?!session)~Orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
Зафиксируйте изм менени в но о о о р ветке:
1 2
$Git添加。$Git提交-m“配置数据库会话”
Развёртываниеветки
Передразвёртываниемвпродакшен,емыдолжныпротестироватьветкувокруженииемуидентичному。Намнеобходимоубедиться,чтовсёработаеткорректновSymfony—ob娱乐下载—окружении刺激
(локал н са а испол з е окружениеdev
).
Теперь да а а а т те со дадимPlatform.sh——окружениенаосновеGit -ветки:
1
$ob娱乐下载syob直播appmfony云:部署
Даннаякомандасоздаётновоеокружениевследующемпорядке:
- ВетканаследуеткодиинфраструктуруоттекущейGitветки(
sessions-in-db
); - Данные пост т а а а - из осно о о но о о о о окружения (т.е。продакшена)путёмсозданияпоследовательныхслепковвсехслужебныхданных,включаяфайлы(например,загруженныепользователями)ибазыданных;
- Создаётсяновыйвыделенныйкластердляразвёртываниякода,данныхиинфраструктуры。
Посколькуразвёртываниепроходиттежеэтапы,чтоиразвёртываниевпродакшен,емиграциибазыданныхтакжебудутвыполнены。Этоотличныйспособпроверить,чтомиграцииработаютсданнымивпродакшене。
Окружения, отли и н о о о主
,насамомделеоченьнанегопохожи,ноестьнебольшиеотличия。,Напримеротправкаэлектронныхписемотключенапоумолчанию。
Послезавершенияразвёртыванияоткройтеновуюветкувбраузере:
1
$ob娱乐下载Syob直播appmfony cloud:url -1
Обратитевнимание,чтовсекомандыPlatform.shвыполняютсявпределахтекущейGit -ветки。ВыполненнаявышекомандаоткроетURL -адресдлятолькочторазвёрнутойветкиsessions-in-db
.Адрес буде р ри ре е о о так:https://sessions-in-db-xxx.eu-5.platformsh.site/
.
Протестируйтесайтвновомокружении:выувидитетежеданные,чтоивосновномокружении。
Еслидобавитьновыеконференциивосновноеокружение(主
),“они н по в тс в окружении”sessions-in-db
инаоборот,таккакокруженияявляютсянезависимымииполностьюизолированнымидруготдруга。
Есликодизменитсявосновнойветк,евывсегдаможетевыполнитьперебазированиеGit -веткииразвернутьобновлённуюверси,юразрешивконфликтывкодеиинфраструктуре。
Втомчислевыможетесинхронизироватьданныесосновногоокружениявокружениеsessions-in-db
:
1
$ob娱乐下载syob直播appmfony云:env:同步
Предварительнаяотладкаразвёртываниявпродакшене
ПоумолчаниювсеPlatform.sh——окруженияиспользуюттеженастройки,чтоиокружение主
/刺激
(то о же, то о окружение刺激
вSob娱乐下载ymfony)。Этопозволяетпротестироватьприложениевреальныхусловиях(какивпродакшене)。Такимобразомсоздаётсяощущениеразработкиитестированиянепосредственнонапродакшен——серверах,нобезсвязанныхсэтимрисков。Мненапоминаетэтостарыедобрыевремена,когдамыразвёртывалипроектычерезFTP。
ПривозникновениипроблемывыможетепереключитьсянаSymfonyob娱乐下载——окружениеdev
:
1
$ob娱乐下载syob直播appmfony云:env:调试
Кактолькозакончит,епереключитесьобратнокпродакшен——настройкам:
1
$ob娱乐下载Syob直播appmfony cloud:env:debug—off
警告
Никогдане а акти и и и и и и и т т окружениеdev
иникогданеиспользуйтепрофилировщикSymfoob娱乐下载ny,находясьвветке主
,этоприведётктому、чтовашеприложениестанеточеньмедленнымиоткроетмножествосерьёзныхдырбезопасности。
Предварительноетестированиеразвёртываниявпродакшене
Возможностьпредварительногопросмотрабудущейверсиисайтаспродакшен——даннымиоткрываетширокиевозможности:отвизуальногорегрессионноготестированиядотестированияпроизводительности。黑焰- идеал л н р инстр ме ад л т ко рода задач。
Перейдите к а а уПроизводительность,чтобыузнатьбольшепроиспользование黑焰длятестированиякодапередразвёртыванием。
Развёртывание в п одак к ене
Есливыполностьюудовлетвореныизменениямивветкесновойфункциональностью,выполнитеслияниекодаиинфраструктурыв大师——веткувGit:
1 2
$Git checkout master$Git合并session -in-db
Иразверните:
1
$ob娱乐下载syob直播appmfony云:部署
ПриразвёртываниивPlatform.shотправляютсятолькоизменениявкодеиинфраструктуре;данныеостанутсятакимиже,какибылидоразвёртывания。
Очистка
Взавершениевыполнитеочистку、удаливGit -веткуиPlatform.sh——окружение:
1 2
$Git分支-d session -in-db$ob娱乐下载Syob直播appmfony cloud:env:delete -e sessions-in-db