在云服务器中使用 Docker
搭建 Hexo
框架运行环境,在本地使用 VSCode
和 Xshell
通过 SSH
进行远程管理
本文偏向于记录捣鼓网站的过程,并非新手教程,仅供参考。
一、前言
先说一下大概的流程:
- 在服务器上安装 Docker
- 在 Docke 上安装 Centos,并配置 Hexo 运行环境(Node.js、Git、SSH)
- 配置VSCode和Xshell连接服务器
二、运行环境搭建
查看服务器系统信息:
1 | lsb_release -a |
不同的Linux系统,其包管理工具也有所不同(yum、apt、npm)
1. Docker 安装
查看Docker是否已经安装以及Docker版本信息
1 | docker -v |
如果已经安装有的旧版本的Docker,可以将旧版本的卸载并安装新版本的Docker,旧版本的docker叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker叫做docker-ce
。
/var/lib/docker/
目录下的镜像文件,容器,卷和网络将会被保留,不会被删除。
1 | sudo apt-get remove docker docker-engine docker.io containerd runc |
常见的Docker安装方法:
- 在软件源内添加docker,并且安装(易于安装和升级)
- 下载DEB包手动安装,手动升级(网络隔离下使用)
- 官方一键安装脚本(懒人必备)
这里选择第三种安装方式进行安装Docker
使用国内dacloud一键安装命令
1 | curl -sSL https://get.daocloud.io/docker | sh |
效果如下:
安装成功效果图:
2. Docker 配置Hexo框架环境
这里选择使用 Centos7 作为Hexo运行环境
使用 docker 命令拉取 centos7 镜像,命令如下:
1 | docker pull centos:centos7 |
运行下面的命令,即可查看 docker 镜像信息:
1 | docker images |
启动一个 docker 容器:
1 | docker run -dit centos:centos7 /bin/bash |
查看 docker 正在运行的容器并进入容器中
1 | docker ps |
进入容器之后先更新yum源
1 | yum -y update |
三、服务安装
2.1 开启 SSH 服务
安装sshd服务:
1 | yum -y install openssh-server |
启动sshd服务:
1 | /usr/sbin/sshd -D |
不出意外的话应该会报以下错误:
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available – exiting.
此时,依次执行下列命令:
1 | ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" |
再启动sshd服务一切正常
使用 vi 命令或者 vim 命令修改sshd_config配置文件:
1 | vim /etc/ssh/sshd_config |
如果不能执行 vi / vim 命令,需要先进行安装:yum -y install vim
找到UsePAM yes这一段配置,将其改成UsePAM no
1 | UsePAM no |
修改 root 的密码,如果不能passwd,需要先进行安装:yum -y install passwd
2.2 Git 安装
Git安装可以选择软件包管理软件进行安装,也可以从源码编译并安装
这里选择使用软件包管理软件进行安装
1 | yum -y install git |
运行下面的命令,打印 Git 版本,验证安装过程:
1 | git --version |
在 Ubuntu 20.04 下 Git 当前可用版本是 2.25.1
:
git version 2.25.1
至此已经完成Git的安装过程。
2.3 Node.js 安装
1 | centos 安装 node.js 命令: |
运行下面的命令,验证 node 版本:
1 | node -v |
运行下面的命令,验证 npm 版本:
1 | npm -v |
安装成功效果如下:
2.4 Hexo 安装
1 | npm install -g hexo-cli |
运行下面的命令,验证 hexo 版本:
1 | hexo -v |
至此,环境配置已经全部完成,退出容器后将容器提交到镜像即可:
1 | docker commit containerid imagename |
通过docker run启动一个新的容器,参数-d表示后台运行,-p表示docker到主机的端口的映射
1 | docker run -d -p 10022:22 -p 80:80 --name blog imagename /usr/sbin/sshd -D |
10022端口用于后续的xshell连接以及vscode对hexo项目远程编码,80端口为网站端口
3. 远程控制Docker容器
经过前面的操作,我们已经可以使用ssh对容器进行远程控制了
3.1 使用 Xshell 连接
1 | ssh 用户名@ip:端口 |