Ok
だから、Apache httpd
を少し前にインストールし、最近SSLをセットアップしていくつかの異なるTomcatサーバーにサービスを提供するために戻ってきました。
現時点では、わずかに異なるバージョン(開発用とデモ用)に対応する2つの完全に独立したTomcatインスタンスがあり、2つの異なるポートにWebアプリがあります。
example.com:8081
example.com:8082
私は正常に(1月に戻って)mod_jk
を使用してhttpd
を取得し、同じTomcatインスタンスをhttp://www.example.com:8090/dev
とhttp://www.example.com:8090/demo
に提供しました(8090 cosこの段階で8080でJetty経由で別のアプリを実行しています) httpd.conf
で:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
<VirtualHost *:8090>
JkMount /devd* tomcatDev
JkMount /demo* tomcatDemo
</VirtualHost>
私がやろうとしていないことは、SSLを有効にすることです。
以下をhttpd.conf
に追加しました:
Listen 443
<VirtualHost _default_:443>
JkMount /dev* tomcatDev
JkMount /demo* tomcatDemo
SSLEngine on
SSLCertificateFile "/opt/httpd/conf/localhost.crt"
SSLCertificateKeyFile "/opt/httpd/conf/keystore.key"
</VirtualHost>
しかし、apachectl restart
でApacheを再起動しようとすると(私が言及した他のアプリをシャットダウンした後、https接続では動作しません)、私は継続的にエラーを受け取ります:
無効なコマンド「SSLEngine」。スペルが間違っているか、サーバー構成に含まれていないモジュールによって定義されている可能性があります。 httpdが実行されていません。開始しようとしています
httpd/modules
ディレクトリーを調べましたが、実際にはmod_ssl
はなく、mod_jk.so
とhttpd.exp
のみがあります。
Yumを使用してmod_ssl
をインストールしようとしましたが、すでにインストールされていると表示されます。実際、mod_ssl.so
は/usr/lib/httpd/modules
にありますが、これはhttpd
をインストールした場所へのパスではなく、/opt/httpd
であり、実際には/usr/lib/httpd
にはmodules
dirしか含まれていません。
httpd
のインストール場所にmod_ssl
を適切にインストールする方法を教えてもらえるので、このエラーを回避できますか?
/usr/lib/httpd/modules
フォルダー内のモジュールを参照する他のLoadModule
コマンドはありますか?その場合、LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so
をconfファイルに追加するだけで問題ありません。
それ以外の場合は、mod_ssl.so
ファイルを、他のモジュールのロード元のディレクトリにコピーして、そこで参照する必要があります。
ApacheでSSLモジュールを有効にする必要があることがわかりました(明らかに、rootとして実行していない場合は、コマンドの前にSudo
を付けます)。
a2enmod ssl
次に、Apacheを再起動します。
/etc/init.d/Apache2 restart
Ubuntu/Debian用ApacheのSSLの詳細 here 。
次のコマンドを使用して、mod_ssl
をインストールしてみてください。
yum install mod_ssl
次に、次のコマンドを使用してApacheサーバーをリロードして再起動します。
systemctl reload httpd.service
systemctl restart httpd.service
これはほとんどの場合に機能するはずです。
私が使用した:
Sudo yum install mod24_ssl
それは私のAmazon Linux AMIで機能しました。