Best practises for Magento Deployment
- by Spongeboy
I am looking setting up a deployment process for a highly customised Magento site, and was wondering how other people do this.
I will be setting up dev, UAT and prod environments. All the Magento files will be in source control (SVN). At this stage, I can't see any requirements for changing the DB, so the 3 databases will be manually maintained.
Specifically,
How do you apply Magento upgrades? (Individually in each env, or on dev then roll out, or just give up on upgrades?)
What files/folders do leave alone in each environment (e.g. magento/app/etc/local.xml)
Do you restrict developers to editing specific files/folders?
Do you restrict theme designers to editing specific files/folders?
How do you manage database changes?
Theme Designer Files/Folders
Designers can restricted to editing the following folders-
app/design/frontend/your_interface/your_theme/layout/
app/design/frontend/your_interface/your_theme/template/
app/design/frontend/your_interface/your_theme/locale/
skin/frontend/your_interface/your_theme/
Extension Developer Files/Folders
Extension developers can edit the following folders/files-
/app/code/local
/app/etc/modules/<Namespace>_<Module>.xml
Database environment management
As the store's base URL is stored in the database, you cannot just copy databases between environments. Options include-
Overriding the base url in php. Blog
article on setting up dev and staging
databases
Changing the base url in the database after copying. (Where is this stored?)
Doing a MySQLDump or backup, then doing a replace on the URL in the SQL file.