You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

364 lines
9.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
echo "Start installing aurora blog"
echo "installing yum-utils..."
sudo yum install -y yum-utils
if [ $? -ne 0 ]; then
echo "yum-utils install failed"
exit 1
fi
echo "Configuring docker Alibaba Cloud image... "
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
if [ $? -ne 0 ]; then
echo "Docker image warehouse configuration failed"
exit 1
fi
echo "Updating yum package index..."
sudo yum makecache fast
if [ $? -ne 0 ]; then
echo "yum package index update failed"
exit 1
fi
echo "Installing docker..."
sudo yum install docker-ce docker-ce-cli containerd.io
if [ $? -ne 0 ]; then
echo "Docker installation failed"
exit 1
fi
echo "Starting docker..."
sudo systemctl start docker
if [ $? -ne 0 ]; then
echo "Docker failed to start "
exit 1
else
echo "Docker launched successfully"
fi
echo "Setting docker to boot automatically..."
sudo systemctl enable docker
if [ $? -ne 0 ]; then
echo "Docker failed to set up self-boot"
exit 1
fi
sudo mkdir -p /etc/docker
if [ $? -ne 0 ]; then
echo "mkdir -p /etc/docker failed"
exit 1
fi
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://hub.atomgit.com/repos",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}
EOF
if [ $? -ne 0 ]; then
echo "tee /etc/docker/daemon.json failed"
exit 1
fi
sudo systemctl daemon-reload
if [ $? -ne 0 ]; then
echo "systemctl daemon-reload failed"
exit 1
fi
sudo systemctl restart docker
if [ $? -ne 0 ]; then
echo "systemctl restart docker failed"
exit 1
fi
echo "Creating docker network bridge..."
sudo docker network create aurora
if [ $? -ne 0 ]; then
echo "Docker network bridge creation failed"
exit 1
fi
mysql_version="8.0.39-debian"
echo "Installing mysql..."
sudo docker pull mysql:$mysql_version
if [ $? -ne 0 ]; then
echo "MySQL image download failed"
exit 1
fi
sudo mkdir -p /opt/data/mysql/data
if [ $? -ne 0 ]; then
echo "mkdir -p /opt/data/mysql/data failed"
exit 1
fi
sudo mkdir -p /opt/data/mysql/conf
if [ $? -ne 0 ]; then
echo "mkdir -p /opt/data/mysql/conf failed"
exit 1
fi
sudo mkdir -p /opt/data/mysql/mysqld
if [ $? -ne 0 ]; then
echo "mkdir -p /opt/data/mysql/mysqld failed"
exit 1
fi
sudo chmod 777 /opt/data/mysql/data
if [ $? -ne 0 ]; then
echo "chmod 777 /opt/data/mysql/data failed"
exit 1
fi
sudo chmod 777 /opt/data/mysql/conf
if [ $? -ne 0 ]; then
echo "chmod 777 /opt/data/mysql/conf failed"
exit 1
fi
sudo chmod 777 /opt/data/mysql/mysqld
if [ $? -ne 0 ]; then
echo "chmod 777 /opt/data/mysql/mysqld failed"
exit 1
fi
config_file="my.cnf"
sudo cp $config_file /opt/data/mysql/conf/
if [ $? -eq 0 ]; then
echo "mysql configuration file copied successfully"
else
echo "Copying mysql configuration file failed"
exit 1
fi
MYSQL_PASSWORD="Aurora_123456"
echo "Starting mysql..."
sudo docker run \
--name mysql \
--restart=always \
-p 3306:3306 \
-v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/data:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=$MYSQL_PASSWORD -d mysql:$mysql_version
if [ $? -ne 0 ]; then
echo "mysql failed to start"
exit 1
else
echo "mysql started successfully"
fi
sudo docker network connect aurora mysql
if [ $? -ne 0 ]; then
echo "mysql failed to join docker network"
exit 1
else
echo "mysql successfully joined docker network"
fi
machine_physics_net=$(ls /sys/class/net/ | grep -v "$(ls /sys/devices/virtual/net/)")
local_ip=$(ip addr | grep "$machine_physics_net" | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}')
public_ip=$(curl ifconfig.me)
echo "Creating database..."
sleep 20
sudo docker exec -i mysql mysql -h $local_ip -uroot -p$MYSQL_PASSWORD -e "CREATE DATABASE aurora CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
if [ $? -ne 0 ]; then
echo "Database creation failed"
exit 1
else
echo "Database created successfully"
fi
echo "Initializing database..."
sudo docker exec -i mysql mysql -h $local_ip -uroot -p$MYSQL_PASSWORD aurora <$(pwd)/aurora.sql
if [ $? -ne 0 ]; then
echo "Database initialization failed"
exit 1
else
echo "Database initialization successful"
fi
redis_version="7.0.13"
echo "Installing redis..."
sudo docker pull redis:$redis_version
if [ $? -ne 0 ]; then
echo "Redis image download failed"
exit 1
fi
REDIS_PASSWORD="123456"
echo "Starting redis..."
sudo docker run --name redis \
--restart=always \
-p 6379:6379 -d redis:$redis_version \
--requirepass $REDIS_PASSWORD
if [ $? -ne 0 ]; then
echo "redis failed to start"
exit 1
else
echo "redis launched successfully"
fi
sudo docker network connect aurora redis
if [ $? -ne 0 ]; then
echo "redis failed to join docker network"
exit 1
else
echo "redis successfully joined docker network"
fi
rabbitmq_version="3.12.14"
echo "Installing rabbitmq..."
sudo docker pull rabbitmq:$rabbitmq_version-management
if [ $? -ne 0 ]; then
echo "rabbitmq image download failed"
exit 1
fi
echo "Starting rabbitmq..."
sudo docker run --name rabbitmq \
--restart=always -p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest \
-d rabbitmq:$rabbitmq_version-management
if [ $? -ne 0 ]; then
echo "rabbitmq failed to start"
exit 1
else
echo "rabbitmq launched successfully"
fi
sudo docker network connect aurora rabbitmq
if [ $? -ne 0 ]; then
echo "rabbitmq failed to join docker network"
exit 1
else
echo "rabbitmq successfully joined docker network"
fi
echo "Installing minio..."
sudo docker pull minio/minio
if [ $? -ne 0 ]; then
echo "Minio image download failed"
exit 1
fi
sudo mkdir -p /opt/data/minio/config
if [ $? -ne 0 ]; then
echo "minio profile directory creation failed"
exit 1
fi
sudo mkdir -p /opt/data/minio/data
if [ $? -ne 0 ]; then
echo "minio data directory creation failed"
exit 1
fi
echo "Starting minio..."
sudo docker run \
-p 9000:9000 \
-p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /opt/data/minio/data:/data \
-v /opt/data/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"
if [ $? -ne 0 ]; then
echo "minio failed to start"
exit 1
else
echo "Minio launched successfully"
fi
sudo docker network connect aurora minio
if [ $? -ne 0 ]; then
echo "Minio failed to join docker network"
exit 1
else
echo "Minio joins docker network successfully"
fi
echo "Creating minio default bucket..."
minio_bucket="aurora"
minio_myname="myminio"
sudo docker exec -it minio mc alias set $minio_myname http://minio:9000 minioadmin minioadmin
if [ $? -ne 0 ]; then
echo "minio alias setting failed"
exit 1
fi
sudo docker exec -it minio mc mb $minio_myname/$minio_bucket
if [ $? -ne 0 ]; then
echo "minio default bucket creation failed"
exit 1
else
echo "minio default bucket created successfully"
fi
sudo docker exec -it minio mc anonymous set public $minio_myname/$minio_bucket
if [ $? -ne 0 ]; then
echo "Minio default bucket permissions setting failed"
exit 1
fi
echo "Installing openjdk 8..."
sudo docker pull openjdk:8-jdk
if [ $? -ne 0 ]; then
echo "Openjdk 8 image download failed"
exit 1
fi
echo "Starting backend services..."
minio_url=http://$public_ip:8066/minio/
sudo docker run -d \
-p 8080:8080 \
--name aurora_server --restart=always \
-v $(pwd):$(pwd) \
openjdk:8-jdk java -jar -Dupload.minio.bucketName=$minio_bucket -Dupload.minio.url=$minio_url $(pwd)/aurora-springboot-0.0.1.jar
if [ $? -ne 0 ]; then
echo "Back-end service startup failed"
exit 1
else
echo "Back-end service started successfully"
fi
sudo docker network connect aurora aurora_server
if [ $? -ne 0 ]; then
echo "Back-end service failed to join docker network"
exit 1
else
echo "Back-end service successfully joined docker network"
fi
echo "Restarting backend services..."
sudo docker restart aurora_server
if [ $? -ne 0 ]; then
echo "Back-end service restart failed"
exit 1
else
echo "Back-end service restarted successfully"
fi
echo "Installing nginx..."
sudo docker pull nginx
if [ $? -ne 0 ]; then
echo "nginx image download failed"
exit 1
fi
echo "Starting nginx..."
sudo docker run -d \
--name aurora_nginx \
--restart=always \
-p 8066:8066 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
-v $(pwd)/blog_web:/usr/local/aurora-vue/blog \
-v $(pwd)/admin_web:/usr/local/aurora-vue/admin \
nginx
if [ $? -ne 0 ]; then
echo "nginx failed to start"
exit 1
else
echo "nginx started successfully"
fi
sudo docker network connect aurora aurora_nginx
if [ $? -ne 0 ]; then
echo "nginx failed to join docker network"
exit 1
else
echo "nginx successfully joins docker network"
fi
echo "Restarting nginx..."
sudo docker restart aurora_nginx
if [ $? -ne 0 ]; then
echo "nginx restart failed"
exit 1
else
echo "nginx restarted successfully"
fi
echo "All services started successfully"
echo "服务器安全组需要开放8066端口才能访问博客"
echo 访问 http://$public_ip:8066/ 即可访问博客
echo 访问 http://$public_ip:8066/admin/ 即可访问后台管理
echo "后台管理默认账号密码为admin@163.com / 123456"
echo "作者花未眠http://www.linhaojun.top/"
echo "部署脚本作者karlhttps://kangxianghui.top/"
echo "感谢您选择使用Aurora博客系统祝您使用愉快"