本文描述的情况使用的操作系统如下所示,可能不适用于正在阅读本文的时候已经更新的版本或不同的主机商的不同配置:

#cat /proc/version 
Linux version 4.9.0-9-amd64 ([email protected]) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u5 (2019-08-11)

#lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.9 (stretch)
Release:        9.9
Codename:       stretch

当执行 sudo 的时候若收到如下提示:

sudo: unable to resolve host xxxxxx

则需要修改 /etc/hosts 文件 文件,把 xxxxxx 解析为 127.0.0.1 即可,即:


127.0.0.1    localhost xxxxxx

某些主机商(比如 Amazon AWS/Lightsail)的虚拟机(VM)上使用的 Debian 系统由于初始配置问题,不能修改 hosts 文件,会被告知如下信息:

#cat /etc/hosts

# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
#     /etc/cloud/cloud.cfg or cloud-config from user-data
#
127.0.1.1 ip-172-26-40-252.eu-west-1.compute.internal ip-172-26-40-252
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

但是查找上述文件(/etc/cloud/templates/hosts.tmpl 和 /etc/cloud/cloud.cfg 以及 /etc/init.d/cloud-config)的时候并没有 manage_etc_hosts 这个选项。

只要编辑 /etc/cloud/cloud.cfg.d/01_debian_cloud.cfg 并在其中加入 manage_etc_hosts: false 即可,如下:

#sudo vim /etc/cloud/cloud.cfg.d/01_debian_cloud.cfg 

apt_preserve_sources_list: true
manage_etc_hosts: false
system_info:
  default_user:
    name: admin
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    lock_passwd: True
    gecos: Debian
    groups: [adm, audio, cdrom, dialout, dip, floppy, netdev, plugdev, sudo, video]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash

重启,即可修改 /etc/hosts 文件。

本来,对于 RHEL/CentOS 系统 mosh 应该在第三方源 EPEL 里面,可是当前(2019年7月)的时间节点正是 RHEL8 发布后,CentOS8 和 EPEL8 还没有发布。所以给 RHEL8 安装 mosh 则不能使用 EPEL 源了。

编译安装 mosh:

安装需要的工具软件:

#如果已有则会自动跳过
sudo dnf install gcc gcc-c++ autoconf automake libtool make unzip ncurses-devel git

安装 Google Protocol Buffers 库:
解决:“ configure: error: cannot find protoc, the Protocol Buffers compiler ”问题

#安装 Google Protocol Buffers 库
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure --prefix=/usr #参考安装指导“Hint on install location”部分,后面 mosh 则会找不到该库
make #可能需要等待较长时间
make check
make install
ldconfig #刷新共享库缓存

编译安装 Mosh:

git clone https://github.com/mobile-shell/mosh
cd mosh
./autogen.sh
./configure
make
make install

参考链接:

需要注意“Hit on install location”部分

https://github.com/protocolbuffers/protobuf/blob/master/src/README.md
https://fedoraproject.org/wiki/EPEL
https://fedoraproject.org/wiki/Infrastructure_2020/EPEL-8
https://github.com/mobile-shell/mosh/wiki/Build-Instructions
https://gist.github.com/palexander/2975305
https://gist.github.com/samsonjs/4076746
https://gist.github.com/andrewgiessel/4486779
https://gist.github.com/jaywilliams/c9ffab789b3f622abc932dd4cfaaeef5

openSUSE 15.1 于 2019年5月22日发布了。

openSUSE 15.1 中文 发行注记/发行说明: https://doc.opensuse.org/release-notes/x86_64/openSUSE/Leap/15.1/

备份现有源:

sudo cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.Old

替换 openSUSE 15.0 源为 openSUSE 15.1 源:

sudo sed -i 's/15.0/15.1/g' /etc/zypp/repos.d/*

如果复制上面的命令到控制台出现字符错误提示,那么手动输入。

刷新源:

sudo zypper --gpg-auto-import-keys ref

更新:

sudo zypper dup

最后重启完成。

参考来源: https://en.opensuse.org/SDB:System_upgrade

概要:这篇文章说的是在 Linux 上(包括 Ubuntu 和 CentOS)上安装 MongoDB 社区版(Community Edition)遇到的几个坑。

软件包的区别

对于 Ubuntu 来说:先看官方的一个说明片段。【这里】

【mongodb】是由 Ubuntu 维护的,不是由 MongoDB 公司维护的软件包,这个软件包和官方的 mongodb-org 冲突。这个软件包大多数情况下当前都不是最新的正式版,要检查非官方的 mongodb 包是否已经安装在你的系统上,使用如下命令:

sudo apt list --installed | grep mongodb

如果已经安装了非官方的软件包并且需要卸载,使用如下命令:

sudo apt remove mongodb
sudo apt purge mongodb

【mongodb-org】是由 MongoDB 公司维护的,并且始终保持为当前数据库的最新正式版。

对于 CentOS 来说:

软件包的区别和 Ubuntu 类似。

名称区别区别

对于官方的 【mongodb-org】 包来说,一系列名称都使用的是【mongod】

对于非官方的【mongodb】包来说,一些列名称都使用的是【mongodb】

管理方式区别

对于非官方源安装的,使用如下命令管理:

sudo systemctl enable mongodb
sudo systemctl disable mongodb
sudo systemctl start mongodb
sudo systemctl restart mongodb
sudo systemctl stop mongodb
sudo systemctl status mongdob

对于官方源安装的,使用如下命令管理:

sudo systemctl enable mongod
sudo systemctl disable mongod
sudo systemctl start mongod
sudo systemctl restart mongod
sudo systemctl stop mongod
sudo systemctl status mongdo

启动方式

无论使用何种方式安装何种源的何种版本,对于非图形界面的 CUI 界面而言启动 mongo-shell 都使用的是 【mongo】这个名称,而非其他!!!而非其他!!!而非其他!!!(重要的话说三遍!!!)(特别重要!!!)

错误提示:Failed to unlink socket file /tmp/mongodb-27017.sock Unknown error

网上的文章别人会告诉你是 root 用户和非 root 用户的区别,让你删除这个文件云云。nope,因为你可能使用了【mongod】打算启动 shell,换个启动名称试试试试【mongo】没准就没了。这个文件,当然也不用删~因为你每次删除,以后更新或者重新启动,它都可能生成这样一个文件(你觉得 MongoDB 没有考虑到这个问题?)

错误提示:Failed to set up listener: SocketException: Address already in use

当你出现了上一个临时文件的错误提示,然后删除了那个临时文件后满怀信心重新启动的时候,又可能蹦出了这个错误。网上告诉你是字面意思,已经启动使用中了,让你去使用 kill 杀掉一下再重新启动云云。nope,因为你可能使用了【mongod】打算启动 shell,换个启动名称试试试试【mongo】没准就没了。

卸载

使用上述管理方式里的方式停止数据库实例

sudo systemctl stop mongod

删除相关软件包

# Ubuntu
sudo apt purge mongodb-org*
# CentOS
sudo yum erase $(rpm -qa | grep mongodb-org)

删除相关目录(注意备份)

# Ubuntu
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
# CentOS
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

Introducing Custom Images on DigitalOcean

前段时间 DigitalOcean 页面左侧【Images】菜单中出现了一个子菜单【Custom Images】但是点进去页面错误直接就是 DO 的鲨鱼了。今早,DO 发邮件说他们的这个功能上线了。

价格

试用自定义镜像导入创建虚拟机是免费的,还是和以前一样只收虚拟机的钱。但是!存储镜像是收费的,$0.05/GB/月。

支持哪些镜像

所有预装了 cloudinit 0.7.7, cloudbase-init, coreos-cloudinit, ignition, 或 bsd-cloudinit 并且是 ext3/4 文件系统的 Linux 系统都支持。

支持的镜像后缀是:raw, qcow2, vhdx, vdi, 和 vmdk。(没错,暂时没有 iso 文件)。官方建议为了节省空间可以试用 gzip 和 Bzip2 压缩工具压缩一下。

支持哪些方式

页面支持本地【拖放/上传】镜像和从【网络地址 URL 获取】镜像(如同 Vultr 一样)。

官方建议如果上传自定义镜像的话,建议现在类似 VirtualBox 这类虚拟机工具里创建一个受支持的文件类型,然后利用 DO 页面工具上传。

官方建议如果文件过大可以上传到 DigitalOcean 提供的存储服务 【Spaces】 里面然后利用 URL 导入。但是,这项服务仍然是收费的,我不推荐使用。

我个人建议,如果你的镜像是自定义的,由于存储在这里是需要收费的,所以可以从本地利用工具上传到 VPS 内然后利用 URL 导入即可。而且利用 FTP 等上传比页面方式上传稳定许多。

如何创建

当自定义镜像上传完成后,就可以和正常创建虚拟机一样使用自定义镜像创建了。

后续

DigitalOcean 官方表明他们会后续继续扩展完善这个功能以便支持ISO 镜像。

延展阅读

官方博客:《Bring Your Custom Images to DigitalOcean