
这段时间不少开发者群里都在讨论“新平台上线”的消息免费容器云、免费服务器、免费虚拟主机直接把个人站长、学生党、准备跑 Demo 的开发者都吸引了过去。作为一个每天跟服务器、部署、Web 服务打交道的人我的第一反应反而是先别急着点“立即领取”把这些服务的概念、边界和部署流程弄清楚领到手的资源才能真正变成生产力而不是一个吃灰的账号。这篇文章不针对任何具体平台而是从技术选型和实战上手的角度围绕“免费容器云”“免费服务器”“免费虚拟主机”三类资源做一次完整拆解。内容包括三类服务到底有什么区别、各自适合做什么、拿到后如何快速部署一个可访问的 Web 服务以及常见问题排查和安全加固建议。无论你是刚接触部署的新手还是想给自己的个人项目找一个低成本的实验环境这篇文章都值得收藏备用。1. 免费云资源上线先别急着“上车”1.1 免费资源适合做什么平台推出免费容器云、免费服务器、免费虚拟主机核心目标通常是用低成本让新用户体验产品。对于用户来说这些资源确实能解决很多真实问题个人博客、技术文档站、作品集网站。课程设计、毕业设计的线上 Demo。学习 Docker、Nginx、Linux 命令的练习环境。验证一个新产品 MVP 是否可行。给开源项目提供一个持续集成或临时预览实例。学习容器化部署、CI/CD 流程而不需要购买昂贵的云主机。换句话说这些资源很适合“跑得起来、看得见结果、不需要 7×24 小时超高可用”的场景。如果你只是想把一个 Python、Node、Java 项目暴露到公网供朋友访问免费容器云和免费服务器完全够用。1.2 免费不等于无限也不等于免运维很多新用户会把“免费”理解成“永久免费想怎么用都行”这是最大的误解。免费额度通常有几个维度资源类型常见限制维度可能的表现容器云CPU、内存、构建时长、实例数量容器启动慢、超出配额后实例被暂停云服务器带宽、磁盘、运行时长、地域带宽小、磁盘有限、到期后未续费则释放虚拟主机空间、流量、数据库数量、并发数流量耗尽后网站暂时停止所以领取任何免费资源前我建议你先看三份东西产品定价页、免费额度说明、服务条款。不要只看活动页那句“免费领取”要弄清楚“免费多久”“超出后怎么计费”“是否需要绑定支付方式才能领取”。这样既不会被突然的扣费惊吓也能在额度快用完之前提前规划迁移。1.3 免费不等于免运维免费的资源底层仍然是需要维护的系统。使用免费云服务器你需要自己处理系统补丁、安全更新、端口暴露问题。使用免费容器云你需要理解镜像、构建、环境变量、探针等概念。使用免费虚拟主机你也要面对文件权限、PHP 版本、伪静态规则等问题。平台免掉的是账单上的金额但不会免掉部署和运维的基本功。这也是我写这篇文章的原因把该补的技术短板补上才能从“领了免费资源”变成“真正把服务跑起来”。2. 一次讲清楚容器云、云服务器、虚拟主机有什么区别很多初学者看到“免费容器云”“免费服务器”“免费虚拟主机”同时出现会以为它们是同一个东西换了不同叫法。其实这三者的定位差异非常大。2.1 容器云以“应用”为中心的运行平台容器云可以理解为一个帮你把应用跑起来的平台。它不像传统服务器那样给你一台机器随便折腾而是提供一个环境让你提交 Dockerfile、代码仓库或者预构建镜像平台负责调度容器、分配资源、暴露访问地址。容器云的核心价值在于不关心底层主机是哪台机器。应用可以快速扩容、缩容。环境一致性高本地能跑云端大概率也能跑。部署时不需要手动安装 Python、Node、JDK 等运行时。正因为这样选择容器云之前你应该至少理解 Docker 的基本概念知道镜像和容器的区别并能写出一份能工作的 Dockerfile。如果一个平台支持 Git 拉取代码后自动构建镜像那你连本地 Docker 都不需要装提交代码就能触发部署。2.2 免费云服务器一台真正由你掌控的远程主机免费云服务器本质上是一个资源受限的 Linux 虚拟机。它有独立的操作系统、公网 IP、磁盘和带宽。你可以 SSH 登录在里面安装任意软件比如 Nginx、MySQL、Redis、Java、Docker 等。云服务器的优点是自由度高适合以下场景需要自定义内核参数或系统服务。需要长期运行多个服务而不只是单个 Web 应用。想自己搭建 FTP、数据库、反向代理、内网穿透等工具。缺点是你要承担更多运维工作。系统漏洞需要自己补防火墙需要自己配磁盘满了要自己清理。也正因为这样免费云服务器是学习 Linux 和 web 服务器部署的绝佳环境。2.3 虚拟主机传统网站托管方案虚拟主机通常是在一台服务器上通过软件切分出的多个网站空间。用户没有完整操作系统的控制权只能用 FTP、文件管理器、数据库管理面板等限制性功能。虚拟主机更适合纯静态网站。PHP 开发的个人博客、CMS 网站。对性能和并发要求不高的展示型站点。它不适合跑 Python 后端、Java 服务也不适合执行需要安装系统组件的命令。如果你看到一个活动送虚拟主机不要指望把 Node.js 进程塞进去。2.4 三者的关键对比对比维度容器云云服务器虚拟主机用户管理对象应用、容器操作系统网站目录是否能安装系统软件通常不能只能定制镜像可以不能技术门槛中高中低适合服务类型Web 服务、API、定时任务任意服务静态站点、PHP 站点扩展性高中高低日常维护量低中高低典型学习价值Docker、CI/CDLinux、网络、Web 服务FTP、CMS、伪静态2.5 怎么选合适自己的资源我的建议是分场景判断如果你的主要目标是“把一个 Web 服务或 API 快速上线”优先选免费容器云。如果你想学习 Linux、Nginx、数据库部署或者需要安装一些非常规软件选免费云服务器。如果你只是帮老师、朋友搭一个展示型网站或者有一批现成的 HTML/PHP 文件要发布选虚拟主机最省心。不用贪多。很多人把所有免费资源都注册一遍最终一个都没用起来。先确定自己的短期目标再选择对应的一种资源会更容易跑通。3. 环境准备与账号初始化在开始部署之前先把本地环境和账号基础准备好。虽然不同平台的界面名字不一样但准备工作的内核是一样的。3.1 本地开发环境清单建议准备以下工具一个命令行终端Windows 推荐 Windows Terminal WSLmacOS 直接用 Terminal。Git用来管理代码也可以方便地推送代码到容器云平台。Docker Desktop可选如果平台支持本地构建镜像可以提前在本地验证 Dockerfile。SSH 客户端Windows 10 以上系统自带 OpenSSHmacOS/Linux 终端自带 ssh 命令。一个代码编辑器VS Code 即可远程开发时可以装 Remote-SSH 插件。版本方面不需要太纠结。本文示例以 Ubuntu 22.04 云服务器、Python 3.11 基础镜像为例如果你申请到的资源系统不同命令需要做少量调整重点是理解操作思路。3.2 注册账号后的安全初始化领取免费资源后第一件事不是创建应用而是完成账号安全设置修改初始密码为高强度密码。开启两步验证。绑定常用的邮箱和手机号。关闭不必要的 API 访问权限。如果免费资源用于实验不要关联公司重要账号。很多公共平台上出现过免费资源被滥用的情况原因就是用户初始密码太简单或者账号本身权限过大。新平台账号在初期经常被扫描工具盯上初始化安全设置是非常重要的第一步。3.3 域名与合规提醒如果你想用域名访问部署好的服务需要提前准备好一个域名并完成解析。这里需要特别提醒如果你使用的是中国大陆地区的服务器或托管在中国大陆节点域名往往需要完成 ICP 备案才能正常使用 80/443 端口如果使用非大陆节点则不需要但国内访问速度和稳定性会有波动。不同平台、不同地区的规定会有差异请以平台官方文档和当地法规为准。我的建议是学习和小流量演示优先选择流程简单的环境如果要做正式业务再根据目标用户所在地决定服务器区域。3.4 准备一个可部署的演示项目为了让后续部署有抓手这里创建一个最简单的 Flask Web 服务。它包含两个路由/展示一句话用来确认服务已经启动。/health返回 ok方便做健康检查。项目结构如下demo-app/ ├── app.py ├── requirements.txt └── Dockerfile先编写app.py这是一个最小的 Flask 应用# 文件路径demo-app/app.py from flask import Flask app Flask(__name__) app.route(/) def index(): return Hello, Free Container Cloud! app.route(/health) def health(): return ok if __name__ __main__: app.run(host0.0.0.0, port5000)接着创建依赖文件requirements.txtflask2.0.0,3.0.0 gunicorn20.1.0,22.0.0上述写法没有把版本写死安装时会挑选当前 Python 环境可用的最新兼容版本。生产项目中建议锁定小版本这里为了在不同平台上顺利演示使用范围写法更稳妥。本地可以先验证项目能否运行cd demo-app python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt gunicorn -b 0.0.0.0:5000 -w 2 app:app看到类似下面的输出说明本地正常[INFO] Starting gunicorn 21.2.0 [INFO] Listening at: http://0.0.0.0:5000浏览器访问http://127.0.0.1:5000能看到Hello, Free Container Cloud!。4. 在免费容器云上跑通 Web 服务容器云平台通常有两种玩法一种是把代码推送到 Git 仓库平台自动构建并发布另一种是本地构建镜像上传到镜像仓库后部署。本文以“代码/Dockerfile 提交给平台”为例这也是大多数免费容器云推荐的方式。4.1 创建新应用登录平台控制台后一般能找到“新建应用”或“创建项目”的按钮。需要填写的核心信息通常包括应用名称例如demo-app。部署方式选择 Dockerfile 或源码。运行环境按实际需求选择 Python。区域选择离目标用户较近的节点。新建完成后平台会生成一个专属访问域名形如demo-app-xxxx.你的平台域名。先把这个域名记下来部署成功后访问它。4.2 编写并上传 Dockerfile为了让平台能够构建镜像我们需要在项目根目录创建Dockerfile# 文件路径demo-app/Dockerfile FROM python:3.11-slim # 设置工作目录 WORKDIR /app # 先复制依赖文件利用构建缓存 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制项目源码 COPY . . # 容器对外暴露的端口 EXPOSE 5000 # 使用 gunicorn 启动监听 0.0.0.0 CMD [gunicorn, -b, 0.0.0.0:5000, -w, 2, app:app]这里有几个关键点需要解释python:3.11-slim是一个体积较小的 Python 基础镜像。如果你申请的容器云平台不支持拉取这个镜像可以换成平台推荐的 Python 基础镜像。先复制requirements.txt再执行pip install可以充分利用 Docker 缓存。后续如果只改代码不改依赖构建速度会快很多。启动命令使用0.0.0.0:5000而不是127.0.0.1:5000。容器云平台一般通过负载均衡把外网请求转发到容器内网必须监听所有网卡地址才能被访问到。如果平台支持 Git 仓库对接可以把项目推送到 Git 仓库后在平台配置仓库地址和分支。如果不支持 Git也可以直接上传项目压缩包平台会读取压缩包内的 Dockerfile 进行构建。4.3 配置环境变量与端口很多容器云平台在“高级设置”或“服务配置”中提供环境变量和端口设置。你需要确认端口号设置为5000与 Dockerfile 里的EXPOSE 5000保持一致。如果有数据库连接串、密钥等敏感信息不要写在 Dockerfile 或代码里而是配置成环境变量。例如APP_ENVproduction DATABASE_URLmysql://user:passwordhost:3306/demo环境变量的好处是配置与代码分离更换环境时不需要重新构建镜像。4.4 构建、部署与验证点击“部署”后平台会拉取代码、构建镜像、创建容器并在容器启动后自动配置域名路由。整个过程的日志通常会实时显示。看到类似以下日志说明服务启动成功[INFO] Starting gunicorn 21.2.0 [INFO] Listening at: http://0.0.0.0:5000 [INFO] Using worker: sync [INFO] Booting worker with pid: 1然后访问平台给你的专属域名https://demo-app-xxxx.你的平台域名如果页面显示Hello, Free Container Cloud!表示第一个容器云应用已经上线。4.5 健康检查与更新发布免费资源重启频繁建议为应用添加健康检查配置。多数容器云平台支持 HTTP 探针可以填写路径/health预期状态码200间隔10 秒健康检查的作用是当容器内部进程异常时平台可以自动重启容器发布新版本时也能用健康检查判断新容器是否已经正常接管流量避免发布期间出现长时间访问失败。后续更新代码时只需要把修改提交到 Git 仓库再触发一次重新部署即可。每次发布都应该观察日志和访问情况发现问题第一时间回滚到上一个稳定版本。5. 在免费云服务器上完成一次手动部署如果你领取的是免费云服务器流程会比容器云多一些但可控性也更高。这一节以 Ubuntu 系统为例部署一个 Nginx 静态站点。学会了这套流程后续把静态页面替换成任何后端服务都不难。5.1 SSH 登录服务器云服务器创建成功后平台通常会给出公网 IP、初始密码或提示你绑定密钥。第一次登录只需要执行ssh root服务器公网IP连接成功后不要长期使用 root 直接开发。建议创建一个普通用户adduser deploy usermod -aG sudo deploy如果想用 SSH 密钥登录可以在本地生成密钥ssh-keygen -t ed25519 -C deployexample.com然后把公钥传送到服务器ssh-copy-id deploy服务器公网IP之后登录时可以简写成ssh deploy服务器公网IP使用密钥登录之后建议修改服务器上的 SSH 配置把PasswordAuthentication改为no降低暴力破解风险。修改前一定要确认自己的密钥能正常登录否则容易把自己锁在门外。5.2 安装 Nginx在 Ubuntu 上安装 Nginx 很简单sudo apt update sudo apt install -y nginx sudo systemctl enable --now nginxenable的作用是设置开机自启--now是立即启动服务。安装完成后可以查看状态sudo systemctl status nginx看到active (running)说明 Nginx 正常运行。此时直接访问服务器公网 IP应该能看到 Nginx 默认页面。5.3 部署一个静态站点假设有一个本地目录my-site里面包含my-site/ ├── index.html └── style.css先创建 Nginx 的站点目录并上传文件sudo mkdir -p /var/www/demo sudo chown -R $USER:$USER /var/www/demo然后从本地上传scp -r ./my-site/* deploy服务器公网IP:/var/www/demo/新创建一个 Nginx 站点配置文件# 文件路径/etc/nginx/sites-available/demo.conf server { listen 80; server_name demo.example.com; root /var/www/demo; index index.html; location / { try_files $uri $uri/ 404; } }server_name需要替换成你自己解析好的域名。如果暂时没有域名也可以直接用_表示任意域名但访问时只能使用 IP 而不是域名。启用配置并重新加载sudo ln -s /etc/nginx/sites-available/demo.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxnginx -t用于检查配置语法如果有报错一定不要直接 reload先根据输出修正配置。5.4 申请 HTTPS 证书如果已经在 DNS 服务商处把域名解析到服务器 IP可以使用 certbot 自动申请 Let’s Encrypt 证书sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d demo.example.com执行过程中certbot 会询问是否需要自动跳转 HTTPS。选择跳转后访问http://demo.example.com会自动跳转到https://demo.example.com。证书续期默认由系统定时任务完成不需要手动干预。可以测试一下续期任务是否正常sudo certbot renew --dry-run看到类似Congratulations的提示说明续期机制正常。5.5 调整防火墙默认情况下Ubuntu 自带 ufw 防火墙。为了让外网只能访问 22、80、443 端口可以执行sudo ufw allow OpenSSH sudo ufw allow Nginx Full sudo ufw enable这段命令做了三件事放行 SSH 端口保证自己还能登录、放行 HTTP/HTTPS 让网站可访问、开启防火墙。注意如果你在云服务器平台上已经配置过安全组还需要在平台控制台同步放行对应端口。不同平台的安全组规则名称不同但思路一致。只有安全组和系统防火墙同时放行公网才能真正访问服务。6. 虚拟主机快速上线场景免费虚拟主机虽然能力有限但却是上线静态站点最快的方式。它不需要你安装环境只要把文件传上去就能访问。6.1 找到网站根目录虚拟主机的管理面板一般会提供文件管理功能网站根目录常见名称有public_htmlhtdocswwwrootweb不同面板叫法不同但作用一致。把index.html上传到这个目录后就能通过域名访问。假设你上传了一个压缩包site.zip可以在文件管理面板中自动解压。解压后建议确认文件权限目录权限通常是755。文件权限通常是644。可执行类的 CGI 文件可能需要特殊处理。如果上传后访问出现 403 或 500优先检查目录路径是否正确、文件权限是否过紧、根目录下是否存在index.html或index.php。6.2 PHP 站点和数据库创建虚拟主机最常见的用途是跑 PHP 程序比如 WordPress、Typecho、ThinkPHP 项目。一般需要经过以下几步把 PHP 网站文件上传到网站根目录。在数据库管理面板中创建数据库。创建数据库专用账号并授权。将数据库名、用户名、密码填到网站配置文件中。访问站点的安装页面按提示完成安装。以 MySQL 命令行方式为例创建数据库和用户的操作类似CREATE DATABASE demo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER demo_userlocalhost IDENTIFIED BY StrongPassword; GRANT ALL PRIVILEGES ON demo_db.* TO demo_userlocalhost; FLUSH PRIVILEGES;很多虚拟主机面板已经封装了上述 SQL不建议在生产环境盲目执行手工授权尤其是要确认demo_user的权限范围避免给整个数据库实例过大权限。6.3 开启伪静态很多 PHP 框架需要把请求重写到入口文件。Apache 虚拟主机一般通过.htaccess实现RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L]把这份文件放在网站根目录后会优先检查请求的真实文件是否存在。如果不存在则把请求交给index.php处理。需要留意的是如果虚拟主机运行在 Nginx 而非 Apache 下.htaccess可能不会生效。此时需要到面板中找“伪静态规则”或“URL Rewrite”功能选择对应的框架模板。6.4 虚拟主机的边界在哪里虚拟主机的最大好处是省心但它的边界也很明显不能自定义系统服务。不能随意修改 PHP 扩展。数据库数量和数据表大小常有上限。无法运行长驻的定时进程。对进程并发量有严格限制。如果一个项目开始需要后台常驻任务、队列、WebSocket 或自定义端口服务就该考虑把服务迁移到容器云或云服务器而不是硬塞进虚拟主机。7. 常见问题与排查思路免费资源部署过程中最容易遇到下面几类问题这里整理成一张排查表。问题现象常见原因解决思路公网无法访问服务防火墙/安全组未放行或进程只监听了 127.0.0.1检查监听地址改为 0.0.0.0放行平台安全组端口容器反复重启内存超限、启动命令错误、健康检查失败查看容器日志调整内存限制或启动命令磁盘被写满日志文件过大、镜像构建缓存过多定期清理日志设置日志轮转域名解析不生效DNS 记录未创建或缓存未更新检查解析记录使用 nslookup 或 dig 验证虚拟主机访问 500PHP 版本不兼容或文件权限不正确切换 PHP 版本修正目录权限免费额度快速耗尽没有设置实例数量上限或忘了释放资源设置配额告警不用时暂停实例数据库连接被拒绝主机地址、端口、账号权限配置错误确认数据库地址授权目标主机访问7.1 本地能访问公网访问超时这种问题在云服务器和容器云上都很常见。先用下面的命令确认进程是否真的在运行ss -lntp | grep 5000如果能看到0.0.0.0:5000说明进程正常下一步检查安全组。很多平台默认只放行 22、80、443 端口你服务运行在 5000 端口就需要手动增加一条入站规则放行 5000。如果服务运行在 8080 等高位端口更推荐的方式是让 Nginx 监听 80/443再通过反向代理转发给后端服务这样对外只暴露必要端口安全风险也更小。7.2 容器一直显示重启需要看容器退出原因。平台控制台的日志通常会保留上一容器的退出日志。一个典型原因是应用启动时内存超过平台分配限制导致进程被杀。另一个常见原因是平台配置了健康检查应用没有在指定时间内返回 200平台判断实例不健康后反复重启。排查时顺序如下查看容器日志是否出现Killed、OOM、exit code 137。检查平台是否为实例分配了足够内存。检查健康检查路径和端口的填写是否正确。检查应用是否监听在所有网卡上而不只是127.0.0.1。7.3 SSH 连接速度慢或超时如果云服务器可以 ping 通但 SSH 慢可能是 DNS 反向解析等待超时。可以修改服务器上的 SSH 配置sudo sed -i s/#UseDNS yes/UseDNS no/ /etc/ssh/sshd_config sudo systemctl restart sshd如果完全无法连接首先去平台控制台通过 VNC 或网页终端登录然后查看 SSH 服务状态和系统防火墙规则sudo systemctl status sshd sudo ufw status确认平台安全组是否放行了 22 端口。尤其在你启用防火墙后没有放行 OpenSSH 的情况下极容易把自己锁在外面。8. 免费资源的安全与成本最佳实践8.1 最小权限原则无论是容器云环境变量、云服务器系统用户还是虚拟主机数据库账号都应该遵循最小权限原则。服务器不要长期使用 root 部署业务。创建数据库账号时只给业务库授权不授予全局权限。容器云中的 API Token 不要提交到 Git 仓库。免费资源环境不要关联公司核心账号避免变成攻击跳板。8.2 安全基线设置免费云服务器最容易成为扫描器的目标建议至少完成以下加固使用 SSH 密钥登录关闭密码登录。修改默认 SSH 端口不是必须不建议靠隐蔽来保证安全。只放行业务必需端口。定期执行系统更新sudo apt update sudo apt upgrade -y使用 Nginx 反代时隐藏后端端口不要将 3306、6379 等数据库端口暴露到公网。8.3 数据备份最简单方案免费资源不等于稳定平台可能随时调整策略数据备份一定要提前做。静态网站可以直接打包tar -czf backup_$(date %F).tar.gz -C /var/www/demo .MySQL 数据库可以定期导出mysqldump -u root -p demo_db demo_db.sql备份文件建议下载到本地或者存放到与服务器不同的存储空间。只放在同一台服务器上的备份在机器故障时意义不大。容器云平台上的数据要尤其注意容器一旦被删除容器内写入的文件通常不会保留。有状态数据应该放平台提供的持久化存储或外部数据库服务而不是写在容器文件系统里。8.4 监控与告警给免费资源配置一个最简单的监控脚本可以在服务异常时及时收到通知。下面脚本思路是每隔 5 分钟检查一次/health如果连续失败就记录一条日志#!/bin/bash URLhttps://demo.example.com/health if curl -fsS $URL /dev/null; then echo $(date %F %T) up /var/log/site_check.log else echo $(date %F %T) down /var/log/site_check.log fi把它加入 crontab*/5 * * * * /home/deploy/check_site.sh更完整的方案是接一个在线监控服务或使用平台自带告警能够通过邮件、企业微信等方式通知。个人学习项目不需要一开始就上很复杂的监控体系先把日志留下来出问题时才有据可查。8.5 免费资源转付费的正确时机当出现以下信号时说明你该认真考虑把免费资源换成付费资源免费额度已经无法支撑真实用户访问。应用数据开始影响别人不能再接受随时暂停。需要更好的 SLA、技术支持或可靠的备份能力。并发量已经超过了免费实例的规格。迁移时不要只换一台服务器还要同步完成域名解析切换、数据库数据迁移、HTTPS 证书更新和访问日志转移。迁移前先在非业务低峰期做一次完整预演确认新旧环境结果一致后再修改 DNS 记录。9. 基于这套流程下一步可以动手做的事如果你已经领到了免费容器云、免费服务器或免费虚拟主机不要停在这一步。建议按照下面的节奏继续练习把文章里的demo-app项目部署到容器云确认公网域名能够访问。在云服务器上安装 Nginx把一个静态页面通过域名 HTTPS 展示出来。在虚拟主机上上传一个 WordPress 或 Typecho熟悉面板、数据库和伪静态配置。给三个环境分别配置健康检查和日志记录观察宕机时会发生什么。学习用 systemd 或容器平台把 Web 服务设置为可自启动、可自动重启。这三个关键词表面上只是“免费资源”但它们对应的其实是三种典型的现代应用托管方式。容器云背后是云原生和自动化交付云服务器背后是 Linux 和网络基础虚拟主机背后是传统 Web 托管和 PHP 生态。无论未来你是进后端开发、运维岗位还是自己维护产品这些能力都会在某个时刻派上用场。免费资源能不能“不玩虚的”最终不取决于活动文案而取决于你有没有真的把一个服务跑起来。我建议你现在就新建一个最小项目选一个合适的资源按这篇文章的流程走一遍。遇到报错不要急着关闭页面先把日志读完再对照上面的排查表逐项检查。跑通一次之后你会发现服务器部署、容器发布、域名解析这些事远没有想象中那么神秘。