开发基础架构,个人经验

本周,我受命创建一个包含以下组件的开发基础结构:

我又添加了2个组件:

  • 为了将来自每个应用程序的数据存储在同一数据存储中的数据库
  • LDAP,以便在每个应用程序中使用相同的凭据进行身份验证

由于没有服务器,因此必须在开发机器上安装基础架构,即Windows和1 Gb RAM。 以下是我本周的个人反馈。

颠覆

Subversion表示Apache HTTP Server 。 由于我已经安装了几次Apache,因此再安装一次(并对其进行配置)变得轻而易举。 我真的很喜欢这个软件。

同样,一旦获得Subversion安装程序,即可在不到1小时的时间内完成安装并配置基础Apache实例。

Trac

有趣的来了。 Trac是我自己无法做出的选择(直到本周我才知道该产品)。 这个选择是从Trac的功能中做出的。 我们几乎不知道Trac是在Python上运行的。

我(和我的公司)没有Python技能,所以请不要因为这个而取笑我。

我安装了Python,然后将Apache配置为使用它。 那是容易的部分。

第一课,Trac不能在最新的Python(v3.2)上运行。 我了解到这很困难。

第二课,Trac需要一整套组件连接器:

  • 由于Trac可以显示您的Subversion存储库,因此它需要与Subversion通信。 它是通过Python完成的,因此出现了Python svn绑定。 而且,如果您安装了与Trac兼容的Python v2.6,那就太糟糕了,因为绑定仅适用于Python 2.5
  • Trac 开箱即用地使用SQLLite (我第一次听说这一点,开始感到自己是个白痴)来存储其数据。 由于所有其他应用程序都可以在MySQL上运行,而我碰巧对MySQL有所了解,因此我希望Trac使用MySQL(这是一个逻辑步骤)。 毫不奇怪,Python需要驱动程序来使用MySQL,就像Java中一样。 这是通过MySQL Python完成的。 与Java完全不同,驱动程序不会放在正在运行的应用程序的类路径中,而是安装在Python发行版中。 尽管Trac支持,但不支持Python 2.6+。 生活很有趣。
  • Trac需要一个名为setuptools的安装组件来管理Python鸡蛋(Python扩展的特定格式)。
  • Trac使用模板引擎。 Trac的0.10版本需要ClearSilver,0.11版本需要元史 由于我使用Trac v0.11并完全忘记安装Genshi,因此它抱怨...找不到ClearSilver。 感谢您提供的误导性错误消息,我损失了大约1个小时。

第三课:为了使用Eclipse Mylyn (一个设法连接到bugtracker并在Eclipse中显示问题的Eclipse 插件 ),Trac需要安装XML-RPC插件 。 使用以前安装的setuptools,它仅需要命令行指令。

第四课,项目与环境相关。 使用命令行工具创建环境,然后在Apache中进行配置。

第五课,尽管存在用于修改代码的补丁,但无法创建子项目。

哈德森

哈德森分为两种口味:

  • Hudson独立作为Java Web Start安装程序
  • 战争档案

即使我只能猜测底层的复杂性,独立程序也可以很好地运行。 可以将其配置为作为Windows服务运行。 我很惊讶:这太好了,难以置信。 我最敬重开发团队。 最后,我卸载了Hudson(同样简单),因为...

我将必须运行3个Java应用程序:Hudson,Sonar和Nexus。 如果每个都以独立模式运行,则意味着3个JVM同时运行,并且我绑定到了我笨拙的1Gb RAM。 由于这些应用程序均以WAR归档文件的形式提供,因此最好使用轻量级服务器,例如Tomcat(或Jetty)。 由于自从黎明开始就使用Tomcat,并且因为我看到Jetty更像是嵌入式容器,所以我安装了Tomcat(即使是初次使用的用户,这也是禁止操作的)。

在Tomcat中部署Hudson很容易。 只是不要忘记使用-DHUDSON_HOME Java属性来配置Tomcat的JVM。 这告诉Hudson使用此文件夹存储其文件(运行,构建等)。

声纳

声纳很容易在Tomcat中部署。 我将其配置为使用MySQL,一切正常。 我对Sonar的唯一评论是它存储在超过45 Mb的档案中。 我向开发团队提到了这一点:将来的版本中可能会限制它。

Nexus / Artifactory

我想差不多完成了,然后继续部署Nexus。 在Tomcat中部署Nexus战争进展顺利。 配置Nexus没有。 我找不到关于不以独立模式运行的Nexus的文档,即使可以战争格式下载。 由于在Track上浪费了太多时间,我决定改用Artifactory 。 我已经在客户的站点上安装了该Maven存储库,它使我完全满意。

只是不要忘记使用-artifactory.home Java属性来配置Tomcat的JVM。 这告诉Artifactory使用此文件夹存储其内部文件。

但是,尝试使用MySQL而不是JavaDB时遇到错误。 无论我使用什么配置,Artifactory都无法使用我提供给MySQL的密码:我一直Access denied for user 'artifactory'@'localhost' (using password: NO)消息Access denied for user 'artifactory'@'localhost' (using password: NO) 。 花了相当多的时间尝试纠正问题之后,我回到了使用JavaDB的过程。 由于Artifactory提供了开箱即用的存储库备份功能,因此我可以使用它。

最终,在Artifactory启动并运行后,我不断OutOfMemoryError: PermGenSpace错误。 Tomcat使用的是512Mb(对于3个重要应用程序来说这确实是一个很小的价值),但它对永久生成空间没有影响。 我尝试了不同的-XX:MaxPermSize配置,但没有任何运气。 因此,我大胆地从Sun JVM切换到JRockit 。 从那时起,尽管我的垃圾回收时间非常长,但我再也没有出现过此类错误。 再多一点的RAM和正确的调校方法都无法解决。

OpenDS的

我希望所有应用程序都使用相同的身份验证组件。 我之前使用过OpenLDAP两次,但是安装和使用它总是很麻烦(我不是LDAP专家)。 我浏览了一下网络,找到了OpenSource和免费的(作为啤酒)LDAP服务器,偶然发现了OpenDS 。 易于安装,易于配置,最后但并非最不重要的是,易于管理LDAP实体。 一切都通过其GUI完成。

通过XML编辑将Apache和Tomcat配置为使用LDAP,对于Artifactory和Hudson,则通过webapp完成。 Artifactory甚至提供了一个测试按钮来检查连接是否正确。

结论

总而言之,我对安装的组件感到非常满意,请保存其中一个。 Trac确实提供了许多功能,但是由于它不是我的朋友,所以它在我们的基础结构中没有位置,并且它需要很多组件,如果遇到问题,我将无法调试。 JIRA将是首选的bugtracker,但由于它不是免费的,所以没有机会。 我已经使用过MantisBT ,尽管它使用了PHP堆栈(而不是Java堆栈),但使用它我感到更加自在。 在最新版本中,它甚至可以集成第三方PHP Wiki。 有什么想法吗?

翻译自: https://blog.frankel.ch/development-infrastructure-a-personal-experience/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值