Nginx 安装及配置
简介:
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Ngnix是一个负载均衡服务器,其特点是占有内存少,并发能力强
nginx一般用来做静态服务器,本身不具备动态解析功能,需要结合其它插件或软件使用,如tomcat,php等,在性能方面:如果,不做集群调优等情况下,tomcat(tomcat是动态服务器,需要依赖于jdk)一般支持并发100个左右,而nginx在静态方面可以达到几万并发。
nginx(下载:http://nginx.org/en/download.html)nginx-1.9.3.tar.gz
模块依赖性
gzip模块需要 zlib 库( 下载: http://www.zlib.net/)zlib-1.2.8.tar.gz :
gzip可以加快我们网站打开的速度,原理是通过服务器压缩,客户端浏览器快速解压,大大的节省了网站的流量,提高了网页打开的速度,
但与此同时也会增加cpu的开销。
rewrite模块需要 pcre 库 ( 下载: http://www.pcre.org/) pcre-8.38.tar.gz :
rewrite主要时实现url的重写,通过pcre的perl兼容正则表达式进行匹配,通过rewrite规则,可实现规范的URL,或者动态的URL地址需要伪装成静态的HTML,便于搜索引擎抓到,旧URL可以通过rewrite跳转到新URL上。
ssl 功能需要openssl库( 下载: http://www.openssl.org/ )openssl-1.1.0.tar.gz:
openssl可以生成数字证书,自带功能加密功能,增加nginx的ssl安全性。
#安装:
sudo su切换到root用户
1、下载完包后,我们把它们移动到一个nginx的文件夹里(mv openssl-1.1.0.tar.gz nginx-1.9.3.tar.gz pcre-8.38.tar.gz zlib-1.2.8.tar.gz /opt/nginx),再解压(tar -zxvf openssl-1.1.0.tar.gz nginx-1.9.3.tar.gz pcre-8.38.tar.gz zlib-1.2.8.tar.gz)
2、安装pcre(cd pcre-8.38 ./configure make&make install)
3、安装zlib(cd zlib-1.2.8 ./configure make&make install)
4、安装openssl(cd openssl-1.1.0 ./config make&make install)
5、安装nginx(cd nginx-1.9.3 ./configure make&make install) 执行./configure如果提示找不到上面安装的相关模块时,则可以使用一下命令
用–with-openssl=
/nginx-1.9.3 在make&make install, 如果编译通过,则默认安装即可。
使用:(注意,nignx安装后的使用目录是/usr/local/nginx/)下面的说明用开始安装的目录也行。
我们切换到这个目录下,通过./nginx启动nginx服务器,浏览器输入http://localhost,显示以下信息,则安装成功。
如果要要重启nginx,使用./nginx -s reload即可
关闭方式有以下几种
1、直接输入 ./nginx -s stop
2、 查询nginx主进程号
ps -ef | grep nginx
从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx
若nginx.conf配置了pid文件路径,如果没有,则在logs目录下
kill -信号类型 /usr/local/nginx/logs/nginx.pid
判断配置文件是否正确可用./nginx -t
配置文件介绍:
除了nginx.conf,其余配置文件,一般只需要使用默认提供即可。
nginx.conf
在conf文件下的nginx.conf时主要配置文件,其内容如上图:
worker_process表示工作进程的数量,一般设置为cpu的核数(上图没截取到)
worker_connections表示每个工作进程的最大连接数(上图没截取到)
server{}块定义了虚拟主机
listener 监听端口,默认为80
server_name监听的域名
location{}是用来匹配URI进行配置,URI即语法中的’/uri/‘。location{}配置任何查询,因为
素有请求都以/开头。
root 指定对应uri的资源查找路径,这里html为相对路径,完整路径为/opt/nginx/nginx-1.9.3/html
index指定首页index文件的名称,可用配置多个,以空格分开,如有多个,按配置顺序查找。
error_page服务器发生错误请求时候,它会自动根据错误状态码跳转到相应的50页面。
mime.types 定义的文件扩展名与文件类型映射关系
fastcgi_params ginx配置Fastcgi解析时会调用fastcgi_params配置文件来传递服务器变量,这样CGI中可以获取到这些变量的值。默认传递以下变量:
uwsgi_params 与fastcgi_params一样,传递哪些服务器变量,只有前缀不一样,以uwsgi_param开始而非fastcgi_param。
scgi_params 与fastcgi_params一样,传递哪些服务器变量,只有前缀不一样,以uwsgi_param开始而非fastcgi_param。
koi-utf、koi-win、win-utf
这三个文件都是与编码转换映射文件,用于在输出内容到客户端时,将一种编码转换到另一种编码。
koi-win: charset_map koi8-r < – > windows-1251
koi-utf: charset_map koi8-r < – > utf-8
win-utf: charset_map windows-1251 < – > utf-8
Redis 的安装
wget http://download.redis.io/releases/redis-2.8.9.tar.gz 下载软件安装包
tar -zxvf redis-2.8.9.tar.gz -c /opt/nginx 解压到指定的目录
cd /redis-2.8.9 切换到该目录下
sudo make & make install安装redis
软件安装完毕,接下来我们可以测试是否安装成功
Tomcat + Redis + Nginx集群配置
1、wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.tar.gz
2、tar -zxvf apache-tomcat-7.0.70.tar.gz , mv apache-tomcat-7.0.70 tomcat1
3 、tar -zxvf apache-tomcat-7.0.70.tar.gz ,mv apache-tomcat-7.0.70 tomcat2
4、tar -zxvf apache-tomcat-7.0.70.tar.gz, mv apache-tomcat-7.0.70 tomcat3
5、修改tomcat2里的端口依次为8006 8081 8010 修改tomcat3里的端口依次为8007 8082 8011
6、之后我们创建一个文件夹test(mkdir test) 再创建一个index(vim index.jsp)内容如下
|
|
7、之后分别修改tomcat1 tomcat2 tomcat3的server.xml,在
|
|
8、cd /usr/local/nginx/conf切换到nignx安装后的目录下,修改nginx.conf(vim nginx.conf)配置文件
|
|
9、cd ../sbin/ 切换到启动命令文件夹下,执行sudo ./nginx -t测试配置文件配置是否有误如果提示成功,我们分别启动tomcat1 tomcat2 tomcat3,
再执行sudo ./nginx 启动nginx,然后访问http://localhost,不断f5刷新,可以看到访问被分配到不同的tomcat,这样就起到负载均衡的作用,如果
我们尝试把tomcat1关掉,访问就被分配到剩下的两个tomcat下,但是有一个问题,就是每次访问不到不同的tomcat,session就发生了变化,
这时后我们可以采用redis来做session共享。
10、Tomcat 结合 Redis做session共享需要jedis-2.8.1.jar commons-pool2-2.4.2.jar tomcat-redis-session-manager-2.0.0.jar这几个包,
jedis-2.8.1.jar commons-pool2-2.4.2.jar 可以从http://mvnrepository.com/ 上下载, tomcat-redis-session-manager-2.0.0.jar这个包比较
麻烦,需要自己用gradle编译,因为tomcat-redis-session-manager的作者把源码开放到git上,打包方式是gradle,编译方式如下:
1、 如果自己系统上没有gradle,请先安装gradle, sudo apt-get install gradle,
2、git clone https://github.com/jcoleman/tomcat-redis-session-manager.git
3、修改build.gradle,在signing节点中添加required = false以及删掉或注释掉文件中的sonatype的repository代码即可
4、执行gradle build,编译结束后生成build,在里面的libs文件夹下可以找到 tomcat-redis-session-manager-2.0.0.jar这个包
11、分别把jedis-2.8.1.jar commons-pool2-2.4.2.jar tomcat-redis-session-manager-2.0.0.jar复制到 tomcat1 tomct2 tomcat3的libs目录下,
再一次修改tomcat1 tomcat2 tomcat3的conf里的 context.xml 文件,在里头的context节点里增加如下内容
|
|
11、最后,启动redis,tomcat1,tomcat2,tomcat3,nginx,访问http://localhost,不断按f5刷新,可以看到都是同样内容,除非关闭浏览器再重新启动才能看到session id的变化,说明已经实现了 tomcat集群和session共享。