設置root密碼
sudo passwd root
******
開啟密碼登錄
vi /etc/ssh/sshd_config
...
PasswordAuthentication yes
PermitRootLogin yes
...
報存并退出vi,重啟sshd
sudo service sshd restart
安裝docker
#安裝前先移除系統(tǒng)可能自帶的妖魔鬼怪
sudo yum -y remove containerd.io docker-buildx-plugin docker-compose-plugin docker-ce podman-docker docker-ce-cli
#yum管理工具=yum-config-manager
sudo yum -y install -y yum-utils
#sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#千萬不要使用阿里云的地址,阿里云的鏡像已經(jīng)將docker用podman進行了貍貓換太子,實際安裝的是podman-docker,無法使用idea的ssh進行連接。
#刪除所有名字帶docker的源:cd /etc/yum.repos.d 然后rm -f yum.repos.d目錄下的源(文件名)
sudo yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum clean all
sudo yum makecache
sudo yum -y install docker-ce docker-ce-cli containerd.io
可能遇到的問題:
更換成官方倉庫后運行sudo yum install docker-ce失敗,提示"404 for https://download.docker.com/inux/centos/docker-ce.re/repodata/repomd.xml
解決辦法:
curl -I https://download.docker.com
看看能否正常訪問docker官網(wǎng),如果不能就去解決網(wǎng)絡問題,如果能,繼續(xù)下面步驟:
sudo yum clean all
sudo yum makecache
#如果makecache報錯,則重新clean all再makecache,直到不報錯為止。
sudo yum install docker-ce docker-ce-cli containerd.io
#最后這個安裝命令如果失敗,就多試幾次,因為網(wǎng)絡不穩(wěn)定有時候下載不下來。
安裝nginx
sudo yum -y install pcre-devel zlib-devel openssl openssl-devel
sudo yum -y install epel-release
sudo yum -y install nginx
sudo yum -y install nginx-all-modules.noarch
設置nginx自啟動
systemctl enable nginx && systemctl start nginx
nginx配置
https配置
ssl_certificate /mydata/nginx/keys/www.xuexibisai.com.pem;
ssl_certificate_key /mydata/nginx/keys/www.xuexibisai.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
切記:有的網(wǎng)站下載的pem文件有問題,只有當前域名的證書,沒有上級的證書,導致很多瀏覽器無法訪問。解決辦法就是:把ca_bundle.crt的內(nèi)容全部復制追加到certificate.crt后面,然后將crt轉(zhuǎn)成pem文件openssl x509 -in ca.crt -out ca.pem -outform PEM
。
http集群
待續(xù)
tcp端口代理和負載均衡
在nginx.conf文件最后面加入:
stream {
upstream tcpBalance {
server www.xuexibisai.com:9681 weight=5;
server www.xuexibisai.com:9682 weight=5;
}
server {
listen 9696;
proxy_connect_timeout 20s;
proxy_timeout 5m;
proxy_pass tcpBalance;
}
}
nginx打印post消息體日志
log_format main escape=json '{ "@timestamp": "$time_iso8601", "remoteaddr": "$remote_addr", "costime": "$request_time", "realtime": "$upstream_response_time", "status": $status, "request": "$request", "dm": "$request_body" }';
access_log /var/log/nginx/access.log main;
安裝docker
sudo yum -y install -y yum-utils
sudo yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo yum -y install docker
設置docker自啟動
systemctl enable docker && systemctl start docker
修改docker基礎配置
vi /etc/docker/daemon.json
...
#鏡像服務器
"registry-mirrors": ["https://bfkszez0.mirror.aliyuncs.com"],
#域名解析服務器
"dns": ["8.8.8.8"],
#日志配置
"log-driver":"json-file",
"log-opts":{"max-size":"1500m","max-file":"100"}
...
創(chuàng)建docker網(wǎng)關
作用是容器內(nèi)可以在不知道宿主機ip的情況下使用192.168.0.1來訪問宿主機。
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mygateway
docker安裝mysql
單機版本
docker run --restart=always -d -p 3306:3306 --privileged=true -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD="123456" --name mysql mysql:5.7.15
主從版本
請參考文章操作:https://blog.csdn.net/u012643122/article/details/125899829
mysql安裝特別注意點
有些docker的mysql鏡像的my.cnf文件和my.cnf.d目錄配置文件在/etc目錄下,不在/etc/mysql目錄下,對應命令需要修改。
先在宿主機新建文件/mydata/mysql/conf/my.cnf,文件內(nèi)容如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
然后創(chuàng)建mysql容器:
docker run --restart=always -d -p 3306:3306 --privileged=true -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf/my.cnf:/etc/my.cnf -v /mydata/mysql/conf/my.cnf.d:/etc/my.cnf.d -e MYSQL_ROOT_PASSWORD="123456" --name mysql mysql:8.0
友情提示:my.cnf文件內(nèi)容和路徑如何獲???可以創(chuàng)建一個不掛載任何數(shù)據(jù)卷的mysql容器(docker run -d -p 3306:3306 --name mysql mysql:8.0),然后docker exec命令進入后查看my.cnf到底在哪個路徑,并使用docker cp命令將my.cnf文件拷貝到宿主機。
docker安裝redis
設置密碼:
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
不要密碼:
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf
docker安裝rabbitmq和mqtt
安裝rabbitmq:
docker run --restart=always -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=myname -e RABBITMQ_DEFAULT_PASS=123456 -p 1883:1883 -p 15672:15672 -p 15674:15674 -p 5672:5672 rabbitmq:management
開啟mqtt:
docker exec rabbitmq /bin/sh -c "rabbitmq-plugins enable rabbitmq_mqtt;rabbitmq-plugins enable rabbitmq_web_mqtt;"
rabbitmq連接地址:http://宿主機ip:5672
mqtt連接地址:http://宿主機ip:1883
rabbitmq管理界面:http://宿主機ip:15672
docker安裝rabbitmq和emqx
安裝rabbitmq:
docker run --restart=always -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=myname -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 15674:15674 -p 5672:5672 rabbitmq:management
安裝emqx:
docker run -d --name emqx -p 1883:1883 -p 18083:18083 -p 8083:8083 --restart=always emqx/emqx:latest
支持微信小程序websocket:
docker exec -it -uroot emqx bash
echo "listeners.ws.default.websocket.fail_if_no_subprotocol = false" >> ./etc/emqx.conf
emqx管理界面:http://宿主機ip:18083
emqx默認賬號密碼:admin/public
docker安裝rocketmq
安裝nameserver
docker run -d --restart=always --name rocket-namesrv -p 9876:9876 -v /mydata/rocketmq/namesrv/logs:/root/logs -v /mydata/rocketmq/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
新建配置:
vi /mydata/rocketmq/broker/conf/broker.conf
# 所屬集群名稱,如果節(jié)點較多可以配置多個
brokerClusterName = DefaultCluster
#broker名稱,master和slave使用相同的名稱,表明他們的主從關系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示幾點做消息刪除動作,默認是凌晨4點
deleteWhen = 04
#在磁盤上保留消息的時長,單位是小時
fileReservedTime = 48
#有三個值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機制;
brokerRole = ASYNC_MASTER
#刷盤策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài),ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 設置broker節(jié)點所在服務器的ip地址
brokerIP1 = 192.168.0.1
# 磁盤使用達到95%之后,生產(chǎn)者再寫入消息會報錯 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
安裝broker:
docker run -d --restart=always --name rmqbroker --link rocket-namesrv:namesrv -p 10911:10911 -p 10909:10909 -v /mydata/rocketmq/broker/logs:/root/logs -v /mydata/rocketmq/broker/store:/root/store -v /mydata/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
docker安裝nacos2
下載nacos的壓縮包(可能需要參考里面的默認配置文件和sql文件):
https://github.com/alibaba/nacos/releases/download/2.2.1/nacos-server-2.2.1.zip
單機版
新增配置:
vi /mydata/nacos/conf/application.properties
...
### 修改數(shù)據(jù)庫配置start(如果不需要mysql,將下面配置全部注釋即可):
spring.datasource.platform=mysql
spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.0.1:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
### 修改數(shù)據(jù)庫配置end(如果不需要mysql,將上面配置全部注釋即可):
...
### 一定要改這個:
nacos.core.auth.plugin.nacos.token.secret.key=M6vLzgEfg0Tt7nsHgGh84Pb64dXdeKp2C
...
創(chuàng)建數(shù)據(jù)庫nacos-config(如果不需要mysql,則無需執(zhí)行):
docker exec mysql /bin/sh -c "mysql -uroot -p123456 -e \"create database nacos-config default character set utf8 collate utf8_bin\""
運行nacos自帶的sql(如果不需要mysql,則無需執(zhí)行):
docker cp /mydata/nacos/conf/mysql-schema.sql mysql:/home/nacos_config.sql
docker exec mysql /bin/sh -c "mysql -uroot -p123456 -e \"source /home/nacos_config.sql\""
安裝nacos
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server:v2.2.1
客戶端訪問地址:
nacos連接地址:server-addr: 宿主機ip:8848
nacos管理界面:http://宿主機ip:8848/nacos
nacos默認賬號密碼:nacos/nacos
集群版
集群版只比單機版多個cluster.conf配置文件,其他都一樣
新增配置application.properties(參考單機版,省略):
vi /mydata/nacos/conf/application.properties
新增配置cluster.conf:
vi /mydata/nacos/conf/cluster.conf
192.168.0.1:8848
192.168.0.1:8858
安裝nacos1
docker run -d --name nacos1 -p 8848:8848 -p 9848:9848 -p 9849:9849 -v /mydata/nacos1/logs/:/home/nacos/logs -v /mydata/nacos1/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server:v2.2.1
安裝nacos2文章來源:http://www.zghlxwxcb.cn/news/detail-724408.html
docker run -d --name nacos2 -p 8858:8848 -p 9858:9848 -p 9859:9849 -v /mydata/nacos2/logs/:/home/nacos/logs -v /mydata/nacos2/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server:v2.2.1
客戶端訪問地址:
nacos連接地址:server-addr: 宿主機ip:8848,宿主機ip:8858
nacos1管理界面:http://宿主機ip:8848/nacos
nacos2管理界面:http://宿主機ip:8858/nacos
nacos默認賬號密碼:nacos/nacos文章來源地址http://www.zghlxwxcb.cn/news/detail-724408.html
到了這里,關于centos或aws linux部署java應用,環(huán)境搭建shell的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!