zoukankan      html  css  js  c++  java
  • Linux下使用Nginx

    模拟tomcat集群

    1、下载tomcat7,/usr/local下新建目录tomcat,将tomcat7剪切到/usr/local/tomcat

    wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.100/bin/apache-tomcat-7.0.100.tar.gz
    mkdir /usr/local/tomcat
    mv /root/apache-tomcat-7.0.100.tar.gz /usr/local/tomcat

    2、解压,复制一份,分别重命名为tomcat1、tomcat2

    cd /usr/local/tomcat
    tar -zxvf apache-tomcat-7.0.100.tar.gz
    rm apache-tomcat-7.0.100.tar.gz
    mv apache-tomcat-7.0.100 tomcat1
    cp -r tomcat1 tomcat2

    3、修改tomcat2使用的端口号,避免与tomcat1使用的端口号冲突

    vim tomcat2/conf/server.xml

    4、分别在2个tomcat的satrtup.sh中设置CATALINA_HOME

    vim tomcat1/bin/startup.sh

    开头添加一行:

    export CATALINA_HOME=/usr/local/tomcat/tomcat1

    同样的方式修改tomcat2,把tomcat1换成tomcat2即可。

    其实就是配置CATALINA_HOME环境变量,也可以在/etc/profile中配置环境变量CATALINA_HOME_TOMCAT1、CATALINA_HOME_TOMCAT2,值分别是tomcat1、2的主目录,

    然后分别2个tomcat的stratup.sh中引用export CATALINA_HOME=$CATALINA_HOME_TOMCAT1|2引用,麻烦些。

    5、设置防火墙,打开8080、8081端口。

    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --zone=public --add-port=8081/tcp --permanent

    重启防火墙生效:

    firewall-cmd --reload

    我把tomcat2的端口改为8081,所以打开的是8081,使用哪个就打开哪个。

    如果要使用https、ajp,自然也要打开对应的端口。

    CentOS7之前使用itables命令控制端口,CentOS7即之后的版本使用firewall-cmd命令控制端口。

    6、分别启动tomcat1、tomcat2,在Windows浏览器上已能访问Linux上的tomcat1、tomcat2

    tomcat1/bin/startup.sh
    tomcat2/bin/startup.sh

    windows浏览器地址栏分别输入:

    192.168.43.143:8080
    192.168.43.143:8081

    显示tomcat的首页,配置成功。

    Linux机器的ip要换为你的,可ifconfig查看:


    Nginx的使用

    Nginx的windows版已经编译打包为.exe,直接用就行了,Linux版未编译,需要自己编译。

    Nginx所需的依赖

    • gcc

          gcc是在类Unix系统上使用的c语言的编译器,包含了编译c语言所需的库,nginx是c语言写的,编译时自然需要gcc库。 

    • pcre

           pcre是一个Perl的正则表达式库,nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库。

      需要pcre、pcre-devel2个库。

    • zlib

           zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,需要在linux上安装zlib库。

      需要zlib、zlib-devel2个库。

    • openssl

           nginx不仅支持http协议,还支持https,使用https需要在linux安装openssl库。

        需要openssl openssl-devel2个库。

    gcc只包含c的编译器,gcc-c++包含c、c++的编译器,安装哪个都行。

    pcre、zlib、openssl都需要2个库,带devel的是nginx编译时用的库,不带的是nginx运行时需要的库。

    1、安装依赖

    一次性全部安装:

    yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

    已安装的会自动跳过。

    yum -y install gcc automake autoconf libtool make

    gcc需要配置一下,单独安装。如果不配置,执行gcc的make、make install命令时会出现“找不到命令”的错误。

    很闲的可以依次检查:gcc、pcre、pcre-devel、zlib、zlib-devel、openssl、openssl-devel,未安装的安装上

    yum list installed | grep pcre
    yum -y install pcre

    2、下载Linux版本的nginx,放到/usr/local/nginx,解压

    mkdir /usr/local/nginx
    cd /usr/local/nginx
    wget http://nginx.org/download/nginx-1.16.1.tar.gz
    tar -xzvf nginx-1.16.1.tar.gz
    rm nginx-1.16.1.tar.gz

    3、进入解压出来的目录,编译、安装

    cd nginx-1.16.1

    这个目录下有个src文件夹,放着nginx的源码,全是.c、.h文件。

    ./configure --prefix=/usr/local/nginx

    运行解压目录下的configure文件,检查配置,并自动创建一个objs目录,objs下创建多个空目录,用来存放编译产生的文件。

    --prefix指定nginx的安装目录。

     检查配置时最好在nginx下新建一个temp目录,然后把上面这堆临时文件的保存路径改了,nginx后面加/temp,不然运行nginx后,nginx下会产生一堆临时文件的目录。

    make

    编译,将编译产生的文件放到objs中。

    make install

    安装,会安装在prefix指定的目录(nginx)下。

    看到nginx下生成4个目录:sbin  放置可执行程序(只有一个nginx),conf  放置配置文件,logs  放置日志,html  放置html文档。

    将解压的目录删除:

    cd ..
    rm -r nginx-1.16.1

    4、看下防火墙打开80端口没有,默认是没有打开的,需要我们打开

    firewall-cmd --query-port=80/tcp
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    fire-wall --reload

    5、启动nginx

    sbin/nginx

    执行sbin下的nginx即启动nginx,Linux本地浏览器输入localhost可看到Nginx首页,windows浏览器输入Linux的ip地址也可看到nginx的首页。(默认就是80端口)


    nginx的常用命令

    • whereis nginx  查看nginx的主目录
    • nginx  启动nginx
    • nginx -s stop  停止nginx
    • nginx -s quit  停止并退出nginx
    • nginx -s reload  重新加载配置文件
    • nginx -t 检测配置文件中的配置是否正确
    • nginx -v  查看nginx版本

    修改nginx的配置文件后,一般都是先nginx -t测试下,没问题再nginx -s reload重新加载配置。

    以上5个命令(不包括whereis nginx)的三种执行方式:

    • 绝对路径执行,/usr/local/nginx/sbin/nginx
    • 相对路径执行,比如当前目录时/usr/local,直接nginx/sbin/nginx  执行
    • 切换到nginx的sbin目录,./nginx执行。如果当前目录时要执行文件的上一级,必须加./表示当前目录下。

    Linux上所有可执行文件都可以这么执行。


    开机启动

    设置tomcat1、tomcat2、nginx的开机启动:

    vim /etc/rc.d/rc.local

    把启动的程序加进去即可。


    使用nginx实现负载均衡

    我们在tomcat1、tomcat2上部署一个相同的项目,为了方便看效果,分别将部署在tomcat1、tomcat2上的test的index.jsp的<body>改为tomcat1,tomcat2。

    修改nginx的conf/nginx.conf:添加红框的2处

    重启Linux,因为我们设置了开机自启,会自动开启tomcat1、tomcat2、nginx。

    在windows地址栏输入:Linux机器ip/项目名,多刷新几次,看到tomcat1、tomcat2交替处理。


    nginx的官方文档:

    http://nginx.org/en/docs/

  • 相关阅读:
    favicon.ico请求处理
    Node.js学习(Node.js基础)
    实现主机访问虚拟机网页的方法总结
    有向/无向图中搜环
    后缀自动机
    莫队算法
    A* 算法求第k短路径
    次小生成树算法
    AC自动机详解
    Link-Cut-Tree详解
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12367826.html
Copyright © 2011-2022 走看看