从源代码安装 Nginx (安装 ngx_mruby)

从源代码安装Nginx。

请参考这个网址。

以下是一种汉语的表达方式:

http://keikenchi.com/nginx-ngx-cache-purge → keikenchi.com 网站上有关于 Nginx ngx_cache_purge 的内容
http://tapira.hatenablog.com/entry/2015/12/13/124505 → tapira.hatenablog.com 网站提供了关于 Nginx ngx_cache_purge 的信息
https://github.com/matsumoto-r/ngx_mruby/wiki/Install → 在 matsumoto-r 的 Github 仓库上,有关于 ngx_mruby 安装的说明

引入时

由于一般公开服务遭受到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」,则表示成功。

暂且就这样。

广告
将在 10 秒后关闭
bannerAds