記一次docker安裝+nginx+tomcat+分佈式環境搭建。主機搭rabbitMq+redis

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
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章