ソースビルドでnginxを入れる
必要なライブラリ |
役割 |
pcre pcre-devel |
perl互換の正規表現用 |
zlib zlib-devel |
gzip圧縮用 |
openssl openssl-devel |
SSLツール |
wget |
HTTPやFTP経由のファイル取得を行えるツール |
ncurses-devel |
インストール・コンパイルの為 |
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel wget ncurses-devel
- ※ 依存ライブラリの取り込み方は2種類有ります。
- 今回はnginxのビルド時に依存ライブラリを静的に取り込みます
- 動的にとりこむ場合は以下のオプションをconfigureを実行時に追加する
ライブラリ名 |
オプション名 |
PCRE |
--with-pcre=ディレクトリパス |
zlib |
--with-zlib=ディレクトリパス |
OpenSSL |
--with-openssl=ディレクトリパス |
sudo groupadd nginx
sudo useradd -g nginx nginx
sudo usermod -s /bin/false nginx
wget http://nginx.org/download/nginx-1.11.0.tar.gz
tar xvzf nginx-1.11.0.tar.gz
- configureを実行(利用したいモジュールを追加)
./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_v2_module
make
sudo make install
sudo /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.11.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_v2_module
- userディレクティブを設定するために設定ファイルを開く
sudo vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
起動スクリプトの作成
- Nginxをソースからインストールした場合は起動スクリプトが作成されないため自作が必要
- 今回はNginx入門から起動スクリプトを拝借した
起動スクリプトを作成コマンド
sudo vim /etc/init.d/nginx
#! /bin/sh
# chkconfig: 345 98 20
# Author: Ryan Norbauer http://norbauerinc.com
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: Clement NEDELCU
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
# デーモンファイルが見つからなければ、スクリプトを終了する
test -x $DAEMON || exit 0
d_start() {
$DAEMON || echo -n " already running"
}
d_stop() {
$DAEMON -s quit || echo -n " not running"
}
d_reload() {
$DAEMON -s reload || echo -n " could not reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC: configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
# 再起動の前に2秒スリープする。Nginxデーモンが穏便に終了するための時間を与えるのである。
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0
sudo chmod +x /etc/init.d/nginx
コマンド |
できること |
sudo service nginx start |
起動 |
sudo service nginx restart |
再起動 |
sudo service nginx stop |
停止 |
sudo chkconfig nginx on |
自動起動 |
個人的におもったこと
- ソースビルドでnginxの自動起動がうまく行かなかった
- 解決策は起動スクリプト内にchkconfigを記述してランレベルの指定いるとか初耳
- あとはディレクトリ構造の意味とか復習するいい機会になった(ほとんどわすれてた
- 仮想サーバと違ってちゃんとやらなきゃって気持ちになるのはやっぱいい
- これからも愛情いっぱいにこのサーバ育てる