perl 的打包部署问题

2014-07-16 10:25:14 +08:00
 tychio
接手了一个老项目用perl写的,修改tmpl模版文件在页面上能马上显示出变化,但是修改所有的pl或pm文件都不起作用,甚至把其他文件夹都改名了,只要css和template还在就没影响。

初步推断应该是打包过的,但是没找到打包后的代码和文件,也没找到相关的脚本或配置文件用于打包。目录里只有一个build.yml,不过貌似是安装第三方包用的。

有人遇到过这种状况吗
7754 次点击
所在节点    Perl
14 条回复
11138
2014-07-16 10:50:41 +08:00
这个项目是什么应用?web吗?那可能要重启一下相关的perl进程(fastcgi)。
tychio
2014-07-16 11:35:16 +08:00
@11138 是web,在virtualbox中,连virtualbox都重启了也没用。有2个服务器同时用,apache+mod_perl以及nginx+fastcgi。restart之后都还是没变化。
11138
2014-07-16 12:00:34 +08:00
那你看看apache和nginx的配置文件,看看pl或pm实际文件的位置是不是你所更改文件的位置。

“初步推断应该是打包过的”这是什么意思?例如看fastcgi的配置,它启动了哪些pl文件是很明确的啊,如果查看这些pl文件是源代码那就一定可以修改,如果是二进制文件那就是经过了加密那就麻烦些。
tychio
2014-07-16 14:03:54 +08:00
@11138 fastcgi.conf里面是一行行这样的东西,看不出是启动了哪些pl文件


fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
11138
2014-07-16 14:16:09 +08:00
nginx+fastcgi 这个组合的话, 肯定还有一个独立启动pl的脚本(FastCGI服务器),而 nginx.conf 中的 fastcgi_pass 会指定 fastcgi 的主机和端口或者unix sock文件。
tychio
2014-07-16 15:34:42 +08:00
@11138 多谢你啊,但我还是没找到。在项目平级的app-modperl2-i686-el6文件夹有找到一个文件里写的fastcgi_pass,但是指向的sock文件并不存在,而且把这个文件夹整个改名了,重启服务器也没任何影响。还有个ltapp-nginx-i686-el6文件夹中只有一个sbin文件夹,里面有名为nginx的可执行文件,大小3M左右,但是同样改名后重启服务器没影响。

实在是找不到代码在哪,请问nginx的配置是全局的吗?会不会其他地方还有一份代码,也就是说有这种可能吗,我在A份代码中启了nginx,但nginx其实用的是B份代码?
11138
2014-07-16 15:47:03 +08:00
你的是什么系统?如果是linux可以用“ps -ef”查一下当前系统的所有进程。FastCGI方式启动的perl进程是常驻内存的,进程里能看到pl文件的实际位置。

nginx启动的时候可以指定 nginx.conf 的位置,或者在默认的conf目录下面,这个配置文件是全局唯一的,但配置文件里也可以包含其它配置文件(这个比较容易找到了)。
tychio
2014-07-16 16:08:57 +08:00
@11138 哈找到conf了,里面有这么一行
location ~ ^/(home|api|doc) {
proxy_pass http://modperl;
...
}
这个http://modperl代表的是什么,好像直接打不开
11138
2014-07-16 16:14:03 +08:00
看看 upstream 的定义应该有 modperl 吧。
tychio
2014-07-16 16:32:22 +08:00
@11138 哦,看来这不是文件夹的路径,只是url,modperl 对应127.0.0.1:12001,还是不知道这个url调用的是哪里的文件
11138
2014-07-16 16:35:13 +08:00
那你查一下 12001 这个端口是哪个进程启动的啊,一步步查一下。
tychio
2014-07-16 17:02:32 +08:00
@11138 12001是apache的httpd,还有个8081是nginx,就是上面说到的sbin里的那个执行文件。这个项目是两个同时用的。从conf找进去似乎就是指向到看起来的那个文件夹了,但是修改后重启还是没用,把用来返回template的那句注释掉都没影响。
11138
2014-07-16 17:16:20 +08:00
还有 apache 的配置文件里 ModPerl::Registry 配置信息看过了吗?
tychio
2014-07-16 17:21:57 +08:00
@11138 问题找到了,有一个特殊的template生成了nginx和apache的conf,指向了另外一个路径下的文件。谢谢你啦!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX