如何使用 fastcgi 和 perlbrew 为在 nginx 上运行的 Perl Catalyst 应用程序创建初始化脚本

2023-12-03

我正在寻找一个 initscript,以便在运行 nginx 作为 Perl Catalyst 应用程序代理的网络服务器上使用 perlbrew。我目前正在尝试通过以下方式启动应用程序

  source $PERLBREW
  execute "perlbrew use perl-5.14.4@devel"
  execute "mkdir -p $PID_PATH && $START_ICOS_APP > /dev/null  2>&1 &"
  echo "$DESC started"

但它似乎找不到本地 perl 安装。 $PERLBREW 设置为我的 perlbrew 文件夹。


这是一个很好的分步指南,但它是法语(但仍然可以理解)。

http://www.catapulse.org/articles/view/124

我复制在这里:

设置将运行催化剂应用程序的用户(本例中为 www-data)

su - www-data
curl -kL http://install.perlbrew.pl | bash
echo 'source ~/perl5/perlbrew/etc/bashrc' >> .profile
. .profile

perlbrew install perl-5.16.3 -Dusethreads --as perl-5.16.3_WITH_THREADS
perlbrew switch perl-5.16.3_WITH_THREADS
#perlbrew install-cpanm
#cpanm Catalyst Catalyst::Devel
#catalyst.pl myapp

(我假设您的应用程序名称是 myapp,请将其替换为您的应用程序名称。)

创建/etc/nginx/sites-enabled/myapp

server {
    listen 80;
    server_name exemple.com *.exemple.com;
    client_max_body_size 50m;

    location / {
      include /etc/nginx/fastcgi_params;
      fastcgi_param SCRIPT_NAME '';
      fastcgi_param PATH_INFO $fastcgi_script_name;
      fastcgi_pass unix:/var/www/myapp/myapp.socket;
    }

    location /static {
      root /var/www/myapp/root;
      expires 30d;
    }
}

创建 /var/www/myapp/myapp.fastcgi.initd

#!/usr/bin/env perl
use warnings;
use strict;
use Daemon::Control;

# 1) create initd file
# ./myapp.fastcgi.initd get_init_file >  /etc/init.d/cat-myapp
#
# 3) install to runlevels
# update-rc.d cat-myapp defaults


my $app_home = '/var/www/myapp';
my $perl     = 'perl';
my $program  = $app_home . '/script/myapp_fastcgi.pl';
my $name     = 'myapp';
my $workers  = 1;
my $pid_file = $app_home . '/myapp.pid';
my $socket   = $app_home . '/myapp.socket';

Daemon::Control->new({
    name        => $name,
    lsb_start   => '$nginx',
    lsb_stop    => '$nginx',
    lsb_sdesc   => $name,
    lsb_desc    => $name,
    path        => $app_home . '/myapp.fastcgi.initd',

    user        => 'www-data',
    group       => 'www-data',
    directory   => $app_home,
    program     => "$perl $program --nproc $workers --listen $socket",

    pid_file    => $pid_file,
    stderr_file => $app_home . '/myapp.out',
    stdout_file => $app_home . '/myapp.out',

    fork        => 2,
})->run;

设置文件权限并创建正确的初始化文件:

$ chmod +x myapp.fastcgi.initd
$ ./myapp.fastcgi.initd get_init_file >  /etc/init.d/cat-myapp

启动您的应用程序并启动您的网络服务器:

$ /etc/init.d/cat-myapp start
$ /etc/init.d/nginx restart 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 fastcgi 和 perlbrew 为在 nginx 上运行的 Perl Catalyst 应用程序创建初始化脚本 的相关文章

  • nginx server_name 在流块内可能吗?

    目前设置如下 stream server listen 9987 udp server name subdomain EXAMPLE com this line is resulting in an error proxy pass loc
  • 将参数传递给调试器中的 perl 文件并在系统执行的文件中设置断点

    因此 我使用 perl d file pl 在 perl 调试器中运行一个文件 但 file pl 也应该接受参数 如何向 file pl 提供参数 还有一个问题 file pl 中有这一行 system file2 pl 如果 file2
  • Bash - 在 perl 正则表达式中使用变量以及匹配组

    这是我在 stackoverflow 上的第一篇文章 如果我错过了一些重要的内容 请原谅我 我目前遇到以下问题 目标是根据我准备的文件列表动态替换端口号find 这些文件中的所有端口均以数字 4 开头 有 5 位数字 现在是棘手的部分 我只
  • 如何在 BEGIN 块之外正确声明哈希?

    考虑这个简单的程序 您能解释一下为什么在取消注释前两行后输出会有所不同吗 我的哈希发生了什么use strict 如何修复程序以供使用use strict echo e key1 nkey2 nkey3 perl lne use stric
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • 如何将文本转换为标题大小写?

    我有一个文本文件 其中包含需要更改为标题大小写的标题列表 单词应以大写字母开头 但大多数冠词 连词和介词除外 例如 这个书名列表 barbarians at the gate hot flat and crowded A DAY LATE
  • 连接到上游时 Nginx 错误:(13:权限被拒绝)

    我在我的中收到此错误nginx error log file 2014 02 17 03 42 20 crit 5455 0 1 connect to unix tmp uwsgi sock failed 13 Permission den
  • Nginx 是否也缓冲来自客户端的 http 请求?

    我知道 Nginx 可以缓冲来自上游服务器的响应 我的问题是 Nginx 是否也缓冲来自客户端的 http 请求 我的意思是 如果 Nginx 从客户端收到 http 请求 它是否立即与上游服务器建立连接 或者它会在收到整个http请求后创
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • 如何在 perl 程序中查找打开的全局文件句柄

    我刚刚发现一个问题 我必须关闭所有打开的文件句柄才能让我的 Apache cgi 脚本继续 我将问题追溯到 Parse RecDescent usr bin env perl use strict use warnings use feat
  • 读入模板文件,使用用户输入填充并生成新文件

    我正在尝试读取如下所示的模板配置文件 template config path to speedseq package binary directory SPEEDSEQ BIN DIR usr local packages Sequenc
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • 如何编写 Perl 脚本来使用 curl 处理 URL?

    我有一个非常简单的任务 我有一个 crontab 每小时运行一个脚本 该脚本旨在简单地处理 URL 这就是我所拥有的 这不起作用 我收到语法错误 usr bin perl curl http domain com page html 我已经
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 如何将 Perl 转换为 C?

    有没有可用的工具可以将 Perl 源代码转换为 C 源代码 什么平台都可以 对此的规范答案是MJD 的 为什么不将 Perl 翻译成 C http www perl com pub a 2001 06 27 ctoperl html
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 检查一个数字是 int 还是 float

    在perl中 我想检查给定变量是否包含浮点数 为了检查我正在使用的 my Var 0 02 Floating point number if int Var Var floating point number 但上面的代码对于 0 0 不起
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用

随机推荐

  • 在java中检查对象相等性而不覆盖 equals [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 java中是否有任何实用程序可以检查对象的相等性而无需equals压倒一切 由于某些原因 我不想为我的类提供 equals 方法 我需要类似的东西S
  • Electron 中具有本地资源的 iframe

    我需要渲染iframe在我的电子应用程序中 哪里的frm html链接本地文件脚本foo js这是我的电子应用程序的一部分 p Inside iframe p 当我
  • Android Https错误不受信任的服务器证书

    在我的情况下 当我在模拟器上运行程序时 它工作正常 但是当我将 apk 安装到手机时 出现错误 不受信任的服务器证书 问题是什么 我的 AsyncTask 的代码用于向服务器发送响应 public abstract class BaseAs
  • Google 电子表格从自己的 URL 读取参数

    我想打开一个带有一些参数的 Google 电子表格 我可以在 URL 中添加这几个参数来打开电子表格 然后在电子表格中将它们加载到某些单元格中吗 相关电子表格是私下共享的 使用 URL 的用户被授予编辑权限 Sandy Good 提供了一个
  • 谷歌云音译 API

    Google 确实提供翻译 API 文本转语音 API 但是是否有音译 API 可以显示罗马尼亚语文本中的发音 就像他们在谷歌翻译 例如 你好的发音是he l h l 对于不同的语言可能会有所不同 看来您正在寻找音译API但不幸的是它早已被
  • 如何计算 numpy 数组的行对之间的欧氏距离

    我有一个numpy数组如 import numpy as np a np array 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 我想计算一下euclidian distance每对行之间 from scipy spat
  • 对特定受众隐藏 Azure 表中的数据

    我在 Azure 中有一个资源组 其中包含云服务和存储帐户 我想向我的开发人员授予对资源组的访问权限 以便他们可以访问资源并进行更改 但是 存储帐户中有一个特定的表 其中包含敏感的用户详细信息 该表正在通过我们的客户端应用程序使用 SAS
  • 从 'int' 字符串获取 int 类型

    在Python中 给定字符串 int 我怎样才能得到type int Using getattr current module int 不起作用 int不是当前模块的命名空间的一部分 它是的一部分 builtins 命名空间 所以你会跑ge
  • Android 中的 WindowManager$BadTokenException

    首先 我很清楚发生此错误是因为我试图通过调用窗口 对话框Context那不是一个Activity 但就没有什么解决办法吗 我的要求是 我有一个Dialog在普通 JAVA 类的方法中使用自定义样式表 我想从任何地方调用该方法Activity
  • HTML5 视频标签上不需要的背景颜色/伪像

    我在我们即将推出的网站的登陆页面上使用了视频标签Levoma 我还使用 SublimeVideo 对我的视频进行一些额外的控制 ISSUE 自从我升级到最新版本 10 0 648 204 后 我在 Chrome 上看到了某种伪影 视频背景不
  • XQuery 返回错误..?

    下面是 XML 文件
  • C++:字符串运算符重载

    我可以重载现有类中的现有函数 运算符吗 我试图这样做 include
  • 单击导航抽屉即可关闭

    我已经实现了导航抽屉 但在使其正常运行时遇到一些问题 当我单击位置 1 或 2 时 它不会启动新片段 MainActivity java public class MainActivity extends Activity private
  • Java - 如何对非拉丁字符的 URL 路径进行编码

    目前有final URL url new URL urlString 但我遇到服务器不支持路径中的非 ASCII 的情况 使用 Java Android 我需要对 URL 进行编码 http acmeserver com download
  • 使用全局设置作为属性参数

    我想在属性中指定一个参数 如下所示 OutputCache Duration GlobalSettings GlobalVar 其中 GlobalVar 是我只定义一次的变量 不关心在哪里 使用配置设置无论如何都不起作用 而且我也无法让它与
  • 将行与数据帧 pandas 中的下一行合并

    我在 pandas 中有一个包含多列的数据框 我想将每一行与下一行合并 例子 输入数据框 A B C a1 a2 a3 b1 b2 b3 c1 c1 c3 d1 d2 d3 输出数据帧 A1 B1 C1 A2 B2 C2 a1 a2 a3
  • 如何使用 Dart HttpClient 发出 DELETE 请求?

    如果您使用的是 DartHttpClient 它提供了一个HttpClientRequest 从一台服务器向另一台服务器发出请求 据我所知 唯一可用的 HTTP 方法是GET and POST 分别对应于post postUrl and g
  • 为什么 rspec 不运行? Rspec 在启动后就挂起

    今天我跑不动了rspec在过去的一年里我每天都会测试很多次的项目 它打印前几行启动行 弃用警告等 然后挂起 几分钟过去了 没有任何额外的输出 Ctrl C 成功地用正常方式杀死了它 RSpec is shutting down and wi
  • RegisterPowerSettingsNotification C# pinvoke

    我正在尝试检测笔记本电脑盖子何时打开和关闭 应该非常简单 我似乎可以正确注册该事件 但是当我关闭笔记本电脑窗口时 我没有收到通知 这是 DLL 导入 DLL代码 http www pinvoke net default aspx user3
  • 如何使用 fastcgi 和 perlbrew 为在 nginx 上运行的 Perl Catalyst 应用程序创建初始化脚本

    我正在寻找一个 initscript 以便在运行 nginx 作为 Perl Catalyst 应用程序代理的网络服务器上使用 perlbrew 我目前正在尝试通过以下方式启动应用程序 source PERLBREW execute per