I know this is not exactly an SO style question, but I think it would be very instructive to find out the answer.
The source for djangoproject.com is very useful for understanding a possible layout for a Django project. However, the absence of a file setup.pysuggests that this project is not "packaged" for its commissioning.
I am not interested in any of the “how to configure nginx”, “which database to use”, “how <insert detail of hosting>”. I'm interested in knowledge:
- How do they deploy part
djangoproject.comon their production servers?- Do they just do
git pullin their field to get the files in place? Or scp / rsync / ftp? - Who / what performs this step? I assume this is automated, but does this trigger a tag-based action? or .tar.gz files located in a special place? (Given the lack of tags / releases and only one branch
masterin the github project, I assume that everything that does it on masteris deployed?)
- How do they manage to roll back if they need to? / Is it automated? (Actual data is not needed, but general information will be good).
- Should I pack my deployment apps or not?
- I always preferred packaged deployment (that is, I pack my project, put it in a private PyPI and have a separate “deployment” project that installs from it), but I am starting to doubt whether it is necessary / a good idea or not.
There are many questions about deployment details in various situations (apache vs nginx, AWS vs heroku vs your own, ansible vs fabric vs ...), but I'm really trying to focus on the relationship between packaging / project layout and deployment.
source
share