まじごみ日記

パチスロ・アニメ・特撮好きの日記です。最近の趣味は筋トレ。

Webアプリの基礎の基礎

今日は、Cloud9を使って実際にソースコードを書いていろいろ動かしてみようと思ったけど、どっかの記事のサンプルをそのまま使って「うぇーい!でぎだー!!」とやってもあまり意味がないと気づいたので、 まずはwebアプリケーションの構成を理解して、1つづつEC2環境に構築していくことにする。
今まで1からWebアプリを作ったことが無く、Apachetomcatがどういう役割を果たしているのかなど、よく理解せず仕事していたので。

Webアプリケーションの構成

一般的に、Webアプリは以下のサーバで構成されている。

それぞれについて概要を調べた後、ミドルウェアをEC2環境にインストールしていくことにする。(既にインストールされているものもありそうだけど。)

Webサーバ

httpリクエストを受けて、httpレスポンスを返すサーバ。Webブラウザと直接やりとりするのはこのサーバ。
静的ページの場合はそのままレスポンスを返すが、動的処理が必要な場合は、APサーバに処理を依頼する。

代表的なミドルウェアは、

  • Apache HTTP Server
  • Nginx(エンジンエックス)
  • IIS (Internet Information Services)

などがある。
使ったことがあるのはApacheだけ。

APサーバ

Webサーバから依頼された動的処理を行い、結果を返す。
必要に応じて、データベースサーバとのやりとりを行う。
APサーバはWebサーバと同一マシン上に構成することも多く、ミドルウェア自体を指すこともある。

Webサーバとの連携方式は特に標準化されているわけではなく、ミドルウェアによって異なる。 ApacheTomcatであればAJP (Apache JServ Protocol)というプロトコルで、 TomcatApache向けに提供している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回目をやろうと思ってたんだけど、そんな場合じゃないかも。まあ、明日考えよう。。

今日の出来事

伊藤園の麦茶についてる応募マークを集めてもらえる「接触冷感!ひんやり抱っこクッション」が欲しくて、ちょっと前から麦茶ばかり飲んでる。
f:id:majigomi:20190728190515j:plain ↑コレ

650mlで1ポイント、2lで2ポイントもらえる。
コツコツ集めて、ついに・・・
f:id:majigomi:20190728190657j:plain 24ポイントと・・・

f:id:majigomi:20190728190730j:plain 24ポイント分の650mlをネットで購入。これで48ポイント!
これの応募マークをひたすら切り取るのは結構しんどそう・・・。いつやろうか。。