刚拿到一台 Ubuntu 18.04 的 VPS 时,很多人第一反应是盯着那个黑漆漆的终端屏幕发呆,心里盘算着:“这玩意儿真能跑起来吗?”别急,咱们一步步来。这一路走下来,你会发现从一台裸机到拥有 Docker 容器编排和远程桌面的“云端小作坊”,其实并没有想象中那么高冷。Ubuntu 18.04 LTS 虽然是老版本,但在很多对稳定性要求极高的场景下,它依然是个靠谱的老伙计。
第一步:站稳脚跟——SSH 远程连接与基础安全加固
通常服务器提供商会给你的邮箱发一封包含 IP 地址和 root 密码的邮件。这时候,你需要在本地终端(Mac/Linux)或 PowerShell(Windows)里输入命令连接上去。
ssh root@你的服务器IP地址
连上之后,别急着搞 Docker,先做几件保命的事。
1. 创建普通用户并赋予 sudo 权限
直接用 root 操作风险太大,万一误删了系统文件,哭都来不及。创建一个你自己的用户,比如叫 clouduser。
# 创建用户
adduser clouduser
# 将用户加入 sudo 组,这样他就有管理员权限了
usermod -aG sudo clouduser
2. 配置 SSH 密钥登录(强烈推荐) 密码登录容易被暴力破解。生成 SSH 密钥对,把公钥传到服务器,以后登录就用密钥,既快又安全。
在你的本地电脑执行:
ssh-keygen -t rsa -b 4096
# 一路回车,然后上传公钥到服务器
ssh-copy-id clouduser@你的服务器IP地址
上传成功后,测试一下能不能免密登录。如果成功了,回到服务器修改 SSH 配置,禁止 root 密码登录,禁止密码验证,只允许密钥登录:
sudo nano /etc/ssh/sshd_config
找到或修改以下几行:
PermitRootLogin no # 禁止 root 直接登录
PasswordAuthentication no # 禁止密码登录
PubkeyAuthentication yes # 启用公钥登录
改完后重启 SSH 服务:
sudo systemctl restart sshd
注意:这一步做完之前,千万别关当前的 SSH 窗口,另开一个终端测试一下,确保能登进去再关掉旧的。
3. 配置防火墙 UFW Ubuntu 自带了 UFW(Uncomplicated Firewall),配置起来很简单。
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh # 允许 SSH 端口(默认22)
sudo ufw enable
sudo ufw status verbose
这时候,你的服务器基础安全就已经比默认状态好很多了。
第二步:给服务器装上“脸面”——安装远程桌面(GUI)
很多初学者习惯用图形界面,敲命令确实有点头疼。在 Ubuntu Server 上装个桌面环境,配合远程桌面工具,操作起来就直观多了。我们选择轻量级的 XFCE 桌面,因为它资源占用少,适合 VPS。
1. 更新系统
sudo apt update && sudo apt upgrade -y
2. 安装 XFCE 桌面环境
sudo apt install xfce4 xfce4-goodies -y
这个过程可能需要几分钟,取决于你的网络速度。
3. 安装 XRDP(远程桌面协议) 这是让 Windows 自带的“远程桌面连接”能连上 Linux 的关键。
sudo apt install xrdp -y
4. 配置 XRDP 并启动服务
sudo systemctl enable xrdp
sudo systemctl start xrdp
关键点:解决黑屏问题
刚装好 XRDP,很多人用 Windows 远程桌面连进去是黑屏。这是因为 XFCE 和 XRDP 的用户会话配置没对齐。我们需要把当前用户的 .Xsession 复制给 xrdp 用户。
echo "xfce4-session" > ~/.Xclients
chmod +x ~/.Xclients
sudo cp ~/.Xclients /etc/skel/
sudo service xrdp restart
现在,打开你 Windows 电脑上的“远程桌面连接”(mstsc),输入 IP,用 clouduser 和密码登录。你会看到一个熟悉的 XFCE 桌面,虽然简洁,但足以让你像操作本地电脑一样操作服务器。
第三步:容器化的开始——Docker 安装与使用
搞云计算,Docker 是绕不过去的坎。它让应用打包成镜像,在任何地方都能跑,彻底解决了“在我机器上明明是好的”这种尴尬。
1. 安装 Docker Ubuntu 官方源里也有 Docker,但通常版本较旧。我们推荐用 Docker 官方源安装最新版。
# 安装必要的依赖
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加 Docker 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新并安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
2. 免 sudo 运行 Docker
每次都要输 sudo docker ... 很烦,把用户加到 docker 组里。
sudo usermod -aG docker clouduser
# 重新登录或执行以下命令使组变更立即生效
newgrp docker
3. 实战:跑一个 Nginx 容器 来点实际的。我们要部署一个 Nginx Web 服务器,并在后台运行它,把容器的 80 端口映射到服务器的 8080 端口。
docker run -d --name my-nginx -p 8080:80 nginx
打开浏览器,访问 http://你的服务器IP:8080,你会看到 Welcome to nginx 页面。这说明容器跑起来了。
4. 常用 Docker 命令备忘
- 查看运行中的容器:
docker ps - 查看日志:
docker logs my-nginx - 进入容器内部:
docker exec -it my-nginx bash - 停止并删除容器:
docker stop my-nginx && docker rm my-nginx
Docker 让部署变得极其简单。比如,你想跑个 MySQL 数据库,只需一条命令,再也不用去编译安装那些复杂的依赖包了。
第四步: orchestrator 登场——Kubernetes (K8s) 集群搭建
光有 Docker 还不够,当容器多了,怎么管理?怎么自动扩缩容?这时候 Kubernetes 就出场了。在 VPS 上搭建 K8s 集群,我们推荐使用 K3s。它是 Kubernetes 的轻量级发行版,专门为边缘计算、物联网和资源有限的服务器设计,一个进程就能跑起来,非常适合个人或小团队实验室。
1. 单节点 K3s 快速部署 既然我们是实战,先从一个单节点集群玩起。在服务器上执行:
curl -sfL https://get.k3s.io | sh -
这条命令会自动下载、安装 K3s,并配置好 systemd 服务。安装完成后,K3s 会自动创建一个默认的 kubeconfig 文件。
2. 验证集群状态
K3s 默认会把配置文件保存在 /etc/rancher/k3s/k3s.yaml。我们需要把它复制到你方便访问的地方,比如用户家目录下。
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown clouduser:clouduser ~/.kube/config
然后安装 kubectl(Kubernetes 命令行工具),K3s 已经自带了,我们可以做一个软链接方便使用:
sudo ln -s /usr/local/bin/k3s /usr/local/bin/kubectl
现在检查一下集群节点:
kubectl get nodes
如果看到 Ready 状态,说明你的 Kubernetes 集群已经正常运行了。
3. 部署一个简单的应用
创建一个 app.yaml 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-k8s
spec:
replicas: 2
selector:
matchLabels:
app: hello-k8s
template:
metadata:
labels:
app: hello-k8s
spec:
containers:
- name: hello-k8s
image: nginx
ports:
- containerPort: 80
---
apiVersion: services/v1
kind: Service
metadata:
name: hello-k8s-service
spec:
selector:
app: hello-k8s
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
应用这个配置:
kubectl apply -f app.yaml
查看服务状态:
kubectl get svc
K3s 在 VPS 上通常会通过 Traefik 或 Local-path Provisioner 来处理服务暴露。你可以尝试通过 kubectl get svc 看到的外部 IP 来访问,或者直接在节点上用 curl 测试。
4. 多节点集群(进阶) 如果你想搭一个主节点(Master)加多个工作节点(Worker)的集群,K3s 也非常简单。 先在 Master 节点获取 Token:
sudo cat /var/lib/rancher/k3s/server/node-token
然后在 Worker 节点执行:
curl -sfL https://get.k3s.io | K3S_URL=https://<MASTER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> sh -
这样,你就拥有了一个真正的分布式 Kubernetes 集群,可以开始探索 Pod、Service、Ingress、ConfigMap 等核心概念了。
第五步:整合与日常维护
现在,你的 VPS 上已经有了 SSH 安全访问、图形化远程桌面、Docker 容器环境和 Kubernetes 集群。这已经是一个微型云计算平台了。
一些实用的建议:
- 定期更新:虽然 18.04 是 LTS 版本,但安全补丁还是要打的。
sudo apt update && sudo apt upgrade -y sudo k3s-uninstall.sh && curl -sfL https://get.k3s.io | sh - # 如果想升级 K3s - 资源监控:安装
htop和iftop来监控 CPU 和网速。sudo apt install htop iftop -y - 备份数据:如果上面跑了重要的数据,记得定期备份。可以用
tar打包重要目录,然后上传到云存储。
结语
从一台裸机到拥有图形界面、容器编排能力的云服务器,这条路其实没那么难。Ubuntu 1804 虽然不再是最前沿的版本,但它的稳定性和庞大的社区支持,让它依然是学习云计算的绝佳起点。
不要害怕命令行的错误提示,每一个报错都是一次学习的机会。当你第一次通过自己搭建的 K8s 集群成功访问到网页时,那种成就感是无与伦比的。接下来,你可以尝试部署一个自己的博客、一个 API 服务,或者进一步探索 Docker Swarm 和 Kubernetes 的区别。云计算的世界很大,而这台 VPS,就是你探索的起点。
记住,技术没有门槛,只有你是否愿意动手。祝你玩得开心!