Nginx目录标题
Nginx笔记
参考
入门博客:https://blog.csdn.net/qq_29677867/article/details/90112120
https://www.cnblogs.com/biglittleant/p/8979966.html
Linux下Nginx+Tomcat负载均衡和动静分离配置要点
Nginx的入门介绍
什么是Nginx
Nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx可以提供的服务
- web 服务.
- 负载均衡 (反向代理)
- web cache(web 缓存)
Nginx 的优点
- 高并发。静态小文件
- 占用资源少。2万并发、10个线程,内存消耗几百M。
- 功能种类比较多。web,cache,proxy。每一个功能都不是特别强。
- 支持epoll模型,使得nginx可以支持高并发。
- nginx 配合动态服务和Apache有区别。(FASTCGI 接口)
- 利用nginx可以对IP限速,可以限制连接数。
- 配置简单,更灵活。
Nginx应用场合
- 静态服务器。(图片,视频服务)另一个lighttpd。并发几万,html,js,css,flv,jpg,gif等。
- 动态服务,nginx——fastcgi 的方式运行PHP,jsp。(PHP并发在500-1500,MySQL 并发在300-1500)。
- 反向代理,负载均衡。日pv2000W以下,都可以直接用nginx做代理。
- 缓存服务。类似 SQUID,VARNISH。
主流Web服务产品对比说明
Apache-特性
- 2.2版本本身稳定强大,据官方说:其2.4版本性能更强。
- prefork模式取消了进程创建开销,性能很高。
- 处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在与Apache本身。
- 高并发时消耗系统资源相对多一些。
- 基于传统的select模型。
- 扩展库,DSO方法。
Nginx-特性
- 基于异步IO模型,(epoll,kqueue),性能强,能够支持上万并发。
- 对小文件支持很好,性能很高(限静态小文件1M)。
- 代码优美,扩展库必须编译进主程序。
- 消耗代码资源比较低。
- lighttpd(百度贴吧,豆瓣)
- 基于异步IO模式,性能和nginx相近。
- 扩展库是SO模式,比nginx要灵活。
8.通过差距(mod_secdownload)可实现文件URL地址加密。
web服务产品性能对比测试
静态数据性能对比
- 处理静态文件Apache性能比nginx和lighttpd要差。
- nginx在处理小文件优势明显。
- 处理静态小文件(小于1M),nginx和lighttpd比Apache更有优势,lighttpd最强。
动态数据性能对比
- 处理动态内容三者相差不大,主要取决于PHP和数据库的压力。
- 当处理动态数据时,三者差距不大,从测试结果看,Apache更有优势一点。这是因为处理动态数据能力取决于PHP和后端数据的提供服务能力。也就是说瓶颈不在web服务器上。
- 一般PHP引擎支持的并发参考值300-1000,JAVA引擎并发300-1000,数据库的并发300-1000.
为什么Nginx的总体性能比Apache高。
- nginx使用最新的epoll和kqueue网络IO模型,而Apache使用床头的select模式。
- 目前Linux下能够承受高并发访问的squid、Memcached 都采用的是epoll网络IO模型。
如何选择WEB服务器
静态业务:高并发、采用nginx,lighttpd,根据自己的掌握程度或公司的要求。
动态业务:采用nginx和Apache均可。
既有静态业务又有动态业务:nginx或Apache,不要多选要单选。
动态业务可以由前端代理(haproxy),根据页面元素的类型,向后转发相应的服务器进行处理。
思想:我们工作都不要追求一步到位,满足需求的前提下,先用,然后逐步完善。
提示:nginx做web(Apache,lighttpd)、反向代理(haproxy,lvs,nat)及缓存服务器(squid)也是不错的。
最终建议:对外的业务nginx,对内的业务Apache(yum httpd mysql-server php)。
入门操作
Nginx的安装
1、先安装Nginx依赖的包
Nginx是C语言开发,建议在linux上运行,本教程使用Centos7作为安装环境。
- gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
- PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。Nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
- zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
- openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
综上所述,即运行以下四条命令:
[root@master ~]# yum install gcc-c++
[root@master ~]# yum install -y pcre pcre-devel
[root@master ~]# yum install -y zlib zlib-devel
[root@master ~]# yum install -y openssl openssl-devel
或者:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
2、下载并上传安装包
下载地址:http://nginx.org/en/download.html 下载nginx1.8.1版本
或者直接用wget下载:
wget http://nginx.org/en/download.html/nginx-1.8.1.tar.gz
3、解压
tar -zvxf nginx-1.8.1.tar.gz -C /usr/local
4、进入到Nginx的安装目录进行configure编译
先创建相应的文件夹,为后续编译做准备
[root@master nginx-1.8.1]# cd /var
[root@master var]# mkdir temp
[root@master var]# cd temp
[root@master temp]# ls
[root@master temp]# mkdir nginx
[root@master temp]# ls
nginx
回到Nginx目录下进行编译
[root@master ~]# cd /usr/local/nginx-1.8.1/
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建/temp以及/temp/nginx目录
编译完成结果:
–prefix=/usr/local/nginx:指定nginx安装路径
–pid-path=/var/run/nginx/nginx.pid: 设置nginx.pid
将存储主进程的进程ID的文件的名称。安装后,可以nginx.conf
使用PID指令随时在配置文件中更改文件名。默认情况下该文件被命名 prefix/logs/nginx.pid
。
–lock-path=/var/lock/nginx.lock:为锁文件的名称设置前缀。安装完成后,可以nginx.conf
使用LOCK_FILE指令随时在配置文件中更改该值。默认值是 prefix`/logs/nginx.lock```
–error-log-path=/var/log/nginx/error.log:设置主要错误的名称,警告和诊断文件。安装完成后,可以nginx.conf
使用的的error_log指令始终在配置文件中更改文件名。默认的情况下该文件被命名 prefix/logs/error.log
。
–http-log-path=/var/log/nginx/access.log:设置HTTP服务器的主要请求日志文件的名称。安装之后,可以nginx.conf
使用的访问日志指令随时在配置文件中更改文件名。默认情况下该文件被命名 prefix/logs/access.log
。
–with-http_gzip_static_module:启用构建 ngx_http_gzip_static_module 模块,使用“ .gz
”文件扩展名而不是普通文件发送预压缩文件。该模块不是默认生成的。
–http-client-body-temp-path=/var/temp/nginx/client: 定义一个用于存储保存客户端请求体的临时文件的目录。安装完成后,可以nginx.conf
使用client_body_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的prefix/client_body_temp
。
–http-proxy-temp-path=/var/temp/nginx/proxy: 定义了一个目录,用于存储从代理服务器接收到的数据的临时文件。安装后,可以nginx.conf
使用proxy_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix/proxy_temp
。
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi: 定义一个目录,用于存储从FastCGI的服务器接收到的数据的临时文件。安装完成后,可以nginx.conf
使用fastcgi_temp_path 指令在配置文件中更改目录。默认情况下,该目录是命名的 prefix/fastcgi_temp
。
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi: 定义一个目录,用于存储从uwsgi服务器接收到的数据的临时文件。安装之后,可以nginx.conf
使用uwsgi_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix/uwsgi_temp
–http-scgi-temp-path=/var/temp/nginx/scgi:
定义了一个目录,用于存储从SCGI服务器接收到的数据的临时文件。安装完成后,可以nginx.conf
使用scgi_temp_path 指令始终在配置文件中更改目录。默认情况下,该目录是命名的 prefix`/scgi_temp```
5、安装
[root@master nginx-1.8.1]# make
[root@master nginx-1.8.1]# make install
6、查看版本
注意:这里的Nginx目录不是上面的Nginx-1.8.1目录,而是刚刚配置安装的–prefix=/usr/local/nginx这个Nginx目录
[root@master local]# /usr/local/nginx/sbin/nginx -v
如图所示:
5、Nginx的启动与停止
①启动:
进入到Nginx的sbin目录下
[root@master sbin]# ./nginx
查看是否启动:
[root@master sbin]# ps -ef|grep nginx
或者:通过网页进入该虚拟机的IP,查看是否启动成功
192.168.100.11
如果访问不到,首先查看防火墙是否关闭
Nginx安装成功!
②关闭(停止)Nginx
[root@master sbin]# ./nginx -s stop
③重启nginx
[root@master sbin]# ./nginx -s reopen
⑤重新载入配置文件
[root@master sbin]# ./nginx -s reload
6、nginx的配置
nginx.conf
# 一个server就是一个虚拟机
server {
listen 80; # 监听端口
server_name localhost; # 域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html; # 虚拟机的根目录
index index.html index.htm; # 站点目录
}
}
若要在nginx.conf文件中添加一个Service节点,修改端口号就好
检查配置文件的正确性命令:
[root@master conf]# /usr/local/nginx/sbin/nginx -t
如图所示:
Tomcat的安装与配置
1、下载
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/
选择自己需要的版本下载,我下载的是 apache-tomcat-7.0.104.tar.gz
或者:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.104/bin/apache-tomcat-7.0.104.tar.gz
2、解压
tar -zxvf apache-tomcat-7.0.104.tar.gz -C /usr/local
3、Tomcat的配置和内存设置
到Tomcat的bin目录下,修改 catalina.sh 文件
在# OS specific support. $var must be set to either true or false.后面,cygwin=false前面输入以下内容
JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=1024m -XX:MaxPermSize=1024m"
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre
如图所示:
参数含义:
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:Java heap最大值,使用的最大内存 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-Xss: 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
4、启动Tomcat服务
到Tomcat的bin目录下启动Tomcat服务
[root@master bin]# ./startup.sh
然后在网页打开 IP地址:端口号 测试Tomcat是否启动成功
PS:默认端口号为8080,可在conf目录下的server.xml里修改端口号
例如:192.168.100.11:8080
Tomcat启动成功!
5、关闭Tomcat
[root@master bin]# ./shutdown.sh
如图所示: