やること
PerlにMojoliciousをインストールして、nginxと連携する
Perl設定
plenvをダウンロード
[root@localhost ~]# git clone git://github.com/tokuhirom/plenv.git ~/.plenv Cloning into '/root/.plenv'... remote: Counting objects: 1828, done. remote: Compressing objects: 100% (946/946), done. remote: Total 1828 (delta 551), reused 1793 (delta 523) Receiving objects: 100% (1828/1828), 1.54 MiB | 387.00 KiB/s, done. Resolving deltas: 100% (551/551), done. Checking connectivity... done [root@localhost ~]#
perl-buildのダウンロード
[root@localhost ~]# git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build Cloning into '/root/.plenv/plugins/perl-build'... remote: Counting objects: 641, done. remote: Compressing objects: 100% (222/222), done. remote: Total 641 (delta 304), reused 626 (delta 289) Receiving objects: 100% (641/641), 1.17 MiB | 385.00 KiB/s, done. Resolving deltas: 100% (304/304), done. Checking connectivity... done [root@localhost ~]#
pathを設定し、環境設定をロード
[root@localhost ~]# echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.bash_profile [root@localhost ~]# echo 'eval "$(plenv init -)"' >> ~/.bash_profile [root@localhost ~]# source ~/.bash_profile [root@localhost ~]#
インストールされた場所の確認
[root@localhost ~]# which plenv /root/.plenv/bin/plenv [root@localhost ~]#
インストールできそうなバージョンを確認
[root@localhost ~]# plenv install --list Available versions: 5.6.0 5.17.11 たくさん 5.19.4 5.19.5 [root@localhost ~]#
perlの導入
[root@localhost ~]# plenv install 5.18.1 めんどいので省略 [root@localhost ~]#
現在のバージョンの確認
[root@localhost ~]# plenv versions * system (set by /root/.plenv/version) 5.18.1 [root@localhost ~]#
デフォルトで使用するperlを切り替え
[root@localhost ~]# plenv global 5.18.1 [root@localhost ~]# plenv versions system * 5.18.1 (set by /root/.plenv/version) [root@localhost ~]#
perlで確認
[root@localhost ~]# perl -v This is perl 5, version 18, subversion 1 (v5.18.1) built for x86_64-linux Copyright 1987-2013, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. [root@localhost ~]#
有効なperlの確認
[root@localhost ~]# plenv version 5.18.1 (set by /root/.plenv/version) [root@localhost ~]#
cpanmをインストール
[root@localhost ~]# plenv install-cpanm % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 262k 100 262k 0 0 166k 0 0:00:01 0:00:01 --:--:-- 699k --> Working on App::cpanminus Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7001.tar.gz ... OK Configuring App-cpanminus-1.7001 ... OK Building and testing App-cpanminus-1.7001 ... OK Successfully installed App-cpanminus-1.7001 1 distribution installed [root@localhost ~]# which cpanm /root/.plenv/shims/cpanm [root@localhost ~]#
サンプルのモジュールを導入
[root@localhost ~]# cpanm Acme::FizzBuzz --> Working on Acme::FizzBuzz Fetching http://www.cpan.org/authors/id/Y/YA/YAPPO/Acme-FizzBuzz-0.03.tar.gz ... OK Configuring Acme-FizzBuzz-0.03 ... OK Building and testing Acme-FizzBuzz-0.03 ... OK Successfully installed Acme-FizzBuzz-0.03 1 distribution installed [root@localhost ~]#
サンプルファイル作成し、実行結果を確認
[root@localhost ~]# vim sample1.pl
#!/usr/bin/env perl use strict; use warnings; use Acme::FizzBuzz;
Mojolicous、supervisord設定
ディレクトリを作成
[root@localhost ~]# mkdir -p /var/www/tools/app1 [root@localhost ~]# mkdir -p /var/log/starman/app1 [root@localhost ~]#
Mojoliciousをインストール
[root@localhost ~]# cpanm Mojolicious Server::Starter Starman Net::Server::SS::PreFork [root@localhost ~]#
サンプルアプリ作成
[root@localhost ~]# vim /var/www/tools/app1/app.psgi
#!/usr/bin/env perl use Mojolicious::Lite; get '/' => sub { my $self = shift; $self->render(text => 'Hello World!'); }; app->start;
起動して参照できることを確認
[root@localhost ~]# morbo /var/www/tools/app1/app.psgi [Mon Nov 4 15:01:04 2013] [info] Listening at "http://*:3000". Server available at http://127.0.0.1:3000.
supervisordのインストール
[root@localhost ~]# yum -y --enablerepo=epel install supervisor [root@localhost ~]#
起動、停止を確認
[root@localhost ~]# service supervisord start supervisord を起動中: [ OK ] [root@localhost ~]# service supervisord stop supervisord を停止中: [ OK ] [root@localhost ~]# chkconfig --level 2345 supervisord on [root@localhost ~]# chkconfig --list supervisord supervisord 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost ~]#
/etc/supervisord.confの設定ファイルの最後に追加
[root@localhost ~]# vim /etc/supervisord.conf
[program:app1] user=root command=/var/www/tools/app1/app.sh autostart=true autorestart=true stopsignal=QUIT
startmanで実行して、「xxx.xxx.xxx.xxx:8000」で確認できること
[root@localhost ~]# /root/.plenv/shims/starman --listen :8000 --workers 10 --error-log /var/log/starman/app1/app.log --pid /var/www/tools/app1/app.pid /var/www/tools/app1/app.psgi
起動用ファイルを作成
[root@localhost ~]# vim /var/www/tools/app1/app.sh
#!/bin/sh exec /root/.plenv/shims/starman --listen :8000 --workers 10 --error-log /var/log/starman/app1/app.log --pid /var/www/tools/app1/app.pid /var/www/tools/app1/app.psgi
実行権限を追加
[root@localhost ~]# chmod +x /var/www/tools/app1/app.sh
起動、停止を確認
[root@localhost ~]# service supervisord start supervisord を起動中: [ OK ] [root@localhost ~]#
nginx設定
nginxの設定ファイルを追加
[root@localhost ~]# mkdir -p /var/log/nginx/dev6.example.com [root@localhost ~]# vim /etc/nginx/conf.d/dev6.example.com.conf
server { # ポート、サーバネーム listen 80; server_name dev6.example.com; # アクセスログ、エラーログ access_log /var/log/nginx/dev6.example.com/access.log main; error_log /var/log/nginx/dev6.example.com/error.log; # プロキシ location / { proxy_pass http://127.0.0.1:8000; } # アクセスを制限する location ~ (\.htaccess|\.git|\.svn) { deny all; } # 文字コード charset utf-8; }
確認
参考にされていただいたサイト
まとめ
PerlのPSGIやnodejsもphp-fpmと同じように80番ポート以外だが、今回はプロキシ?経由なのでちょっと漏れがあるかもしれない。
とりあえず、ここまで来たのでなんかVPSの試用版でも借りて軽く確認してみる。
公開サーバでWebScoketが動作するのを試すだけなのにセットアップの確認だけで結構時間がかかっている…
PerlでのWebScoketをサポートしているPaasを探せば良いのかもしれないが、これも勉強になるはずなので頑張ってみる。
ネットの情報の信ぴょう性について
わからない頃はとにかく参考書を買っていたけど、最近はサイトで公開されている情報を参照するほうが新しい気がする。
参考書は既存の最新バージョンとは限らないので最悪とても古いものかもしれない。
なんかのデザインパターンなどはともかく、PHPの参考書などは1年経過したらただの紙に成り果てるかも…
ちょっと読みたい本(というか購入予定)
- 作者: 大沢和宏,cho45(さとう),小林篤,和田裕介,嶋田裕二(xaicron),牧大輔(lestrrat),奥一穂,広木大地,伊藤直也,長野雅広,藤原俊一郎,伊藤智章,まかまか般若波羅蜜,小飼弾,近藤嘉雪,中川勝樹,宮川達彦,tokuhirom,藤吾郎(gfx),村瀬大輔,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/23
- メディア: 大型本
- この商品を含むブログ (7件) を見る
- 作者: 牧大輔
- 出版社/メーカー: 翔泳社
- 発売日: 2009/02/10
- メディア: 大型本
- 購入: 25人 クリック: 534回
- この商品を含むブログ (113件) を見る