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

更新记录:
2024.11.6号 修正出现mongo: error while loading shared libraries: libcrypto.so.10的错误
2024.11.5号 GCC更新出错,可以先去除或注释掉gcc更新的函数,手动更新GCC, 更新版本从链接中选择 https://gcc.gnu.org/mirrors.html
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
安装前的准备:
适合新购主机,安装centos7.9 系统后,其他系统没有测试,可能同时适合于centos7的其他版本。
双手合并闭眼作揖祈祷会一键通过。
#!/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执行步骤:
上面的文件保存于/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




















