Webアプリの基礎の基礎
今日は、Cloud9を使って実際にソースコードを書いていろいろ動かしてみようと思ったけど、どっかの記事のサンプルをそのまま使って「うぇーい!でぎだー!!」とやってもあまり意味がないと気づいたので、
まずはwebアプリケーションの構成を理解して、1つづつEC2環境に構築していくことにする。
今まで1からWebアプリを作ったことが無く、Apacheやtomcatがどういう役割を果たしているのかなど、よく理解せず仕事していたので。
Webアプリケーションの構成
一般的に、Webアプリは以下のサーバで構成されている。
- Webサーバ
- アプリケーションサーバ(APサーバ)
- データベースサーバ(DBサーバ)
それぞれについて概要を調べた後、ミドルウェアをEC2環境にインストールしていくことにする。(既にインストールされているものもありそうだけど。)
Webサーバ
httpリクエストを受けて、httpレスポンスを返すサーバ。Webブラウザと直接やりとりするのはこのサーバ。
静的ページの場合はそのままレスポンスを返すが、動的処理が必要な場合は、APサーバに処理を依頼する。
代表的なミドルウェアは、
などがある。
使ったことがあるのはApacheだけ。
APサーバ
Webサーバから依頼された動的処理を行い、結果を返す。
必要に応じて、データベースサーバとのやりとりを行う。
APサーバはWebサーバと同一マシン上に構成することも多く、ミドルウェア自体を指すこともある。
Webサーバとの連携方式は特に標準化されているわけではなく、ミドルウェアによって異なる。
Apache⇔TomcatであればAJP (Apache JServ Protocol)というプロトコルで、
TomcatがApache向けに提供しているmod_jkと呼ばれるモジュールをApacheに組み込むことで連携を実現している。
動作させるプログラムごとの、代表的なミドルウェア(Javaの場合はWebコンテナとも呼ばれる)は以下。
Ruby on Railsは触ったことないので、APサーバも全然知らない。。
DBサーバ
DBMS(DataBase Management System)が動作するサーバ。
APサーバとの連携はSQLによって行われる。
EC2で環境構築
の構成で環境構築を試みる。
Apacheインストール
Cloud9でワーウスペース作成時に指定したOSは「Amazon Linux」。
いくつかツールがあらかじめ「/opt/aws」にインストールされているとのこと。
とりあえず「/opt/aws」を見てみる。
test2:~/environment $ ls -l /opt/aws/ total 32 drwxr-xr-x 3 root root 4096 Nov 16 2018 amitools drwxr-xr-x 8 root root 4096 Jun 26 14:50 apitools drwxr-xr-x 2 root root 20480 Jun 26 14:50 bin -rw-r--r-- 1 root root 83 Apr 2 2015 credential-file-path.template
amitoolsとapitoolsはどういう住み分けなんだ?よくわからんので、コマンドでApacheがインストールされているか調べる。
・・・rpmコマンドか。こういうのは、しばらく触ってないと忘れてしまう。
test2:~/environment $ rpm -qa httpd* httpd24-2.4.39-1.87.amzn1.x86_64 httpd24-tools-2.4.39-1.87.amzn1.x86_64 test2:~/environment $ httpd -v Server version: Apache/2.4.39 (Amazon) Server built: Apr 5 2019 18:55:17
インストールされてるみたい。起動してみる。
test2:~/environment $ service httpd status httpd is stopped test2:~/environment $ service httpd start Starting httpd: (13)Permission denied: AH00058: Error retrieving pid file /var/run/httpd/httpd.pid AH00059: Remove it before continuing if it is corrupted. [FAILED]
起動に失敗した。。sudoコマンドでスーパーユーザとして実行。
test2:~/environment $ sudo service httpd start Starting httpd: [ OK ] test2:~/environment $ sudo service httpd status httpd (pid 6406) is running...
できた。できたが、、これはヤバイ気配がする。そもそもコイツは一体どこにいるんだ??
whichコマンドを使えばコマンドの場所は調べられる。
test2:~/environment $ which httpd /usr/sbin/httpd
デフォルトで使えるコマンドはここにあるみたいだけど、apacheはどこにいるの?
・・・うーん。Cloud9とかAmazon Linuxとか、いい勉強にはなると思うんだけど、Webアプリの基礎を学習したいという本筋になかなか辿り着けなさそう。
やっぱり、まずはローカルPCで構築したほうがよいものか。。
今日はもうすっかり遅くなってしまったし、風呂入って寝よう。
明日は代休なので「 ディスクアップは打ち続けるといつかはプラスになるのか? 」の検証1回目をやろうと思ってたんだけど、そんな場合じゃないかも。まあ、明日考えよう。。
今日の出来事
伊藤園の麦茶についてる応募マークを集めてもらえる「接触冷感!ひんやり抱っこクッション」が欲しくて、ちょっと前から麦茶ばかり飲んでる。
↑コレ
650mlで1ポイント、2lで2ポイントもらえる。
コツコツ集めて、ついに・・・
24ポイントと・・・
24ポイント分の650mlをネットで購入。これで48ポイント!
これの応募マークをひたすら切り取るのは結構しんどそう・・・。いつやろうか。。