zoukankan      html  css  js  c++  java
  • RedHat7安装Nginx及第三方模块

    编译安装Nginx

    1. 先安装编译过程中所需依赖包
      # yum -y install gcc pcre-devel openssl-devel zlib-devel
    2. jemalloc(更好的内存管理)
      # wget http://www.canonware.com/download/jemalloc/jemalloc-4.0.4.tar.bz2
      # tar -jxvf jemalloc-4.0.4.tar.bz2 && cd jemalloc-4.0.4
      # ./configure
      # make && make install
      # echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
      # ldconfig
      备注:如果解压失败,遇到如下问题
      tar (child): lbzip2: Cannot exec: No such file or directory
      tar (child): Error is not recoverable: exiting now
      tar: Child returned status 2
      tar: Error is not recoverable: exiting now
      解决方法:安装bzip2
      # yum install bzip2
    3. lua模块
      lua-nginx-module来自大牛agentzh的开源项目,在Nginx中嵌入Lua语言,使之可以支持强大Lua语法
      1. 下载LuaJIT2.0并安装
      切换到上级目录  # cd ..
      # wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
      # tar -zxvf LuaJIT-2.0.4.tar.gz && cd LuaJIT-2.0.4
      # make && make install
      2. 下载并解压ngx_devel_kit和lua-nginx-module
      切换到上级目录  # cd ..
      下载ngx_devel_kit-0.2.19.tar.gz (https://codeload.github.com/simpl/ngx_devel_kit/tar.gz/v0.2.19)
      解压  # tar -zxvf ngx_devel_kit-0.2.19.tar.gz
      下载lua-nginx-module-0.9.20rc2.tar.gz (https://codeload.github.com/openresty/lua-nginx-module/tar.gz/v0.9.20rc2)
      解压  # tar -zxvf lua-nginx-module-0.9.20rc2.tar.gz
      3. 导入环境变量
      # export LUAJIT_LIB=/usr/local/lib
      # export LUAJIT_INC=/usr/local/include/luajit-2.0
    4. ngx_cache_purge模块(Nginx清除缓存模块)
      切换到上级目录  # cd ..
      下载 # wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
      解压 # tar -zxvf ngx_cache_purge-2.3.tar.gz
    5. 下载Nginx源码包
      # wget http://nginx.org/download/nginx-1.9.9.tar.gz
    6. 解压Nginx源码包
      # tar -zxvf nginx-1.9.9.tar.gz && cd 
      nginx-1.9.9
    7. 编译安装Nginx
      # ./configure
          --sbin-path=/usr/local/nginx/nginx
          --conf-path=/usr/local/nginx/nginx.conf
          --pid-path=/var/run/nginx.pid
          --user=nginx
          --group=nginx
          --with-http_ssl_module
          --with-http_stub_status_module
          --with-threads
          --with-stream
          --with-stream_ssl_module
          --with-ipv6
          --with-http_v2_module
          --add-module=../ngx_cache_purge-2.3
          --add-module=../lua-nginx-module-0.9.20rc2
          --add-module=../ngx_devel_kit-0.2.19
          --with-ld-opt='-ljemalloc'
          --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

      # make -j2 && make install
    8. 创建Nginx启动脚本
      # vi /etc/init.d/nginx
      #!/bin/sh
      #
      # nginx - this script starts and stops the nginx daemon
      #
      # chkconfig:   - 85 15
      # description:  NGINX is an HTTP(S) server, HTTP(S) reverse 
      #               proxy and IMAP/POP3 proxy server
      # processname: nginx
      # config:      /etc/nginx/nginx.conf
      # config:      /etc/sysconfig/nginx
      # pidfile:     /var/run/nginx.pid
      
      # Source function library.
      . /etc/rc.d/init.d/functions
      
      # Source networking configuration.
      . /etc/sysconfig/network
      
      # Check that networking is up.
      [ "$NETWORKING" = "no" ] && exit 0
      
      nginx="/usr/local/nginx/nginx"
      prog=$(basename $nginx)
      
      NGINX_CONF_FILE="/usr/local/nginx/nginx.conf"
      
      [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
      
      lockfile=/var/lock/subsys/nginx
      
      make_dirs() {
         # make required directories
         user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
         if [ -z "`grep $user /etc/passwd`" ]; then
             useradd -r -M -s /sbin/nologin $user
         fi
         options=`$nginx -V 2>&1 | grep 'configure arguments:'`
         for opt in $options; do
             if [ `echo $opt | grep '.*-temp-path'` ]; then
                 value=`echo $opt | cut -d "=" -f 2`
                 if [ ! -d "$value" ]; then
                     # echo "creating" $value
                     mkdir -p $value && chown -R $user $value
                 fi
             fi
         done
      }
      
      start() {
          [ -x $nginx ] || exit 5
          [ -f $NGINX_CONF_FILE ] || exit 6
          make_dirs
          echo -n $"Starting $prog: "
          daemon $nginx -c $NGINX_CONF_FILE
          retval=$?
          echo
          [ $retval -eq 0 ] && touch $lockfile
          return $retval
      }
      
      stop() {
          echo -n $"Stopping $prog: "
          killproc $prog -QUIT
          retval=$?
          echo
          [ $retval -eq 0 ] && rm -f $lockfile
          return $retval
      }
      
      restart() {
          configtest || return $?
          stop
          sleep 1
          start
      }
      
      reload() {
          configtest || return $?
          echo -n $"Reloading $prog: "
          killproc $nginx -HUP
          RETVAL=$?
          echo
      }
      
      force_reload() {
          restart
      }
      
      configtest() {
        $nginx -t -c $NGINX_CONF_FILE
      }
      
      rh_status() {
          status $prog
      }
      
      rh_status_q() {
          rh_status >/dev/null 2>&1
      }
      
      case "$1" in
          start)
              rh_status_q && exit 0
              $1
              ;;
          stop)
              rh_status_q || exit 0
              $1
              ;;
          restart|configtest)
              $1
              ;;
          reload)
              rh_status_q || exit 7
              $1
              ;;
          force-reload)
              force_reload
              ;;
          status)
              rh_status
              ;;
          condrestart|try-restart)
              rh_status_q || exit 0
                  ;;
          *)
              echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
              exit 2
      esac
    9. 设置Nginx服务开机自启动
      # chmod +x /etc/init.d/nginx
      # chkconfig nginx on
    10. 开通防火墙
      # firewall-cmd --permanent --add-service={http,https}
      # firewall-cmd --reload
    11. 新建网站根目录并更改SELinux类型
      # mkdir -p /data/www && chcon -t httpd_sys_content_t -R /data/www/
    12. 创建conf目录,用于存放Nginx各类配置文件
      # mkdir /usr/local/nginx/conf
    13. 创建gzip.conf配置文件
      # vi /usr/local/nginx/conf/gzip.conf
      gzip               on;
      gzip_min_length    1k;
      gzip_buffers       4 16k;
      gzip_http_version  1.0;
      gzip_comp_level    3;
      gzip_proxied       any;
      gzip_vary          on;
      gzip_disable       "MSIE [1-6].";
      gzip_types
          text/plain
          application/x-javascript
          text/css
          application/xml
          text/javascript
          application/x-httpd-php
          image/jpeg
          image/gif
          image/png;
    14. 创建no-default配置文件
      # vi /usr/local/nginx/conf/no-default.conf
      # Drop requests for unknown hosts
      #
      # If no default server is defined, nginx will use the first found server.
      # To prevent host header attacks, or other potential problems when an unknown 
      # servername is used in a request, it's recommended to drop the request 
      # returning 444 "no response".
      
      server {
        listen 80 default_server;
        return 444;
      }
    15. 创建example.com配置文件(假设example.com的站点在这台服务器上)
      # vi /usr/local/nginx/conf/example.com.conf
      server {
          listen [::]:80;
          listen 80;
      
          server_name www.example.com;
          return 301 $scheme://example.com$request_uri;
      }
      
      server {
          listen [::]:80;
          listen 80;
      
          server_name example.com;
          root /data/www/example.com;
      
          error_page 404 /404.html;
      
          location ~ .php$ {
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
      
          location ~ .jsp$ {
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass http://127.0.0.1:8080;
          }
      }
    16. 修改Nginx配置文件
      # vi /usr/local/nginx/nginx.conf
      user  nginx nginx;
      worker_processes  auto;
      
      error_log  logs/error.log  warn;
      
      pid  /var/run/nginx.pid;
      
      worker_rlimit_nofile  8192;
      
      events {
          worker_connections  8000;
      }
      
      http {
          include       mime.types;
          default_type  application/octet-stream;
      
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
      
          access_log  logs/access.log  main;
      
          charset  utf-8;
          index    index.html index.htm index.php index.jsp;
      
          sendfile       on;
          tcp_nopush     on;
          server_tokens  off;
      
          keepalive_requests  20;
          keepalive_timeout   65;
      
          include  conf/*.conf;
      }
    17. 启动Nginx
      # service nginx start

    备注:

    详细编译选项:

    ./configure 
    --prefix=/etc/nginx 
    --sbin-path=/usr/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-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 
    --user=nginx 
    --group=nginx 
    --with-http_ssl_module 
    --with-http_realip_module 
    --with-http_addition_module 
    --with-http_sub_module 
    --with-http_dav_module 
    --with-http_flv_module 
    --with-http_mp4_module 
    --with-http_gunzip_module 
    --with-http_gzip_static_module 
    --with-http_random_index_module 
    --with-http_secure_link_module 
    --with-http_stub_status_module 
    --with-http_auth_request_module 
    --with-mail 
    --with-mail_ssl_module 
    --with-file-aio 
    --with-ipv6 
    --with-http_spdy_module 
    --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

    yum安装Nginx

    1. 添加Nginx源
      # wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
      # rpm -Uvh nginx-release-centos-7-0.el7.ngx.noarch.rpm
    2. 安装Nginx
      # yum install nginx

    对应不同系统的RPM包
    RedHat6(64bit)    http://nginx.org/packages/rhel/6/x86_64/RPMS/nginx-1.8.0-1.el6.ngx.x86_64.rpm
    CentOS7(64bit)    http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.8.0-1.el7.ngx.x86_64.rpm

  • 相关阅读:
    Redis使用小结
    MongoDB中的变更通知
    发布一个从迅雷下载字幕的小工具
    在Windows下通过netsh命令实现端口映射
    .net core在Linux ARM板上运行
    通过WinAPI播放PCM声音
    spring中scope作用域(转)
    Spring <context:annotation-config/> 解说(转)
    Jenkins+Maven+SVN快速搭建持续集成环境(转)
    maven中跳过单元测试(转)
  • 原文地址:https://www.cnblogs.com/edward2013/p/5020874.html
Copyright © 2011-2022 走看看