Web开发不再像过去那样.它曾经包含了几个PHP脚本的黑客攻击(我没有反对PHP,实际上它是我目前的主要编程语言),通过FTP将它们上传到某些webhost就是这样.今天,事情变得更加复杂.正如我所看到的那样,通过查看一些专业和现代网站(SO是主要的网站,我认为这是Web开发中良好实践的一个很好的例子,即使它是用ASP.NET制作并托管在Windows上),开发一个网站远不止于此:
网站代码实际上是在一个存储库中(页脚中的小svn版本让我的书呆子感觉刺痛);
静态文件(CSS,JavaScript,图像)存储在单独的域中;
好的,这些是我的观察.现在我的问题:
你如何处理JavaScript和CSS文件?你是不是让他们不受版本控制?这看起来很愚蠢.你为它们创建一个单独的存储库吗?
你如何设置存储库?你只是在Web服务器的根目录中创建一个?或者您是否创建了某种提交后触发器,将最新文件复制到适当的目的地?
如果您有多台运行网站的计算机并希望对所有计算机进行一些更改,会发生什么?
每个这样的项目都必须有配置文件.这些不同于本地存储库到远程存储库.例如,在我的开发机器上我没有MySQL root密码,而在生产服务器上我当然有密码.这个密码将存储在配置文件中,以及其他类似的东西,这在我的机器和服务器上会完全不同.也许它们在生产机器之间也是不同的(就像我之前说的那样,也许网站在多台机器上运行以实现负载平衡).我该如何处理?
我正在寻找一个新的网络项目:
Python + SQLAlchemy + Werkzeug + Jinja2
Apache httpd + modwsgi
MySQL的
水银
我想要的是关于使用上述工具和上述问题的答案的一些最佳实践建议.
你是对的,在尝试部署可扩展的网站时,事情会变得复杂.以下是我发现的一些好的指导方针(免责声明:我是铁路工程师):
关于代码存储库的文件结构的大多数决策主要基于您选择实现的语言,框架和平台的约定.你提出的许多问题(JS,CSS,资产,生产与开发)都是用Rails处理的.但是,对于您想要使用的其他语言,这可能因PHP而异.我发现你应该对你选择使用哪种语言进行一些研究,并尝试找到适合该社区惯例的方法.当您稍后尝试寻找障碍物的帮助时,这将对您有所帮助.您的代码将像他们的代码一样进行组织,您将能够更轻松地获得答案.
我会版本控制一些不太大的东西.我发现VC的唯一问题是你的repo变大了.除此之外,我从未后悔保留以前代码的版本.
对于部署到多个服务器,有许多脚本可以帮助您完成您需要执行的操作.对于Ruby/Rails,最广泛使用的工具是Capistrano.其他语言也有类似的资源.基本上你只需要配置你的服务器设置是什么样的,然后编写或查看一组脚本的开源,这些脚本可以将你的代码库部署/回滚/操作到你在配置文件中列出的服务器.
发展与生产是一个重要的区别.虽然您可以在没有这种区别的情况下运行,但是当您需要在整个存储库中修补代码时,它会变得很麻烦.如果我是你,我会编写一些代码,这些代码在每个请求开始时运行,确定您正在运行的环境.然后,在处理该请求时,您可以获得该知识.当您指定在连接到数据库时要使用的配置时,可以使用此信息,一直到只在开发时在浏览器中显示调试信息.它派上用场了.
RESTful通常决定了您的网站如何被发现的大部分设计.尝试将代码保留在restful框架中可以帮助您记住代码所在的位置,保持路由可预测性,防止代码过于耦合,并遵循越来越被接受的约定.显然有其他惯例可以实现这些相同的目标,但我使用REST有很好的经验,并且它大大改善了我的代码.
所有这一切.我发现虽然你可以有良好的意图来创建一个可以无限扩展并且很好且干净的原始代码库,但很少有这种方式.如果我是你,我会做一些关于你感觉最舒服的东西,以及有助于让你的生活更轻松的研究,并坚持下去.
希望这有帮助!