Please forgive me if this is not the right place for my question.
We have a comparatively large website and works on a
sub-domain and a main domain. Also, the website is in Drupal + Core PHP scripts
+ Two languages (templates) + mutiple databases (tens of tables under each
database).
We have recently got the contract to maintain and enhance this website but
surprisingly there was neither a staging server for it and nor any versioning
software. This is one of the biggest projects for my small company and we have
no experience with versioning softwares.
Development server(not sure about it), Staging server and Production server needs to be connected with a mercurial depository. We have taken a hosted Mercurial repository with Beanstalkapp.com and your feedback on this will be very helpful too.
I have gone through several start up guides but would appreciate suggestions for best practices – I don’t want to mess with the project by experimenting. For compatibility reasons, I would prefer to have staging environment on the production server itself (may be on a different domain?). The website is hosted in a dedicated server (linux) and we can create different cPanel account for it.
Thanks, Bipul
> Thanks for your reply Greg. My answers below yours:
>
> On 19 August 2012, Bipul Agarwal said:
>> Please forgive me if this is not the right place for my question.
>> We have a comparatively large website and works on a sub-domain and a main
>> domain. Also, the website is in Drupal + Core PHP scripts + Two languages
>> (templates) + mutiple databases (tens of tables under each database).
>
> How large? Up to (say) 5,000 files and 100 MB of data, you hardly
> notice Mercurial -- it's plenty fast enough. Above that, you notice
> things like "hey, checking out 20,000 files takes a minute or two" and
> "transferring 500 MB over a slow network takes a while". Another key
> metric: size of the largest file. If you have no individual files
> larger than 10 MB or so, don't worry about it. Just do the obvious
> thing and forget about performance tricks.
>
>
> Not more than 5000 files but data is approximately 1GB and above.
> other than database, no individual file is more than 1MB.
...and the database won't be stored in version control anyway.
> [...]
> Anyways, you didn't really ask any specific questions, so I'm not
> surprised you didn't get any replies. First, get the existing site
> into a Mercurial repo and then make a clone that's far from
> production, so you can play around. Try something and see if it works.
> If not, try something else. If you get confused, ask here for help.
>
> There are four specific questions that's keeping us worried.
...and all of them are beyond the scope of this list. You're looking for several things:
* a build system for multiple environments (dev/test/production),
* deployment automation (get the code onto the various servers, with the right config settings for each environment),
* database schema versioning (keeping the structure consistent across deployments and environments),
...etc. That should give you some key terms to google for. Since you're using Drupal, here's a link that might help to start with (found by googling "drupal deployment": http://stackoverflow.com/questions/730138/whats-best-drupal-deployment-strategy
For schema versioning, Drupal has its own stuff built in. Modules can hook into this.
For deployment automation, you might check out Fabric or Capistrano. Depends on your needs.
Again, this is all beyond the scope of this list. Hopefully this gives you a starting point for your own research.
pacem in terris / мир / शान्ति / سَلاَم / 平和
Kevin R. Bullock