加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 多语言PSGI-web部署

发布时间:2020-12-15 21:57:44 所属栏目:大数据 来源:网络整理
导读:我计划用PSGI / Plack开发一个Web应用程序. (可能与… 舞者,但尚未决定). 应用程序应该是utf8,多语言(使用Locale :: Maketext)和(ofc)将包含给定语言的一些静态页面.我的想法是将它部署在不同的语言域中,如en.example.com,de.example.com等.应用程序本身很简
我计划用PSGI / Plack开发一个Web应用程序. (可能与…
舞者,但尚未决定).

应用程序应该是utf8,多语言(使用Locale :: Maketext)和(ofc)将包含给定语言的一些静态页面.我的想法是将它部署在不同的语言域中,如en.example.com,de.example.com等.应用程序本身很简单,大多数只会填充带有本地化文本和其他(轻量级)功能的模板.

在一台物理计算机中为多个基于语言的子域部署一个应用程序的最佳解决方案是什么?

我目前的研究以此解决方案结束:需要为每个语言子域使用Apache及其基于名称的虚拟服务器.

<VirtualHost en.example.com>
    ServerName en.example.com
    DocumentRoot /path/to/site/en/files
    <Location />
        SetHandler perl-script
        PerlResponseHandler Plack::Handler::Apache2
        PerlSetVar psgi_app /path/to/site/en/en.psgi
    </Location>
</VirtualHost>

问题:

>什么是最好的解决方案?
>使用Starman或其他纯perl服务器存在任何解决方案?如果有,怎么样?反向代理?
>纯粹的perl解决方案会更好(更快)吗?
>我应该考虑其他一些解决方案吗? (fcgi,nginx等…)

什么其他的想法/事物会对开发本身产生什么影响?

解决方法

使用Plack :: App :: URLMap在Starman(或任何兼容PSGI的Web服务器)中设置虚拟主机:
use Plack::App::URLMap;
my $en_app = generate_app('en');
my $ru_app = generate_app('ru');

my $app = Plack::App::URLMap->new;
$app->map("http://en.example.com/" => $en_app);
$app->map("http://ru.example.com/" => $ru_app);
$app->to_app;

在generate_app中,您可以设置/配置返回新PSGI应用程序所需的任何内容.如果您想共享相同的$app实例但想要动态更改行为,可以通过编写PSGI中间件来实现,例如:

my $app = sub { MyApp->run(@_) };
my $en_app = sub {
   my $env = shift;
   $env->{'myapp.language'} = 'en';
   $app->($env);
};
my $ru_app = sub { ... }; # same

请注意,您可能希望将Starman置于代理之后,在这种情况下,您应该配置前端(nginx / Apache / lighttpd等)以将Host:标头转发到后端.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读