我正在寻找一个initscript来使用perlbrew在运行nginx的web服务器上作为perl催化剂应用程序的代理。 我目前正试图通过启动应用程序
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"
但是它却不能find本地的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;
设置文件权限并创建适当的init文件:
$ 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