天天看点

nginx编译安装和一键安装脚本

编译安装nginx

1.安装依赖包

<code>yum -y </code><code>install</code> <code>openssl openssl-devel zlibzlib-devel gcc gcc-c++</code>

2.安装pcre

安装nginx所需要的pcre库(为了使nginx支持http rewrite模块)

<code>mkdir</code> <code>-p</code><code>/home/darren/tools</code>

<code>cd</code> <code>/home/darren/tools/</code>

<code>wget </code><code>ftp</code><code>:</code><code>//ftp</code><code>.csx.cam.ac.uk</code><code>/pub/software/programming/pcre/pcre-8</code><code>.37.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxf pcre-8.37.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>pcre-8.37</code>

<code>.</code><code>/configure</code>

<code>make</code> <code>&amp;&amp; makeinstall</code>

<code>cd</code> <code>..</code>

<code>如果安装完以后需要重新安装pcre,则需要</code>

<code>rm</code> <code>-rf</code><code>/usr/local/share/man/man3/pcre</code><code>*</code>

3.安装nginx

创建nginx用户

<code>groupaddnginx</code>

<code>useradd</code> <code>nginx-s </code><code>/sbin/nologin</code> <code>-M</code>

<code>wget http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.8.1.</code><code>tar</code><code>.gz</code>

<code>wgethttp:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.2.6.</code><code>tar</code><code>.gz</code>

<code>tarzxf nginx-1.8.1.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>nginx-1.8.1</code>

<code>.</code><code>/configure</code> <code>--user=nginx --group=nginx --prefix=</code><code>/usr/local/nginx</code> <code>--with-http_stub_status_module --with-http_ssl_module</code>

检查nginx安装

<code>/usr/local/nginx/sbin/nginx</code> <code>-</code><code>v</code>

<code>#提示错误:/usr/local/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file ordirectory</code>

<code>yum </code><code>install</code> <code>pcre -y 则不会出现这种错误</code>

<code>find</code> <code>/-name</code> <code>libpcre.so.1</code>

<code>/usr/local/lib/libpcre</code><code>.so.1</code>

<code>echo</code> <code>'/usr/local/lib/'</code><code>&gt;&gt;</code><code>/etc/ld</code><code>.so.conf</code>

<code>ldconfig</code>

检查语法

<code>/usr/local/nginx/sbin/nginx</code> <code>-t</code>

启动nginx服务

<code>/usr/local/nginx/sbin/nginx</code>

<code>netstat</code> <code>-lnt</code>

浏览器中输入10.1.1.1测试

附一个一键安装脚本:

<code>#!/bin/sh</code>

<code>#for one install nginx</code>

<code>#for wangjiadongge</code>

<code> </code> 

<code>#install centos source</code>

<code>rpm -Uvh http:</code><code>//mirrors</code><code>.yun-idc.com</code><code>/epel/6Server/x86_64/epel-release-6-8</code><code>.noarch.rpm</code>

<code>#install plugin</code>

<code>yum </code><code>install</code> <code>gcc gcc-c++ openssl-devel pcre-devel zlib-devel -y</code>

<code>#create user and group</code>

<code>groupadd nginx </code>

<code>useradd</code> <code>nginx -g nginx -s </code><code>/sbin/nologin</code> <code>-M</code>

<code>#cd /tmp/</code>

<code>[ -d </code><code>/tmp/download</code> <code>] || </code><code>mkdir</code> <code>-p </code><code>/tmp/download</code>

<code>cd</code> <code>/tmp/download/</code>

<code>#wget nginx from www.nginx.org</code>

<code>wget http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.8.1.</code><code>tar</code><code>.gz </code>

<code>tar</code> <code>zxvf nginx-1.8.1.</code><code>tar</code><code>.gz</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/nginx</code> <code>--user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>chown</code> <code>-R nginx.nginx </code><code>/usr/local/nginx/</code>

<code>echo</code> <code>"/usr/local/nginx/sbin/nginx"</code> <code>&gt;&gt;</code><code>/etc/rc</code><code>.</code><code>local</code> 

<code>#end</code>

#nginx负载均衡脚本

<code>mv</code> <code>/usr/local/nginx/conf/nginx</code><code>.conf </code><code>/usr/local/nginx/conf/nginx</code><code>.conf.bak</code>

<code>echo</code> <code>"</code>

<code>user  nginx;</code>

<code>worker_processes  4;</code>

<code>events {</code>

<code>    </code><code>use epoll;</code>

<code>    </code><code>worker_connections  10240;</code>

<code>}</code>

<code>http {</code>

<code>    </code><code>include       mime.types;</code>

<code>    </code><code>default_type  application</code><code>/octet-stream</code><code>;</code>

<code>    </code><code>log_format  main  </code><code>'$remote_addr - $remote_user [$time_local] "$request" '</code>

<code>                      </code><code>'$status $body_bytes_sent "$http_referer" '</code>

<code>                      </code><code>'"$http_user_agent" "$http_x_forwarded_for"'</code><code>;</code>

<code>    </code><code>access_log  logs</code><code>/access</code><code>.log  main;</code>

<code>    </code><code>sendfile        on;  </code>

<code>    </code><code>keepalive_timeout  120;</code>

<code>    </code><code>include conf.d/*.conf;</code>

<code>" &gt;&gt;</code><code>/usr/local/nginx/conf/nginx</code><code>.conf</code>

<code>mkdir</code> <code>/usr/local/nginx/conf/conf</code><code>.d</code>

<code>server {</code>

<code>        </code><code>listen       80;</code>

<code>        </code><code>server_name  login.xiaodongge.com;</code>

<code>        </code><code>access_log   logs</code><code>/host</code><code>.access.log  main;</code>

<code>        </code><code>location / {</code>

<code>            </code><code>proxy_pass http:</code><code>//loginserver</code><code>;</code>

<code>        </code><code>}</code>

<code>upstream loginserver {</code>

<code>        </code><code>server 10.86.10.21:8300;</code>

<code>        </code><code>server 10.86.10.22:8300;</code>

<code>        </code><code>server 10.86.10.23:8300;</code>

<code>    </code><code>}</code>

解释:nginx做负载均衡默认是轮询负载,下面逐一来看:

<code>#默认的负载方式,轮询</code>

<code>    </code><code>upstream myapp1 {</code>

<code>        </code><code>server srv1.example.com;</code>

<code>        </code><code>server srv2.example.com;</code>

<code>        </code><code>server srv3.example.com;</code>

<code>    </code><code>server {</code>

<code>        </code><code>listen 80;</code>

<code>            </code><code>proxy_pass http:</code><code>//myapp1</code><code>;</code>

<code>#最小连接数,哪台服务器连接的最少就向哪台服务器上负载</code>

<code>upstream myapp1 {</code>

<code>        </code><code>least_conn;</code>

<code>#ip hash如果一个连接建立,就会始终和这台服务器连接</code>

<code>    </code><code>ip_hash;</code>

<code>    </code><code>server srv1.example.com;</code>

<code>    </code><code>server srv2.example.com;</code>

<code>    </code><code>server srv3.example.com;</code>

<code>#权重,自定义设置哪台服务器负载的多</code>

<code>  </code><code>upstream myapp1 {</code>

<code>        </code><code>server srv1.example.com weight=3;</code>

版权声明:原创作品,谢绝转载。否则将追究法律责任

本文转自 王家东哥 51CTO博客,原文链接:http://blog.51cto.com/xiaodongge/1919496

继续阅读