腾讯云服务器使用感受,及折腾笔记

年岁渐长,有那么些时候,总要找个机会或方向,为整日疲于挣钱的自己花点钱。前阵子,有入手 Apple SERIES 7 外,趁着腾讯云搞促销,有购买一台云服务器,以供业余把玩些有趣的项目。先前有使用 DigitalOcean 以及阿里云的云服务器产品,但初入手腾讯云服务器,仍费了些功夫,在此记录一篇文章,以记载个中使用感受,及折腾感记,希望对后续来折腾的朋友,有所帮助。

有必要分享下所购买的规格及价格,腾讯云因为众所周知的原因,促销是真的便宜,2 核 4 GB 3 Mbps,3 年也才 707 人民币;不过其续费是真的贵,一年就需要 4049 元;这种“杀熟”的玩法,国内的几个厂商,可谓“一丘之貉”;阿里云在这一块儿,虽没那么狠,却也未好到哪里去:1 核 1 GB 1 Mbps,续费一年就需要 1700 元(最初买的时候,300 多元) ── 这也是想尝试玩儿下其他厂商产品的缘由。

使用感受

  1. 腾讯云或许是因为某种不自信?自家产品(无论是公众号、还是云服务器),对扫码登录,有一种一往无前的执著;即便是 QQ 注册账号,登录时也必须再加一道微信扫码。而且,登录有效期极短,这给人体验颇为不好。
  2. 比较习惯使用 Ubuntu 系统;首次登录时候,总也登录不上,说是账号密码错误,好一番折腾,各种查找文档才解决 ── 原来腾讯云 Ubuntu 系统账户名默认为 ubuntu;后起之辈,搞得与业界不一致,这样是出于什么考量呢?颇为不解。
  3. 基于「账号密码」登录服务器,相对来说很繁琐。原本想换成基于 SSH 登录,各种折腾,竟然不能如愿;后参考文档 ── 使用 SSH 登录 Linux 实例,一番操作倒是可以登录,却仍要输入密码,谜之设定,也是不得不服(也或许是还没折腾到位)。
  4. 无论是通过网页,还是基于终端操作,其体验尚可,与其他竞品倒是没有明显不足。值得一提的是,其云服务器,因为内置了 snap,因此安装些软件(如 DockerFlutter),倒是非常方便。
  5. 相比于阿里云,腾讯云的重启速度是真的快(不清楚是否跟已有的应用数有关),阿里云当内存使用超过一定阈值,就会卡死,使得所部署的应用,都无法访问,只得重启,这个过程至少 2 分钟以上(在关键时候,这很漫长)。
  6. 因为规定,目前所有网站访问都需备案(如未备案 80 端口是无法访问到网站);可腾讯的备案,经历了一次真的是艰难异常,即便已经在阿里云备案过,在这边依旧要更多你无法想象的阻碍;当听到对方客服讲到“幽居空谷轩”,有两个词出自杜甫先生的诗,因而不能作为网站名时,就果断放弃了;所以对于清风明月阁这个网站,您无法基于 http 协议进行访问,Lei目。

折腾笔记

安装 Docker

安装 Docker,可以参考文章:Install Docker Engine on Ubuntu。但操作起来颇为麻烦;但基于 snap,就非常方便。

sudo snap install docker

颇值得一提的是,腾讯云服务器的「错误提示」,做得蛮好。就在嫌安装 Docker 比较麻烦时,有尝试运行下 Docker 命令(验证下是不是有内置),收到如下错误及提示(建议),在此为之一赞👍。

Command 'docker' not found, but can be installed with:

sudo snap install docker
sudo apt  install docker.io

See 'snap info docker' for additional versions.

安装 Docker Compose

Docker Compose,用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。在 Linux 系统上安装 Compose,可以参见文章:Install Docker Compose;具体操作如下:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

解决 Dcoker 相关报错

在重启服务器之后,会报如下错误:

cannot update snap namespace: cannot create symlink in "/etc/docker": existing file in the way

其解决办法参见:Cannot update snap namespace: cannot create symlink in "/etc/docker": existing file in the way,具体操作如下:

sudo rm -rf /etc/docker
sudo snap refresh

部署 Wiki.js 服务

Wiki.js,一个基于 Node.js现代轻量级强大的 Wiki 应用程序(值得一提的是,Wiki.js 是一个开源项目)。最近有尝试基于 Wiki.js 部署了一个服务:清风明月阁,切实感受了下 Wiki.js 的强大功能与便捷使用;在其官方网站提到:“使用 Wiki.js 漂亮而直观的界面,让编写文档成为一种乐趣!“,其所言不虚

部署使用到了 Docker Compose,具体可参见文档:Using Docker Compose Install Wiki.js;下面是 docker-compose.yml 文件的完整演示:

version: "3"
services:

  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data

  wiki:
    image: requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"

volumes:
  db-data:

只需在 docker-compose.yml 所在根目录,运行如下命令即可:

sudo docker-compose up

需要额外说明的是,运行如上命令,要加上 sudo 呢?不加的话,会报如下错误🤔:

ERROR: Couldn't connect to Docker daemon - you might need to run docker-machine start default.

但在实际操作中,会报出如下令人不解错误(这颇令人令人费解,如果这是常见问题,文档该有所修正才是):

delete from "locales" where "code" != $1 - update or delete on table "locales" violates foreign key constraint "pagehistory_localecode_foreign" on table "pageHistory"

仔细看了下 Docker Compose 配置文件,发现 volumes 的配置,存在些疑问,对其稍作修改,便解决了问题。如此,属于我 Wiki 服务,就这么较为轻松的部署成功了。

#volumes:
#   - db-data:/var/lib/postgresql/data
volumes:
    - ./db-data:/var/lib/postgresql/data

安装 nginx

除了通过源码包编译安装,还可以通过 apt-get,具体操作如下(snap 不支持安装 Nginx):

sudo apt-get install nginx

解决 nginx 相关报错

nginx: [emerg] "server" directive is not allowed here

如果所配置的内容,不能如期生效(如 https(443 端口) 配置,连接被拒绝:nginx port 443: Connection refused );除了要检查是否将 443 添加「安全组规则」,另外就是要检查 nginx 配置(可通过 nginx -c 命令),具体操作如下:

nginx -c /etc/nginx/conf.d/[XYZ].conf
# Error
# server directive is not allowed here in /etc/nginx/conf.d/[XYZ].conf

加入出现如上报错;根据经验,可从以下几个角度来排查 & 解决:

  1. server 单词拼写是否有误;
  2. 配置里括号是否对应;
  3. 配置文件顶部是否有不明字符;
  4. 查看配置文件命名是否合规(xx.conf);

您可能感兴趣的文章