我有一个django Web应用程序托管在_________.azurewebsites.net
上文件夹结构如下:
- Github Repository
- settingsFolder
- app1folder
- app2folder
- manage.py
- web.config
- db.sqlite3
我已经设置了Azure设置,将其推向我的远程GitHub分支,导致Azure将文件与我的github分支同步到我的/site/wwwroot/folder。
明确,
git push origin branch
这会导致问题。每当我尝试使用GIT PUSH添加更改时,DB.SQLITE3都不会反映网站环境中的更改。因此,如果有人将数据保存到/site/wwwroot/db.sqlite3,那么我的github存储库将不知道这些更改。更新我的github存储库将采用旧的db.sqlite3,并在Azure和GitHub之间的文件同步期间重新上传此旧。因此,/site/wwwroot/pervertinited db.sqlite3 of tergrentited并丢失数据。
一种解决方案是通过连接到我的/site/wwwroot文件夹,保存db.sqlite3并定期在我的github存储库中替换它来手动做出备份。
可以自动化这个吗?如果是这样,Azure为我提供了什么资源?
您所做的事情在很多方面都是错误的。
首先,您的sqlite文件不应在版本控件中。您当地的DB就是当地的;由于您的经历,它不应将其部署到生产中。将其从git中删除并确保它在您的.gitignore
文件中。
其次,在生产中使用基于文件的DB并不合适。SQLITE是一个很棒的工具,但是一旦您搬到真实的生产站点,就需要一个真实的数据库。除了其他任何事情之外,如果您发现需要将站点扩展到一个以上的Azure实例,则它们每个都将拥有单独的数据库文件副本,因此数据将很快摆脱同步。使用真正的DB,例如PostgreSQL;另一个好处是,您的主人会照顾它。