さくらVPSで「Perl + Mojolicious」Webアプリ開発 第9回 Webアプリケーションをデプロイしてみる
今日はついにWebアプリケーションを実際に動かしてURLを指定してアクセスできるようにしてみたいと思います。ついにこの時がきました。Webアプリケーションを本番環境に配置することは、デプロイという言葉で呼ばることが多いですので、覚えておきましょう。
これが、できると後は、環境を整えたり、テクニックを覚えたりして、Webアプリケーションを発展させていくだけです。
Webアプリケーションは、僕が準備してダウンロードできるようにしてあります。このアプリケーションをダウンロードして、動かしてみましょう。
まず最初にwebappというユーザーになりましょう。Webアプリケーションはrootユーザーではなく、webappユーザーで実行します。
su - webapp
次の手順をリモートコンソールで実行してみてください。リモートコンソールの上部のタイトルバーにあるペーストボタンを使って、コマンドを貼り付けて実行していくのがおすすめです。コマンドを一つ貼り付けるたびにEnterキーを押して実行していきます。
curl -kL https://github.com/downloads/yuki-kimoto/webminiapp/webminiapp-0.01.tar.gz > webminiapp-0.01.tar.gz tar xf webminiapp-0.01.tar.gz cd webminiapp-0.01 ./webminiapp
4つのコマンドがあるので順に説明しましょう。一行目は長いので複数行になっていると思うので注意してください。ひとつのコマンドです。
Webアプリケーションのダウンロード
まず最初にすることはWebアプリケーションのダウンロードです。
curl -kL https://github.com/downloads/yuki-kimoto/webminiapp/webminiapp-0.01.tar.gz > webminiapp-0.01.tar.gz
curlというコマンドはWeb上のコンテンツをダウンロードするためのコマンドです。
curl オプション URL
-kLというのは-kというオプションと-Lというオプションを指定するという意味です。-k -Lと書くのと同じ意味になります。-kオプションは、セキュアな接続をしないという意味になり、-Lはリダイレクトを行うという意味になります。深い意味は今は覚えなくてもよいです。ふーんという感じでよいです。
最後にある>は、リダイレクトを行うという意味で、URLで指定したコンテンツを出力するファイル名を指定しています。
これでローカルディレクトリにwebminiapp-0.01.tar.gzというファイルができます。
ダウンロードしたファイルの展開
次はダウンロードしたファイルを展開します。
tar xf webminiapp-0.01.tar.gz
tarコマンドは、TAR形式で圧縮されたファイルを展開するためのコマンドです。
tar オプション ファイル名
xオプションは、gz形式で圧縮されている場合にも展開することを行うオプションで、fはファイルに対して行うということを意味しています。
Windowsでもzip形式というものがありますが、実はこれは複数ファイルのアーカイブ化と圧縮を一緒になっている形式です。Linuxでは、複数ファイルを一つのファイルにまとめるのにtar形式というものが用いられます。これはtarコマンドによって作成することができます。また圧縮をするのにgz形式がよく用いられます。これはgzipコマンドによって実行できます。
拡張子が.tar.gzとなっている場合はtarコマンドでTAR形式にアーカイブ化され、gzipコマンドでgz形式に圧縮されたという意味です。上記のコマンドによって、展開することができwebminiapp-0.01というディレクトリができます。
webminiapp-0.01
カレントディレクトリの変更
カレントディレクトはcdコマンドで変更できます。これはWindowsと同じですね。
cd webminiapp-0.01
Webアプリケーションの実行
Webアプリケーションを起動します。次のコマンドでWebアプリケーションを起動できます。
./webminiapp
では以下のURLにアクセスしてみてください。「Hello World!」と表示されたら成功です。
http://あなたのIPアドレス:8080/
これでWebアプリケーションが実行できましたね。
8080というのはポート番号です。Webアプリケーションが8080というポート番号で起動しているので、8080にアクセスしています。
普段は以下のような感じで指定しますね。
http://あなたのIPアドレス
実はこれは以下の記述の省略系になっています。
http://あなたのIPアドレス:80
省略するとポート番号が80番でアクセスするという意味になります。
もしアプリケーションを停止させたい場合は--stopオプションで停止できます。
./webminiapp --stop
またログをは以下のファイルに出力されます。
log/production.log
moreコマンドを使えば、ログを見ることもできます。
more log/production.log
スペースキーでログが進み、qを押すと続きをみるのをキャンセルできます。
ポート番号80番でWebアプリケーションにアクセスする
でもやっぱり80番ポートで、Webアプリケーションを実行したいですね。方法はいくつかあるのですが、ここでは応用が利かないけれど一番簡単な、ポートフォーワードという方法を試してみましょう。
8080でアプリケーションが起動しているので、80番ポートにアクセスがあった場合に8080に転送すればよいわけですね。
これはrootユーザーで作業します。
su -
以下のコマンドを実行します。iptablesというコマンドを使います。
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 /etc/rc.d/init.d/iptables save service iptables restart
ポートフォワード
一つ目のコマンドでポートフォワードの設定をしています。80番ポートへのアクセスを8080に転送します。
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
内容の保存
設定した内容を保存しています。
/etc/rc.d/init.d/iptables save
iptablesの再起動
iptablesを再起動しています。
service iptables restart
80番ポートでアクセスしてみる
以下のURLでHello Worldと表示されれば成功です。お疲れ様でした。
http://あなたのIPアドレス
ポートフォワードの設定を下に戻す
元に戻したいときは次のコマンドを実行してくださいね。後に戻すことになると思います。
iptables -t nat -F PREROUTING /etc/rc.d/init.d/iptables save service iptables restart
-Fオプションで設定を元に戻せます。ターゲットは-tオプションでnatテーブルを指定して、PREROUTINGというチェーンの設定を戻すという意味になります。