一脸懵逼学习Nginx及其安装,Tomcat的安装

1:Nginx的相关概念知识:

  1.1:反向代理:

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

 1.2:负载均衡:

    负载均衡,英文名称为Load Balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。

2:Nginx的安装操作:

 Nginx的官网:http://nginx.org/

2.1:将下载好的Nginx上传到虚拟机上面,然后进行解压缩操作,上传过程省略,请自行脑补:

[root@master package]# tar -zxvf nginx-1.8.1.tar.gz -C /home/hadoop/

  2.2:编译Ngnix源码目录:

    进入Ngnix源码目录:[root@master hadoop]# cd /home/hadoop/nginx-1.8.1/

    检查安装环境,并指定将来要安装的路径:

#缺包报错  checking for OS  + Linux 2.6.32-696.10.1.el6.i686 i686 checking for C compiler ... found  + using GNU C compiler  + gcc version: 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) checking for gcc -pipe switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found checking for unistd.h ... found checking for inttypes.h ... found checking for limits.h ... found checking for sys/filio.h ... not found checking for sys/param.h ... found checking for sys/mount.h ... found checking for sys/statvfs.h ... found checking for crypt.h ... found checking for Linux specific features checking for epoll ... found checking for EPOLLRDHUP ... found checking for O_PATH ... not found checking for sendfile() ... found checking for sendfile64() ... found checking for sys/prctl.h ... found checking for prctl(PR_SET_DUMPABLE) ... found checking for sched_setaffinity() ... found checking for crypt_r() ... found checking for sys/vfs.h ... found checking for nobody group ... found checking for poll() ... found checking for /dev/poll ... not found checking for kqueue ... not found checking for crypt() ... not found checking for crypt() in libcrypt ... found checking for F_READAHEAD ... not found checking for posix_fadvise() ... found checking for O_DIRECT ... found checking for F_NOCACHE ... not found checking for directio() ... not found checking for statfs() ... found checking for statvfs() ... found checking for dlopen() ... not found checking for dlopen() in libdl ... found checking for sched_yield() ... found checking for SO_SETFIB ... not found checking for SO_ACCEPTFILTER ... not found checking for TCP_DEFER_ACCEPT ... found checking for TCP_KEEPIDLE ... found checking for TCP_FASTOPEN ... not found checking for TCP_INFO ... found checking for accept4() ... found checking for eventfd() ... found checking for int size ... 4 bytes checking for long size ... 4 bytes checking for long long size ... 8 bytes checking for void * size ... 4 bytes checking for uint64_t ... found checking for sig_atomic_t ... found checking for sig_atomic_t size ... 4 bytes checking for socklen_t ... found checking for in_addr_t ... found checking for in_port_t ... found checking for rlim_t ... found checking for uintptr_t ... uintptr_t found checking for system byte ordering ... little endian checking for size_t size ... 4 bytes checking for off_t size ... 8 bytes checking for time_t size ... 4 bytes checking for setproctitle() ... not found checking for pread() ... found checking for pwrite() ... found checking for sys_nerr ... found checking for localtime_r() ... found checking for posix_memalign() ... found checking for memalign() ... found checking for mmap(MAP_ANON|MAP_SHARED) ... found checking for mmap("/dev/zero", MAP_SHARED) ... found checking for System V shared memory ... found checking for POSIX semaphores ... not found checking for POSIX semaphores in libpthread ... found checking for struct msghdr.msg_control ... found checking for ioctl(FIONBIO) ... found checking for struct tm.tm_gmtoff ... found checking for struct dirent.d_namlen ... not found checking for struct dirent.d_type ... found checking for sysconf(_SC_NPROCESSORS_ONLN) ... found checking for openat(), fstatat() ... found checking for getaddrinfo() ... found checking for PCRE library ... not found checking for PCRE library in /usr/local/ ... not found checking for PCRE library in /usr/include/pcre/ ... not found checking for PCRE library in /usr/pkg/ ... not found checking for PCRE library in /opt/local/ ... not found ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.

     然后安装一下缺少的包:

[root@master nginx-1.8.1]# yum -y install gcc pcre-devel openssl openssl-devel

    解决完错误以后再次执行,检查安装环境,并指定将来要安装的路径:

    [root@master nginx-1.8.1]# ./configure --prefix=/home/hadoop/nginx

[root@master nginx-1.8.1]# ./configure --prefix=/home/hadoop/nginx checking for OS  + Linux 2.6.32-696.10.1.el6.i686 i686 checking for C compiler ... found  + using GNU C compiler  + gcc version: 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) checking for gcc -pipe switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found checking for unistd.h ... found checking for inttypes.h ... found checking for limits.h ... found checking for sys/filio.h ... not found checking for sys/param.h ... found checking for sys/mount.h ... found checking for sys/statvfs.h ... found checking for crypt.h ... found checking for Linux specific features checking for epoll ... found checking for EPOLLRDHUP ... found checking for O_PATH ... not found checking for sendfile() ... found checking for sendfile64() ... found checking for sys/prctl.h ... found checking for prctl(PR_SET_DUMPABLE) ... found checking for sched_setaffinity() ... found checking for crypt_r() ... found checking for sys/vfs.h ... found checking for nobody group ... found checking for poll() ... found checking for /dev/poll ... not found checking for kqueue ... not found checking for crypt() ... not found checking for crypt() in libcrypt ... found checking for F_READAHEAD ... not found checking for posix_fadvise() ... found checking for O_DIRECT ... found checking for F_NOCACHE ... not found checking for directio() ... not found checking for statfs() ... found checking for statvfs() ... found checking for dlopen() ... not found checking for dlopen() in libdl ... found checking for sched_yield() ... found checking for SO_SETFIB ... not found checking for SO_ACCEPTFILTER ... not found checking for TCP_DEFER_ACCEPT ... found checking for TCP_KEEPIDLE ... found checking for TCP_FASTOPEN ... not found checking for TCP_INFO ... found checking for accept4() ... found checking for eventfd() ... found checking for int size ... 4 bytes checking for long size ... 4 bytes checking for long long size ... 8 bytes checking for void * size ... 4 bytes checking for uint64_t ... found checking for sig_atomic_t ... found checking for sig_atomic_t size ... 4 bytes checking for socklen_t ... found checking for in_addr_t ... found checking for in_port_t ... found checking for rlim_t ... found checking for uintptr_t ... uintptr_t found checking for system byte ordering ... little endian checking for size_t size ... 4 bytes checking for off_t size ... 8 bytes checking for time_t size ... 4 bytes checking for setproctitle() ... not found checking for pread() ... found checking for pwrite() ... found checking for sys_nerr ... found checking for localtime_r() ... found checking for posix_memalign() ... found checking for memalign() ... found checking for mmap(MAP_ANON|MAP_SHARED) ... found checking for mmap("/dev/zero", MAP_SHARED) ... found checking for System V shared memory ... found checking for POSIX semaphores ... not found checking for POSIX semaphores in libpthread ... found checking for struct msghdr.msg_control ... found checking for ioctl(FIONBIO) ... found checking for struct tm.tm_gmtoff ... found checking for struct dirent.d_namlen ... not found checking for struct dirent.d_type ... found checking for sysconf(_SC_NPROCESSORS_ONLN) ... found checking for openat(), fstatat() ... found checking for getaddrinfo() ... found checking for PCRE library ... found checking for PCRE JIT support ... not found checking for md5 in system md library ... not found checking for md5 in system md5 library ... not found checking for md5 in system OpenSSL crypto library ... found checking for sha1 in system md library ... not found checking for sha1 in system OpenSSL crypto library ... found checking for zlib library ... found creating objs/Makefile Configuration summary   + using system PCRE library   + OpenSSL library is not used   + md5: using system crypto library   + sha1: using system crypto library   + using system zlib library   nginx path prefix: "/home/hadoop/nginx"   nginx binary file: "/home/hadoop/nginx/sbin/nginx"   nginx configuration prefix: "/home/hadoop/nginx/conf"   nginx configuration file: "/home/hadoop/nginx/conf/nginx.conf"   nginx pid file: "/home/hadoop/nginx/logs/nginx.pid"   nginx error log file: "/home/hadoop/nginx/logs/error.log"   nginx http access log file: "/home/hadoop/nginx/logs/access.log"   nginx http client request body temporary files: "client_body_temp"   nginx http proxy temporary files: "proxy_temp"   nginx http fastcgi temporary files: "fastcgi_temp"   nginx http uwsgi temporary files: "uwsgi_temp"   nginx http scgi temporary files: "scgi_temp"

 2.3:编译安装(make是编译,make install是安装):

 [root@master hadoop]# make && make install安装不是一帆风顺的,开始将make && make install写成了make && made install,肯定没有安装成功了,然后我再执行make && make install就出现下面的情况了,然后我重新./configure --prefix=/usr/local/nginx检查安装环境,并指定将来要安装的路径,最后再make && made install,貌似正常编译,安装了,虽然我也不是很清楚,这里贴一下吧先,安装好以后可以测试是否正常:

[root@master hadoop]# make && make install make: *** No targets specified and no makefile found.  Stop. [root@master hadoop]# make install make: *** No rule to make target `install'.  Stop. [root@master hadoop]# make && make install make: *** No targets specified and no makefile found.  Stop. [root@master hadoop]# ./configure --prefix=/home/hadoop/nginx bash: ./configure: No such file or directory [root@master hadoop]# cd /home/hadoop/nginx-1.8.1/ [root@master nginx-1.8.1]# ls auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src [root@master nginx-1.8.1]# ./configure --prefix=/home/hadoop/nginx

   2.4:安装好以后测试是否正常:

    安装好以后指定的目录会生成一些文件,如我的/home/hadoop/nginx目录下面:

    启动Nginx的命令:[root@master sbin]# ./nginx

  查看端口是否有ngnix进程监听:[root@master sbin]# netstat -ntlp | grep 80

3:配置Nginx:

   3.1:配置反向代理:

修改Nginx配置文件:

[root@master conf]# cd /home/hadoop/nginx/conf/

[root@master conf]# vim nginx.conf

  server {
        listen       80;
        server_name  master; #nginx所在服务器的主机名称

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #反向代理的配置
        location / { #拦截所有请求
            root   html;
            #index  index.html index.htm;
            #这里是代理走向的目标服务器:tomcat
            proxy_pass http://192.168.199.130:8080;
        }

 具体配置如下所示:

下面贴图这句话后面proxy_pass http://192.168.199.130:8080;

少了一个分号导致后面启动nginx的时候出现错误:

自己都操点心就可以了:

[root@master sbin]# ./nginx nginx: [emerg] unexpected "}" in /home/hadoop/nginx/conf/nginx.conf:48

 4:安装Tomcat,将下载好的tomcat安装包上传到虚拟机,过程省略,然后解压缩操作:

[root@slaver1 package]# tar -zxvf apache-tomcat-7.0.68.tar.gz -C /home/hadoop/

解压缩好以后启动Tomcat:

然后没启动起来,貌似说我的jdk没有配置啥的,现在配置一下,配置过程省略,大概如上传压缩包,解压缩,然后配置环境变量:

vim /etc/profile配置好以后使其立即生效:source /etc/profile,最后检查一下是否安装成功:java/javac/java -version

然后启动tomcat,如下所示:

启动好,可以检查一下是否启动成功:

浏览器输入自己的http://192.168.199.131:8080/

如果无法访问,可能是防火墙的原因:service iptables stop关闭防火墙;service iptables status查看防火墙是否关闭成功;

5:现在体现Nginx的功能了,我在master节点安装的Nginx,然后在slaver1节点安装的tomcat:

然后访问master节点,会跳转到slaver1的tomcat页面:

http://192.168.199.130/自己的master节点的名称;

6:Nginx的动静分离:

动态资源 index.jsp location ~ .*\.(jsp|do|action)$ {     proxy_pass http://ip地址:8080; } 静态资源: location ~ .*\.(html|js|css|gif|jpg|jpeg|png)$ {     expires 3d; } 负载均衡: 在http这个节下面配置一个叫upstream的,后面的名字可以随意取,但是要和location下的proxy_pass http://后的保持一致。 http { 是在http里面的, 已有http, 不是在server里,在server外面     upstream tomcats {         server 192.168.199.130:8080 weight=1;#weight表示多少个         server 192.168.199.131:8080 weight=1;         server 192.168.199.132:8080 weight=1; } #卸载server里 #~代表是大小写敏感,.代表是任何非回车字符,*代表多个。 location ~ .*\.(jsp|do|action) {     proxy_pass http://tomcats;        #tomcats是后面的tomcat服务器组的逻辑组号 } }

待续......

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏龙渊阁测试精英

Jmeter(二十一)_完整Demo

3:设置你的信息头管理器:application/json;text/plain;charset=UTF-8  

893
来自专栏张善友的专栏

Custom Basic Authentication for IIS

HTTP Basic Authentication是一个定义在HTTP/1.1规范中的验证机制。这种机制是以用户名和密码为基础的。一个Web server要求一...

1806
来自专栏前端vue

编写接口连接并查询数据库数据(二)

安装测试工具postman 不想下载软件的话可以用谷歌插件postman 这个东西是测试用的,不需要的可以不下载

1261
来自专栏恒思考

实现app配置服务

我们要做一个app首先要实现后端,打算做个app叫恒思考。这个app后台由leancode,firebase,自建parse服务器。防止某个服务器不可用以后导致...

1683
来自专栏左瞅瞅,右瞅瞅

nginx——关于获取真实ip

做网站时经常会用到remote_addr和x_forwarded_for这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了...

1966
来自专栏闻道于事

Spring Boot 结合 Redis 缓存

1220
来自专栏Netkiller

数据与应用程序间通信·UDP Socket

你是否想过当数据库中发生变化时,将变化内容通知到外面的应用程序。这样做的目的是 方便二次开发,例如你的软件第三方产品,你没有软件的源码,无法二次开发,这是你可以...

3326
来自专栏磨磨谈

Ceph S3 基于NGINX的集群复制方案

ceph的s3数据的同步可以通过radosgw-agent进行同步,同region可以同步data和metadata,不同region只能同步metadata,...

632
来自专栏我的博客

清除DNS缓存

清除DNS缓存信息法: 当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列...

3724
来自专栏别先生

JSP连接mysql数据库的重点

1:用mysql驱动把mysql与tomcat的连接起来。把mysql驱动包(不用解压)放到Tomcat安装目录中lib文件夹下即可。 ? 2:然后在自己的新...

2348

扫码关注云+社区