一、環(huán)境準(zhǔn)備:
(在此說(shuō)明本次測(cè)試環(huán)境為阿里云centos7.6,4c8g機(jī)器,1c1g機(jī)器性能不足)
1、創(chuàng)建項(xiàng)目目錄:mkdir -p /opt/codo/ && cd /opt/codo/
2、編輯環(huán)境變量文件,方便后續(xù)操作(注意修改密碼和secret)
vim /opt/codo/env.sh
echo -e "\033[31m 注意:token_secret一定要做修改,防止網(wǎng)站被攻擊!!!!!!! \033[0m"
echo -e "\033[32m 注意:token_secret一定要做修改,防止網(wǎng)站被攻擊!!!!!!! \033[0m"
echo -e "\033[33m 注意:token_secret一定要做修改,防止網(wǎng)站被攻擊!!!!!!! \033[0m"
#部署的IP地址
export LOCALHOST_IP="127.0.0.1"
#設(shè)置你的MYSQL密碼
export MYSQL_PASSWORD="m9uSFL7duAVXfeAwGUSG"
### 設(shè)置你的redis密碼
export REDIS_PASSWORD="cWCVKJ7ZHUK12mVbivUf"
### RabbitMQ用戶(hù)密碼信息
export MQ_USER="guest"
export MQ_PASSWORD="5Q2ajBHRT2lFJjnvaU0g"
#codo-admin用到的cookie和token
export cookie_secret="nJ2oZis0V/xlArY2rzpIE6ioC9/KlqR2fd59sD=UXZJ=3OeROB"
# 這里codo-admin和gw網(wǎng)關(guān)都會(huì)用到,一定要修改??缮呻S意字符
export token_secret="pXFb4i%*834gfdh963df718iodGq4dsafsdadg7yI6ImF1999aaG7"
##如果要進(jìn)行讀寫(xiě)分離,Master-slave主從請(qǐng)自行建立,一般情況下都是只用一個(gè)數(shù)據(jù)庫(kù)就可以了
# 寫(xiě)數(shù)據(jù)庫(kù)
export DEFAULT_DB_DBHOST="127.0.0.1"
export DEFAULT_DB_DBPORT='3306'
export DEFAULT_DB_DBUSER='root'
export DEFAULT_DB_DBPWD=${MYSQL_PASSWORD}
#export DEFAULT_DB_DBNAME=${mysql_database}
# 讀數(shù)據(jù)庫(kù)
export READONLY_DB_DBHOST='127.0.0.1'
export READONLY_DB_DBPORT='3306'
export READONLY_DB_DBUSER='root'
export READONLY_DB_DBPWD=${MYSQL_PASSWORD}
#export READONLY_DB_DBNAME=${mysql_database}
# 消息隊(duì)列
export DEFAULT_MQ_ADDR='127.0.0.1'
export DEFAULT_MQ_USER=${MQ_USER}
export DEFAULT_MQ_PWD=${MQ_PASSWORD}
# 緩存
export DEFAULT_REDIS_HOST='127.0.0.1'
export DEFAULT_REDIS_PORT=6379
export DEFAULT_REDIS_PASSWORD=${REDIS_PASSWORD}
==最后一定不要忘記source:== source /opt/codo/env.sh
3、安裝python3,docker和
#安裝python3
yum install python3 -y
#安裝docker
yum install docker -y
systemctl start docker.service
systemctl enable docker.service
安裝docker-compose
yum install docker-compose -y
4、安裝MySQL
一般來(lái)說(shuō)一個(gè)MySQL實(shí)例即可,如果有需求可以自行搭建主從,微服務(wù)每個(gè)服務(wù)都可以有自己的數(shù)據(jù)庫(kù)。
我們這里示例是用Docker部署的MySQL,如果你要用已有的數(shù)據(jù)庫(kù)請(qǐng)修改/opt/codo/env.sh
source /opt/codo/env.sh
mkdir -p /opt/codo/codo-mysql&& cd /opt/codo/codo-mysql
#編輯docker-compose.yml
cat >docker-compose.yml <<EOF
version: '2'
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
volumes:
mysql_data:
driver: local
EOF
#啟動(dòng)
docker-compose up -d
# 安裝MySQL客戶(hù)端,測(cè)試
yum install mysql -y
測(cè)試 mysql -h127.0.0.1 -uroot -p${MYSQL_PASSWORD}
5、安裝Redis
創(chuàng)建 docker-compose.yml
source /opt/codo/env.sh
mkdir -p /opt/codo/codo-redis && cd /opt/codo/codo-redis
#編輯docker-compose.yml
cat >docker-compose.yml <<EOF
version: '2'
services:
redis:
image: redis
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- data:/data
command: redis-server --requirepass 111111
volumes:
data:
driver: local
EOF
#啟動(dòng)
docker-compose up -d
#測(cè)試
沒(méi)有cli的同學(xué),請(qǐng)yum install redis -y
測(cè)試 redis-cli -h 127.0.0.1 -p 6379 -a ${REDIS_PASSWORD}
6、安裝RabbitMQ
創(chuàng)建 docker-compose.yml
source /opt/codo/env.sh
mkdir -p /opt/codo/codo-mq && cd /opt/codo/codo-mq
#編輯docker-compose.yml
cat >docker-compose.yml <<EOF
rabbitmq:
restart: unless-stopped
image: registry.cn-shanghai.aliyuncs.com/ss1917/rabbitmq:3-management
environment:
- RABBITMQ_DEFAULT_USER=${MQ_USER}
- RABBITMQ_DEFAULT_PASS=${MQ_PASSWORD}
ports:
- "15672:15672"
- "5672:5672"
EOF
#啟動(dòng)
docker-compose up -d
7、安裝DNS
注意,這里如果你內(nèi)部有自己DNS,你也可以選擇使用你自己的
部署內(nèi)部DNS dnsmasq 用于服務(wù)間內(nèi)部通信,API網(wǎng)關(guān)需要配置,切記。
echo -e "\033[32m [INFO]: Start install dnsmasq \033[0m"
yum install dnsmasq -y
# 設(shè)置上游DNS,畢竟你的Dns只是個(gè)代理
cat >/etc/resolv.dnsmasq <<EOF
nameserver 114.114.114.114
nameserver 8.8.8.8
EOF
# 設(shè)置host解析
echo -e "\033[32m [INFO]: 如果你是單機(jī)部署,那么你就將你的本機(jī)IP+模塊域名解析即可,如果你是分布式部署的,那么每個(gè)模塊對(duì)應(yīng)的機(jī)器IP一定不要搞錯(cuò),這個(gè)很重要,后面網(wǎng)關(guān)也要依賴(lài)此DNS去解析你的域名,幫你做服務(wù)轉(zhuǎn)發(fā)的,切記?。。。? \033[0m"
cat >/etc/dnsmasqhosts <<EOF
$LOCALHOST_IP demo-init.opendevops.cn
$LOCALHOST_IP mg.opendevops.cn
$LOCALHOST_IP task.opendevops.cn
$LOCALHOST_IP gw.opendevops.cn
$LOCALHOST_IP cmdb2.opendevops.cn
$LOCALHOST_IP kerrigan.opendevops.cn
$LOCALHOST_IP tools.opendevops.cn
$LOCALHOST_IP cron.opendevops.cn
$LOCALHOST_IP dns.opendevops.cn
EOF
# 添加配置
echo -e "\033[32m [INFO]: 剛裝完DNS可以先不用改本機(jī)的DNS,有一部分人反應(yīng)Docker Build時(shí)候會(huì)報(bào)連不上mirrors,裝不了依賴(lài)。部署到API網(wǎng)關(guān)的時(shí)候,需要將本機(jī)DNS改成自己,不然沒(méi)辦法訪(fǎng)問(wèn)以上mg,cron,cmdb等內(nèi)網(wǎng)域名
\033[0m"
# 注意下一步是覆蓋你本機(jī)的DNS,建議把你的DNS地址加在/etc/resolv.dnsmasq 里面
cp -rp /etc/resolv.conf /etc/resolv.conf-`date +%F`
# echo "nameserver $LOCALHOST_IP" > /etc/resolv.conf
sed "1i\nameserver ${LOCALHOST_IP}" /etc/resolv.conf -i
###注意注意, 這里修改完后,請(qǐng)你一定要確定你nameserver ${LOCALHOST_IP} 內(nèi)部DNS在第一條、第一條、第一條,放在下面是不能正常解析的.
echo "resolv-file=/etc/resolv.dnsmasq" >> /etc/dnsmasq.conf
echo "addn-hosts=/etc/dnsmasqhosts" >> /etc/dnsmasq.conf
## 啟動(dòng)
/bin/systemctl enable dnsmasq.service
/bin/systemctl start dnsmasq.service
systemctl status dnsmasq
if [ $? == 0 ];then
echo -e "\033[32m [INFO]: dnsmasq install success. \033[0m"
else
echo -e "\033[31m [ERROR]: dnsmasq install faild \033[0m"
exit -6
fi