業務で最新のnginxではなく古いnginxを構築する時に実施した手順とはまりポイントを記載しておきます。
nginxのモジュール取得
こちらにて最新版から初期のモジュールまで全て取得可能です。
zipファイルはexeファイルとなっています。
Linuxで構築する場合はtar.gzのファイルを使用することになります。
wget https://nginx.org/download/nginx-x.y.z.tar.gz
解凍、configure
解凍
tar zxvf nginx-x.y.z.tar.gz
ユーザ、グループ作成
groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
configure(必要なモジュールを組み込む)
cd nginx-x.y.z
./configure --prefix=/usr/local/nginx-x.y.z --user=nginx --group=nginx
ここで依存関係などで詰まるのでその度にyum
やapt
でインストール実施する
yum search xxxx
yum install xxx
依存関係を解決できたらインストール
make & make install
これで無事完了、、、となるはずが自分の場合依存関係のところでハマりました。
gcc関連のモジュールがないと指摘されたので、yumを実行したのですが
何度やっても変わらない。
そのため、真剣にエラーを読むと下記のようになっていました。
Error: Package: glibc-headers-x.y.z.x86_64 (base)
Requires: kernel-headers
Error: Package: glibc-headers-x.y.z.x86_64 (base)
Requires: kernel-headers >= x.y.z
先人の知恵を借りるべくGoogle検索をしたところ下記記事がヒット。
yumのkernel-headers依存エラーを解決(CentOS7)
この記事を参考にすると、/etc/yum.conf
に下記記載があるとkernelのアップデートが除外されてしまうようでした。
exclude=kernel*
今回自分が使用していた環境は社内で払い出されたVMを使用しており、ユーザ側で勝手に意図しないkernelのアップデートがされないように初期構築で組み込まれていたようでした。
今回はkernelのアップデートが行われないと先に進めないため、一旦コメントアウトにして、先ほどうまくいかなった、yum install gcc
を実行し無事`configure
を通過しました。
依存関係が上手くいかない時は下記が大事であると再認識した次第です。
1 /etc/yum.conf
を疑う
2 rpm -qa | grep xxx
でインストール状態を確認する
3 yum update
を行う
補足
nginx起動
/usr/local/nginx-x.y.z/sbin/nginx
nginxの停止
/usr/local/nginx-x.y.z/sbin/nginx -s stop
confファイルのエラーチェック
/usr/local/nginx-x.y.z/sbin/nginx -t
nginxのバージョンや設定パラメータを表示
/usr/local/nginx-x.y.z/sbin/nginx -V
nginxの各環境の起動シェル
NGINX Init Scripts