聞こえないJavaエンジニアが適当に書き連ねていく

つらつらとメモしたり日頃の溜まっている想いを吐き出す場所です。

AIX 7.2にApacheをインストールする手順メモ

AIX 7.2にApacheをインストールする手順メモ

AIXにインストール済となっていたapacheがインストールミスで起動できなかったのでイチからやり直したときの手順メモ。

調べたところ、rpmでインストールする必要がある模様で、rpmAIX Toolboxからダウンロード出来るとのこと。

前提

  • サーバーは直でインターネットに繋がらないネットワーク上にある。
  • Tomcatは既にインストール済(バージョンは9.0.17)。
  • rootユーザーで作業する。

必要なrpmをそろえてインストールする

AIX Toolbox for Linux Applications - Downloads alphaからダウンロードする。

  1. Apache Httpサーバーをインストールしたかったので、まずはhttpdを探して、Binary RPMのリンクを押す。これでrpmファイルがダウンロードされる。
  2. FTPツールを使って、ダウンロードしたhttpd-2.4.41-1.aix6.1.ppc.rpmをサーバーにアップロードする。
  3. ターミナルエミュレータでサーバーにログインし、以下のコマンドを実行してインストールテストを行い、必要なパッケージを確認する。

     rpm -i --test httpd-2.4.41-1.aix6.1.ppc.rpm
    
  4. 表示されたパッケージ、aprapr-utilopenldapAIX Toolboxからダウンロードする。

  5. ダウンロードしたパッケージ、それぞれに対してインストールテストを行い、足りていないパッケージを確認してダウンロードする、を繰り返す。
  6. 最終的に必要と表示されたパッケージは以下の通り(ファイル名順)。

  7. インストールテストを行った結果、以下の順番でインストールを行う。

    1. apr-1.5.2-1.aix6.1.ppc.rpm
    2. cyrus-sasl-2.1.26-3.aix6.1.ppc.rpm
    3. readline-8.0-2.aix6.1.ppc.rpm
    4. openldap-2.4.48-1.aix6.1.ppc.rpm
    5. sqlite-3.28.0-1.aix6.1.ppc.rpm
    6. apr-util-1.5.4-1.aix6.1.ppc.rpm
    7. httpd-2.4.41-1.aix6.1.ppc.rpm

    コマンドは rpm -ivh パッケージファイル名。 既に古いバージョンがインストールされていると出たときは更新するのでrpm -Uvh パッケージファイル名

    今回の作業時は以下のコマンドを実行した。

     rpm -ivh apr-1.5.2-1.aix6.1.ppc.rpm
     rpm -ivh cyrus-sasl-2.1.26-3.aix6.1.ppc.rpm
     rpm -Uvh readline-8.0-2.aix6.1.ppc.rpm
     rpm -ivh openldap-2.4.48-1.aix6.1.ppc.rpm
     rpm -Uvh sqlite-3.28.0-1.aix6.1.ppc.rpm
     rpm -ivh apr-util-1.5.4-1.aix6.1.ppc.rpm
     rpm -ivh httpd-2.4.41-1.aix6.1.ppc.rpm
    

    もし、グループやユーザーが足りていなかったときはインストーラが自動で追加してくれる。 念のため、smitコマンドを使って追加されたグループやユーザーの設定を確認しておく。

  8. インストールされたかどうかの確認をする。

     lslpp -Lc | grep httpd
    

    インストールが成功していれば表示される。

     httpd:httpd-2.4.41-1:2.4.41-1: : :C:R:Apache HTTP Server: :/bin/rpm -e httpd: : : : :0: :/opt:Thu Sep 26 14:34:54 JST 2019
    

以上で初期インストールは完了。

起動、停止確認

apacheが正しく起動するかどうかを確認する。 起動用のコマンドはrpm -ivh httpd-2.4.41-1.aix6.1.ppc.rpmが成功したときにコンソールに表示されている。

Updating / installing...
1:httpd-2.4.41-1                   ################################# [100%]
This version of httpd has 32bit and 64bit support
To start 64bit httpd use : /opt/freeware/sbin/apachectl_64 start ★これが起動用のコマンド

/opt/freeware/sbin/apachectl_64 startコマンドを実行し、表示されるIPアドレスをブラウザに打ち込んでIt works!が表示されたらapacheが起動している。

停止できることも確認しておく。

/opt/freeware/sbin/apachectl_64 stop

再起動コマンドは以下。

/opt/freeware/sbin/apachectl_64 restart

起動しているかどうかをプロセスで確認するには、以下のコマンドを実行する。

ps -ef | grep httpd

confファイルの場所確認

細かいapacheの設定はconfファイルを使って行うので場所を確認しておく。 rpm -qlp httpd-2.4.41-1.aix6.1.ppc.rpmコマンドを実行すると、配備されるファイル一覧が表示されるので、一覧からhttpd.confを探して確認する。 今回は /opt/freeware/etc/httpd/conf/にconfファイルが置かれていた。

Tomcatと連携する

本来の目的は、apacheTomcatを連携させたいことだった。 ポート番号無しでアクセスしたとき、Tomcatに繋がるようにするにはajpを使う。

Tomcat側の設定

Tomcatがインストールされているディレクトリ/conf ディレクトリの下にserver.xmlが置かれているので、このファイルを編集する。

以下の記述を探し、コメントアウトされていたらコメントを外して有効にする。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForURI="true" />

ポート8080での接続を拒否する場合は、<Connector port="8080" protocol="HTTP/1.1"で始まる部分を削除するかコメントアウトする。

server.xmlを編集したら、Tomcatを再起動する。

Tomcatがインストールされているディレクトリ/bin/shutdown.sh
Tomcatがインストールされているディレクトリ/bin/startup.sh

以上でTomcat側は完了。

apache側の設定

まず、ajp接続に必要なモジュールを読み込むように httpd.confまたはhttpd.conf_64を修正する。 OSが64ビット版なら、httpd.conf_64を編集する。

confファイルを検索し、mod_proxy.somod_proxy_ajp.soが含まれる行を探す。 どちらも初期設定だとコメントになっているので、先頭の#を消して有効にする。

次に、ポート番号無しで特定のURLでアクセスがあった時にTomcatに接続する設定を追加する。 直でconfファイルに書いてもよいが、別ファイルに定義を書いてそのファイルを読み込む形が主流のようなので、それに従う。

Include conf/extra/が書かれている部分を検索し、その部分に行を追加する。

# Tomcatとの連携
Include conf/extra/httpd-proxy-ajp.conf

次に、httpd-proxy-ajp.confファイルを新規で作成し、以下の記述を追記する。

<Location /Webアプリケーションのコンテキストルート/>
ProxyPass ajp://localhost:8009/Webアプリケーションのコンテキストルート/
</Location>

例えば、コンテキストルートがdocsの時は以下の記述になる。

<Location /docs/>
ProxyPass ajp://127.0.0.1:8009/docs/
</Location>

対象にしたいコンテキストルートが複数あるときは、<Location>タグを並べて書けばよい。

<Location /docs1/>
ProxyPass ajp://127.0.0.1:8009/docs1/
</Location>
<Location /docs2/>
ProxyPass ajp://127.0.0.1:8009/docs2/
</Location>

confファイルを編集したら、所定のディレクトリに配備する。

作業したときの配置場所は以下の通り。

/opt/freeware/etc/httpd/conf/httpd.conf_64
/opt/freeware/etc/httpd/conf/extra/httpd-proxy-ajp.conf

最後にapacheを再起動して、ポート番号無しで繋がることを確認する。

/opt/freeware/sbin/apachectl_64 restart

参考にしたサイト