360网站管家 发表于 2015-10-13 12:42:32

Linux系统下编译安装Nginx服务器

http://sourceforge.net/projects/pcre/files/pcre   (PCRE正则表达式库官方网址)

安装NGINX前要先安装PCRE正则表达式库:
./configure --prefix=/usr/local/pcre 出现以下错误 (一般./configure即可, 笔者这里是直接./configure命令)
configure: error: You need a C++ compiler for C++support.(解决办法: yum install -y gcc gcc-c++)
make
make install
下面开始安装NGINX:
安装NGINX:
yum install libtool
yum install zlib zlib-devel
yum install openssl
./configure --prefix=/usr/local/nginx--with-http_stub_status_module
make
make install
检查是否安装成功:
cd/usr/local/nginx/sbin
./nginx -t
./nginx: error while loading shared libraries: libpcre.so.1: cannotopen shared object file: No such file or directory
从错误看出是缺少lib文件导致,进一步查看下:
ldd $(which /usr/local/nginx/sbin/nginx)

可以看出 libpcre.so.1 => not found并没有找到,进入/lib目录中手动链接下(这里的/lib目录指的是系统的根目录下面的lib目录)
32位系统 mysqlslave lib]# ln -s /usr/local/lib/libpcre.so.1/lib
64位系统 # ln -s /usr/local/lib/libpcre.so.1/lib64
结果显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.confsyntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test issuccessful
启动nginx:
cd /usr/local/nginx/sbin 目录下面 输入 ./nginx启动nginx
ps -ef|grep nginx

netstat -nap|grep :80//查看80端口被哪个进程占用
service iptablesstop//把防火墙打开,否则nginx不能被访问
--------------------------------------------------------------------------------------------------
安装完nginx后需要配置监听的IP地址和端口,笔者这里是针对memcached+tomcat6做的配置,进入nginx的安装目录,笔者这里是/usr/local/nginx/conf这个目录,打开nginx.conf这个文件做如下修改:
# less nginx.conf
#usernobody;
#user www www;
worker_processes1;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
#pid       logs/nginx.pid;
pid      /usr/local/nginx/logs/nginx.pid;
events {
    use epoll;
    worker_connections1024;
}
http {
    include      mime.types;
    default_type application/octet-stream;
   
    include      /usr/local/nginx/conf/proxy.conf;#一定要指向代理文件
    #log_formatmain '$remote_addr - $remote_user [$time_local] "$request"'
    #                '$status $body_bytes_sent "$http_referer" '
    #                '"$http_user_agent" "$http_x_forwarded_for"';
    #access_loglogs/access.log main;
    sendfile       on;
    #tcp_nopush    on;
    tcp_nopush    on;
    #keepalive_timeout0;
    keepalive_timeout65;
    #gzipon;
   upstream backend {
      #   ip_hash;
       server192.168.0.93:8080;
       server192.168.0.92:8080;
      #jvm_route$cookie_JSESSIONID|sessionid reverse;
    }
   server {
       listen   80;
       server_name 192.168.0.93;
      #charsetkoi8-r;
       charsetutf-8;
      #access_log logs/host.access.logmain;
      location / {
         root   html;
         indexindex.html index.htm;
          proxy_pass http://backend;
         #proxy_redirect default;
         proxy_set_header XReal-IP $remote_addr;
         proxy_connect_timeout 10;
         #client_max_body_size 100m;
      }
      #error_page 404             /404.html;
      # redirectserver error pages to the static page /50x.html
      #
      
      location~^/(WEB-INF)/ {
          deny all;
      }
      error_page500 502 503 504/50x.html;
      location =/50x.html {
         root   html;
      }
      # proxy the PHPscripts to Apache listening on 127.0.0.1:80
      #
      #location ~\.php$ {
      #   proxy_pass   http://127.0.0.1;
      #}
      # pass the PHPscripts to FastCGI server listening on 127.0.0.1:9000
      #
      #location ~\.php$ {
      #   root          html;
      #   fastcgi_pass   127.0.0.1:9000;
      #   fastcgi_indexindex.php;
      #   fastcgi_paramSCRIPT_FILENAME /scripts$fastcgi_script_name;
      #   include       fastcgi_params;
      #}
      # deny access to.htaccess files, if Apache's document root
      # concurs withnginx's one
      #
      #location ~/\.ht {
      #   denyall;
      #}
    }
    # another virtual host using mix of IP-,name-, and port-based configuration
    #
    #server {
    #    listen      8000;
    #    listen      somename:8080;
    #    server_name somenamealiasanother.alias;
    #    location /{
    #       root   html;
    #       indexindex.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen      443;
    #    server_name localhost;
    #    ssl                on;
    #    ssl_certificate   cert.pem;
    #   ssl_certificate_keycert.key;
    #   ssl_session_timeout5m;
    #    ssl_protocols SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers HIGH:!aNULL:!MD5;
    #   ssl_prefer_server_ciphers   on;
    #    location /{
    #       root   html;
    #       indexindex.html index.htm;
    #    }
    #}
}
还需要在/usr/local/nginx/conf目录下手动建立proxy.conf文件,内容如下:
proxy_redirect         off;
proxy_set_header       Host $host;
proxy_set_header       X-Real-IP $remote_addr;#获取真实IP
#proxy_set_header      X-Forwarded-For   $proxy_add_x_forwarded_for;#获取代理者的真实ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers          4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
--------------------------------------------------------------------------------------------------
最后的/usr/local/nginx/conf目录下文件截图如下:

--------------------------------------------------------------------------------------------------
最后再多提一句日志的问题,nginx的默认日志目录为/usr/local/nginx/logs目录,这个目录下面有3个文件,分别是access.log,error.log和nginx.pid,其中error.log是错误日志,如果在启动nginx时遇到错误可以到这里来查看错误问题。
页: [1]
查看完整版本: Linux系统下编译安装Nginx服务器