ការ Deploy Symfony Application

ការ Deploy Symfony application អាចនឹងមានភាពស្មុគស្មាញហើយការផ្លាស់ប្ដូរគឺអាស្រ័យទៅលើ ការ setup និង តម្រូវការនៃ application ។ ក្នុងមេរៀននេះគឺមិនមែនបង្រៀនអ្នកតាមដំណាក់កាលអ្វីនោះទេ តែវាគឺជា list ទូទៅនៃ តម្រូវការជាទូទៅនិងគំនិតសម្រាប់ deployment។

១) មូលដ្ឋានគ្រឹះនៃ Symfony Deployment

ខាងក្រោមនេះជាដំណាក់កាលដែលកើតឡើងខណៈពេលដែល deploy នូវ Symfony application រួមមាន៖

ក)  upload កូដរបស់អ្នកទៅកាន់ production server

ខ) តម្លើងនូវ vendor dependencies របស់អ្នក (ត្រូវធ្វើវាតាមរយៈ Composer ហើយប្រហែលជាអាចបញ្ចប់មុនការ upload)

គ) ធ្វើការ run នូវ Database migrations រឺក៏ tasks ដែលមានភាពស្រដៀងគ្នាដើម្បី update នូវការកែប្រែផ្សេងៗនៃ data structures

ឃ) Clear cache

ការ deploy អាចនឹងបញ្ចូលនូវ tasks ផ្សេងៗទៀតដូចជា៖

ក) Tagging នូវ particular version នៃកូដរបស់អ្នកដូចជា release ក្នុង source control repository របស់អ្នក

ខ) បង្កើត temporary staging area ដើម្បីបង្កើតនូវការ updated set up “offline” របស់អ្នក

គ) Run នូវ tests available ផ្សេងៗដើម្បីធានាអោយបាននូវ កូដ និង រឺក៏ server stability

ឃ) ធ្វើការ Remove នូវ unnecessary files ផ្សេងៗពី web/ directory ដើម្បីរក្សាទុកនូវ production environment

ង) ធ្វើការ Clear នូវ external cache system (ដូចជា Memcached រឺក៏ Redis)

២) របៀបនៃការ Deploy Symfony Application

មានវិធីសាស្ត្រជាច្រើនដែលអ្នកអាច deploy នូវ Symfony application បាន។ តែពេលនេះយើងសូមអោយអ្នក ចាប់ផ្ដើមនូវ យុទ្ធសាស្ត្រនៃការ deployment និងបង្កើតឡើងវិញផងដែរ។

២.១) Basic File Transfer

វិធីសាស្ត្រនៃ deploy នូវ application គឺជាការ copy នូវ files ដោយដៃ តាមរយៈ FTP/SCP (រឺក៏ method ដែលស្រដៀងគ្នា)។ វាអាចនឹងមានគុណវិបត្តិផ្ទាល់ខ្លួនរបស់វាដូចដែលអ្នកខ្វះខាតក្នុងការគ្រប់គ្រងលើប្រព័ន្ធដូចជាការ upgrade progresses។ មុខងារនេះក៏ទាមទារអោយអ្នកធ្វើការដោយដៃនូវជំហានខ្លះបន្ទាប់ពីធ្វើការ transfer files (មើលទៅលើ Common Post-Deployment Tasks)។

២.២) ការប្រើប្រាស់ Source Control

ប្រសិនបើអ្នកប្រើប្រាស់ source control (Git​ រឺក៏ SVN) អ្នកអាចងាយស្រួលក្នុងការតម្លើង ក៏ដូចជាការ copy នៃ repository របស់អ្នក។ ពេលដែលអ្នករួចរាល់ក្នុងការ upgrade វាគឺមានលក្ខណៈសាមញ្ញដូចជាការ fetch នូវការ updates ចុងក្រោយបង្អស់ពី source control system របស់អ្នក។

ទាំងនេះអាចអោយអ្នក update files របស់អ្នកបានយ៉ាងងាយស្រួល ប៉ុន្តែអ្នកនៅតែបារម្ភអំពី ជំហ៊ានផ្សេងទៀតដែលធ្វើដោយដៃ (មើលទៅលើ Common Post-Deployment Tasks)។

២.៣) ការប្រើប្រាស់ Platforms ជា Service

ដំណាក់កាលនៃការ deploy ជាក់លាក់មួយគឺមានការប្រែប្រួលយ៉ាងខ្លាំងពី service provider មួយទៅមួយ ដូចនេះសូមពិនិត្យទៅលើ dedicated article សម្រាប់ service ដែលអ្នកជ្រើសរើស៖

ក) ការ Deploy ទៅ Microsoft Azure Website Cloud

ខ) ការ Deploy ទៅ fortrabbit

គ) ការ Deploy ទៅ Heroku Cloud

ឃ) ការ Deploy ទៅ Platform.sh

២.៣) ការប្រើប្រាស់ Build Scripts និង Tools ផ្សេងទៀត

វាក៏មានជា Tools ដើម្បីជួយអោយកាន់តែងាយស្រួល នៃការ deployment។ មួយចំនួននៃពួកវាគឺត្រូវបានបង្កើតឡើងយ៉ាងជាក់លាក់ដើម្បីស្របទៅនឹងតម្រូវការនៃ Symfony។

Capistrano ជាមួយនឹង Symfony plugin

Capistrano គឺជាការ​ remote server ដោយស្វ័យប្រវត្តិនិង deployment tool ដែលសរសេរក្នុង Ruby។ Symfony plugin គឺជា plugin ដែលធ្វើអោយមានភាពងាយស្រួលចំពោះ Symfony ដែលទាក់ទងនឹង tasks និង inspired ដោយ Capifony (ជាអ្នកធ្វើការជាមួយ Capistrano 2 តែប៉ុណ្ណោះ)

Sf2debpkg

ជួយអ្នកបង្កើតនូវ native Debian package សម្រាប់ Symfony project របស់អ្នក

Magallanes

Capistrano-like deployment tool គឺបានបង្កើតក្នុងPHP ហើយប្រហែលជាអាចមានភាពងាយស្រួលសម្រាប់ PHP developers ដើម្បី extend នូវអ្វីដែលពួកគេត្រូវការ។

Fabric

Python-based library ផ្ដល់នូវ basic suite នៃ operations សម្រាប់ការដំណើរការ local រឺ remote shell commands និងការ​ upload/download files។

Deployer

នេះគឺជា native PHP ផ្សេងទៀតដែលសរសេរឡើងវិញនៃ Capistrano ដែលជាមួយនឹង រូបមន្តមួយចំនួនសម្រាប់ Symfony ផងដែរ។

Bundles

Bundles ដែលបន្ថែមនូវ deployment features មួយចំនួនធ្វើការ directly នៅក្នុង Symfony console របស់អ្នក។

Basic scripting

អ្នកពិតជាអាចប្រើ shell, Ant រឺក៏ tool ផ្សេងទៀតផងដែរ ដើម្បី script ធ្វើការ deploy project របស់អ្នក។

៣) Common Post-Deployment Tasks

បន្ទាប់ពីធ្វើការ deploy source code របស់អ្នកហើយ គឺមាន common things មួយចំនួនដែលអ្នកត្រូវធ្វើ៖

ក) ពិនិត្យមើលតម្រូវការ

ពិនិត្យមើលថាតើ server ត្រូវនឹង តម្រូវការដោយប្រើប្រាស់ command ដូចខាងក្រោម៖

 

ខ) Configure app/config/parameters.yml File

File មួយនេះមិនគួរធ្វើការ deployed ទេ តែត្រូវគ្រប់គ្រងដោយ ឧបករណ៏ដែលផ្ដល់ដោយ Symfony ដោយស្វ័យប្រវត្តិ។

គ) Install/Update Vendors

Vendors របស់អ្នកអាចនឹង update មុននឹងធ្វើការ transfer source code របស់អ្នក (update vendor/ directory បន្ទាប់មក transfer ជាមួយនឹង source code របស់អ្នក) រឺក៏ ពេលក្រោយលើ server។ វីធីណាក៏ដោយ វាគ្រាន់តែ update vendors របស់អ្នកដូចដែលអ្នកធ្វើតាមធម្មតា៖

 

ឃ) Clear Symfony Cache

ត្រូវប្រាកដថាអ្នក clear (និង warm-up) Symfony cache របស់អ្នក៖

ង) Dump Assetic Assets

ប្រសិនបើអ្នកកំពុងតែប្រើប្រាស់ Assetic អ្នកនឹងត្រូវការ dump assets របស់អ្នក៖

ច) ផ្សេងៗទៀត

វានឹងអាចមានអ្វីច្រើនផ្សេងទៀតដែលអ្នកត្រូវការធ្វើដោយផ្អែកលើការ setup របស់អ្នក៖

ទី១ Running any database migrations

ទី២ Clearing APC cache របស់អ្នក

ទី៣ Running assets:install

ទី៤ Add/edit CRON jobs

ទី៥ Pushing assets ទៅកាន់ CDN

៤) Application Lifecycle: Continuous Integration, QA, etc

ខណៈពេលនេះ entry covers the technical លម្អិតនៃការ deploy ហើយ lifecycle ពេលលេញនៃការយកកូដពី development ឡើងទៅកាន់ production ប្រហែលអាចមានច្រើនដំណាក់កាល (គិតទៅលើការ deploy ទៅ staging, QA (Quality Assurance), running tests, etc)​។

ដើម្បីប្រើ staging, testing, QA, continuous integration, database migrations និង​ សមត្ថភាពនៃការ roll back ក្នុង​ការងារដែលបរាជ័យគឺត្រូវបានណែនាំយ៉ាងខ្លាំង។ វាមាន tools ដែលសាមញ្ញនិងស្មុគស្មាញនិងអាចធ្វើអោយ deployment ងាយស្រួល (រឺក៏ sophisticated) ដូចនឹងតម្រូវការ environment ដែលអ្នកទាមទារ។

កុំភ្លេចថា ការ deploy application របស់អ្នកក៏អាចជាប់ទាក់ទងនឹងការ Update ដែលពឹងផ្អែកគ្នា (ជាពិសេសតាមរយៈ Composer), migrating database របស់អ្នក, clearing  cache របស់អ្នកនិង រឿងសំខាន់ៗជាច្រើនផ្សេងទៀតដូចជាការ pushing assets ទៅ CDN (មើលទៅកាន់ Common Post-Deployment Tasks)៕