diff --git a/aurora_start.sh b/aurora_start.sh new file mode 100644 index 0000000..0458f54 --- /dev/null +++ b/aurora_start.sh @@ -0,0 +1,363 @@ +#!/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 "部署脚本作者:karl(https://kangxianghui.top/)" +echo "感谢您选择使用Aurora博客系统,祝您使用愉快!"