安装时可借鉴的博客:https://blog.csdn.net/wxyjuly/article/details/79443432
C7:设置自动启动:https://blog.csdn.net/eakom/article/details/79393500
Nginx是干什么用的
Nginx ("engine x") 是一个高性能的HTTP和反向代理 服务器,特点是占有内存少,并发能力强,事实上nginx的 并发能力确实在同类型的网页服务器中表现较好,中国 大陆使用nginx网站用户有:百度、京东、新浪、网易、 腾讯、淘宝等。
作为web服务器
Nginx可以作为静态页面的web服务器,同时还支持CGI协 议的动态语言,比如perl、php等。但是不支持java。
Java程序只能通过与tomcat配合完成。
安装nginx
1.1.安装pcre
解压缩pcre-xx.tar.gz包
进入解压缩目录,执行./configure
如果提示,需要提前安装gcc++ 联网:yum install gcc-c++
无网:进入安装光盘目录的软件包 (/media/CentOSXX/Package)执行
rpm -ivh libstdc++-devel-4.4.7-17.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.7-17.el6.x86_64.rpm
./configure完成后,回到pcre目录下执行make,再执行make install
2. 安装openssl
1、 解压缩openssl-xx.tar.gz包。
2、 进入解压缩目录,执行./config
3、 make && make install
3. 安装zlib
1、 解压缩zlib-xx.tar.gz包。
2、 进入解压缩目录,执行./configure。
3、 make && make install
4. 安装nginx
1、 解压缩nginx-xx.tar.gz包。
2、 进入解压缩目录,执行./configure。
3、 make && make install
nginx无法启动:
libpcre.so.1/libpcre.so.0: cannot open shared object file解决办法
解决方法:
ln -s /usr/local/lib/libpcre.so.1 /lib64
attention:只有lib表示的是32位的操作系统
lib64表示的是64位的操作系统
32位系统则:
ln -s /usr/local/lib/libpcre.so.1 /lib
启动nginx
在/usr/local/nginx/sbin目录下 执行 ./nginx
关闭命令
在/usr/local/nginx/sbin目录下 执行 ./nginx -s stop
重新加载命令
在/usr/local/nginx/sbin目录下 执行 ./nginx -s reload
设置nginx为自启动服务
修改linux 启动脚本/etc/rc.d/rc 加入 :
/usr/local/nginx/sbin/nginx
结合redis配置负载均衡
1、首先准备两个同时启动的Tomcat
2、拷贝对应jar包到tomcat下lib包中
commons-pool2-2.0.jar
tomcat-redis-session-manager1.2.jar
jedis-2.5.2
attention:
插入上面的jar包的时候需要放入在tomcat文件下面的lib的目录下面才可以
3、修改tomcat的下content.xml(加到最下方)
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValv
e"/>
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1"
port="6379"
database="0" maxInactiveInterval="60" />
这里的host为部署nginx的主机的ip
4、启动redis
5、配置nginx.conf
注意:在以后的运行的过程中需要将ip_hash注释掉,这个选项的含义是 获取ip地址的hash值,同一个地址的hash值是相同的启动nginx之后不会 进行tc的切换
nginx的原理与配置
master&worker
master-workers的机制的好处
首先,对于每个worker进程来说,独立的进程,不需要加锁, 所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方 便很多。
其次,采用独立的进程,可以让互相之间不会影响,一个进程 退出后,其它进程还在工作,服务不会中断,master进程则很快启 动新的worker进程。当然,worker进程的异常退出,肯定是程序有 bug了,异常退出,会导致当前worker上的所有请求失败,不过不 会影响到所有请求,所以降低了风险。
需要设置多少个worker
Nginx 同redis类似都采用了io多路复用机制,每个 worker都是一个独立的进程,但每个进程里只有一个主线 程,通过异步非阻塞的方式来处理请求, 即使是千上万个 请求也不在话下。每个worker的线程可以把一个cpu的性 能发挥到极致。
所以worker数和服务器的cpu数相等是最为适宜的。设 少了会浪费cpu,设多了会造成cpu频繁切换上下文带来的 损耗。
连接数worker_connection
• 这个值是表示每个worker进程所能建立连接的最大值,所以,一个nginx 能建立的最大连接数,应该是worker_connections * worker_processes。 当然,这里说的是最大连接数,对于HTTP请求本地资源来说,能够支持的 最大并发数量是worker_connections * worker_processes,如果是支持 http1.1的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数 是: worker_connections * worker_processes /2,而如果是HTTP作 为反向代理来说,最大并发数量应该是worker_connections * worker_processes/4。因为作为反向代理服务器,每个并发会建立与客 户端的连接和与后端服务的连接,会占用两个连接
nginx.conf 结构