LoginSignup
2
4

More than 5 years have passed since last update.

Nginx をソースからインストールする(ngx_mrubyをインストール)

Last updated at Posted at 2016-01-12

Nginx をソースからインストールする

参考URL

http://keikenchi.com/nginx-ngx-cache-purge
http://tapira.hatenablog.com/entry/2015/12/13/124505
https://github.com/matsumoto-r/ngx_mruby/wiki/Install

導入するにあたって

一般公開しているサービスがDdos攻撃にあうようになったため
自動検知&対応できるようにモジュールを追加したくなったため
yumでインストールしたnginxではなく
ソースからインストールしたものに変更しようと考え今に至る
ngx_mrubyをインストール

現状のnginx環境をバックアップ

sudo mkdir ~/backup
cd ~/backup
sudo cp -r /var/www/html ./
sudo cp -r /etc/nginx ./
sudo cp /etc/init.d/nginx ./nginx.org

作業用ディレクトリを作成

sudo mkdir /usr/local/src/nginx
cd /usr/local/src/nginx

現状のnginxの環境を確認&コピー

nginx -V

PCREライブラリが無いとかエラーが出たのでインストールする

sudo yum install pcre pcre-devel gcc bison -y

とりあえず現行の最新版である 1.11.0 の場合(オプションは適当)

sudo curl -O http://nginx.org/download/nginx-1.11.0.tar.gz
sudo tar zxvf nginx-1.11.0.tar.gz

sudo git clone git://github.com/matsumoto-r/ngx_mruby.git
cd ngx_mruby
sudo git submodule init
sudo git submodule update
sudo ./configure --with-ngx-src-root=/usr/local/src/nginx/nginx-1.11.0
sudo make build_mruby
sudo make generate_gems_config

cd ../nginx-1.11.0

sudo ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.11.0 --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --with-http_ssl_module --with-mail --with-http_stub_status_module  --with-http_v2_module --with-http_realip_module  --with-http_addition_module --without-http_userid_module --add-module=/usr/local/src/nginx/ngx_mruby --add-module=/usr/local/src/nginx/ngx_mruby/dependence/ngx_devel_kit
sudo make
sudo make install
sudo ln -s /usr/local/nginx-1.11.0 /usr/local/nginx

nginx のテスト

sudo /usr/local/sbin/nginx -t

既存のnginxを止めてapacheを起動

sudo /etc/init.d/nginx stop
sudo /etc/init.d/httpd start

nginxの設定ファイルを編集

sudo vi /etc/init.d/nginx

下記のように変更

#nginx=${NGINX-/usr/sbin/nginx}
nginx=${NGINX-/usr/local/sbin/nginx}

sysconfigを編集

sudo vi /etc/sysconfig/nginx

下記の一行をファイルの最後に追加

NGINX=/usr/local/sbin/nginx

起動スクリプト等の確認

sudo chkconfig --add nginx
sudo chkconfig nginx on
sudo chkconfig --list nginx
sudo /usr/local/sbin/nginx -t

apacheを止めてnginxを起動

sudo /etc/init.d/httpd stop
sudo /etc/init.d/nginx start
/usr/local/sbin/nginx -V

テスト用のファイルの記述

cd /etc/nginx/conf.d
sudo vim default.conf
location /hello {
  mruby_content_handler_code '
    Server = Nginx
    Server.echo "WORLD"
';
sudo service nginx reload

http://localhost/hello へアクセスしてみる

「WORLD」が表示されれば成功

とりあえず、以上

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4