簡體   English   中英

Apache2 mod_perl下的Catalyst應用程序不會呈現Mason模板

[英]Catalyst application under Apache2 mod_perl won't render Mason templates

我的應用程序根目錄是該文件夾中的/ home / user / apps / learningcatalyst / CGAddressBook,我有一個/ mason文件夾,其中存儲了梅森組件。我的View位於/ lib / CGAddressBook / View中,我有一些名為login_form和地址簿的文件。

無法呈現組件“ login_form”-錯誤為“找不到初始路徑'/ login_form'的組件(組件根目錄為:'/ home / user / apps / learningcatalyst / CGAddressBook / lib / CGAddressBook / View')是錯誤我嘗試通過Apache到達站點時得到了我的apache conf文件是

PerlSwitches -I/home/user/apps/learningcatalyst/CGAddressBook/lib
PerlModule CGAddressBook

<Location /user_catalyst/>
    SetHandler modperl
    PerlResponseHandler CGAddressBook
</Location>

DocumentRoot /home/user/apps/learningcatalyst/CGAddressBook/root
<Location /user_catalyst/static>
    SetHandler default-handler
</Location>

用戶,其組及其他均可讀取所有文件夾。 梅森文件夾(已將梅森設置為寫入其緩存)設置為按用戶,組等進行讀取,寫入和執行。 它的所有者是用戶。 我沒有重新啟動Apache,但已經更改了/ View和/ mason的文件夾所有者(並以遞歸方式)。

當運行script / cgaddressbook_server.pl -r -p3001時,該應用程序運行良好,並且我通過端口3001進入我的站點。

comp_root的路徑是指模板“組件”的路徑。 您似乎將其指向與“查看”包相同的目錄。 您實際上可能在那里擁有組件,但這並不是一個好習慣。

未指定此默認位置的默認位置應該是Catalyst項目結構中的“ root / comps”文件夾(或類似的文件夾)。 我自己的樣本之一是這樣的:

package SnakierTen::Web::View::HTML;
use Modern::Perl;
use Moose;
use MooseX::NonMoose;

extends 'Catalyst::View::Mason2';

around BUILDARGS => sub {
    my ( $orig, $class, $c, @args ) = @_;

    $class->config(

        comp_root => $c->path_to( 'root' ),
        data_dir  => $c->path_to( 'data' ),

        plugins => [
            'TidyObjectFiles',
            'HTMLFilters',
        ],
    );

    $class->$orig( $c, @args );

};

__PACKAGE__->meta->make_immutable;
no Moose;
1;

除此之外,在Catalyst核心中不建議使用Mod Perl處理程序的直接支持。

首選的方法是在自己的PSGI兼容服務器下啟動應用程序,並使用“前端” Web服務器將請求“代理”到該應用程序服務器。

必須在mod_perl環境下運行應用程序的地方,仍然建議在PSGI處理程序下運行。 還有一些注意事項這里是文件尚未在此建造的一部分。 您可以使用那里的方法來指導您執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM