転職してすぐ、なぜかいきなりDebian+ApacheでWebサーバー環境を作って、と言われたときの作業結果報告が発掘されたのでメモ(発掘: 2021/10/5)。あまり詳しいと思われると恐いので、程よく「知らんけど」的なスタンスで書いているのが笑える。転職して2日目のお仕事でした。
転職2日目
昨日のApache2の起動に関して試してみました。
起動終了には「apachectl」という専用のスクリプトが用意されていて、それに start、stopといった引数を指定するのが正解のようです。
また、Webサイトのポートが80や1024以下の場合、予約ポートを利用することになるのでapacheの実プロセスである「httpd」はroot権限で動くようです。apachectlを使えば、その辺の権限設定等もいろいろやって処理を開始するみたいですね。また、細かい設定変更や調整をするには、設定ファイルのほかにapachectlスクリプト自体を書き換える必要もあるようです。
詳細は私もやってみないと分かりませんが、とりあえず昨夜自宅の仮想PCで上記の方法でapache2を動かしたり止めたりするところまでは出来ましたので、参考まで。
後で分かることですが……多分これを依頼した人自身が全般的に「よく分かってない人」だったようです……。
転職3日目
どうやら自分はこの作業をずっとやるわけではないと判ったので、後を引き継ぐ人を想定してどこまで何をやったかを書き始めていました。私も別にLinux使いなわけではないので必死でしたが、書いたことの半分も相手は理解していないことが判ったのはもっと後のことです。
ユーザー「hoge」とか作って作りっぱなしにすんなよ……
■tomcat起動ユーザーの作り直し
作業の参考にされていたサイトで記載されていた手順では、ユーザーIDおよびグループIDを1000としてユーザーtomcat、グループtomcatを作成しています。が、現在作業中の環境にはすでに「ユーザー hoge」がID 1000として定義されていました(/etc/passwdファイルおよび、/etc/groupファイルの内容を見て確認)。このため、ユーザーtomcatが正しく作成できておらず、以下の手順で修正しました。
- deluserコマンドで既存の(中途半端にできていた)tomcatユーザーを消す。
- 同様にグループ「tomcat」も消す。
- グループID 1050としてtomcatグループを作成する(念のため番号を変えた)。
- ユーザーID 1050、グループ 1050としてtomcatユーザーを作成する。
- /etc/passwdファイルを編集し、ホームディレクトリを/usr/local/tomcatに変更。
- /usr/local/tomcatのオーナーを上記のユーザーtomcatに変更する。
tomcatスクリプトのオーナー設定が書き変わっていることをls -laで確認して本件は終了です。
■CentOSとDebianのディレクトリ差異の補正(1)
作業の参考にされていたサイトはCentOSでの設定が記載されており、Debianとの環境差異による問題が起きていました。以下のようにファイル「/usr/init.d/tomcat」の記載内容を変更して対応しました。
- /etc/rc.d/functions ディレクトリの指定 → /lib/lsb/init-funtions
- /etc/sysconfig/network ディレクトリの指定 → /etc/network/interfaces
本件は下記のサイトから情報を得ました。
- サーバの基本的な設定ファイルとCentOS、Debian比較 - アシアルTechブログ
- No such file or directory /etc/init.d/functions - Unix & Linux Stack Exchange
■CentOSとDebianのディレクトリ差異の補正(2)
tomcatの起動状態を判定するロックファイル置き場として、/etc/rc.d/tomcatでは/var/lock/subsys/が指定されていました。しかし、ディレクトリ「subsys」はDebianには無いようです。対処として正しいかどうかは確証がないのですが、とりあえずrootユーザーをオーナーとした「subsys」ディレクトリを/var/lock/直下にmkdirで作成しました。本件は下記のサイトを参考にしました(明確な答えはありません)
■JAVA_HOMEパス設定の変更
/usr/local/tomcat/bin/catalina.sh に記載されていた環境変数JAVA_HOMEに記載されたパスが存在しなかったため、実際に使われているパスを下記のコマンドで調べて書き換えました。
update-alternatives --config java
同じ結果(パス文字列)はこのコマンドでも取れます。
readlink -f /usr/bin/java | sed "s:bin/java::"
結果、JAVA_HOMEは以下の文字列に変更しました。
/usr/bin/gij-4.4
本件は下記のサイトを参考にしました。
- How to determine JAVA_HOME on Debian/Ubuntu? - Server Fault
- http://www.net-phantom.jp/uturo1/2012/03/debianjava7.html
■この時点での結果
- /etc/init.d/tomat startコマンドはエラーなく終わるようになりました。
- ブラウザからのservlets-examplesはまだ動いていません。
- /etc/init.d/tomcat stopコマンドは動いているようですが。「/usr/bin/gij-4.4/bin/java: not found」というエラーが出ます(おそらくどこかのパス設定がおかしい)。