add: python3.10 install script
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
# 安装Python 3.10.14到CentOS服务器
|
||||
# 如果本地是Python 3.6就在本地装;否则通过SSH装到新服务器
|
||||
set -e
|
||||
|
||||
NEW_SERVER="172.30.18.199"
|
||||
SSH_KEY="/root/.ssh/new_server_ed25519"
|
||||
|
||||
PY_VER=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])' 2>/dev/null || echo "0.0")
|
||||
echo "Current Python: $PY_VER"
|
||||
|
||||
do_install() {
|
||||
echo "=== Install build deps ==="
|
||||
if command -v yum &>/dev/null; then
|
||||
yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make readline-devel sqlite-devel 2>&1 | tail -3
|
||||
elif command -v apt-get &>/dev/null; then
|
||||
apt-get update -qq && apt-get install -y build-essential zlib1g-dev libffi-dev libssl-dev wget 2>&1 | tail -3
|
||||
fi
|
||||
|
||||
echo "=== Download Python 3.10.14 ==="
|
||||
cd /tmp
|
||||
[ -f Python-3.10.14.tgz ] || wget -q https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
|
||||
|
||||
echo "=== Compile ==="
|
||||
[ -d Python-3.10.14 ] || tar xzf Python-3.10.14.tgz
|
||||
cd Python-3.10.14
|
||||
./configure --prefix=/usr/local/python310 --with-ensurepip=install 2>&1 | tail -3
|
||||
make -j$(nproc) 2>&1 | tail -10
|
||||
make install 2>&1 | tail -3
|
||||
|
||||
echo "=== Set as default ==="
|
||||
[ -f /usr/bin/python3 ] && mv /usr/bin/python3 /usr/bin/python3.bak 2>/dev/null || true
|
||||
[ -f /usr/bin/pip3 ] && mv /usr/bin/pip3 /usr/bin/pip3.bak 2>/dev/null || true
|
||||
ln -sf /usr/local/python310/bin/python3.10 /usr/bin/python3
|
||||
ln -sf /usr/local/python310/bin/pip3.10 /usr/bin/pip3
|
||||
ln -sf /usr/local/python310/bin/python3.10 /usr/local/bin/python3
|
||||
ln -sf /usr/local/python310/bin/pip3.10 /usr/local/bin/pip3
|
||||
|
||||
echo "=== Verify ==="
|
||||
python3 --version
|
||||
pip3 --version
|
||||
pip3 install --help 2>&1 | grep -q "break-system" && echo "break-system-packages: OK" || echo "WARN: no break-system"
|
||||
}
|
||||
|
||||
fix_cmd_agent_port() {
|
||||
echo "=== Fix CMD Agent port 5000->5927 ==="
|
||||
[ -f /opt/cmd-agent/server.py ] || { echo "CMD Agent not found"; return 0; }
|
||||
sed -i 's/port=5000/port=5927/g' /opt/cmd-agent/server.py
|
||||
sed -i 's/port = 5000/port = 5927/g' /opt/cmd-agent/server.py
|
||||
systemctl restart cmd-agent
|
||||
sleep 2
|
||||
ss -tlnp | grep 5927 && echo "CMD Agent: OK on 5927" || echo "CMD Agent: port check failed"
|
||||
}
|
||||
|
||||
restart_runners() {
|
||||
echo "=== Restart 6 runners ==="
|
||||
for i in 1 2 3 4 5 6; do
|
||||
systemctl restart act-runner-$i && echo "runner-$i restarted"
|
||||
done
|
||||
sleep 3
|
||||
systemctl list-units 'act-runner-*' --no-legend
|
||||
}
|
||||
|
||||
if [ "$PY_VER" = "3.6" ]; then
|
||||
echo "On new server, installing locally..."
|
||||
do_install
|
||||
fix_cmd_agent_port
|
||||
restart_runners
|
||||
else
|
||||
echo "On old server, installing via SSH to $NEW_SERVER..."
|
||||
|
||||
mkdir -p /root/.ssh
|
||||
[ -f "$SSH_KEY" ] || { echo "SSH key not found at $SSH_KEY"; exit 1; }
|
||||
chmod 600 "$SSH_KEY"
|
||||
|
||||
# 测试连接
|
||||
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@$NEW_SERVER "echo SSH_OK"
|
||||
|
||||
# 传脚本并执行
|
||||
scp -i "$SSH_KEY" -o StrictHostKeyChecking=no "$0" root@$NEW_SERVER:/tmp/install_python310.sh
|
||||
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no root@$NEW_SERVER "bash /tmp/install_python310.sh"
|
||||
fi
|
||||
|
||||
echo "=== ALL DONE ==="
|
||||
Reference in New Issue
Block a user