shell脚本可以大大简化和自动化部署流程,包括安装必要的软件(JDK、Git、Maven)、配置MySQL从库、构建和运行Java应用等任务。使用shell脚本,可以一键完成这些繁琐的步骤,提高效率,减少人为错误。
1. 编写Shell脚本
首先,创建一个名为deploy.sh
的shell脚本,该脚本将包含以下部分:
安装JDK、Git和Maven
#!/bin/bash
# 安装JDK
sudo yum install -y java-11-openjdk
# 安装Git
sudo yum install -y git
# 安装Maven
# Maven官方不提供直接的yum安装方式,需要手动下载并解压
MAVEN_VERSION=3.6.3
wget http://www-us.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
sudo tar xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt/
sudo ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven
echo "export PATH=/opt/maven/bin:$PATH" | sudo tee -a /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh
配置MySQL从库
这部分需要在MySQL主库上已经完成配置,并且需要知道主库的IP地址、复制用户和密码。
# 配置MySQL从库(假设MySQL已经安装)
MYSQL_MASTER_IP="master_ip"
MYSQL_REPLICATION_USER="replication_user"
MYSQL_REPLICATION_PASSWORD="replication_password"
# MySQL配置文件可能根据安装方式有所不同
# 这里假设使用的是/etc/my.cnf
echo "
[mysqld]
server-id=2
log_bin=mysql-bin
read_only=1
" | sudo tee -a /etc/my.cnf
# 重启MySQL服务
sudo systemctl restart mysqld
# 在MySQL从库上配置复制
mysql -u root -p -e "
CHANGE MASTER TO
MASTER_HOST='${MYSQL_MASTER_IP}',
MASTER_USER='${MYSQL_REPLICATION_USER}',
MASTER_PASSWORD='${MYSQL_REPLICATION_PASSWORD}',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
START SLAVE;
"
克隆代码库、构建和运行Java应用
# 克隆代码库
git clone https://your.repository.url/yourproject.git
cd yourproject
# 使用Maven构建项目
mvn clean package
# 运行Jar包
java -jar target/yourapp.jar &
2. 运行Shell脚本
- 将
deploy.sh
脚本上传到服务器B。 - 通过SSH登录到服务器B。
- 赋予脚本执行权限:
chmod +x deploy.sh
。 - 执行脚本:
./deploy.sh
。
注意事项
- 在运行脚本之前,确保你有足够的权限执行这些命令,可能需要
sudo
权限。 - 根据实际情况调整脚本中的版本号、路径等信息。
- MySQL从库的配置需要根据实际的主库状态进行调整,特别是
MASTER_LOG_FILE
和MASTER_LOG_POS
的值。 - 确保防火墙和安全组设置允许服务器间的相应通信。
通过使用shell脚本自动化部署流程,可以显著提高部署效率和准确性,特别是在需要频繁更新和部署的开发环境中。