Apache + Tomcat + PostgreSQLでサーブレット実行環境構築(Linux)
LastUpdate : 08/09/14
CentOS5.1(64Bit版)に、サーブレットのWebアプリを実行する環境をApache+Tomcat+PostgreSQLで構築を行ってみます。
今回使用するソフトウェアのバージョンは以下のとおり。
JDK → Version 6 Update 7
Apache → 2.2.3
Tomcat → 6.0.18
PostgreSQL → 8.1.11
もくじ
必要なソフトウェアを揃える
とりあえずサーブレットが動くようにする
サーブレットからPostgreSQLにコネクションプールを使いアクセスできるようにする
というわけで、JDKとTomcatをダウンロードするだけでよいこととします。
[root@localhost ~]# chmod +x jdk-6u7-linux-x64-rpm.bin [root@localhost ~]# ./jdk-6u7-linux-x64-rpm.bin |
Do you agree to the above license terms? [yes or no]というところまでくるので、yesと答えます。そして、しばらく待っていると、エンターキーを押してください・・・みたいなメッセージがでますので、エンターを押下し、ちょっと待つと、インストールが完了します。
[root@localhost ~]# java -version java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode) [root@localhost ~]# whereis java java: /usr/bin/java [root@localhost ~]# ls -al /usr/bin/java lrwxrwxrwx 1 root root 26 Sep 22 18:00 /usr/bin/java -> /usr/java/default/bin/java [root@localhost ~]# ls -al /usr/java total 32 drwxr-xr-x 3 root root 4096 Sep 22 18:00 . drwxr-xr-x 15 root root 4096 Sep 22 17:59 .. lrwxrwxrwx 1 root root 16 Sep 22 18:00 default -> /usr/java/latest drwxr-xr-x 9 root root 4096 Sep 22 18:00 jdk1.6.0_07 lrwxrwxrwx 1 root root 21 Sep 22 18:00 latest -> /usr/java/jdk1.6.0_07 [root@localhost ~]#
その後、解凍したファイルを、インストール先のディレクトリ(ここでは/usr/local/tomcat6)に移動し、tomcatでアクセスできるようにシンボリックリンクを張ります。[root@localhost ~]# tar xvf apache-tomcat-6.0.18.tar.gz
事前に、tomcatを動かす一般ユーザを作成しておきます(ログイン不可アカウント)。[root@localhost ~]# mv apache-tomcat-6.0.18 /usr/local/tomcat6 [root@localhost ~]# ln -s /usr/local/tomcat6/ /usr/local/tomcat [root@localhost ~]#
commons-daemon プロジェクトの jsvc ツールを使うとDeamonとして実行できます。jsvcのソースがtomcatに付属でついていますので、それを解凍し、ビルドします。[root@localhost ~]# adduser -s /sbin/nologin -d /usr/local/tomcat6 tomcat adduser: warning: the home directory already exists. Not copying any file from skel directory into it. [root@localhost ~]#
configureのオプション(--with-java)にて、どのjava環境を使用するのか指定します。今回は、さきほどインストールしたsunのJDKを使用するので、JDKがインストールされたパスを指定してやります。[root@localhost bin]# pwd /usr/local/tomcat6/bin [root@localhost bin]# tar xvf jsvc.tar.gz 〜〜〜 長いので省略 〜〜〜 [root@localhost bin]# cd jsvc-src/ [root@localhost jsvc-src]# chmod +x configure [root@localhost jsvc-src]# ./configure --with-java=/usr/java/latest 〜〜〜 長いので省略 〜〜〜 [root@localhost jsvc-src]# make
そして、自動起動用のスクリプトの参考となるファイルがこのディレクトリ内にありますので、困ったときはこれを参考にして、自動起動用のスクリプトを/etc/rc.d/init.d内に作成し、実行権限を与えます(私は/etc/rc.d/init.d/tomcatを作成し、chmod +x /etc/rc.d/init.d/tomcat としました。)。起動スクリプトは、私はこんな感じで書きました。[root@localhost jsvc-src]# cp jsvc ..
サービスに登録します。これで、起動時に自動起動し、シャットダウン時に自動停止します。[root@localhost init.d]# chown -R tomcat /usr/local/tomcat6
[root@localhost init.d]# chkconfig --add tomcat [root@localhost init.d]# chkconfig --list tomcat tomcat 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@localhost init.d]#
/etc/httpd/conf.d/proxy_ajp.conf |
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # # When loaded, the mod_proxy_ajp module adds support for # proxying to an AJP/1.3 backend server (such as Tomcat). # To proxy to an AJP backend, use the "ajp://" URI scheme; # Tomcat is configured to listen on port 8009 for AJP requests # by default. # # # Uncomment the following lines to serve the ROOT webapp # under the /tomcat/ location, and the jsp-examples webapp # under the /examples/ location. # #ProxyPass /tomcat/ ajp://localhost:8009/ ProxyPass /examples/ ajp://localhost:8009/examples/ |
これから、アプリケーションをデプロイし、実行をする環境構築を行っていきます。
context.xml |
<?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- The contents of this file will be loaded for each web application --> <Context path="/ServletDBAccess" docBase="ServletDBAccess" reloadable="false" crossContext="true"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> <Resource name="jdbc/postgresql" type="javax.sql.DataSource" auth="Container" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/postgres" username="postgres" password="usagi" maxActive="20" maxIdel="5" maxWait="5000" /> </Context> |
web.xmlの修正箇所(resource-refを追加) |
<resource-ref> <description>PostgreSQL connection resource</description> <res-ref-name>jdbc/postgresql</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> |
# TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident sameuser # IPv4 local connections: #host all all 127.0.0.1/32 ident sameuser host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 ident sameuser |
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # # When loaded, the mod_proxy_ajp module adds support for # proxying to an AJP/1.3 backend server (such as Tomcat). # To proxy to an AJP backend, use the "ajp://" URI scheme; # Tomcat is configured to listen on port 8009 for AJP requests # by default. # # # Uncomment the following lines to serve the ROOT webapp # under the /tomcat/ location, and the jsp-examples webapp # under the /examples/ location. # #ProxyPass /tomcat/ ajp://localhost:8009/ ProxyPass /examples/ ajp://localhost:8009/examples/ ProxyPass /ServletDBAccess/ ajp://localhost:8009/ServletDBAccess/ |
以上で、準備完了です。
準備したアプリケーションをwarファイルにして、デプロイし、実行すると、DBより読み出した情報が表示されると思います。
以下のような感じで動くかと思います。
↓