小编yah*_*ann的帖子

使用Emperor进行uwsgi部署:重复“宣布我对皇帝的忠诚”

使用uwsgi运行两个psgi Perl Dancer应用程序。

几乎每一个要求,uwsgi封臣都会反复宣布对皇帝的忠诚,这是正常的吗?

这是我的uwsgi.log文件的一小部分:

announcing my loyalty to the Emperor...
Mon Aug 17 20:51:59 2015 - [emperor] vassal www.ini is now loyal
[pid: 1713|app: 0|req: 4/11] 0.0.0.0 () {44 vars in 873 bytes} [Mon Aug 17 20:52:12 2015] GET /sitemap-index.xml => generated 284 bytes in 7 msecs (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 0)
[pid: 1706|app: 0|req: 2/12] 0.0.0.0 () {42 vars in 808 bytes} [Mon Aug 17 20:52:22 2015] GET / => generated …
Run Code Online (Sandbox Code Playgroud)

perl uwsgi dancer

5
推荐指数
0
解决办法
1136
查看次数

Attribute is => 'Maybe[SomeSubtype]' 返回 Attribute () 未传递类型约束

我已经创建了带有强制转换的子类型,如下所示,并且我尝试根据Moose::Manual::Types 将Birth_d其与内置类型结合使用。Maybe

我收到错误You cannot coerce an attribute (birth_d) unless its type (Maybe[Birth_d]) has a coercion。这是完整的测试代码:

package Student;
use Moose;
use Moose::Util::TypeConstraints;

use DateTime::Format::MySQL;

class_type 'Birth_d', { class => 'DateTime' };

coerce 'Birth_d',
  from 'Str',
  via { DateTime::Format::MySQL->parse_date( $_ ) };

has 'name' => (
  isa => 'Str',
  is => 'ro',
);

has 'birth_d' => (
  isa => 'Maybe[Birth_d]',   # This works:    isa => 'Birth_d'
  coerce => 1,
  is => 'ro',
);


package main;

use …
Run Code Online (Sandbox Code Playgroud)

perl moose

4
推荐指数
1
解决办法
652
查看次数

使用 nginx $http_referer 使用不同的静态资源

我正在尝试在同一台基于 nginx 的服务器上部署同一应用程序的两个不同版本。如果 URL 以 /v2 开头,则应使用“v2”,否则使用 v1。例子:

http://example.com/v2/x/y/z          * runs v2 app
http://example.com/anything/else     * runs v1 app
Run Code Online (Sandbox Code Playgroud)

该应用程序的两个不同版本通过 nginx 进行代理,并且该部分运行良好。

问题是我有两个静态资产目录/static/cachedassets,这两个版本都是通用的(并且都源自/home/v1|2/www/public。因此,即使请求http://example.com/v2/x/y/z最初将使用正确的应用程序,加载的页面将包含对/static和 的引用/cachedassets,如果没有 /v2 前缀,则会错误地从/home/v1/www/public.

我知道引用者是一个不完美的解决方案。作为临时的权宜之计,在我有机会制定更强大的解决方案之前,我尝试使用 nginx 的 $http_referer 来指向这些资产的正确位置。这是 nginx 文件:

server {
    listen 1.2.3.4
    server_name example.com

    ...

    location /v2 {
      root /home/v2/www/public;

      try_files $uri @proxyv2;
      access_log off;
      expires max;
    }

    location ^/(static|cachedassets) {
      root /home/v1/www/public;

      if ($http_referer ~* "/v2/") {
        root /home/v2/www/public;
      }
    } …
Run Code Online (Sandbox Code Playgroud)

nginx

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

perl ×2

dancer ×1

moose ×1

nginx ×1

uwsgi ×1