徒然なるままに

個人の備忘録を中心としたブログです

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ReverseProxyの意味がつかめておらず、無駄に設定に苦労した。


http://wiki.apache.org/httpd/TomcatModProxyHTMLを参考。

httpd.confにてモジュールがロードされているか確認。
LoadFile      /usr/lib/libxml2.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule xml2enc_module modules/mod_xml2enc.so


httpd-proxy.confにて
ProxyEnableをOnにして、ProxyHTMLURLMapディレクティブを追加すると以下のようになった。
ProxyRequests off
ProxyPass /tomcat/ ajp://localhost:8009/
<Location /tomcat>
ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap http://localhost:8080/ /tomcat/
ProxyHTMLURLMap / /tomcat/
ProxyPassReverseCookieDomain localhost localhost
ProxyPassReverseCookiePath /servlet /tomcat/servlet
</Location>

ここではバックエンドサーバ内のページの「/」から始まる絶対パスと、
「http://ホスト名/」からなるリンクを変換しています。

ProxyHTMLURLMapでURLを変換しています。
ProxyHTMLURLMap fromURL toURL [R]
正規表現を使う場合、末尾にRをつけてください。


あとはこれをhttpd.confでインクルードします。
httpd.conf
<IfModule proxy_html_module>
Include /usr/local/conf/extra/httpd-proxy.conf
</IfModule>

事前にしっかりLoadModuleされていれば別に<IfModule>で囲む必要はありませんが、
このようにしておけば後から見て何のモジュール用にインクルードされたファイルなのかが分かります。
逆に、httpd-proxy.conf内でLoadModule proxy_html_moduleで読み込むなら、<IfModule>で囲んではいけません。

これでhttp://localhost/tomcat/の管理画面のリンクがhttp://localhost/tomcat/manager/等に入れ替わっていると思います。

事前にmod_proxyでリバースプロキシの設定をしている場合、
既にhttpd.confや別confファイルにProxyPassなどの指定をしていると思います。
その場合は重複になり、後から読み込んだほうが優先されるので、統合して一つにまとめたほうが良いでしょう。
スポンサーサイト
ProxyPassReverseによってリダイレクトのURLを置換することができるようになりましたが、
ページに埋め込まれたリンクまでは置換することが出来ません。

ページに埋め込まれたリンクのURLを変更、置換するには「mod_proxy_html」というサードパーティーのApacheモジュールが必要となります。

例えばappserver.example.comが内部のサーバ、www.example.comがフロントサーバであり、内部サーバはhttp://www.example.com/appserverでアクセスされるとします。

http://appserver.example.com/foo/bar.htmlで自分へのリンクを<a href="http://appserver.example.com/foo/bar.html">foobar</a>
で貼っていたとすると、これはappserver.example.comへのプロキシサーバを介さない直接のアクセスになってしまいます。


しかし、mod_proxy_htmlモジュールが有効になっていれば上のリンクは
<a href="http://www.example.com/appserver/foo/bar.html">foobar</a>
のように変更されるというわけです。


では、mod_proxy_htmlのインストール方法について。
1.libxml2が必要になるので、インストールされていないならこちらを先にインストール。
インストール方法はページの最下部に書きます。
/usr/include/libxml2にインストールしたとします。

2.http://apache.webthing.com/mod_proxy_html/からページ下部、Availabilityの項目から
単体のソースではなくbundled Versionを落としてきます。mod_proxy_htmlは、mod_xml2encも必要とするからです。

3.目的のファイルを解凍したら、
sudo /usr/local/apache/bin/apxs -c -I/usr/include/libxml2 -I. -i -a mod_proxy_html.c
sudo /usr/local/apache/bin/apxs -c -I/usr/include/libxml2 -I. -i -a mod_xml2enc.c


-Iは-c(コンパイル)オプションのライブラリ指定です。-I.は同じフォルダ内の.hファイルを参照しています。
-iはインストール、-aはhttpd.confへの自動追加。

4./usr/local/apache/conf/httpd.confの設定
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule xml2enc_module modules/mod_xml2enc.so
この二行が自動で追加されていると思うので。この二行の上に
LoadFile  /usr/lib/libxml2.so

を付け加えてください。

5.apachectl -MでSyntax OKがでれば設定完了。

-------------------------------------------------------------------------------------
1.Libxml2のインストール
ftp://xmlsoft.org/libxml2/からlibxml2-2.9.0.tar.gzを落としてくる。

落としたファイルを
tar xzvf libxml2-2.9.0.tar.gz

で解凍し、
./configure --prefix=/usr

--prefixはインストール先の指定です。この場合/usr/include/libxml2にインストールされます。

make
sudo make install

でインストール完了。
(2013/03/24 記事の再編集)

フロントサーバとしてApacheを動かし、内部サーバーとしてtomcatを動かしています。

localhost/tomcat以下へのアクセスをtomcatのルートディレクトリに渡すとすると
httpd.confなどの設定は
ProxyPass /tomcat ajp://localhost:8009

となります。

これで以下のようなアクセスが可能になります。

1、外部からのアクセス→localhost/index.html→Apache(Apacheで処理する)
                        ↓
 外部へのレスポンス←localhost/index.html←ーーー

2、外部からのアクセス→localhost/tomcat/index.html→Apache→URLの変換→ajp://localhost:8009/index.html→tomcat
                                                      ↓
 外部へのレスポンス←Apache←localhost/tomcat/index.html←URLの逆変換←tomcat←ーーーーーーーーーーーーー←

ここで、ファイル$CATALINA_HOME/webapps/ROOT/redirect.htmlが http://localhost:8080/dest.htmlにリダイレクトするようになっていたとしましょう。
このページが http://localhost/tomcat/redirect.html でアクセスされると、リダイレクト機能によって、
リバースプロキシ(apache)を介さずに内部サーバ(tomcat) http://localhost:8080/dest.html へ直接リダイレクトされてしまいます。
これは本来意図しないサーバ、及びファイルへの直接アクセスになります。
このような処理になってしまう原因は、内部サーバ内でリダイレクトをしているからです。



本当ならばリダイレクト先の指定URLが一度 http://localhost/tomcat/dest.htmlに変換された後に
内部変換でhttp://localhost:8080/dest.htmlを呼び出すようにするべきです。

この変換を実現するために、以下のコードでProxyPassReverseを指定します。
ProxyPassReverse /tomcat ajp://localhost:8009


今まで localhost/tomcat/ → localhost:8009/ の一方通行だけだったのが
逆の  localhost/tomcat/ ← localhost:8009/ の関連付けもされるというわけです。



ProxyPassを指定したら、特別な理由がない限りProxyPassReverseも同じように指定しておきなさいということですね。
(ajpを使った場合のProxyPassReverseの指定はProxyPassの指定とは異なるものにするよう?
tomcat側はajpでアクセスされていることを知らずに、内部URL http://localhost/ だと思い込んでいるようなので)

ここでチェックされているのはあくまでリクエストヘッダ、リダイレクト時のレスポンスヘッダだけなのでwebページ内のリンクそのものは変更されません。
ページに埋め込まれたリンクのURLを変更、置換するには別途「mod_proxy_html」というサードパーティーのApacheモジュールが必要となります。

例えばappserver.example.comが内部のサーバ、www.example.comがフロントサーバであり、内部サーバはhttp://www.example.com/appserverでアクセスされるとします。
http://appserver.example.com/foo/bar.htmlで自分へのリンクを<a href="http://appserver.example.com/foo/bar.html">foobar</a>
で貼っていたとすると、これはappserver.example.comへのプロキシサーバを介さない直接のアクセスになってしまいます。

しかし、mod_proxy_htmlモジュールが有効になっていれば上のリンクは
<a href="http://www.example.com/appserver/foo/bar.html">foobar</a>
のように変更されるというわけです。

mod_proxy_htmlの有効化については別の記事で書きます。


なお、URLの変換以外にもCookieの変換という作業も必要になってくることがあります。
tomcat側の/DIR1/use_cookieというサーブレットで、そのままCookieの書き込みをすると
host:localhost
pass:/DIR1
となり、実際のアクセスhttp://localhost/tomcat/DIR1/use_cookieとの関連付けに失敗します。
本来ならば、下のように書き込まなければなりません。
host:localhost
pass:/tomcat


そこで指定するのがProxyPassReverseCookieDomain、ProxyPassReverseCookiePathです。

今回は両方localhostですが、異なるホスト(front,backend)でそれぞれサーバを動かしているとすると
ProxyPassReverseCookieDomain backend front
ProxyPassReverseCookiePath /DIR1 /tomcat/DIR1

になります。

backend /DIR1がtomcat側、
front /tomcat/DIR1がapache側です。
普通に考えてCookieの文字列置換ですね。

これにより、
host:backend
pass:/DIR1
と書き込まれていたのが
host:front
pass:/tomcat/DIR1
こう書かれているはずです。


ごちゃごちゃ書きましたが、localhostでApacheとtomcatを動かしている場合
ProxyPass /tomcat ajp://localhost:8009/DIR1
#ProxyPassReverse /tomcat ajp://localhost:8009/DIR1 #正しい指定か不明
ProxyPassReverseCookieDomain localhost localhost
ProxyPassReverseCookiePath /DIR1 /tomcat/DIR1

が最終的なコードです。

<Location /><Location>の中に記述する方法もあります。
FetchImi(フェッチイミ)は、Firefoxのアドオンです。
ブラウザ上で、英単語をマウスオーバーするだけで
自動でポップアップに翻訳して日本語の意味を表示してくれます。

このアドオン、現在配信停止となっていてFirefox公式からインストールできません。
ミラーサイトもあるようですが、現在は不明なexeファイルに置き換わっています。
危険なのでダウンロードしないでください。

それでもちょっと検索すれば、xpiファイルが見つかるはず。
xpiファイルが見つかったら、
Ubuntuなら中身を書庫マネージャーで開いてinstall.rdfを編集
他OSなどでxpiを直接いじれないようなら、.xpi拡張子を一度.zipに変えて
中のinstall.rdfを編集してから.zipを元の拡張子.xpiに戻してください。


><em:maxVersion>3.6.*</em:maxVersion>

<em:maxVersion>19(お使いのFirefoxのバージョン).*</em:maxVersion>
に変えたら
xpiファイルをFirefoxのブラウザ上にドラッグして離せばインストールされます。


技術系のサイトを調べるときは、すごく役立ちますね。
このアドオンが出てからもう3年くらいたっていますので、
さすがにこれにかわるような便利なアドオンが出てるとも思うのですが、
ちょっと調べた限りではこれが一番良さそうです。
公式で他にいいのありますよー。と知っている方、よろしかったら教えてください。
一般ユーザとrootでは、セキュリティ上、環境変数PATHが異なっています。
そのため、以下のような状況が考えられます。

ルート権限が必要なプログラムがあり、格納されているディレクトリにPATHを通したとします。
ここでこのプログラムを実行するには、
「root権限が必要」
かといって、
「rootになるとPATHが通っていない」
という状況が出てきます。

この対策案として、
1、rootのホームディレクトリに.bash_profileを作成してPATHを追加する
2、rootのPATHが通っている/usr/bin内に目的のプログラムのシンボリックリンクを作成する
という手があります。

セキュリティ上、rootのPATHをあちこちに通したくないので、2を推奨します。
例えばApacheとtomcatのスタートアップ(シャットダウン)スクリプトの場合
ln -s /usr/local/apache/bin/apachectl /usr/bin/apachectl
ln -s /usr/local/apache/bin/startup.sh /usr/bin/startup.sh
ln -s /usr/local/apache/bin/shutdown.sh /usr/bin/shutdown.sh


lrwxrwxrwx 1 root root 31  2月 20 06:43 /usr/bin/apachectl -> /usr/local/apache/bin/apachectl
lrwxrwxrwx 1 root root 33 2月 20 06:43 /usr/bin/shutdown.sh -> /usr/local/tomcat/bin/shutdown.sh
lrwxrwxrwx 1 root root 32 2月 20 06:43 /usr/bin/startup.sh -> /usr/local/tomcat/bin/startup.sh


という感じになります。
なおシンボリックリンクのパーミションは全く関係ありません。
実行はリンク先のパーミションのみに影響されます。
情報系の勉強なら昔から何時間しても苦にならなかったけど、
最近は数学がおもしろい。

三角関数、集合論、離散数学、線形代数や微分積分、微分方程式などなどあらゆる数学の要素が
いろんな所で結びついて利用されている。
今までやってきた数学はこれらを理解するために必要だったと、初めて気づきました。

「数学なんて学んでも、将来の訳にはたたない」と言ってる君。
もし君が理系という工学系の道に入るとしたら数学は使うよ。
update-rc.dを使って、apacheの起動スクリプトapachectlをrc*.dに登録します(*は0~6のランレベル)

まず、下のコマンドを入力して/etc/init.dにapachectl をapacheとして置きます。
install -o root -g root -m 755 /usr/local/httpd/bin/apachectl /etc/init.d/apache

installコマンドはcpにインストール機能を特化したものと考えれば良い。
ここでは-o(own)所有者 -g(group)グループ -m権限などを設定しています。

あとは、update-rc.dにこのスクリプトを渡して自動で/etc/rc*.d/に登録してもらいます。
ランレベルの設定はデフォルトで、スタートとストップ用の番号をそれぞれ指定しています。
update-rc.d apache defaults 85 15



/etc/rc0.d/K15apache -> ../init.d/apache
/etc/rc1.d/K15apache -> ../init.d/apache
/etc/rc6.d/K15apache -> ../init.d/apache
/etc/rc2.d/S85apache -> ../init.d/apache
/etc/rc3.d/S85apache -> ../init.d/apache
/etc/rc4.d/S85apache -> ../init.d/apache
/etc/rc5.d/S85apache -> ../init.d/apache
シンボリックリンクが作成されるはずです。

自動起動を停止したいときは、まずスクリプト本体を削除してupdate-rc.d removeを使います。
sudo rm /etc/init.d/apache
sudo update-rc.d apache remove

この順番じゃないとupdate-rc.dは強制オプション(-f)でない限り受け付けません。
シンボリックリンクだけを削除して、使われないスクリプト本体が残る状況を防いでいます。
apxsというApacheの拡張ツールを使ってApacheのモジュールを後から追加することができます。
これを利用してmod_proxy,mod_proxy_ajpを追加します。
なおhttpd-2.2.23ディレクトリはコンパイル時に使用したソースです。

cd /usr/local/apache/httpd-2.2.23/modules/proxy
/usr/local/apache/bin/apxs -i -a -c mod_proxy.c proxy_util.c
/usr/local/apache/bin/apxs -i -a -c mod_proxy_ajp.c ajp_*.c

-iオプションがインストール,-aオプションがhttp.confにLoadModuleを自動追加,-cオプションがコンパイルとなっています。
proxy_util.c, ajp_*.cが補助的なソースなのでしょう。これをつけないと後でエラーになります。

/usr/local/apache/bin/apachectl -M


proxy_module (shared)
proxy_ajp_module (shared)
Syntax OK
が確認できたら、無事終了です。

このようにApacheではモジュールをサーバーに追加していくことで、機能を拡張していったり
モジュールを削除することでコンパクトにしたりできるんですね。


(参考サイト)
http://d.hatena.ne.jp/shimooka/20081006/1223281545
http://www.cozzbox.com/wordpress/archives/589
http://blog.livedoor.jp/mh_pia/archives/51191930.html
httpサーバとしての役割をApacheに任せて
サーブレット、JSPが呼ばれたときだけtomcatに処理をなげることを
Apacheとtomcatの連携といいます。

つまり、Javaプログラムが含まれる場所を事前にApacheに伝えておき、
その場所へのアクセスがあったらプロキシの機能で処理をtomcatに中継する。

Apache側ではモジュールで、tomcat側ではコネクタで接続します。

まずはtomcatの設定。

現在tomcatが正常に動いていればhttp://localhost:8080/でtomcatにアクセス可能になっていると思います。

ポート番号8080/TCPがtomcatに割り当てられているので
このtomcatへの直接へのアクセスを停止させます。

$CATALONA_HOME(tomcatのホームディレクトリ)/conf/server.xmlにデフォルトで70行目
<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />

の記述があると思うのでこれをコメントアウトしてください。
<!-- <Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />
-->


次に、Apacheモジュールmod_proxy_ajpから8009番に投げられてくるので、これを有効にします。
以下の部分が含まれる部分のコメントを外してください。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


tomcatを再起動します。
sudo $CATALINA_HOME/bin/shutdown.sh
sudo $CATALINA_HOME/bin/startupn.sh


この時点でhttp://localhost:8080/にアクセスができなくなっていれば正常に8080番への接続が遮断できています。
tomcatの設定はひとまず終了です。

次にApacheの設定です。
モジュールmod_proxy,mod_ajp_proxyは既に有効であるとします。
有効でない場合は前の記事を参照してください。

設定はhttpd.confにまとめて書くことも出来るのですが、一つのファイルに書くのも煩雑になってしまいがちです。
そこで設定ファイルを細分化しておき、後でhttpd.confからIncludeするという方法が推奨されています。

/usr/local/apache/conf/extra/httpd-proxy.confを下の内容で作成してください。
<Location / >
ProxyPass ajp://localhost:8009/
</Location>

Locationで有効なディレクトリを指定します。
上の設定ではルートディレクトリ以下のアクセスがtomcatに渡されることを意味します。

例えば、http://localhost/servlet/以降にサーブレットやJSPを置いて、ここだけをtomcatに渡したいなら記述は以下のようになります。
<Location /servlet/ >
ProxyPass ajp://localhost:8009/
</Location>

/usr/local/apache/conf/httpd.confの最後にIncludeの一文を追加します。
Include /usr/local/apache/conf/extra/httpd-proxy.conf


これでhttp://localhost/http://localhost/servlet/)からtomcatのドキュメントルートにアクセスできるはずです。

ちょっと紛らわしい点が一つ。
例えばApacheで/servlet/をtomcatに渡したとすると
webapps(tomcatドキュメントルート)/servlet/index.htmlは
http://localhost/servlet/servlet/index.html
でアクセスする必要があります。

http://localhost/servlet/index.htmlではありません。
つまりtomcatに渡したurlがtomcatのドキュメントルートであり、そこからのパスを追っていく必要があるということです。
Apacheはフリーで使える高性能なHTTPサーバ。
ローカル環境に入れて、作成したwebページをテストするときなど非常に便利。
以前にsudo apt-get installでインストールしていたのだが、tomcatと連携させようと思ったときに色々不都合があった(ソースからインストールした場合とパッケージで自動インストールした場合ではディレクトリ構成やbinファイルなどが異なる)のでソースからインストールする方法を載せる。


Apacheのバージョンは2.4も出ているが、2.2とは結構な変更が加えられているようである。
インストール方法もちょっと面倒になるらしい。
未だにアップデートを続けてくれて、情報も多い2.2が自分みたいな初心者には無難だと思う。

ということでhttp://httpd.apache.org/の左側DownloadからFrom a Mirror、version2.2の最新の2.2.23(2013.2.12現在)をtar.gz形式のものを落としてくる。

ダウンロードしてきたhttpd-2.2.23.tar.gzを
tar xzvf httpd-2.2.23.tar.gz

で解凍して、中のconfigureファイルを実行する
./configure --prefix=/usr/local/apache --enable-proxy --enable-proxy-ajp

とする。
--prefixで作成するインストールするディレクトリを指定します。ここでは、/usr/local/apacheとします。
tomcatの連携にmod_proxy(プロキシ),mod_proxy_ajp(tomcat用プロキシ)モジュールが必要なので、--enable指定も忘れずに。
(DSO*1を可能にするモジュールso_moduleの指定「--enable-so」は入力しなくてもデフォルトで組み込まれるので必要ありません。)


とすると中にMakefileが自動生成されているはずなので、
make

でコンパイル、その後
sudo make install
でApacheのインストールが完了である。


tomcatとの連携に使う目的のモジュールが組み込まれているか確認する。
/usr/local/apache/bin/apachectl -M

静的モジュールとして組み込んだので、
proxy_module (static)
proxy_ajp_module (static)
の二行がそれぞれ含まれていればOK

http://localhost/にアクセスして、It Works!の表示を確認しよう。
「It Works!」なんて安心する言葉なのだろうか!


あと、コンパイルの際に解凍したhttpd-2.2.23ディレクトリは/usr/local/apacheなどにそのまま保存しておくとよい。
sudo mv httpd-2.2.23/ /usr/local/apache/

後でモジュールの追加などの際に使用することがある。



ちなみにインストール済みのApacheにモジュールを追加したいときは、apxsというApacheの拡張ツールを使う。
その方法は別記事、apxsでApache2.2にmod_proxy,mod_proxy_ajpモジュールを追加するにまとめました。

*1 DSO(動的共有オブジェクト)モジュール:apacheの起動時に読み込むモジュール。動的に読み込むため、静的結合モジュールに比べて僅かに起動の遅延になる。元々使うモジュールが決まっているのならインストール時に入れておけということみたい。
servletを作るには"servlet-api.jar"という外部のパッケージを利用する。

javaのはパッケージは*.jar(JavaARchive)ファイルとして圧縮されているので
このファイルをjavacに伝えてやらないといけない。

そのためのclasspathオプションである。

hoge.javaファイルをコンパイルする例
javac -classpath "$CATALINA_HOME"/lib/servlet-api.jar hoge.java

$CATALINA_HOMEはtomcatのホームディレクトリです。
外部からjarだけ落としてもコンパイルはできますが、どうせ実行するんだからtomcatのインストールを。


いちいち打ち込むのが面倒くさいという人はシェルスクリプトでも作りましょう。

ソースファイルが入っているディレクトリ内に下のjavacs(javac servlet)ファイルを作成します。
(なおこのスクリプトは引数にオプションの指定を考えていないので、軽く勉強でサーブレットを使いたい人向けです。ちゃんとしたものが欲しい人は正規表現とか使ってちゃんと作りましょう。)
#!/bin/bash
javac -classpath "$CATALINA_HOME"/lib/servlet-api.jar "$*"

chmod +x javacs

で実行権限を追加したら
./javacs hoge.java

でコンパイルできます。


eclipse上ではサーブレットは実効できないのですが、エラーチェックがうるさいのでビルド・パスを追加してあげましょう。
プロジェクト名を右クリックしてプロパティ→Javaのビルド・パス→外部Jar追加→servlet-api.jarを指定。
前回の記事でtomcatがインストールできたので実際にサーブレットを動かしてみる。

htmlや画像、サーブレット(class)などのwebページを構成する要素となるファイルは
$CATALINA_HOME/tomcat/webapps/以下に保存する(実際はもっと複雑なので後で詳しく説明する。

webapps/ROOT/はその名のとおりルートディレクトリで、
webapps/ROOT/gazo.jpgはlocalhost:8080/gazo.jpgにあたる。
ただ、ここはindex.jarなど設定に必要なファイルが入っているため、
開発プログラムの実行場所には適さない。

そこで方針として任意のhogeというディレクトリを作成し、
webapps/hoge(任意)以下にファイルを保存し、その中にhtmlファイルやクラスファイルを置くことにする。
そうすればhttp://localhost:8080/hoge/index.htmlのようにアクセスすることが可能になるというわけだ。

このように簡単に書いたが、実際はもっと複雑で、
クラスファイルの保存場所はhoge/WEB-INFO/classes ←新規ディレクトリ作成
に置かなければいけない。
そしてクラスとurlの対応付けを行うweb.xmlをhoge/WEB-INFO/web.xmlに作成する。

ここではhoge/WEB-INFO/classes/Test.classが置いてあるとしよう。
このときweb.xmlの中身は以下のようにする。

<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/sampleurl</url-pattern>
</servlet-mapping>


<servlet>タグ内<servlet-class>にはクラス名を設定する。
<servlet>タグ内<servlet-name>にはこのクラスに好きな名前をつける。この名前は後のurlとの対応付けに一時的に使うだけなので一意な任意のもので構わない。

<servlet-mapping>内<servlet-name>に先ほどのクラスと対応付けた名前を入れて
<servlet-mapping>内<url-pattern>にクラスに対応するurlコードを設定する。

ここの例ではwebapps/hoge/WEB-INFO/classes/Test.classが
localhost:8080/hoge/sampleurlとしてアクセスできるということだ。

ここまでのファイル配置をまとめて示す。
$CATALINA_HOME/webapps/hoge/index.html
$CATALINA_HOME/webpps/hoge/WEB-INFO/classes/Test.class
$CATALINA_HOME/webpps/hoge/WEB-INFO/web.xml

(参考にしたサイト)
http://www.javadrive.jp/servlet/context/

サーブレットを勉強することになったので、tomcatをインストールした。

tomcatは簡易サーバーみたいなものでJavaのサーブレットやJSPを動かすことが出来る。
サーバーとしての機能は最低限のため、実運用上問題がある。
そこでapacheとtomcatを連携させて使用する例が非常に多い。

つまりHTTPリクエストを返す機能はapacheに任せ、tomcatはサーブレットやJSPの処理を専門にするということである。その連携方法は後の記事に書くということで、まずはインストール方法から。

http://tomcat.apache.org/から左のDownload、求めるバージョン(ここでは7.0)を選び、tar.gz形式のものをダウンロード。



tar xzvf apache-tomcat-7.0.*.tar.gz
mv apache-tomcat-7.0.* tomcat (長いのでrename)
mv tomcat /usr/local/


これで、/usr/local/tomcatにインストールが完了した。

あとは環境変数$CATALINA_HOMEを設定する必要があるので
/etc/profileに下の二行を追加



CATALINA_HOME="/usr/local/"
export CATALINA_HOME


/usr/local/bin/start.sh(tomcat起動スクリプト)
/usr/local/bin/shutdown.sh (tomcat終了スクリプト)
があるので、

./start.sh

で起動後
http://localhost:8080/
を開いてtomcatのキャラクターや設定画面が表示されれば、無事に稼働している。

この画面右上の管理ページ「Manager app」でアプリケーションの起動、停止や、他にも色々設定をする、
この管理ページにはBASIC認証が使われているので許可するuserの名前とパスを専用のxmlファイルに登録する必要がある。

そのxmlファイルが/usr/local/tomcat/conf/tomcat-users.xmlである。
これを編集しタグ内に以下の二行を追加。


<role rolename="manager-gui" />
<user username="name" password="passswd" roles="manager-gui" />


これでManager appのページのBASIC認証は通り、ひとまずtomcat側の準備は完了した。

(参考にしたサイト)
http://www.javadrive.jp/servlet/
http://homepage1.nifty.com/y-osumi/works/code/tomcat7/
(便利な自動起動スクリプトが載っている。CATALINA_HOMEの設定もこちらの方がスマートだと思った)

kamiyasu

Author:kamiyasu

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。