写点什么

一次带你全面解析 Nginx,从安装 JDK 开始讲起,收藏当手册

用户头像
996小迁
关注
发布于: 2020 年 11 月 24 日
一次带你全面解析Nginx,从安装JDK开始讲起,收藏当手册

前面一段时间有一个小粉丝跟我说,他在搭建Nginx学习的时候,总是出各种各样的问题,我再给他解决了一些问题之后,发现他是因为是刚接触Linux,然后有点冒进,加上网上的各种教程都是针对某一个问题进行解答,所以对于这些小伙伴的学习就很不友好,当时答应他帮他整理一下,但是后来工作的原因给遗忘了,道歉了,这次周末,我正好没什么事情干,就顺手整理一下吧,不多说,就从jdk安装开始,从开始一步步地带着你,有操作学操作,有理论学理论,开始吧



前期准备工作:

1.1 Linux安装JDK



l 上传需要的所有软件





相关知识点:rpm命令



l 格式:rpm [参数] [软件]
-v  显示指令执行过程。
-h或--hash  套件安装时列出标记。
-q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
-a  查询所有套件。
-i<套件档>或--install<套件档>  安装指定的套件档。
-U<套件档>或--upgrade<套件档>   升级指定的套件档。
-e<套件档>或--erase<套件档>  删除指定的套件。
--nodeps  不验证套件档的相互关联性



常用:



安装:rpm -ivh rpm文件【安装】

升级:rpm -Uvh rpm文件【更新】

删除:rpm -e --nodeps 软件名

查看:rpm -qa



JDK的安装



l 步骤1:查看现在安装的JDK版本



rpm -qa | grep -i java





l 步骤2:卸载已有软件



rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686





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



 export JAVA_HOME=/usr/local/src/java/jdk1.7
export PATH=$JAVA_HOME/bin:$PATH





l 步骤6:使配置文件生效,并测试



source /etc/profile(切记,这一步一定要操作)
java -version





到这里,JDK就安装完成了,对于初学者,当你拿到或者自己搭建一个虚拟机之后,一定要先去查看一下你的Java版本,没有的话就去按照上面的步骤安装一下,或者去网上搜索一下,教程有很多,这会节省你大量的时间



1.2 Linux安装MySQL



这个除了上面的步骤同样的之外,我也给大家分享一个安装脚本,直接执行就可以



vi installMySQL.sh



将下面的代码粘贴进去



#!/bin/bash
mydir=pwd
cd /etc/yum.repo.d/ rm -rf *.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
cd $mydir
rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
yum -y install mysql-server
chkconfig mysqld on
service mysqld start



保存后,直接执行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服务器。



解压:
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0



1、 configure



./configure --help查询详细参数



参数设置如下:



./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及nginx目录



2、 编译安装



make



make install



安装成功查看安装目录 :





使用Nginx

启动nginx



cd /usr/local/nginx/sbin/
./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,快速停止:



cd /usr/local/nginx/sbin
./nginx -s stop
此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。



方式2,完整停止(建议使用):



cd /usr/local/nginx/sbin
./nginx -s quit
此方式停止步骤是待nginx进程处理任务完毕进行停止。



当然这里可以将nginx的启动命令添加到系统变量中,这样的话就可以直接使用nginx命令了,添加方式和java一样



重启nginx



方式1,先停止再启动(建议使用):
对nginx进行重启相当于先停止nginx再启动nginx,即先执行停止命令再执行启动命令。
如下:
./nginx -s quit
./nginx



方式2,重新加载配置文件:
当nginx的配置文件nginx.conf修改后,要想让配置生效需要重启nginx,使用-s reload不用先停止nginx再启动nginx即可将配置信息在nginx中生效,如下:
./nginx -s reload



安装测试

nginx安装成功,启动nginx,即可访问虚拟机上的nginx:





到这说明nginx基本上安装成功。






当Linux安装完成之后,没有一个像样的实践怎么可以,既然提到负载均衡,最先想到的就是Nginx,那我也偏心一点,就直接来一套负载均衡吧



负载均衡

Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。我们来看一下是怎么实现啊



  • Nginx负载均衡器配置:在默认安装的Nginx配置文件Nginx.conf中:



[root@bogon html]# vi /usr/local/nginx/conf/nginx.conf



#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
//在其之后添加下面的代码
upstream serverCluster{
server 192.168.182.131:8080 weight=1;
server 192.168.182.133:8080 weight=1;
}



# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}
//在其之后添加以下代码
server{
listen 80;
server_name  www.test.com;
index   index.jsp  index.html  index.htm;
root   /data/www;
location /{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://serverCluster;
expires 3d;
}
}



  • 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



tar -zvxf apache-tomcat-8.5.24.tar.gz //解压文件
mv apache-tomcat-8.5.24 /opt //转移文件
mv apache-tomcat-8.5.24 tomcat //文件更名



  • 关闭防火墙



service iptables stop //临时关闭
chkconfig iptables off //永久关闭,不过需要重启生效



  • 测试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 会出现两台服务器页面交互出现的现象



显示界面是两个页面的轮流出现,如果关闭其中一个,则只显示另外一个的页面,再开启之后,又会出现两个页面的轮转



不知道今天的内容有咩有收获呀,哈哈哈哈,对于老程序员们,咱就当一起回顾青涩时光了,新程序员们,道阻且长,按照步骤动手实践一下吧



希望可以对家有帮助,喜欢的小伙伴可以关注公众号:小迁不秃头,每天不定时更新!



用户头像

996小迁

关注

我就是我 2020.10.13 加入

5年Java开发经验

评论

发布
暂无评论
一次带你全面解析Nginx,从安装JDK开始讲起,收藏当手册