一次带你全面解析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的目录下,修改nginx的配置文件:
然后访问
网站访问的过程
修改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
停止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;
}
}
下载与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 //永久关闭,不过需要重启生效
测试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 会出现两台服务器页面交互出现的现象
显示界面是两个页面的轮流出现,如果关闭其中一个,则只显示另外一个的页面,再开启之后,又会出现两个页面的轮转
不知道今天的内容有咩有收获呀,哈哈哈哈,对于老程序员们,咱就当一起回顾青
涩时光了,新程序员们,道阻且长,按照步骤动手实践一下吧