MojoliciousをVM環境に構築して、Herokuで公開(お試し版)
フレームワーク:Mojolicious
PerlフレームワークMojoliciousで公開したときの備忘録
環境
VMPlayer 6(Ubuntu)32bit
Perl 5.x
「cpanm Mojolicious」でインストール
m-shige1979@mshige1979-virtual-machine:~/sample4$ cpanm Mojolicious --> Working on Mojolicious Fetching http://www.cpan.org/authors/id/S/SR/SRI/Mojolicious-4.41.tar.gz ... OK Configuring Mojolicious-4.41 ... OK Building and testing Mojolicious-4.41 ... OK Successfully installed Mojolicious-4.41 1 distribution installed m-shige1979@mshige1979-virtual-machine:~/sample4$ m-shige1979@mshige1979-virtual-machine:~/sample4$ cd ../ m-shige1979@mshige1979-virtual-machine:~$ mkdir sample_mojo1 m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ vim app.pl
app.plの編集
#!/usr/bin/env perl use strict; use warnings; use Mojolicious::Lite; get '/' => sub { # パラメータを取得 my $self = shift; # テンプレート変数をセット $self->stash('title', 'test site'); $self->stash('name', 'm_shige1979'); # indexを割り当て $self->render('index'); }; app->start; __DATA__ @@ index.html.ep <!DOCTYPE html> <html> <head> <title><%= $title %></title> </head> <body> こんにちは <%= $name %> さん </body> </html>
実行
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ morbo app.pl [Sat Sep 28 09:15:41 2013] [info] Listening at "http://*:3000". Server available at http://127.0.0.1:3000.
確認
Herokuへの公開
ubuntuにherokuのツールキットをインストール
m-shige1979@mshige1979-virtual-machine:~$ sudo wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh [sudo] password for m-shige1979: This script requires superuser access to install apt packages. You will be prompted for your password by sudo. [sudo] password for m-shige1979: --2013-09-28 13:29:06-- https://toolbelt.heroku.com/apt/release.key toolbelt.heroku.com (toolbelt.heroku.com) をDNSに問いあわせています... 50.16.215.104, 184.73.171.204, 174.129.23.118, ... toolbelt.heroku.com (toolbelt.heroku.com)|50.16.215.104|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 1737 (1.7K) [application/octet-stream] `STDOUT' に保存中 100%[===================================================================================================================================================>] 1,737 --.-K/s 時間 0s 2013-09-28 13:29:08 (8.87 MB/s) - stdout へ出力完了 [1737/1737] OK ヒット http://archive.ubuntulinux.jp raring Release.gpg ヒット http://archive.ubuntulinux.jp raring Release.gpg ヒット http://archive.ubuntulinux.jp raring Release ヒット http://archive.ubuntulinux.jp raring Release ヒット http://archive.ubuntulinux.jp raring/main Sources ヒット http://archive.ubuntulinux.jp raring/main i386 Packages ヒット http://jp.archive.ubuntu.com raring Release.gpg 取得:1 http://jp.archive.ubuntu.com raring-updates Release.gpg [933 B] ヒット http://jp.archive.ubuntu.com raring-backports Release.gpg ヒット http://archive.ubuntulinux.jp raring/multiverse Sources ヒット http://archive.ubuntulinux.jp raring/multiverse i386 Packages 取得:2 http://security.ubuntu.com raring-security Release.gpg [933 B] ヒット http://jp.archive.ubuntu.com raring Release 取得:3 http://jp.archive.ubuntu.com raring-updates Release [40.8 kB] ヒット http://downloads-distro.mongodb.org dist Release.gpg 取得:4 http://security.ubuntu.com raring-security Release [40.8 kB] ヒット http://jp.archive.ubuntu.com raring-backports Release ヒット http://jp.archive.ubuntu.com raring/main Sources ヒット http://jp.archive.ubuntu.com raring/restricted Sources ヒット http://jp.archive.ubuntu.com raring/universe Sources ヒット http://jp.archive.ubuntu.com raring/multiverse Sources ヒット http://jp.archive.ubuntu.com raring/main i386 Packages ヒット http://jp.archive.ubuntu.com raring/restricted i386 Packages ヒット http://jp.archive.ubuntu.com raring/universe i386 Packages 無視 http://archive.ubuntulinux.jp raring/main Translation-ja_JP 無視 http://archive.ubuntulinux.jp raring/main Translation-ja ヒット http://jp.archive.ubuntu.com raring/multiverse i386 Packages 無視 http://archive.ubuntulinux.jp raring/main Translation-en 無視 http://archive.ubuntulinux.jp raring/multiverse Translation-ja_JP 無視 http://archive.ubuntulinux.jp raring/multiverse Translation-ja ヒット http://jp.archive.ubuntu.com raring/main Translation-ja ヒット http://downloads-distro.mongodb.org dist Release 無視 http://archive.ubuntulinux.jp raring/multiverse Translation-en ヒット http://jp.archive.ubuntu.com raring/main Translation-en 取得:5 http://toolbelt.heroku.com ./ Release.gpg [490 B] ヒット http://jp.archive.ubuntu.com raring/multiverse Translation-ja ヒット http://jp.archive.ubuntu.com raring/multiverse Translation-en 取得:6 http://security.ubuntu.com raring-security/main Sources [43.4 kB] ヒット http://jp.archive.ubuntu.com raring/restricted Translation-ja ヒット http://jp.archive.ubuntu.com raring/restricted Translation-en ヒット http://jp.archive.ubuntu.com raring/universe Translation-ja ヒット http://jp.archive.ubuntu.com raring/universe Translation-en ヒット http://downloads-distro.mongodb.org dist/10gen i386 Packages 取得:7 http://jp.archive.ubuntu.com raring-updates/main Sources [70.4 kB] 取得:8 http://jp.archive.ubuntu.com raring-updates/restricted Sources [14 B] 取得:9 http://toolbelt.heroku.com ./ Release [1,673 B] 取得:10 http://security.ubuntu.com raring-security/restricted Sources [14 B] 取得:11 http://jp.archive.ubuntu.com raring-updates/universe Sources [72.3 kB] 取得:12 http://jp.archive.ubuntu.com raring-updates/multiverse Sources [2,266 B] 取得:13 http://security.ubuntu.com raring-security/universe Sources [9,292 B] 取得:14 http://jp.archive.ubuntu.com raring-updates/main i386 Packages [179 kB] 取得:15 http://security.ubuntu.com raring-security/multiverse Sources [2,266 B] 取得:16 http://jp.archive.ubuntu.com raring-updates/restricted i386 Packages [14 B] 取得:17 http://jp.archive.ubuntu.com raring-updates/universe i386 Packages [148 kB] 取得:18 http://toolbelt.heroku.com ./ Packages [1,042 B] 取得:19 http://security.ubuntu.com raring-security/main i386 Packages [114 kB] 取得:20 http://jp.archive.ubuntu.com raring-updates/multiverse i386 Packages [3,864 B] ヒット http://jp.archive.ubuntu.com raring-updates/main Translation-en ヒット http://jp.archive.ubuntu.com raring-updates/multiverse Translation-en ヒット http://jp.archive.ubuntu.com raring-updates/restricted Translation-en ヒット http://jp.archive.ubuntu.com raring-updates/universe Translation-en ヒット http://jp.archive.ubuntu.com raring-backports/main Sources ヒット http://jp.archive.ubuntu.com raring-backports/restricted Sources ヒット http://jp.archive.ubuntu.com raring-backports/universe Sources ヒット http://jp.archive.ubuntu.com raring-backports/multiverse Sources 取得:21 http://security.ubuntu.com raring-security/restricted i386 Packages [14 B] ヒット http://jp.archive.ubuntu.com raring-backports/main i386 Packages ヒット http://jp.archive.ubuntu.com raring-backports/restricted i386 Packages ヒット http://jp.archive.ubuntu.com raring-backports/universe i386 Packages ヒット http://jp.archive.ubuntu.com raring-backports/multiverse i386 Packages 取得:22 http://security.ubuntu.com raring-security/universe i386 Packages [38.0 kB] ヒット http://jp.archive.ubuntu.com raring-backports/main Translation-en ヒット http://jp.archive.ubuntu.com raring-backports/multiverse Translation-en 取得:23 http://security.ubuntu.com raring-security/multiverse i386 Packages [3,864 B] ヒット http://jp.archive.ubuntu.com raring-backports/restricted Translation-en ヒット http://jp.archive.ubuntu.com raring-backports/universe Translation-en ヒット http://security.ubuntu.com raring-security/main Translation-en ヒット http://security.ubuntu.com raring-security/multiverse Translation-en 無視 http://toolbelt.heroku.com ./ Translation-ja_JP ヒット http://security.ubuntu.com raring-security/restricted Translation-en 無視 http://toolbelt.heroku.com ./ Translation-ja 無視 http://toolbelt.heroku.com ./ Translation-en ヒット http://security.ubuntu.com raring-security/universe Translation-en 無視 http://jp.archive.ubuntu.com raring/main Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring/multiverse Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring/restricted Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring/universe Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-updates/main Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-updates/main Translation-ja 無視 http://jp.archive.ubuntu.com raring-updates/multiverse Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-updates/multiverse Translation-ja 無視 http://jp.archive.ubuntu.com raring-updates/restricted Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-updates/restricted Translation-ja 無視 http://jp.archive.ubuntu.com raring-updates/universe Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-updates/universe Translation-ja 無視 http://jp.archive.ubuntu.com raring-backports/main Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-backports/main Translation-ja 無視 http://jp.archive.ubuntu.com raring-backports/multiverse Translation-ja_JP 無視 http://downloads-distro.mongodb.org dist/10gen Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-backports/multiverse Translation-ja 無視 http://jp.archive.ubuntu.com raring-backports/restricted Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-backports/restricted Translation-ja 無視 http://jp.archive.ubuntu.com raring-backports/universe Translation-ja_JP 無視 http://jp.archive.ubuntu.com raring-backports/universe Translation-ja 無視 http://downloads-distro.mongodb.org dist/10gen Translation-ja 無視 http://downloads-distro.mongodb.org dist/10gen Translation-en 無視 http://security.ubuntu.com raring-security/main Translation-ja_JP 無視 http://security.ubuntu.com raring-security/main Translation-ja 無視 http://security.ubuntu.com raring-security/multiverse Translation-ja_JP 無視 http://security.ubuntu.com raring-security/multiverse Translation-ja 無視 http://security.ubuntu.com raring-security/restricted Translation-ja_JP 無視 http://security.ubuntu.com raring-security/restricted Translation-ja 無視 http://security.ubuntu.com raring-security/universe Translation-ja_JP 無視 http://security.ubuntu.com raring-security/universe Translation-ja 773 kB を 12秒 で取得しました (62.3 kB/s) パッケージリストを読み込んでいます... 完了 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: foreman heroku libruby1.9.1 libyaml-0-2 ruby1.9.1 提案パッケージ: ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switch 以下のパッケージが新たにインストールされます: foreman heroku heroku-toolbelt libruby1.9.1 libyaml-0-2 ruby1.9.1 アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 252 個。 5,056 kB のアーカイブを取得する必要があります。 この操作後に追加で 13.3 MB のディスク容量が消費されます。 取得:1 http://jp.archive.ubuntu.com/ubuntu/ raring/main libyaml-0-2 i386 0.1.4-2build1 [55.3 kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu/ raring-updates/main libruby1.9.1 i386 1.9.3.194-8.1ubuntu1.1 [4,208 kB] 取得:3 http://toolbelt.heroku.com/ubuntu/ ./ foreman 0.60.0 [89.5 kB] 取得:4 http://toolbelt.heroku.com/ubuntu/ ./ heroku 2.41.0 [665 kB] 取得:5 http://jp.archive.ubuntu.com/ubuntu/ raring-updates/main ruby1.9.1 i386 1.9.3.194-8.1ubuntu1.1 [37.6 kB] 取得:6 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 2.41.0 [626 B] 5,056 kB を 10秒 で取得しました (503 kB/s) 以前に未選択のパッケージ libyaml-0-2:i386 を選択しています。 (データベースを読み込んでいます ... 現在 191210 個のファイルとディレクトリがインストールされています。) (.../libyaml-0-2_0.1.4-2build1_i386.deb から) libyaml-0-2:i386 を展開しています... 以前に未選択のパッケージ libruby1.9.1 を選択しています。 (.../libruby1.9.1_1.9.3.194-8.1ubuntu1.1_i386.deb から) libruby1.9.1 を展開しています... 以前に未選択のパッケージ ruby1.9.1 を選択しています。 (.../ruby1.9.1_1.9.3.194-8.1ubuntu1.1_i386.deb から) ruby1.9.1 を展開しています... 以前に未選択のパッケージ foreman を選択しています。 (.../foreman_0.60.0_all.deb から) foreman を展開しています... 以前に未選択のパッケージ heroku を選択しています。 (.../archives/heroku_2.41.0_all.deb から) heroku を展開しています... 以前に未選択のパッケージ heroku-toolbelt を選択しています。 (.../heroku-toolbelt_2.41.0_all.deb から) heroku-toolbelt を展開しています... man-db のトリガを処理しています ... libyaml-0-2:i386 (0.1.4-2build1) を設定しています ... libruby1.9.1 (1.9.3.194-8.1ubuntu1.1) を設定しています ... ruby1.9.1 (1.9.3.194-8.1ubuntu1.1) を設定しています ... update-alternatives: /usr/bin/gem (gem) を提供するために 自動モード で /usr/bin/gem1.9.1 を使います update-alternatives: /usr/bin/ruby (ruby) を提供するために 自動モード で /usr/bin/ruby1.9.1 を使います foreman (0.60.0) を設定しています ... heroku (2.41.0) を設定しています ... heroku-toolbelt (2.41.0) を設定しています ... libc-bin のトリガを処理しています ... ldconfig deferred processing now taking place m-shige1979@mshige1979-virtual-machine:~$
バージョンの確認
m-shige1979@mshige1979-virtual-machine:~$ heroku --version heroku-toolbelt/2.41.0 (i686-linux) ruby/1.9.3 m-shige1979@mshige1979-virtual-machine:~$
認証の確認(よくわからんから「heroku login」で認証する)
m-shige1979@mshige1979-virtual-machine:~$ heroku login Enter your Heroku credentials. Email: m_shige1979のメールアドレス Password (typing will be hidden): Authentication successful. m-shige1979@mshige1979-virtual-machine:~$
アプリを確認し、「cpanfile」に依存パッケージを設定
m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ mv app.pl app.psgi m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ ls app.psgi m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ mkdir lib m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ vim cpanfile m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cat cpanfile requires 'Plack', '1.0000'; requires 'DBI', '1.6'; m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
gitの初期設定というかgitの設定全然やってなかった
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git config --global user.email "m_shige1979のメールアドレス" m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git config --global user.name "m_shige1979" m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
heroku上にアプリを作成
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ heroku create --stack cedar --buildpack https://github.com/miyagawa/heroku-buildpack-perl.git Creating guarded-coast-9763... done, stack is cedar BUILDPACK_URL=https://github.com/miyagawa/heroku-buildpack-perl.git http://guarded-coast-9763.herokuapp.com/ | git@heroku.com:guarded-coast-9763.git Git remote heroku added m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
gitリポジトリを追加
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git init Initialized empty Git repository in /home/m-shige1979/sample_mojo1/.git/ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git add . m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git commit -m "init commit" [master (root-commit) 9f73e57] init commit 2 files changed, 35 insertions(+) create mode 100644 app.psgi create mode 100644 cpanfile m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
リモート先がherokuか確認
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git remote heroku m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
デプロイしてみる
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master The authenticity of host 'heroku.com (herokuのIPアドレス?)' can't be established. RSA key fingerprint is なんかのキー情報. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'heroku.com,herokuのIPアドレス?' (RSA) to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
なんかキーの認証に失敗した。
鍵を作成する
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cd ~/ m-shige1979@mshige1979-virtual-machine:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/m-shige1979/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/m-shige1979/.ssh/id_rsa. Your public key has been saved in /home/m-shige1979/.ssh/id_rsa.pub. The key fingerprint is: なんかゴニョゴニョしている情報?
アカウントしているログインを確認
m-shige1979@mshige1979-virtual-machine:~$ heroku auth:whoami m_shige1979のメールアドレス m-shige1979@mshige1979-virtual-machine:~$
鍵を登録
m-shige1979@mshige1979-virtual-machine:~$ heroku keys:add ~/.ssh/id_rsa.pub Uploading SSH public key /home/m-shige1979/.ssh/id_rsa.pub... done m-shige1979@mshige1979-virtual-machine:~$
再度デプロイする
m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master Counting objects: 4, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 649 bytes, done. Total 4 (delta 0), reused 0 (delta 0) -----> Fetching custom git buildpack... done -----> Perl/PSGI app detected -----> Bootstrapping cpanm Successfully installed version-0.9904 (upgraded from 0.77) Successfully installed Module-Metadata-1.000018 Successfully installed Test-Simple-0.98 (upgraded from 0.92) Successfully installed CPAN-Meta-YAML-0.010 Successfully installed JSON-PP-2.27202 Successfully installed Parse-CPAN-Meta-1.4409 (upgraded from 1.39) Successfully installed CPAN-Meta-Requirements-2.125 Successfully installed CPAN-Meta-2.132661 Successfully installed Perl-OSType-1.006 Successfully installed ExtUtils-CBuilder-0.280212 (upgraded from 0.2602) Successfully installed ExtUtils-ParseXS-3.22 (upgraded from 2.2002) Successfully installed Module-Build-0.4007 (upgraded from 0.340201) Successfully installed App-cpanminus-1.7001 13 distributions installed -----> Installing dependencies Successfully installed File-ShareDir-Install-0.05 Successfully installed ExtUtils-MakeMaker-6.78 (upgraded from 6.55_02) Successfully installed Test-Requires-0.07 Successfully installed Stream-Buffered-0.02 Successfully installed Class-Inspector-1.28 Successfully installed File-ShareDir-1.03 Successfully installed Test-SharedFork-0.21 Successfully installed Test-TCP-2.01 Successfully installed HTTP-Tiny-0.036 Successfully installed Try-Tiny-0.18 Successfully installed Hash-MultiValue-0.15 Successfully installed URI-1.60 Successfully installed Devel-StackTrace-1.30 Successfully installed LWP-MediaTypes-6.02 Successfully installed Encode-Locale-1.03 Successfully installed HTTP-Date-6.02 Successfully installed IO-HTML-1.00 Successfully installed Compress-Raw-Bzip2-2.062 (upgraded from 2.020) Successfully installed Compress-Raw-Zlib-2.062 (upgraded from 2.020) Successfully installed IO-Compress-2.062 (upgraded from 2.020) Successfully installed HTTP-Message-6.06 Successfully installed Test-Tester-0.109 Successfully installed Test-NoWarnings-1.04 Successfully installed Test-Deep-0.110 Successfully installed HTTP-Body-1.17 Successfully installed Apache-LogFormat-Compiler-0.13 Successfully installed Filesys-Notify-Simple-0.12 Successfully installed Devel-StackTrace-AsHTML-0.14 Successfully installed Plack-1.0029 Successfully installed DBI-1.628 30 distributions installed -----> Installing Starman Successfully installed ExtUtils-Helpers-0.021 Successfully installed ExtUtils-Config-0.007 Successfully installed ExtUtils-InstallPaths-0.009 Successfully installed Module-Build-Tiny-0.027 Successfully installed Net-Server-2.007 Successfully installed HTTP-Parser-XS-0.16 Successfully installed Data-Dump-1.22 Successfully installed Starman-0.4008 8 distributions installed -----> Discovering process types Procfile declares types -> (none) Default types for Perl/PSGI -> web -----> Compiled slug size: 3.1MB -----> Launching... done, v5 http://guarded-coast-9763.herokuapp.com deployed to Heroku To git@heroku.com:guarded-coast-9763.git * [new branch] master -> master m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
ログを確認するとなんかエラーになっている
2013-09-29T03:29:55.422851+00:00 app[web.1]: BEGIN failed--compilation aborted at /app/app.psgi line 5. 2013-09-29T03:29:56.764037+00:00 heroku[web.1]: Process exited with status 2 2013-09-29T03:29:56.767156+00:00 heroku[web.1]: State changed from starting to crashed 2013-09-29T03:29:56.767919+00:00 heroku[web.1]: State changed from crashed to starting 2013-09-29T03:29:58.616775+00:00 heroku[web.1]: Starting process with command `perl -Mlib=$PWD/local/lib/perl5 ./local/bin/starman --preload-app --port 18736` 2013-09-29T03:30:00.051719+00:00 app[web.1]: Error while loading /app/app.psgi: Can't locate Mojolicious/Lite.pm in @INC (@INC contains: /app/local/lib/perl5/x86_64-linux-gnu-thread-multi /app/local/lib/perl5 /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /app/app.psgi line 5. 2013-09-29T03:30:00.051719+00:00 app[web.1]: BEGIN failed--compilation aborted at /app/app.psgi line 5. 2013-09-29T03:30:01.892505+00:00 heroku[web.1]: Process exited with status 2
「/app/app.psgi line 5.」の通り、5行目は「use Mojolicious::Lite;」???
ソース確認
#!/usr/bin/env perl use strict; use warnings; use Mojolicious::Lite; get '/' => sub { # パラメータを取得 my $self = shift; # テンプレート変数をセット $self->stash('title', 'test site'); $self->stash('name', 'm_shige1979'); # indexを割り当て $self->render('index'); }; app->start; __DATA__ @@ index.html.ep <!DOCTYPE html> <html> <head> <title><%= $title %></title> </head> <body> こんにちは <%= $name %> さん </body> </html>
もしかして、「Mojolicious」ないのか?
cpanfileに追加してみる
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cat cpanfile requires 'Plack', '1.0000'; requires 'DBI', '1.6'; requires 'Mojolicious', '2.0'; m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
再度コミットしてデプロイ
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git add . m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git commit -m "cpanfile update" [master adeb06e] cpanfile update 1 file changed, 1 insertion(+) m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master Warning: Permanently added the RSA host key for IP address 'なんかのIPアドレス' to the list of known hosts. Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 330 bytes, done. Total 3 (delta 0), reused 0 (delta 0) -----> Fetching custom git buildpack... done -----> Perl/PSGI app detected -----> Installing dependencies Successfully installed Mojolicious-4.41 1 distribution installed -----> Installing Starman Starman is up to date. (0.4008) -----> Discovering process types Procfile declares types -> (none) Default types for Perl/PSGI -> web -----> Compiled slug size: 3.7MB -----> Launching... done, v6 http://guarded-coast-9763.herokuapp.com deployed to Heroku To git@heroku.com:guarded-coast-9763.git 9f73e57..adeb06e master -> master m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
結果
できた
とりあえず、ここまで
とりあえず、これをゴニョゴニョしよう
ご参考情報
herokuをperlでデプロイする方法
http://qiita.com/mugyuu/items/2b8b8c62bd915842500ahttps://github.com/miyagawa/heroku-buildpack-perlhttps://github.com/akiym/heroku-buildpack-perl/tree/cartonhttp://www.songmu.jp/riji/archives/2013/05/perlwebheroku3.htmlhttps://speakerdeck.com/akiym/herokudexue-bu-chu-metefalseperl
まとめ
ビルドパック作った人たちには感謝します。すごいわこれ。
おまけ
Gitはほとんど触ったことなかったがうまくいくとは…