[toc]

tomcat和ngnix在服务器上的部署

1. 部署过程中使用的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.解压tomcat和ngnix安装包:  
tar -zxvf apache-tomcat-8.5.49.tar.gz //解压到当前文件夹里面
tar -zxvf apache-tomcat-8.5.47.tar.gz -C /root/soft/tomcat/ //解压到/root/soft/tomcat/文件夹下
2.动态地查看tomcat日志
tail -f catalina.out
3.查看tomcat端口占用情况
ps -ef | grep tomcat
4.杀死线程
kill 9 xxxxx
5.编辑配置文件server.xml修改端口号
vi server.xml
(1. i 2. 修改 3. esc 4.shift : 5 wq + enter )
6.启动nginx,在sbin下
./nginx
7.修改nginx配置nginx.conf文件后,重新加载
./nginx -s reload

2. tomcat

1
2
//使用ngnix实现反向代理和负载均衡,需要改一下tomcat的conf/server.xml文件里面的端口号
//需要改哪几个端口号?其端口号对应的意义?

3. ngnix

了解ngnix之前,先了解我们访问网站的流程,可以结合着下图理解。

域名解析流程

我们需要明白,我们访问其服务器(linux系统),在没有提及nginx之前我们是访问的tomcat,也就是访问我们部署到tomcat项目,但是tomcat默认的端口是8080,如果单单通过域名访问我们部署的项目,此时我们要么改下tomcat的默认端口,要么通过nginx的反向代理来实现。

ngnix的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
///nginx-1.8.0
//1.nginx是C语言开发,建议在linux上运行,我们先搭建其运行环境

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


//2.将ngnix-1.8.0 安装包上传到linux服务器上,并解压

//3.进入到/root/soft/ngin-1.8.0 中执行 ./configure 生成 Makefile文件夹

//4.执行一下步骤
./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
Enter
//5.执行make
//6.make install 此时就安装完毕了,在/usr/local/nginx 里面,有三个文件夹conf html sbin,nginx默认端口80;

nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//实现nginx的反向代理只需要在/usr/local/nginx/conf/nginx.conf 做以下修改,即添加upstream和在server中更改server_name和在location中添加proxy_pass配置;

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;


#nginx的反向代理
upstream tomcat8080{
server 106.15.71.229:8080;
}


server {
listen 80;
server_name www.itbuild.cn;

location / {
#root html;
proxy_pass http://tomcat8080;
#index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}
}
//经过以上配置之后,我们直接可以使用www.itbuild.cn:80访问服务器上我们部署在tomcat上的项目上了。我们也可以通过添加server{}和upstream从而访问我们部署在另一个tomcat上的项目,比如说我们可以通过mysel.itbuild.cn:80,访问tomcat端口为8090上面的项目。

nginx负载均衡

1
2
3
4
5
6
7
8

#nginx的负载均衡
upstream tomcat8080{
server 106.15.71.229:8080;
server 106.15.71.229:8090;
#在这里面添加服务器地址和端口;
}
#通过测试发现相同的域名和端口,访问的页面是不一样的(我在8080端口下部署了我的项目,而8090端口是默认的tomcat页面),通过轮询的机制访问服务器的,这样我们就可以通过nginx去实现负载均衡,配置多个服务器,在这些服务器上部署相同的项目。当然负载均衡在项目中实现并没有那么简单,因为还要涉及更改数据库的问题,这里只是简单的原理,如果有问题欢迎评论交流!