我正在使用Django开发一个工具,供我的组织内部使用。它用于搜索和标记文档(使用Haystack和Solr),并将用于不同的项目。我的团队目前有一个工作原型,我们希望在野外部署它。'
我们的安全环境非常严格。项目文档位于网络驱动器上的子文件夹中,并且基于用户对这些文件夹的访问受到限制。 Windows凭据(我们还有一个使用相同凭据的MS SQL服务器)。用户只能访问他们所涉及的项目。由于我们是专门的Microsoft商店,如果我们想在公司内部网上部署我们的应用程序,我们需要使用IIS服务器来处理这些权限。团队中没有人具备使用IIS,Active Directory的必备知识,而且我们的IT部门已经过度扩展。简而言之,我们不是网络开发者,我们也无法立即访问任何有经验的人。
我的hacky解决方案是完全放弃IIS并让每个最终用户在本地运行轻量级服务器(即CherryPy),同时保留对公共项目特定数据库(例如,生活在网络驱动器或DB上的SQLite DB)的访问权限在MS SQL服务器上)。为了使用该工具,他们只需启动一体化批处理脚本并将浏览器指向127.0.0.1:8000
。我知道这是多么丑陋,但我觉得它利用了现有的安全措施(请注意,在给定项目中,不要期望超过10个并发用户)。这是一个可怕的想法,如果是的话,什么是更好的解决方案?
答案 0 :(得分:4)
我处理过类似的情况(主要开发面向正常部署情况,但有些用户需要在独立工作站上使用该应用程序)。我不是在独立的工作站上部署Web服务器和数据库服务器,而是使用Django内部开发服务器和SQLite DB运行应用程序。我没有使用CherryPy,但希望这对你有用。
我当前的解决方案为不熟悉命令行的用户提供了一个很好的可执行文件(他们也很难记住放入浏览器的URL),但也是相对容易开发的:
manage.py
修改为:
frozen
并且没有参数(即:用户通过双击执行它),如果是,则运行带有参数的execute_from_command_line(..)
以启动Django开发服务器execute_from_command_line(..)
之前,弹出一个执行time.sleep(2)
的线程(让开发服务器完全启动)然后webbrowser.open_new("http://127.0.0.1:8000")
。settings.py
以检测是否已冻结并更改内容,例如数据库服务器的路径,启用开发服务器等。另外几个笔记。
settings.py
文件多次构建相同的应用程序。各种各样的方法来打击这个钉子......