Webサーバを立ち上げましょう:Nginx

サーバの初期設定が終わり、やっとWebサーバとしての役割を与えるフェーズがやって来ました。

まずはビルド環境を整えましょう。このページのコマンドは作業ユーザではなく、rootで実行してください。まずはローカルからリモートホストにログインしましょう。

ssh [email protected]あなたのIP -p あなたの設定したポート番号

もしくはconfigファイルに設定した短縮コマンドでログイン

ssh server1

ポートが入ってくるともはや覚えてられないのでconfigファイルの設定をしてしまうことをおすすめします。それでは作業に入りましょう。

サーバにログイン出来たらrootになってください。

su root

パスワードを求められますが、入力するのはrootアカウントのパスワードです。間違えないように。

次に、rootディレクトリに移動しましょう。

cd ~

これで root アカウントのルートディレクトリに移動できます。 /root/ です。

*ここからの記述は、実はこのサーバで、間違えてnginxを削除してしまい(本当は別の環境でやろうと思ったのに寝ぼけていた)、そのためにしっかりと順序を追って書かれたものであることを強調しておきたい(泣いた)

次に、ビルド環境を作るために必要なディレクトリを掘ります。

mkdir $HOME/rpmbuild $HOME/rpmbuild/SOURCES $HOME/rpmbuild/SPECS $HOME/rpmbuild/BUILD $HOME/rpmbuild/SRPMS $HOME/rpmbuild/RPMS $HOME/rpmbuild/RPMS/x86_64

mkdir しているだけですね。rpmbuildというディレクトリの中にサブディレクトリを幾つか作っています。

二行目は /root/.rpmmacros というファイルにコマンドを書き込んでいます。rpm build実行時に参照される.rpmmacrosファイルを作成しています。

パッケージのファイルを揃えましょう

ここ、割りとハマりどころかも知れません。右も左も分からない状態だと、途中でエラーが出たりするとパニックに陥る可能性がありますが、分かりやすい様に書きます。

まず、インストールするプログラムのバージョンは常に上がり続けているものだと考えてください。ここで書いてあるバージョンはすぐに古くなります。よってコピペでインストールしていただいても構わないのですが、バージョンが古くなってしまいますのでご注意ください。

では、最新バージョンでインストールするにはどうしたら良いのか。そこについても解説をします。

私自身それでかなりハマりましたので、苦労が分かります。

Nginxをゲットする

まずはNginx公式を見てみます。Stable Versionは幾つになっているでしょうか。(2016年2月時点では1.8.1のようです)

ダウンロード用のパッケージはここから辿って行くと良いと思います。

今の環境はCentOSなのでCentOSのバージョンを調べてみましょう。リモートホストにログインして

cat /etc/redhat-release

私の場合は「CentOS release 6.6 (Final)」と出てきましたので、まずはCentOSを選びます。

centos

先ほど調べたように、CentOS6ですので、6を選びましょう

cos6

次の画面はアーキテクチャの選択画面です。

余談ですが:アーキテクチャを調べる方法

uname -a

と打ってみてください。

左から、
OS の名称,ホスト名,OSのリリース,OS のバージョン,マシンのタイプ(アーキテクチャ名),CPUのタイプ,マシンのプラットフォーム,OS名となります。私の場合はこんな感じでした。

Linux *********.vs.sakura.ne.jp 2.6.32-504.8.1.el6.x86_64 #1 SMP Wed Jan 28 21:11:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

今回はSRPMSからインストールしますのでこちらを選択します。

SRPM(えすあーるぴーえむ、Source RPM)とは、ソースコードを含んだRPMパッケージのこと。 tarでアーカイブされただけのソフトのように、自分でコンパイル、インストールする必要はなく、自動的にコンパイル、インストールされる。(via Wikipedia)

clicksrpms

最初に調べたとおり、nginxの最新stable バージョンは1.8.1でしたので、二番目を選びます。こちらのURLをコピーしてきてください。

srpms
そしたら、 rpm -ivhコマンドの後に、コピーしたURLを貼り付けてEnterを押します。

rpm -ivh http://nginx.org/packages/centos/6/SRPMS/nginx-1.8.1-1.el6.ngx.src.rpm

 

これでソースパッケージをインストール出来ました。

ngx_cache_purgeのファイルを手に入れる

これを入れないとnginxのキャッシュファイルの削除が出来ませんので必ず入れましょう。

ファイルはgithubから手に入れましょう。

cd ~/rpmbuild/BUILD/
git clone https://github.com/FRiCKLE/ngx_cache_purge.git

ngx_pagespeedの準備をする

依存するパッケージをインストール。

yum install pcre-devel zlib-devel make unzip

gccはこのままインストールするとバージョンが古いので、以下の手順をやります。

cd  /etc/yum.repos.d/
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
yum install devtoolset-2-gcc devtoolset-2-binutils
yum install devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran
scl enable devtoolset-2 bash

gccのバージョンを調べてみましょう。

gcc -v

4.8以上になっていればOKです。

次に、ng_pagespeedのビルド説明ページヘ行きます。基本的にはそこにある手順を実行するだけ。CentOS6バージョンです。

sudo rpm --import https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern
sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/devtoolset/slc6-devtoolset.repo
sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils
PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc"

次に、ファイルをダウンロードします。

cd ~/rpmbuild/BUILD/
NPS_VERSION=1.11.33.0
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip -O release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz

こうすると、~/rpmbuild/BUILD/ の中にngx_pagespeed-release-1.10.33.4-beta (名前はバージョンによります)の様なフォルダが出来ますのでこれの名前を ngx_pagespeedに変更してください。

cd ~/rpmbuild/BUILD/
mv ngx_pagespeed-release-1.11.33.0-beta ngx_pagespeed

これで完了です。

specファイルを編集します

フォルダに移動。

cd ~/rpmbuild/SPECS/

この中にnginx.specというファイルが入っています。先ほどSRPMをインストールしましたが、その際に展開されたファイルです。

vi nginx.spec

冒頭に三行追加してください。

%define _unpackaged_files_terminate_build 0
%define ngx_version 1.8.1

二行目・三行目のバージョンは、インストール時のバージョンに合わせてください。 i を押してインサートモードにしてからペーストすればOKです。

次に、以下の行を検索です。まずはescボタンを押してコマンドモードに戻りましょう。

/Source10

この行の次の行に以下の行を追加します。 o を押すと自動的に改行してインサートモードになりますので、こちらをペーストしてください。

Source11: ngx_cache_purge
Source12: nginx_pagespeed

次に、こちらを検索してください。

/--with-cc-opt="%{optflags} $(pcre-config --cflags)" \

先ほどと同様に o を押して次の行にこちらを追加します。

--add-module=%{_builddir}/ngx_cache_purge \
--add-module=%{_builddir}/ngx_pagespeed \
--with-http_realip_module \

因みに、こちら二箇所ありますので両方にペーストしてください。

変更は以上です。 :wq を押して保存して閉じてください。

ビルドします

その前に必要なパッケージのインストール。

yum -y install GeoIP-devel gd-devel libxslt-devel openssl-devel pcre-devel zlib-devel perl-ExtUtils-Embed

終わったらビルドしてみましょう。

rpmbuild -bb nginx.spec

ビルドしたrpmからインストールします

ビルドに成功すると、rpmファイルが作成されます。フォルダに移動

cd ~/rpmbuild/RPMS/x86_64/

続いてインストール

rpm -Uvh nginx-x.x.x-2.el6.x86_64.rpm

x.x.x.xの部分はバージョンにより変わります。

*注意:アップデートする場合は一度nginxをアンインストールしますが、その際にconfファイルが消えます(デフォルトに上書きされます)。
/etc/nginx/nginx.conf を何処かに退避しておいたほうが良いでしょう。

ls -al

というコマンドを打ってフォルダ内部のファイルを見て確認するもよしですが、面倒なので

rpm -Uvh ng くらいまで打ったらタブキーを押してください。候補を自動的に補完してくれます。

インストールされたかどうか確認してください。

nginx -V

nginxの起動と自動起動の有効化

/etc/init.d/nginx start
chkconfig nginx on

こちらで完了です。やっとウェブサーバが起動しました!が…何も設定してないのでnginxの設定画面しか見えないと思います。ウェブブラウザで自分のさくらのVPSのIPアドレスを打ってみてください。

次のページではNginxの設定ファイルをいじります

オススメNginx本

nginx実践入門 (WEB+DB PRESS plus) 単行本(ソフトカバー) – 2016/1/16

nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。

公開日:
最終更新日:2016/04/09