2012-07-30 80 views
1

OK,这会是一个很长的帖子,但希望一个简单的答案...CollabNet的颠覆边缘+ reviewboard +窗口64 = DLL加载失败:%1不是有效的Win32应用程序

我有一个在Windows x64上运行的Collabnet SVN Edge服务器(x64)。 对于那些不熟悉的人来说,CollabNet将SVN,Apache,ViewVC和Python结合到一个“易于使用”的软件包中。

我试图将Reviewboard(www.reviewboard.org)添加进去。这样做需要一个TON的依赖关系。错误信息试图让所有配置和运行大约2周后,我一直在通过错误消息进行斗争,直到我终于到了一个点,我无法找到更多的面包屑,然后去哪里。

当前情况: Collabnet SVN正在运行并正常工作。 Apache正在通过VIEWVC提供页面到http://localhost/viewvc 使用来自Collabnet的现有Apache实例安装和配置Reviewboard以通过http://localhost/rb提供评论,但是当我转到该URL时,出现HTTP错误500(内部服务器错误)浏览器窗口。

查看服务器日志,我看到以下内容:

[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34] mod_wsgi (pid=3684): Exception occurred processing WSGI script 'C:/csvn/www/rb/htdocs/reviewboard.wsgi'. 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34] Traceback (most recent call last): 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34] File "C:\\csvn\\Python25\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\wsgi.py", line 250, in __call__ 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34]  self.load_middleware() 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34] File "C:\\csvn\\Python25\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\base.py", line 47, in load_middleware 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34]  raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 
[Mon Jul 30 09:56:17 2012] [error] [client 10.1.223.34] ImproperlyConfigured: Error importing middleware reviewboard.admin.middleware: "DLL load failed: %1 is not a valid Win32 application." 

现在,我已经在上线之前几次在流汗一切设置这一点处理的错误,以前它总是回到为x86而不是x64构建的东西。因此,我已经确定python,apache以及安装的每一个apache mod是使用depedency walker为x64构建的。

这里基本上是everythign我对我所做的把它配置到这一点(所有的文件名都供我参考,所以我可以在另一台机器上后复制此设置):

  • 安装的CollabNet的Subversion边缘

    • 安装Subversion边缘 - CollabNetSubversionEdge-3.1.0_setup-x86_64.exe
      • 安装Java作为一个先决条件
      • 选择默认目录(C:\ csvn)
      • 安装Subversion的版本1.7.5
      • 安装的Python 2.7.1到C:\ csvn \ Python25
      • 安装Apache 2.2.22
      • 安装viewVC 1.1。 15

    安装ReviewBoard

    • 安装MySQL 5.5.25a - myqsl-5.5.25a-winx64.exe
    • 运行Python27CollabNet.reg
      • 这增加了普通的Python 2.7注册表项的CollabNet没有添加(更新CollabNet的扭曲Python的安装目录)
    • (可选)添加C:\ csvn \ Python25 \ Scripts;到路径环境变量。这是没有必要的,但如果你不添加这个,你将 必须导航到这个目录任何时候你需要运行 easy_install在机器上
    • 安装MySQL 64位Python连接器1.2.3 for Python 2.7 - MySQL-蟒蛇-1.2.3.win-AMD64-py2.7.exe
      • 此安装程序应该找到了Python 2.7安装在注册表
    • 为Python 2.7安装setuptools 0.6c11 - setuptools的,0.6c11.win32 -py2.7.exe
      • 此安装程序应该找到Python 2.7安装在注册表
    • 打开命令提示和类型(没有引号) “的easy_install-2.7 Reviewboard”
      • 此安装大多数的依赖关系为Reviewboard。
      • 它在尝试安装PyCrypto时停下来,因为此机器上没有编译器(有关未找到 vcvarsall.bat的错误消息)。
    • 安装PyCrypto 2.3 Python 2.7版 - pycrypto-2.3.win32-py2.7.exe
      • 此安装程序应该找到了Python 2.7安装在注册表
    • 打开命令提示符,键入(不包含引号)“easy_install-2.7 Reviewboard”
      • 这样可以安装Reviewboard的依赖关系。
      • 它在尝试安装Python图像库时停止了,因为此机器上没有编译器(关于不是 找到vcvarsall.bat的错误消息)。
    • 安装Python图像库1.1.7 - PIL-1.1.7.win32-py2.7.exe
    • 打开命令提示和类型(wihtout引号) “的easy_install-2.7 Reviewboard”
      • 这完成了Reviewboard的安装。
    • 安装PySVN(蟒颠覆连接器)连接器为Python 2.7.2和1.7.3颠覆 - py27-pysvn-svn173-1.7.6-1457.exe
    • (可选但推荐用于性能)安装Memcached的 - memcached-1.2.6-win32-bin.zip
      • 提取zip文件到C:\ memcached的(或首选位置这是它将运行)
      • 如果在Vista/Win7的memcached的需要管理员权限。
        • 用鼠标右键单击Memcached.exe并选择属性 - >兼容性 - >以管理员身份运行。
      • 打开命令提示并导航到C:\ memcached(或者无论您将其提取到)。
        • 通过键入(当然没有引号)“的memcached -d安装”
        • 键入以下命令启动服务安装的memcached服务(再次,不带引号)“的memcached -d启动”。您也可以通过键入使用 Windows管理控制台
        • 安装Python-的memcached(Python的memcached的连接器)启动服务(我真的需要不带引号说?) “的easy_install 中的python-memcached的”
    • 的Apache 2.22和Python 2.7安装的mod_wsgi - mod_wsgi-3.3.win-amd64-py2.7.1.zip
      • Extracct mod_wsgi.so到C:\ csvn \ lib中\模块目录中。
      • 修改Apache配置加载mod_wsgi.so
        • 打开C:\ csvn \数据\ CONF \ httpd.conf中,并且在另一的LoadModule线的LoadModule wsgi_module LIB /模块/ mod_wsgi的末尾添加以下行。所以
      • 重启Apache
      • 这可以通过停止CollabNet的Subversion的边缘服务器服务使用Windows Management进行。

    配置Reviewboard

    • 为reviewboard在MySQL中创建一个数据库。示例命令如下(不带引号):“CREATE DATABASE reviewboard;”
    • 为上一步创建的MySQL数据库创建一个用户。示例命令如下(不带引号):“GRANT ALL ON reviewboard。* TO reviewboard @ localhost IDENTIFIED BY'rb123';”
    • 打开命令提示符,运行以下命令(减 “”): “RB-站点安装\ csvn \ WWW \ RB”
      • 注意,你将不得不导航到C:\ csvn \ Python25 \脚本如果您以前没有将其添加到路径目录中。
      • 如果一切顺利,系统将提示您输入域名:
        • 输入机器IP地址或机器名称,包括域名。
      • 接下来,您将被提示输入theURL路径
        • 输入任何你想要的网址是在URL中的主机名之后。我选择了/ rb /(SVN运行在/ viewvc /)
      • 接下来,您将被要求输入媒体目录。
        • 我不是100%肯定这是什么的还没有,所以我使用了默认(媒体/)
      • 接下来,您会被要求你将使用什么样的数据库:
        • 选择mysql
      • 接下来,您将被要求输入mysql服务器上的数据库名称。
        • 输入您在上述步骤中设置的数据库名称。我选择reviewboard
      • 接下来,您会被要求为数据库服务器地址:
        • 我在同一台机器上运行MySQL所以我离开它作为默认代理(localhost)
      • 接下来你将被要求登录并通过您上面设置的用户。
      • 接下来,您将被问到您将使用哪种缓存机制。
        • 如果您在上面设置Memcached,请选择它。否则选择文件。
      • 如果您在上一步中选择了Memcached,现在将要求您提供memcached连接字符串。
        • 不知道在哪里设置这个,所以我只是使用默认希望它会工作。
      • 接下来,您将被问到您将使用什么Python加载程序模块。
        • 我们之所以安装wsgi是因为上述原因。用它。
      • 接下来,您将创建您的管理员帐户。
      • 在此之后,它应该最终完成配置站点
    • 从C标记之间的所有内容复制:\ csvn \ WWW \ RB \的conf \ Apache的wsgi.conf到 C:\ csvn \ DATA \的conf \ httpd.conf中

这里是我的Apache配置(httpd.conf文件)的情况下,当前副本可以帮助诊断问题:

ServerRoot "C:\csvn" 

LoadModule dav_module lib/modules/mod_dav.so 
LoadModule authz_host_module lib/modules/mod_authz_host.so 
LoadModule alias_module lib/modules/mod_alias.so 
LoadModule auth_basic_module lib/modules/mod_auth_basic.so 
LoadModule authn_alias_module lib/modules/mod_authn_alias.so 
LoadModule authn_file_module lib/modules/mod_authn_file.so 
LoadModule env_module lib/modules/mod_env.so 
LoadModule log_config_module lib/modules/mod_log_config.so 
LoadModule cgi_module lib/modules/mod_cgi.so 
LoadModule actions_module lib/modules/mod_actions.so 
LoadModule asis_module lib/modules/mod_asis.so 
LoadModule authn_default_module lib/modules/mod_authn_default.so 
LoadModule authz_default_module lib/modules/mod_authz_default.so 
LoadModule authz_groupfile_module lib/modules/mod_authz_groupfile.so 
LoadModule authz_user_module lib/modules/mod_authz_user.so 
LoadModule dav_fs_module lib/modules/mod_dav_fs.so 
LoadModule dir_module lib/modules/mod_dir.so 
LoadModule include_module lib/modules/mod_include.so 
LoadModule mime_module lib/modules/mod_mime.so 
LoadModule negotiation_module lib/modules/mod_negotiation.so 
LoadModule setenvif_module lib/modules/mod_setenvif.so 
LoadModule dav_svn_module  lib/modules/mod_dav_svn.so 
LoadModule authz_svn_module lib/modules/mod_authz_svn.so 
LoadModule wsgi_module lib/modules/mod_wsgi.so 

DocumentRoot "www" 
DirectoryIndex index.html 

<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Allow from all 
</Directory> 

<Location /> 
    AuthBasicAuthoritative Off 
    AuthUserFile /dev/null 
</Location> 

<Directory "www"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 

# 
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
# 
<FilesMatch "^\.ht"> 
    Order allow,deny 
    Deny from all 
    Satisfy All 
</FilesMatch> 

Include "C:\csvn\data/conf/csvn_main_httpd.conf" 

LimitXMLRequestBody 0 
ServerSignature Off 
ServerTokens Full 
TraceEnable Off 

TypesConfig "C:\csvn\data/conf/mime.types" 
DefaultType text/plain 
AddType application/x-compress .Z 
AddType application/x-gzip .gz .tgz 

Include "C:\csvn\data/conf/csvn_logging.conf" 

Include "C:\csvn\data/conf/svn_viewvc_httpd.conf" 

#Include "C:\csvn\www\rb\conf\apache-wsgi.conf" 

WSGIPassAuthorization On 
WSGIScriptAlias "/rb" "C:/csvn/www/rb/htdocs/reviewboard.wsgi/rb" 

<Directory "C:/csvn/www/rb/htdocs"> 
    AllowOverride All 
    Options -Indexes FollowSymLinks 
    Allow from all 
</Directory> 

# Alias static media requests to filesystem 
Alias /rb/media "C:/csvn/www/rb/htdocs/media" 
Alias /rb/errordocs "C:/csvn/www/rb/htdocs/errordocs" 
Alias /rb/favicon.ico "C:/csvn/www/rb/htdocs/media/rbcommons/images/favicon.png" 

思考/问题/评论(除了我是多么愚蠢的尝试让所有这些工作在Windows上)?

在这一点上,几乎任何东西都非常感激。

作为一个侧面说明,我试图用Reviewbiard代替代码审查标记这一点,但它表示,标签不存在

回答

0

这可能是太晚提供任何有意义的指导,但你注意到上面几个奇怪的文件名:

pycrypto-2.3。win32-py2.7.exe PIL-1.1.7.win32-py2.7.exe

我的猜测是,你发现预编译的二进制文件出现在网络上,并安装它们工作正常(因为你手动关联在注册表中的InstallPath指向csvn \ python25文件夹) - 问题是,这些文件名会告诉我他们可能安装模块的32位风格而不是64位。

我最近在32位环境(1.6,最后一个受支持的Windows版本)中使用ReviewBoard并在64位Python等未成功的类似路径中运行。我建议将CollabNet降级到32位版本(您可以卸载64位并重新安装32位而不会丢失任何配置设置或存储库数据),并按照这种方式执行ReviewBoard安装,如果您仍尝试得到这一切工作。

相关问题