VPS

さくらVPSのCentOS 7.4にhttp/2対応nginxを構築した話

さくらVPSで運用していたサーバを、オペレーションミスによってバルスしてしまったので
久しぶりにnginxをソースからビルドしたお話です。
今回はさくらVPSのテンプレートOSであるCentOS 7.4でビルド・構築しました。

ビルドツール準備

初期状態からソースのビルドを試みようとしているので、
ひとまずDevelopment Toolsさんに力を借りようと思います。

なんやて?
そのコマンド使えんて?
orz
調べてみるとCentOS 7 からyumの仕様が若干変更になった?ようなので、
groupinstallでの指定が少し変わるようです。
以下のようにコマンド実行したら正常にインストールされます。

*参考にさせていただいたサイトはこちら
CentOS7 で yum groupinstall が出来ないんですけど。。。 | Qiita
おけおけ
インストールできたーよ
インストールが完了したら、ビルドに必要なパッケージ群を追加しましょう。

依存関係パッケージのインストール

nginxで必要になりそうなパッケージをドカドカ入れていきます。
*個人的な趣味で入れているものとかあるので、必要に応じて消してくださいね

作業ディレクトリに必要なファイルをダウンロード

ビルドするものが無いと話になりませんので、
サイトからcurlで取ってきます。

ダウンロードしたファイルを解凍

いつものコマンドで解凍しておきましょう。

設定

./configureコマンドでビルド用の設定を反映します。

上記のような出力がされて入れば問題ないはず!
次は、お待ちかねのビルドタイムですよ〜

ビルド!

以下のコマンドでビルドを開始します。

上記のように、特別エラーもでなければ無事にビルドできてます。
お疲れ様でした。
さて、起動する前に他のデーモンなどでポートが使用されていないことを確認しておきましょう。
80/tcp,443/tcpが使用されていなければとりあえず問題ないはずです。

特に問題なさそうですね。
じゃあ起動しちゃいましょー

Usergroup Useradd

ポートの占有確認も終えたので、
早速デーモン起動といきましょう。
と、その前にここでもう一手間加えておきましょう。
自身でビルドしてインストールした場合、
パッケージインストールとは違ってコマンドパスをフル指定しなければなりません。
実行時に毎度指定するのは大変なので、.bashrcの環境変数に出力されるようにしておきましょう。

保存したら以下のコマンドで.bashrcを再読み込みし、
環境変数を有効化しましょう。

nginxを起動する際にプロセスを特定のユーザ権限で起動するようにしたいところです。
標準設定のままでは特にそのようなものはないので、以下のコマンドでnginxユーザを設定しておきましょう。

起動!

起動した時に以下のようなエラーメッセージが出て来ました。

意訳:/var/lib/nginxなんてフォルダはねーよ
作成してからもう一回出直してこい
らいしいので、作成してから出直します。

nginx 今度こそ起動!

さてさて、お待ちかねの起動タァァァン!!!
うるさかったですね、すみません。。。

起動だけならこのコマンドのみで完了です。
やったね!
特にエラーも出なかったよ!
なお、稀に以下のようなエラーメッセージが出る場合もあるようです。

調べてみると、nginx.conf内のユーザ指定がない場合や、
そもそもユーザとグループが作成されていない場合に起きることがあるみたいです。
上記の手順でも実施していますので、このエラーが出るとは思えないですが。。。
と、思っていたのですが、何度かソースビルドをしていて気づきました。
ビルド完了後のnginx.confにはuserの指定がないようですね。。。
#user nobody;
こんな指定ならあったので、おそらく明示的にuser指定されていないため、
起動時にエラーを吐いていたという結論でしょうか。

既にWebサーバを運用中の場合にも注意が必要

すでに別のサーバが起動している場合も注意したいですね。
Apacheを運用している場合などで、かつ80番を利用していた場合、
以下のようなエラーが表示されるようです。

読んで字のごとくですが、nginxのデフォルトポートと被るために
発生するエラーのようです。
nginx.conf側でポート番号を調整するか、
別デーモンの設定を変更しましょう。

nginxの起動を阻害する可能性のあるデーモン

今回構築しているサーバはCentOS 7であるため、
標準でfirewalldというデーモンが起動しています。
基本的な設定であれば、80/tcpや443/tcpはクローズしたままになっています。
ですから、以下のコマンドでポート開放の設定をしましょう。

firewallがポートをきちんと開けてくれているか確認もしておきます。

確認のため先ほどのポート確認コマンドでオープンしているか見てみましょう。

今回はHTTP/2に対応したnginxをビルドして終了しました。
次回HTTP/2を有効化する設定やSSL化に対応する手順なども交えて解説します。

関連記事

CentOS 7.4でnginxにhttp/2とHTTPS対応設定をする
CentOS 7 firewalldを無効化する手順

-VPS
-, , , ,

© 2022 サーバ構築.net Powered by AFFINGER5