脚本主要实现的任务是更新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
安装前的准备:
适合新购主机,安装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 && \ #以守护进程的方式启用,即在后台运行 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
执行步骤:
上面的文件保存于/data/www/soft 文件夹下, 名称自己起,如 xxx.sh,在任务目录下都可执行如下代码,一行一行的执行:
cd /data/www/soft sh ./xxx.sh
等待即可。