记一次docker安装+nginx+tomcat+分布式环境搭建。主机搭rabbitMq+redis

原创
2020/12/10 17:06
阅读数 466
U虎正式环境,初始化步骤
查看磁盘空间
df -h
一.安装RabbitMQ
1.安装erlang
yum -y install epel-release
yum -y install erlang socat
erl -version
2.安装rabbitmq
yum install rabbitmq-server
开机自动启动
chkconfig rabbitmq-server on
启动服务
service rabbitmq-server start
启动管理控制台
rabbitmq-plugins enable rabbitmq_management
添加用户
rabbitmqctl add_user lion Lion_4396
配置用户权限
rabbitmqctl set_user_tags lion administrator
rabbitmqctl set_permissions -p "/" lion ".*" ".*" ".*"
访问
RabbitMQ管理后台:http: //<您的 CVM IP 地址>:15672/ 用户名:lion 密码: Lion_4396
关闭服务
service rabbitmq-server stop
 
二.安装Redis
1.下载redis
 
2.上传到usr/local目录下
3.解压会多出一个文件夹
tar -zvxf redis-6.0.9.tar.gz
4.移动并改名
mv /usr/local/redis-6.0.9 /usr/local/redis
5.编译
cd到/usr/local/redis目录,输入命令make执行编译命令,接下来控制台会输出各种编译过程中输出的内容。
使用make PREFIX=/usr/local/redis-5.0.4 install命令安装(安装后会出现bin目录)
6.启动
./redis-server
7.备份配置文件redis目录下创建文件夹
mkdir yqConfig
8.修改yqConfig目录下配置文件
 
如果想要远程访问,需要设置密码,需要将bind注释掉
# bind 127.0.0.1
requirepass Lion_4396
9.运行--使用新配置文件
cd /usr/local/redis/bin/
./redis-server /usr/local/redis/yqConfig/redis.conf
10.停服务,重启
redis-cli -h 127.0.0.1 -p 6379 shutdown
 
 
如果编译make报错,则需要安装套件
若报错,先make distclean,再make
1、安装gcc套装:
yum install gcc-c++
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
查看版本,9.3为最新版
gcc -v
3、执行完上述命令后再次make即可。
 
make install查看是否全部安装完毕
 
 
 
三.安装docker--配置图形界面工具---分布式运行tomcat
参考文章
 
1.使用官方安装脚本自动安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2.安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
sudo yum install docker-ce docker-ce-cli containerd.io
3.启动
sudo systemctl start docker
4.通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
拉取了一个hell-word的镜像
sudo docker run hello-world
5.拉取一个最新的centos镜像
docker pull centos:latest
6.安装容器图形界面管理工具
docker pull portainer/portainer
7.运行docker图形管理工具
docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
 
docker run -d --restart=always --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer_data:/data -v /data/public:/public portainer/portainer
 
并创建用户
 
配置nginx
8.拉取最新版本nginx
docker pull nginx:latest
9.创建将要挂在的目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
10.创建要挂载的目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
11.编辑挂载目录的配置文件
vim /data/nginx/conf/nginx.conf
user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


events {
worker_connections 2048;
}


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

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
}

 

 
12.配置default.conf监听81端口
 vim /data/nginx/conf.d/default.conf
 
server {
listen 81;
server_name localhost;

#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;

location / {
#root /data/nginx/html;
root /usr/share/nginx/html;
index index.html index.htm;
#autoindex on;
#try_files $uri /index/index/page.html;
#try_files $uri /index/map/page.html;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

 

13.修改index.html
vim /data/nginx/html/index.html
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>系统时间</title>
</head>
<body>
<div id="datetime">
<script>
setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();", 1000);
</script>
</div>
</body>

 

 
14.启动nginx容器,将容器中nginx的81端口映射到本地的80端口,访问本机的80端口将映射到容器的81端口上。nginx监听81端口,将进行分布式转发
docker run --name nginx81 -d -p 80:81 --restart=always -- net lion-network -- ip 172.17.0.4 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -v /data/nginx/conf.d:/etc/nginx/conf.d -d nginx:latest
15.移除某个容器
docker rm -f 1e560fca3906
 
15.查看启动的容器
docker ps
查看开放的端口号:firewall-cmd --list-ports
如果没有81端口则开辟一个端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
重启防火墙:firewall-cmd --reload
 
16.创建相应的tomcat载入文件
mkdir -p ~/tomcat/tomcat1/webapps/ROOT ~/tomcat/tomcat1/conf ~/tomcat/tomcat1/logs
mkdir -p ~/tomcat/tomcat2/webapps/ROOT ~/tomcat/tomcat2/conf ~/tomcat/tomcat2/logs
 
17.创建文件,分别在tomcat1和tomcat2/webapps/ROOT下创建index.html,内容分别为servier1,server2
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>系统时间</title>
</head>
<body>
<div id="datetime">
<script>
server1
</script>
</div>
</body>

 

 
18.设置固定ip
查看所有的网络类型
docker network ls
Docker启动的时候,可以使用 --network 参数指定使用的网络
网络类型的介绍
  • bridge: 默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
  • host:Docker 容器的网络会附属在主机上,两者是互通的。
  • none: docker 容器就不会分配局域网的IP
创建自定义网络并设置固定IP
在搭建一些集群软件的时候,组件和组件之间需要进行网络通信,这个时候如果每次重启IP都发生变化会很不方便,因此希望能够将容器的IP固定下来,这也是可以实现的,具体参考下面的方法。
名字为lion-network,网段为0-24
 
sudo docker network create --subnet=172.17.0.0/24 lion-network
该网段内宿主ip为172.17.0.1
 
docker network ls
查看docker网卡
docker network rm 网卡id
删除docker网卡
docker network inspect 网卡id
查看docker网卡的相关详细信息
 
18.启动tomcat1,tomcat2
docker run -d -p  8081:8080 --name tomcat1 --restart=always -- net lion-network -- ip 172.17.0.2 -v ~/tomcat/tomcat1/webapps:/usr/local/tomcat/webapps -v ~/tomcat/tomcat1/logs:/usr/local/tomcat/logs tomcat:8.5.38
 
docker run -d -p  8082:8080 --name tomcat2 --restart=always --net lion-network --ip 172.17.0.3 -v ~/tomcat/tomcat2/webapps:/usr/local/tomcat/webapps -v ~/tomcat/tomcat2/logs:/usr/local/tomcat/logs tomcat:8.5.38
 
 
docker run -d -p  8083:8080 --name tomcat-kuaishou --restart=always --net lion-network --ip 172.17.0.5 -v ~/tomcat/tomcat-kuaishou/webapps:/usr/local/tomcat/webapps -v ~/tomcat/tomcat-kuaishou/logs:/usr/local/tomcat/logs tomcat:8.5.38
 
docker run -d -p  8084:8080 --name tomcat-xiaoliang --restart=always --net lion-network --ip 172.17.0.6 -v ~/tomcat/tomcat-xiaoliang/webapps:/usr/local/tomcat/webapps -v ~/tomcat/tomcat-xiaoliang/logs:/usr/local/tomcat/logs tomcat:8.5.38
 
 
访问页面:http://ip:8081、http://ip:8082会出现相应的页面
 
 
如果出现404可进入容器内看一下是否有一个webapps.dist文件
docker ps
docker exec -it 容器id bash
ls -l tomcat
如果有把webapps.dist文件重名为webapps,把原有的webapps删除掉,应为原来的webapps可能为空
然后退出exit
然后重启容器:docker restart 容器id即可
 
19.如果ip地址被占用,查看ip地址
查看启动的容器
docker ps
 
20.vim /data/nginx/conf.d/default.conf#nginx代理tomcat集群配置
server {
listen 81;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://my_tomcat/;#代理的地址
proxy_redirect off;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

upstream my_tomcat {
#ip_hash;
server 172.17.0.2:8080;#tomcat1的ip
server 172.17.0.3:8080;#tomcat2的ip
}

 

 
21.重启nginx
docker restart nginx81
 
 
用下面这个命令,把container全部列出来:
docker container ls -a
然后start即可:
docker container start xxxxyyyyzzzz
 
 
22.遇到问题,tomcat挂载的硬盘目录,不起作用,不会自动更新到两台容易内。
后面使用手动复制命令,将war包复制到容器内
从主机复制到容器  sudo docker cp host_path containerID:container_path  
从容器复制到主机  sudo docker cp containerID:container_path host_path
发现容器内tomcat中有个tomcat2,里面有webapps,这里面的ROOT目录就是index.html
原来挂载到这里了
 
23.更改docker容器中的jdk
复制进去
docker cp /root/tomcat/ jdk-8u271-linux-x64.tar.gz tomcat2:/usr/local/java
进入容器内
解压缩
tar -zxvf jdk- 8 u 271 -linux-x 64 .tar.gz
chown root:root jdk 1 . 8 . 0 _ 271 -R
安装vim
yum update
yum -y install vim*
apt-get update
apt-get install vim
 
vim /etc/profile
 
export JAVA_HOME=/usr/local/java/jdk1.8.0_271 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
立刻生效
source /etc/profile
 
四.tomcatdocker的时区
cd /etc/
mv localtime localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部