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.