一次带你全面解析 Nginx,从安装 JDK 开始讲起,收藏当手册
前面一段时间有一个小粉丝跟我说,他在搭建Nginx学习的时候,总是出各种各样的问题,我再给他解决了一些问题之后,发现他是因为是刚接触Linux,然后有点冒进,加上网上的各种教程都是针对某一个问题进行解答,所以对于这些小伙伴的学习就很不友好,当时答应他帮他整理一下,但是后来工作的原因给遗忘了,道歉了,这次周末,我正好没什么事情干,就顺手整理一下吧,不多说,就从jdk安装开始,从开始一步步地带着你,有操作学操作,有理论学理论,开始吧
前期准备工作:
1.1 Linux安装JDK
l 上传需要的所有软件
相关知识点:rpm命令
常用:
安装:rpm -ivh rpm文件【安装】
升级:rpm -Uvh rpm文件【更新】
删除:rpm -e --nodeps 软件名
查看:rpm -qa
JDK的安装
l 步骤1:查看现在安装的JDK版本
rpm -qa | grep -i java
l 步骤2:卸载已有软件
l 步骤3:解压JDK
tar -zxvf jdk-7u72-linux-i586.gz
l 步骤4:将jdk移动“/usr/local/src/java”
mkdir /usr/local/src/java/
mv jdk1.7.0_72/ /usr/local/src/java/jdk1.7
l 步骤5:配置系统环境变量
vim /etc/profile
l 步骤6:使配置文件生效,并测试
到这里,JDK就安装完成了,对于初学者,当你拿到或者自己搭建一个虚拟机之后,一定要先去查看一下你的Java版本,没有的话就去按照上面的步骤安装一下,或者去网上搜索一下,教程有很多,这会节省你大量的时间
1.2 Linux安装MySQL
这个除了上面的步骤同样的之外,我也给大家分享一个安装脚本,直接执行就可以
vi installMySQL.sh
将下面的代码粘贴进去
保存后,直接执行installMySQL.sh即可
Nginx
原理
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
为什么使用Nginx
1、http服务器。
Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。
可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会出现因为某台服务器负载高宕机而某台服务器闲置的情况。
4、其他
通过配置 Nginx 配置文件,除了反向代理和负载均衡之外,还可以实现正向代理、Nginx 缓存、动静分离和高可用 等共6种Nginx 功能
Nginx的入门
服务器的概念
硬件:就是一台计算机
软件:需要在计算机上安装一个服务器软件
服务器的使用
windows安装
l 如果是windows版本的,直接解压即可。
l 双击nginx.exe即可运行:打开浏览器http://localhost:80显示如下页面:
说明安装成功!!!
l 关闭nginx需要使用:
相当于找到nginx进程kill。
nginx -s stop
l 重新加载配置文件:
nginx -s reload
可以不关闭nginx的情况下更新配置文件.
发布网站到服务器中
l 我们可以将写好的静态页面复制到nginx目录下的html的目录中即可,输入以下地址可以访问:
l 另一种方式:我们可以将页面复制到nginx的目录下,修改nginx的配置文件:
然后访问
l 但是我们可以发现这样,单机可以访问,通过IP地址也可以访问。但是IP其实相对来讲是很难记住的,我们通常会通过域名去访问一个网站。
网站访问的过程
修改hosts文件
l 进入电脑C:\Windows\System32\drivers\etc下查找一个hosts文件
l 修改nginx的配置文件
l 重新加载nginx的配置
执行命令:nginx –s reload
l 打开浏览器访问:http:www.jd.com
Linux上安装Nginx
前面我们已经在window的平台上,安装和使用了nginx,接下来我们就在Linux上安装Nginx。
nginx安装环境
nginx是C语言开发,建议在linux上运行,我自己也比较喜欢使用Centos6.5,所以这里就以其作为安装环境。
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
编译安装
准备好了安装环境,那接下来就是实际操作了,将nginx-1.8.0.tar.gz拷贝至linux服务器。
1、 configure
./configure --help查询详细参数
参数设置如下:
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
2、 编译安装
make
make install
安装成功查看安装目录 :
使用Nginx
启动nginx
查询nginx进程:
15098是nginx主进程的进程id,15099是nginx工作进程的进程id
注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:
./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))
停止nginx
方式1,快速停止:
方式2,完整停止(建议使用):
当然这里可以将nginx的启动命令添加到系统变量中,这样的话就可以直接使用nginx命令了,添加方式和java一样
重启nginx
安装测试
nginx安装成功,启动nginx,即可访问虚拟机上的nginx:
到这说明nginx基本上安装成功。
当Linux安装完成之后,没有一个像样的实践怎么可以,既然提到负载均衡,最先想到的就是Nginx,那我也偏心一点,就直接来一套负载均衡吧
负载均衡
Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。我们来看一下是怎么实现啊
Nginx负载均衡器配置:在默认安装的Nginx配置文件Nginx.conf中:
[root@bogon html]# vi /usr/local/nginx/conf/nginx.conf
Tomcat安装:下载地址:http://tomcat.apache.org
下载与jdk版本对应的tomcat版本apache-tomcat-8.5.24.tar.gz
用Xftp将apache-tomcat-8.5.24.tar.gz上传至/root目录
解压apache-tomcat-8.5.24.tar.gz至/opt目录,并更名为tomcat
关闭防火墙
测试tomcat安装结果:打开浏览器,访问http://虚拟机IP地址:8080,出现Tom猫,则表示安装成功
测试Nginx负载均衡
真实服务器IP1:192.168.182.131;
真实服务器IP2:192.168.182.132;
nginx服务器IP:192.168.182.130)
测试前工作
因为测试页面是两个web页面,为了展示效果,需要提前将web页面进行区分,所以这里我修改为一个显示display1,另一个显示display2
打开浏览器,访问Nginx配置文件nginx.conf中配置的代理域名www.test.com
(此处需要注意的是,需要在本机的hosts文件中进行配置域名和IP的映射关系,如果不配置,只能写具体的IP,即nginx服务器的IP)
因为nginx配置中监控的端口是80,故不需要添加端口
结果就是:显示界面分别为两台tomcat中配置的自定义显示界面轮流出现关闭一台tomcat服务器后,再访问www.test.com,只会出现另一台tomcat的页面,再开启这台tomcat服务器后,再访问www.test.com 会出现两台服务器页面交互出现的现象
显示界面是两个页面的轮流出现,如果关闭其中一个,则只显示另外一个的页面,再开启之后,又会出现两个页面的轮转
不知道今天的内容有咩有收获呀,哈哈哈哈,对于老程序员们,咱就当一起回顾青涩时光了,新程序员们,道阻且长,按照步骤动手实践一下吧
希望可以对家有帮助,喜欢的小伙伴可以关注公众号:小迁不秃头,每天不定时更新!
评论