Loading...

Linux,centos7, 操作系统服务器操作系统学习

当前位置:首页Linux

新开主机新开服务器全自动安装一键安装mongodb、net8sdk、更新GCC、python3到centos7

发布时间:2026-01-11 09:07
新开主机新开服务器全自动安装一键安装mongodb、net8sdk、更新GCC、python3到centos7

更新记录:

  1. 2024.11.6号 修正出现mongo: error while loading shared libraries: libcrypto.so.10的错误

  2. 2024.11.5号 GCC更新出错,可以先去除或注释掉gcc更新的函数,手动更新GCC, 更新版本从链接中选择 https://gcc.gnu.org/mirrors.html

  3. 2024.11.17号更新,修改python安装包本地有的情况下不再下载

脚本主要实现的任务是更新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

可以提前下载的压缩包

以下5个压缩包可以提前下载到您的电脑,然后上传至服务器的 /data/www/soft 文件夹,这样就不用在服务器上下载,速度比服务器上下载要快,当然您也可以为了省事,不下载,直接运行下面的脚本,让服务器下载

https://mirrors.aliyun.com/gnu/gcc/gcc-10.4.0/gcc-10.4.0.tar.gz

https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz

https://www.hao366.net/download/mongodb-linux-x86_64-rhel70-4.4.25.tgz

https://download.visualstudio.microsoft.com/download/pr/86497c4f-3dc8-4ee7-9f6a-9e0464059427/293d074c28bbfd9410f4db8e021fa290/dotnet-sdk-8.0.301-linux-x64.tar.gz

https://www.hao366.net/download/mongodb-database-tools-rhel70-x86_64-100.9.0.tgz

安装前的准备:

  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 && \
    #防止出现 mongo: error while loading shared libraries: libcrypto.so.10 的错误
    sudo yum update && \
    sudo yum install openssl-libs && \
    #以守护进程的方式启用,即在后台运行
    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文件不存在,正在下载..."
        # 如果这里的下载链接不可用,可以到此网站去找最新的版本 https://gcc.gnu.org/mirrors.html
        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 {
    if test -e Python-3.6.9.tgz; then
        echo "Python-3.6.9.tgz文件存在,无需要下载"
    else
        echo "Python-3.6.9.tgz文件不存在,正在下载..."
        # 如果这里的下载链接不可用,可以到此网站去找最新的版本 https://gcc.gnu.org/mirrors.html
        curl -o Python-3.6.9.tgz "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz" 
    fi
    echo "开始解压"
    # 新建存放python3的文件夹
    mkdir -p /www/server/python3_092949 && \
    # 解压至上面新建的文件夹
    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 && \
    # install wheel
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple wheel && \
    # 安装相关的库
    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 && \
    # 使用Gunicorn来启动Flask应用
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn && \
    # 安装Pillow 图像处理库
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Pillow && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple dbutils && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple csscompressor && \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyVirtualDisplay && \
    # install slimit
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple slimit    &&    \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple emoji    &&    \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple sumy    &&    \
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
    
    
}
#执行入口,如果一次安装出错时,需要一个一个的执行即可。看具体是哪个出错,再进行更改。
installnetcore8 && installmongodb && startmongo && installmongotool && \
installpython3 && pip_install && updategcc

执行步骤:

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

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

等待即可。

运行flask注意:

gunicorn -w 4 -b 127.0.0.1:8000 --chdir /www/server/mypro myapp:app
  • -w 4表示使用4个工作进程。
  • -b 127.0.0.1:8000表示绑定到本地主机的8000端口。
  • myapp:app表示应用实例,其中myapp是Python文件名,app是Flask实例。

  • --chdir 程序存放的目录

修改Flask应用代码, 设置 debug=True

确保Flask应用代码没有在生产环境中调用app.run():

if __name__ == '__main__':
    
     app.run(debug=True)  # 仅用于开发环境

出现的问题解决:

在不同的 centos 版本上可能出现 的问题如下:

 1、 error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file解决,一句一句的执行

wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm

不行可以先下载下来,

https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm

再执行

rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm

安装完后如何设置mongodb账号和密码登录,开启mongo权限登录

直接启动, 

mongod -f /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf

但是会出现 找不到mongod 命令,查看全局路径,也有配置,因为安装时是选装,没有安装GCC, 此时更新 gcc

执行上面的.sh文件,安装 

updategcc

如何开通权限登录,连接mongodb时要用户名和密码

1、确认mongodb启动之后,先添加一个超级管理员的用户,因为此时是不用权限可以登录

use admin;
db.createUser({user: 'root', pwd: '123456', roles: ['root']});

2、打开mongodb.conf配置文件,路径在下面

/www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf

最后一行添加

auth=yes

3、重新启动mongodb,先关闭再启动

#关闭
mongod -f /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf --shutdown
#启动
mongod -f /www/server/mongodb/mongodb-linux-x86_64-rhel70-4.4.25/bin/mongodb.conf

4、使用Root用户名登录

mongo --host localhost --port 27017 -uroot
shell脚本自动备份压缩mongodb数据库(mongodb数据库备份)

shell脚本自动备份压缩mongodb数据库(mongodb数据库备份)定义备份目录和文件名, 把该内容保存在此文件夹的位置,然后命名为。

Shell脚本简单的命令(使用shell脚本编写自动化的作业)

shell脚本编写命令, 可以使你在维护服务器的工作中获取更快节省更多的时间,在shell脚本中,你可以编写一个简单的命令来执行特定的任务。

如何让shell脚本在后台运行 关闭当前窗口后继续执行shell脚本

如何让shell脚本在后台运行 关闭当前窗口后继续执行shell脚本, 上面的脚本运行后,会删除mytestdir这个文件夹,为什么有这个需

centos7中使用shell脚本压缩建立后台压缩的shell脚本

shell脚本压缩建立后台压缩的shell脚本 , 把上面的代码放入到你要压缩的文件夹的同目录下 abc.sh 文件中,然后运行它, 然后查

shell脚本中如何使用curl命令下载文件

这个命令是使用 `curl` 工具来下载一个文件的命令行示例。`curl` 是一个功能强大的命令行工具,用于传输数据,支持多种协议,包括 H

提供免费的服务器维护、网站维护、宝塔面板的安装及运行。

网站编写代码分享

网站收录效果不好,自然会影响排名,网站优化首先第一步是要搞好网站收录

网络营销