首页 Linux shell脚本:全自动安装mongodb、net8sdk、更新GCC、python3到centos7

shell脚本:全自动安装mongodb、net8sdk、更新GCC、python3到centos7

2024-09-03 09:46 编辑:  丽丽学习网

脚本主要实现的任务是更新GCC, 安装netcore8.0,配置.netcore8.0环境变量,安装mongodb,配置mongodb环境变量,启动mongodb,安装用于备份和恢复mongodb数据库工具,一键完成,主要应对场景是频繁更换服务器时快速部署由asp.net core8.0 + mongodb数据库制作的程序而生的。当然,你也可以安装宝塔,使用宝塔安装相关的软件,但是有时候宝塔里的软件不好使,只能自己写一下已经部署成功的脚本 ,以便以后快速部署网站环境。脚本是经过系统centos7.9 ,或 7.7 验证过的,  其他的7系列,8系列的应该也是可以的,如果curl所下载的网址不可用,可以上传本地的压缩包到服务器的/data/www/soft目录下(如没有,新建一个这样的目录,脚本是在此目录里执行的,下载的软件安装后是没有删除的,为了留着以后万一有用到,然后把下面的脚本也放在这个目录下的 installmongodbandnetcore8.sh文件里, 最后运行 sh installmongodbandnetcore8.sh即可自动安装),三个, dotnet-sdk-8.0.301-linux-x64.tar.gz(.netcore 8.0 sdk ),  mongodb-linux-x86_64-rhel70-4.4.25.tgz (mongodb) ,mongodb-database-tools-rhel70-x86_64-100.9.0.tgz(这个是mongodb的备份和恢复工具,如果不安装,不能使用mongorestore,mongodump等命令,但不影响mongodb的正常运行), 安装完毕,mongodb位于/www/server/mongodb/,  而 netcore8.0位于 /www/server/aspnet8 下,进入修改配置即可。shell脚本全自动安装mongodb和.netcore8.0 sdk

安装前的准备:

  1. 适合新购主机,安装centos7.9 系统后,其他系统没有测试,可能同时适合于centos7的其他版本。

  2. 双手合并闭眼作揖祈祷会一键通过。

#!/bin/bash
# 本脚本存放于 /data/www/soft
# 写入mongodb的配置文件
function installmongodb {
    # 判断文件是否存在
    if test -e mongodb-linux-x86_64-rhel70-4.4.25.tgz; then
        echo "文件存在,无需下载,正在安装"
    else
        echo "文件不存在,正在下载中...."
        curl -o mongodb-linux-x86_64-rhel70-4.4.25.tgz "https://www.hao366.net/download/mongodb-linux-x86_64-rhel70-4.4.25.tgz"
    fi
    echo "下载完成,正在创建文件夹..."
    mkdir -p /www/server/mongodb && \
    tar -zxvf mongodb-linux-x86_64-rhel70-4.4.25.tgz -C /www/server/mongodb && \
    touch /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    mkdir -p /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/data && \
    mkdir -p /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/logs && \
    touch /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/logs/mongodb.log && \
    #数据库的存放目录
    echo "dbpath= /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/data " >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    #日志文件存放目录
    echo "logpath=/www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/logs/mongodb.log" >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    #以追加的方式记录日志
    echo "logappend=true" >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    #端口默认为 27017
    echo "port=27017" >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    #对访问IP地址不做限制,如果想远程访问时,服务器首先开启端口27017通行,然后此处设置为 0.0.0.0
    echo "bind_ip=127.0.0.1" >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf && \
    #以守护进程的方式启用,即在后台运行
    echo "fork=true" >> /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf
}
function startmongo {
    #加入环境变量
    echo "Mongodb_ROOT=/www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25" >> ~/.bash_profile && echo "export PATH=$PATH:/www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin" >> ~/.bash_profile && source ~/.bash_profile && \
    # 启动
    mongod -f /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf
    # 上面的语句后加一个空格再加 --shutdown  即为关闭mongodb
}
# install  netcore8.0 sdk   
function installnetcore8 {
    cd /data/www/soft
    if test -e dotnet-sdk-8.0.301-linux-x64.tar.gz; then
        echo "dotnet-sdk-8.0.301-linux-x64.tar.gz文件存在,无需要下载"
    else
        echo "dotnet-sdk-8.0.301-linux-x64.tar.gz文件不存在,正在下载中..."
        curl -o dotnet-sdk-8.0.301-linux-x64.tar.gz "https://download.visualstudio.microsoft.com/download/pr/86497c4f-3dc8-4ee7-9f6a-9e0464059427/293d074c28bbfd9410f4db8e021fa290/dotnet-sdk-8.0.301-linux-x64.tar.gz"
    fi
    echo "下载完成,正在解压"
    mkdir -p /www/server/aspnet8 && \
    tar -zxvf dotnet-sdk-8.0.301-linux-x64.tar.gz -C /www/server/aspnet8 && \
    # 这句话应该是没有用 export DOTNET_ROOT=/www/server/aspnet8 && export PATH=$PATH:/www/server/aspnet8 &&\
    echo "DOTNET_ROOT=/www/server/aspnet8" >> ~/.bash_profile && \
    echo "export PATH=$PATH:/www/server/aspnet8" >> ~/.bash_profile && \
    source ~/.bash_profile
}
#install mongodb-database-tool 这是一个数据备份和恢复的工具
function installmongotool {
    if test -e mongodb-database-tools-rhel70-x86_64-100.9.0.tgz; then
        echo "mongodb-database-tools-rhel70-x86_64-100.9.0.tgz 文件存在,无需要下载"
    else
        echo "mongodb-database-tools-rhel70-x86_64-100.9.0.tgz文件不存在,正在下载..."
        curl -o mongodb-database-tools-rhel70-x86_64-100.9.0.tgz "https://www.hao366.net/download/mongodb-database-tools-rhel70-x86_64-100.9.0.tgz"
    fi
    echo "下载mongodb 完成..."
    mkdir -p /www/server/mongodb_tool_095231 && \
    tar -zxvf mongodb-database-tools-rhel70-x86_64-100.9.0.tgz -C /www/server/mongodb_tool_095231 && \
    #修改环境变量
    echo "MONGODB_TOOL=/www/server/mongodb_tool_095231/mongodb-database-tools-rhel70-x86_64-100.9.0" >> ~/.bash_profile && \
    echo "export PATH=$PATH:/www/server/mongodb_tool_095231/mongodb-database-tools-rhel70-x86_64-100.9.0/bin" >> ~/.bash_profile && \
    source ~/.bash_profile
}
#  update  Gcc 先安装.netcore8.0 的sdk , 安装完运行dotnet时如果提示缺少c++的运行库,再安装此gcc,这里很慢,如果不需要安装,可以注释掉,建议安装
function updategcc {
    # 检测gcc是否安装,如果已安装,则跳过
    #if gcc --version >/dev/null 2>&1; then
    #    echo "GCC is installed."
    #    return
    #else
    #    echo "GCC is not installed."
    #fi
    if test -e gcc-10.4.0.tar.gz; then
        echo "gcc-10.4.0.tar.gz文件存在,无需要下载"
    else
        echo "gcc-10.4.0.tar.gz文件不存在,正在下载..."
        curl -o gcc-10.4.0.tar.gz "https://mirrors.aliyun.com/gnu/gcc/gcc-10.4.0/gcc-10.4.0.tar.gz"
    fi
    echo "开始解压"
    tar -zxvf gcc-10.4.0.tar.gz -C /usr/local/src && \
    cd /usr/local/src/gcc-10.4.0/ && ./contrib/download_prerequisites && \
    ./configure --prefix=/usr/local/src/gcc-10.4.0/ --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap --enable-shared \
    --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
    --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,lto --enable-plugin \
    --enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --disable-multilib \
    && make -j$(nproc) && make install -j$(nproc) && \
    yum -y remove gcc gcc-c++ && \
    update-alternatives --install /usr/bin/gcc gcc /usr/local/src/gcc-10.4.0/bin/gcc 100 \
    --slave /usr/bin/g++ g++ /usr/local/src/gcc-10.4.0/bin/g++ \
    --slave /usr/bin/gcov gcov /usr/local/src/gcc-10.4.0/bin/gcov \
    --slave /usr/bin/c++ c++ /usr/local/src/gcc-10.4.0/bin/c++ \
    --slave /usr/bin/cc cc /usr/local/src/gcc-10.4.0/bin/cc \
    --slave /usr/lib64/libstdc++.so.6 libstdc++.so /usr/local/src/gcc-10.4.0/lib64/libstdc++.so.6.0.28 && gcc --version
}
# 安装python3
function installpython3 {
    # 新建存放python3的文件夹
    mkdir -p /www/server/python3_092949 && \
    # download
    curl -o Python-3.6.9.tgz "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz" && \
    # 解压至上面新建的文件夹
    tar -zxvf Python-3.6.9.tgz -C /www/server/python3_092949 && \
    # 进入文件夹
    cd /www/server/python3_092949/Python-3.6.9 && \
    # 配置 , /usr/local 为默认安装目录 –prefix=/usr/local
    ./configure && make && sudo make install
}
# pip安装相关库
function pip_install {
    # 升级pip
    python3 -m pip install --upgrade pip && \
    # 安装相关的库
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple BeautifulSoup4 && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple demjson && \
    # web 框架
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask && \
    # 结巴分词,简单提取文章关键词
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple lxml && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple nltk && \
    #数据库相关的 mongodb,mysql
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymongo && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyMySQL && \
    # 汉字转拼音比较方便的包
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pypinyin && \
    # python chatgpt相关的,似乎没用,至今没有用成功过,可以自动写文章,若不用,可注释,前面加#
    # pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple transformers && \
    # pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch && \
    # requests
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
}
#执行入口,如果一次安装出错时,需要一个一个的执行即可。看具体是哪个出错,再进行更改。
updategcc && installnetcore8 && installmongodb && startmongo && installmongotool && \
installpython3 && pip_install

执行步骤:

  1. 上面的文件保存于/data/www/soft 文件夹下, 名称自己起,如 xxx.sh,在任务目录下都可执行如下代码,一行一行的执行:


cd /data/www/soft
sh  ./xxx.sh

等待即可。