本日も乙

ただの自己満足な備忘録。

nginx(1.4.7)をソースからインストールする

WebサーバといえばApacheが有名ですが、近年はnginx(エンジンエックス)が注目されるようになってきました。 nginxもApacheともにWebサーバなので、役割は同じですが、静的ページの表示に強く、リバースプロキシにも対応しているので、Apacheと共存させて静的ページはnginx、動的ページはApacheということもできます。 今回は、nginxをソースでインストールしてみます。

今回の目標

  • nginx1.4.7をソースからインストールする

サーバ環境

nginxユーザを追加

nginxを動かすためのnginxユーザを作成します。 nginxユーザはログインさせないので、-sオプションでシェルを/sbin/nologinに変更し、-Mオプションでホームディレクトリを作成させないようにします。

$ sudo useradd -M -s /sbin/nologin nginx

# nginxユーザの確認
$ id nginx
uid=501(nginx) gid=502(nginx) groups=502(nginx)

必要なパッケージをyumでインストール

$ sudo yum install gcc wget pcre pcre-devel openssl openssl-devel

ソースのダウンロード

$ wget http://nginx.org/download/nginx-1.4.7.tar.gz
$ tar zxvf nginx-1.4.7
$ cd nginx-1.4.7

ダウンロードしたいバージョンに合わせて http://nginx.org/download/ から探してください。stableなど分かりづらい場合は nginx: download から探してください。

インストール

$ ./configure \
--user=nginx \
--group=nginx \
--prefix=/etc/nginx/ \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-http_ssl_module \
--with-http_realip_module \
--with-ipv6

$ make
$ sudo make install

configureオプションについて一部だけ簡単に説明します。 詳しくは、ハイパフォーマンスHTTPサーバ Nginx入門が分かりやすくてオススメです。

オプション 意味
--user=nginx nginxを起動するユーザ
--group=nginx nginxを起動するユーザグループ
--prefix=/etc/nginx/ nginxのインストール先
--sbin-path=/usr/sbin/nginx nginxバイナリファイルのインストール先
--conf-path=/etc/nginx/nginx.conf 設定ファイルのファイルパス
--error-log-path=/var/log/nginx/error.log エラーログの場所
--pid-path=/var/run/nginx.pid nginxのpidファイルの場所
--lock-path=/var/run/nginx.lock ロックファイルの場所
--http-log-path=/var/log/nginx/access.log アクセスログの場所
--with-http_ssl_module SSLモジュールを有効にする
--with-http_realip_module RealIPモジュールを有効にする
--with-ipv6 IPv6対応を有効にする

インストールできたか確認

$ nginx -V
nginx version: nginx/1.4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx/ --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-http_ssl_module --with-http_realip_module --with-ipv6

設定

必要なディレクトリを作成

# キャッシュ
$ sudo mkdir /var/cache/nginx

# ログ(ディレクトリが存在しなければ作成)
$ sudo mkdir -p /var/log/nginx
$ sudo chown nginx:nginx /var/log/nginx

起動

Apacheが動いている場合は予め停止させてください。

$ sudo /usr/sbin/nginx

# プロセス確認
$ ps aux | grep [n]ginx
root     28480  0.0  0.1  44992  1136 ?        Ss   05:34   0:00 nginx: master process /usr/sbin/nginx
nginx    28481  0.0  0.1  45420  1696 ?        S    05:34   0:00 nginx: worker process

http://localhost/ にアクセスして、「Welcome to nginx!」と表示されれば正常に動作しています。 コマンドで確認するには、wgetコマンドを使います。

$ wget -q -O - http://localhost/

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

起動スクリプト設定

nginxを停止します。

$ sudo /usr/sbin/nginx -s stop

起動スクリプトをダウンロードします。

$ cd /etc/init.d
$ sudo wget -O nginx "http://wiki.nginx.org/index.php?title=RedHatNginxInitScript&action=raw&anchor=nginx"
# オプションは大文字のo(オー)

ダウンロードしたファイルを編集します。 先頭行から"\"まで(1行目〜7行目)と、最終行の"&lt;/geshi>"(138行目)を削除してください。

自動起動の設定を行います。

$ sudo chmod +x nginx
$ sudo chkconfig --add nginx
$ sudo chkconfig nginx on
$ chkconfig --list nginx                                                                                      
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

起動

configtestで起動確認してみます。

$ sudo service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

問題無さそうなので起動します。

$ sudo service nginx start
Starting nginx:                                            [  OK  ]

nginxが起動できました。

最後に

nginxをソースからインストールして起動してみました。 現在の設定では、HTMLファイルしか表示できないので、PHPを実行させるにはPHPFastCGI(php-fpm)を組み込んで設定する必要があります。次回はその辺りを書ければと思います。