【问题标题】:Starman and MovableType 5.2Starman 和 MovableType 5.2
【发布时间】:2012-12-03 21:02:44
【问题描述】:

MovableType 5.2 具有内置 PSGI 支持(通过主目录中的 mt.psgi),我一直在尝试使用 starman/plackup 来利用它。

带有 MT 的 Starman 启动,但是当我运行 mt-upgrade.cgi 时,我得到奇怪的 Not Founds 和静默挂起和失败。

我是如何运行starman的:

cd /home/ec2-user/mysite/perl/components/movabletype
plackup -s Starman --port 8045 --error-log /home/ec2-user/mysite/perl/logs/starman.log --pid /home/ec2-user/mysite/perl/var/starman.pid -a mt.psgi

谜底 1:我的浏览器对 index.html 返回“未找到”,但 mt-static 和 mt.cgi 是可以访问的。

X http://mysite:8045/mt/index.html ... Not Found 
✓ http://mysite:8045/mt-static ... listing of static assets 
✓ http://mysite:8045/mt/mt.cgi ... redirects to ... 
X http://mysite:8045/mt/mt-upgrade.cgi?__mode=install ... fails

谜团 2:由于重定向,我相信 MT 代码正在运行。但即使我尝试了不同的 MT 调试选项,它在 starman 日志中也基本保持沉默。更糟糕的是,似乎到达了 mt-upgrade.cgi,然后在 starman 日志中显示这条单独的消息失败:

[mypid] Bootstrap CGI script in non-buffering mode: /home/ec2-user/mysite/perl/components/movabletype/mt-upgrade.cgi

这个非缓冲消息似乎是信息性的和正常的,并且来自 MT 代码库。

我也直接在starman下运行过,得到同样的结果。

任何想法或帮助将不胜感激!

系统/环境:

MT_HOME='/home/ec2-user/mysite/perl/components/movabletype'

linux AMI on an amazon ec2.

perl-5.16.0 under perlbrew.

CPAN 模块:

cpanm starman
cpanm CGI::PSGI
cpanm CGI::Parse::PSGI
cpanm CGI::Compile
yum install expat-devel
cpanm XML::Parser
cpanm SOAP::Lite
cpanm SOAP::Transport::HTTP
cpanm XMLRPC::Transport::HTTP::Plack
cpanm DBI
sudo yum install postgresql9-devel
cpanm DBD::Pg
cpanm Task::Plack

MT 配置:

CGIPath    http://mysite:8045/mt

StaticWebPath    http://mysite:8045/mt-static

PIDFilePath /home/ec2-user/mysite/perl/var/starman.pid

DebugMode 1

ObjectDriver DBI::postgres
Database db
DBUser dbuser
DBPassword dbpass
DBHost dbhost.mysite

【问题讨论】:

  • 我不知道StaticFilePath config 指令是否对此很重要,但我知道它对某些事情很重要。

标签: perl amazon-ec2 movabletype psgi starman


【解决方案1】:

我是 Movable Type 的首席工程师 Yuji Takayama。我确实尝试重现您的步骤,但我无法重现这一点。 (这意味着我得到了初始安装屏幕)

那么,你可以试试mysql吗?你也可以试试“工具/升级”脚本吗?我认为当一些错误发生时你会收到错误消息。

例如) cd MT_HOME; perl -Ilib -Iextlib 工具/升级 --username --password --nickname --email --preferred_language --site_name --site_url --site_path --site_theme --site_timezone

而且,我有关于“未找到 index.html”的答案。

原因:MT 永远不会像 mt_static 一样将 MT_HOME 挂载为静态文件目录,因为我们认为 MT_HOME 一定不可能列出。

【讨论】:

  • 谢谢宇治!从那以后,我转向了自定义解决方案,但我确实认为 mysql 是 MT 和 WordPress 的最佳选择。
【解决方案2】:

如果您尝试在 Starman 下运行 Movable Type,我强烈建议您使用您选择的命令行等效项来运行 Movable Type 附带的升级脚本。没有充分的理由让 mt-upgrade.cgi 以 Starman 和 Plack 所允许的方式持久化。

【讨论】:

    【解决方案3】:

    尝试将 mt-config.cgi 中的路径更改为相对路径,而不是 URL。像这样:

    CGIPath /mt/
    StaticWebPath /mt-static/
    

    只是好奇:虽然它现在可以工作,但您是否知道不支持 PG 并且您冒着未来版本的 MT 可能会破坏它的风险?

    附:也不要忘记the documentation中提到的PIDFilePath指令。

    【讨论】:

    • 我尝试了这 2 个更改,但它们并没有改变问题中概述的不良行为。我确实忘记显示 PIDFilePath 配置,只是将其添加到问题中。我肯定在考虑 postgres 的风险,但我需要使用它,因为我想使用它的可查询 json 数据类型。如果很快没有明确的解决方案,我也会尝试 mysql 以确保。
    • 感谢@francois-nonnenmacher 的回复...所以我只是尝试使用 DBI::sqlite MT 配置。结果:与 postgres 相同的行为集,但创建了一个长度为零的 sqlite db 文件。
    • 我记得一开始有同样的问题,但后来它起作用了(关于权限设置和在运行 Plack 之前 cd'ing 到 MT 目录,你似乎这样做了)。虽然我没有执行升级,但您可能希望从全新安装开始进行快速测试,以查看该设置是否有效(将升级脚本排除在等式之外)。
    • 在再次解压缩 MT 并使用 postgres 和 sqlite 配置尝试此操作后,它仍然失败,但挂起时间延长了几秒钟。然后这个消息,4 次,在 starman.log 中:[pid] Bootstrap CGI script in non-buffering mode...至少是新的!
    【解决方案4】:

    顺便说一句,http://mysite:8045/mt/index.html 上的 404 看起来很正常。您的站点索引不应与 MT 处于同一级别(您可以,但这不是推荐的设置,并且它不适用于假设 MT 和生成的站点明显分开的库存 MT 安装)。

    【讨论】:

    • 完全同意生成的内容和 mt 本身的分离。我认为获得 404 很奇怪,因为可移动类型目录中有一个 index.html(这是一个介绍页面,用于开始新的基于 UI 的安装)。但是我还没有深入研究在 mt 代码库中配置 psgi 方面发生的事情......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多