在Debian Buster上安装MongoDB

时间:2017-12-04 16:49:45

标签: mongodb debian stretch sid

如何安装最新的MongoDB 3.4甚至3.6? 他们支持Ubuntu,但我的服务器是Debian Buster,我被MongoDB 3.2困住了。

2 个答案:

答案 0 :(得分:1)

我不知道这是否是个好主意,但我只是通过添加sid存储库并使用mongodb-server软件包进行安装来安装它。对我来说,它安装的版本是3.4.18。

我使用以下方法创建了/etc/apt/sources.list.d/sid.list

deb http://deb.debian.org/debian/ sid main
deb-src http://deb.debian.org/debian/ sid main

然后做了

apt update
apt install mongodb-server

,并通过与mongo连接来验证其是否正常工作。

答案 1 :(得分:0)

我找到了构建脚本的解决方案,其描述可在此处找到:

https://github.com/patrikx3/docker-debian-testing-mongodb-stable

描述:

Debian Stretch / Buster / Bullseye /测试MongoDB和MongoDB工具构建稳定的构建器脚本,它的确如此:

它基本上是为最新的MongoDB for Debian构建的。

目前的varsion是r3.6.x版本(发布版)。

警告它将删除./scripts/build-server.sh和/etc/systemd/system/mongodb-server.service中的所有mongodb * apt软件包。

它安装所需的apt依赖项并生成SystemD服务并使其启用。

检查构建是否有效(构建如下)。它运行所有测试,所以如果它工作,那么它实际上确实如此。如果出现错误,您当然不会在服务器上部署。因此,如果构建和测试工作,那么它会按照以下方式放置二进制文件,并且您确定并完成了。

构建如下:

#!/usr/bin/env bash
# based on https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

# the current directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# if an error exit right away, don't continue the build
set -e

# some info
echo
#echo "Works like command, use a tag: sudo ./scripts/build-.sh v3.6 r3.6.4"
echo "Works like command, use a tag: sudo ./scripts/build-server.sh r3.6.4"
echo

# check if we are root
if [[ $EUID -ne 0 ]]; then
   echo "This script must be ran via root 'sudo' command or using in 'sudo -i'."
   exit 1
fi

# require mongo branch
#if [ -z "${1}" ]; then
#    echo "First argument must be the MONGODB_BRANCH for example 'v3.6'"
#    exit 1
#fi
#MONGODB_BRANCH="${1}"

# require mongo release
#if [ -z "${2}" ]; then
#    echo "The second argument must be the MONGODB_RELEASE for example 'r3.6.4'"
#    exit 1
#fi
#MONGODB_RELEASE="${2}"

# require mongo release
if [ -z "${1}" ]; then
    echo "The first argument must be the MONGODB_RELEASE for example 'r3.6.4'"
    exit 1
fi
MONGODB_RELEASE="${1}"

# delete all mongo other programs, we self compile
apt remove --purge mongo*

# the required packages for debian
apt -y install build-essential gcc python scons git glibc-source libssl-dev python-pip libffi-dev python-dev
pip install -U pip

# generate build directory variable
BUILD=$DIR/../build

# delete previous build directory
rm -rf $BUILD/mongo

# generate new build directory
mkdir -p $BUILD

# the mongodb.conf and systemd services files in a directory variable
ROOT_FS=$DIR/../artifacts/root-filesystem

# find out how many cores we have and we use that many
CORES=$(grep -c ^processor /proc/cpuinfo)

# go to the build directory
pushd $BUILD

    # clone the mongo by branch
    #git clone -b ${MONGODB_BRANCH} https://github.com/mongodb/mongo.git

    # clone the mongo by branch
    git clone https://github.com/mongodb/mongo.git

    # the mongo directory is a variables
    MONGO=$BUILD/mongo

    # go to the mongo directory
    pushd $MONGO

        # checkout the mongo release
        git checkout tags/${MONGODB_RELEASE}

        # hack to old version python pip cryptography from 1.7.2 to use the latest
        sed -i 's#cryptography == 1.7.2#\#cryptography == 1.7.2#g' buildscripts/requirements.txt
        # this is only because 3.6.4 uses 1.7.2 and
        # https://github.com/pyca/cryptography/issues/4193#issuecomment-381236459
        # support minimum latest (2.2)
        pip install cryptography

        # install the python requirements
        pip install -r buildscripts/requirements.txt

        # somewhere in the build it says if we install this, it is faster to build
        pip2 install --user regex

        # build everything
        scons all --disable-warnings-as-errors -j $CORES --ssl

        # install the mongo programs all
        scons install --disable-warnings-as-errors -j $CORES --prefix /usr

        # create a copy of the old config
        #TIMESTAMP=$(($(date +%s%N)/1000000))
        #cp /etc/mongodb.conf /etc/mongodb.conf.$TIMESTAMP.save

        # copy the mongodb.conf configured and the systemd service file
        # dangerous!!! removed
        # cp -avr $ROOT_FS/. /

        MONGODB_SERVICE=etc/systemd/system/mongodb-server.service
        cp $ROOT_FS/$MONGODB_SERVICE /$MONGODB_SERVICE
        chown root:root /$MONGODB_SERVICE
        chmod o-rwx /$MONGODB_SERVICE

        # generate mongodb user and group
        useradd mongodb -d /var/lib/mongodb -s /bin/false || true

        # create the required mongodb database directory and add safety
        mkdir -p /var/lib/mongodb
        chmod o-rwx -R /var/lib/mongodb
        chown -R mongodb:mongodb /var/lib/mongodb

        # create the required mongodb log directory and add safety
        mkdir -p /var/log/mongodb
        chmod o-rwx -R /var/log/mongodb
        chown -R mongodb:mongodb /var/log/mongodb

        # create the required run socket directory and add safety
        mkdir -p /run/mongodb
        chmod o-rwx -R /run/mongodb
        chown -R mongodb:mongodb /run/mongodb

        # add safety to the mongodb config file
        chmod o-rwx /etc/mongodb.conf || true
        chown mongodb:mongodb /etc/mongodb.conf || true

        # reload systemd services
        systemctl daemon-reload

        # enable the mongodb-server
        systemctl enable mongodb-server

        # start the mongodb-server
        #service mongodb-server start

    # exit of the mongo directory
    popd

# exit the build directory
popd

# delete current build directory
rm -rf $BUILD/mongo