+86 189 8218 1436 周一至五 10:00-22:00

使用Google GCP搭建个人网站教程

TL;DR:本文带你使用Google GCP搭建一台 VM,完成项目、防火墙、SSH 与网页部署,适合零基础照做。

开始前你需要准备

正式使用Google GCP搭建前,先备好门票:一个能正常登录的 Google 账号、一张可扣款的信用卡等结算方式,再打开 console.cloud.google.com 确认进得去控制台。绑卡只为验身份,免费额度内不扣钱;坑常在用久没登录的小号收不到验证码,或卡不支持外币预授权,卡在第一步。

想清楚搭什么:放个人网站,还是开台测试服务器练手?目标定了,选机型才不纠结。先做个简单网页,等服务器起来直接传上去看效果。Windows 先装 Git Bash,macOS / Linux 用自带终端,逐行复制:

mkdir -p gcp-demo
cd gcp-demo
echo '<h1>Hello GCP</h1>' > index.html
cat index.html
ssh -V

看到 Hello GCP 和版本号,就说明浏览器、终端、SSH 客户端齐了;Win10 以上自带 OpenSSH,老系统装 Git Bash 最省事。坑:PowerShell 5 的 > 容易写出乱码,改用记事本另存 UTF-8 即可。

最后一定先看免费额度和计费规则:免费 VM 多限指定区域的 e2-micro,误开高配或 GPU 几小时就出账单;关掉网页 ≠ 停机,得回控制台显式停止,磁盘留着仍少量收费。练完顺手停实例、删资源,别让它躺一假期。

整体思路

使用Google GCP搭建的主线很直白:先建项目、启用结算,再创建 VM。资源全挂在「项目」下,不绑卡启用结算,不给建机器。坑:选错项目会找不到服务器,测试完忘删会悄悄扣费。

开完机器先配防火墙,只放 80(网站)和 22(SSH)。默认全关最安全,多开易被扫描。高频坑是建 VM 时没勾「允许 HTTP 流量」,浏览器死活空白,还以为代码崩了。

接着 SSH 登录,装软件、传网页、设开机启动。下面命令直接复制,一步跑完:

sudo apt update && sudo apt install -y nginx
echo "Hello GCP" | sudo tee /var/www/html/index.html
sudo systemctl enable --now nginx

加 enable 是因为不设自启,机器一重启网站就躺平,新手常在这懵圈。

最后把控制台的外部 IP贴进浏览器验证(用 http://,别错拿内部 IP 或手滑打 https)。看到页面别急着跑,照清单收尾:查费用(删闲置)、查权限(别乱给 Owner)、查安全(关多余端口)。收好尾才算搭稳。

详细步骤一:创建项目并新建 VM

使用Google GCP搭建,先登录 GCP 控制台,点顶部「新建项目」,填项目名称并绑定结算账号。没绑会灰掉创建按钮;绑定只开资格,不马上扣钱。

再进虚拟机服务点「创建实例」,照这挑:

  1. 入门级 E2 够用,别选高配处理器、大内存,用不上还贵。
  2. 区域选靠近用户的 asia-east1 等,延迟低。
  3. 镜像用 Debian/Ubuntu 免费版,别勾 Premium 付费镜像(按小时收授权费)。

建好把实例名称、区域、外部 IP 记下来,后续要用。在 Cloud Shell 里直接跑:

gcloud compute instances list --format="table(name,zone,EXTERNAL_IP)"

能出表格即权限正常;报错找所有者加 Compute Admin。另:外部 IP 默认临时,重启会变,先别绑域名。

详细步骤二:配置网络与 SSH 登录

  1. 使用Google GCP搭建时,先在「VPC 网络 → 防火墙」新建入站规则:来源 0.0.0.0/0,协议端口 tcp:80,目标选默认网络里的实例;这是给网站开门。只开 80,别一次放行全部端口。网页仍打不开,先看外部 IP、规则是否在同一 VPC。Cloud Shell 可执行:

    gcloud compute firewall-rules create allow-http-80 --network=default --direction=INGRESS --priority=1000 --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
  2. 确认 SSH 的 22 端口:执行后列表里 allowed 有 tcp:22 就能连。默认网络通常已有 default-allow-ssh,但来源是全网,容易被扫描;下面改成你当前公网 IP。坑:宽带 IP 变了会连不上,重改来源;别长期写 0.0.0.0/0:

    MY_IP="$(curl -s https://ipinfo.io/ip)/32"
    gcloud compute firewall-rules update default-allow-ssh --source-ranges="$MY_IP"
    gcloud compute firewall-rules list --format="table(name,direction,allowed,sourceRanges)"
  3. 连接 VM:点实例右侧「SSH」按钮,或用 gcloud。首次登录先更新系统,补安全补丁;本教程默认 Ubuntu/Debian:

    read -r VM_NAME VM_ZONE <<<"$(gcloud compute instances list --format='value(name,zone.basename())' --limit=1)"
    gcloud compute ssh "$VM_NAME" --zone="$VM_ZONE"
    sudo apt update && sudo apt upgrade -y
  4. 创建普通用户 deploy,复用当前公钥做密钥登录,少用管理员账号,降低误删和被盗风险;高权限再加 sudo。坑:别关当前窗口,另开终端测试;找不到 authorized_keys 多半是 OS Login 管密钥,先关闭或改用 IAM 密钥:

    sudo adduser --disabled-password --gecos "" deploy
    sudo usermod -aG sudo deploy
    sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
    sudo cp ~/.ssh/authorized_keys /home/deploy/.ssh/authorized_keys
    sudo chown deploy:deploy /home/deploy/.ssh/authorized_keys
    sudo chmod 600 /home/deploy/.ssh/authorized_keys
    read -r VM_NAME VM_ZONE <<<"$(gcloud compute instances list --format='value(name,zone.basename())' --limit=1)"
    gcloud compute ssh deploy@"$VM_NAME" --zone="$VM_ZONE"

详细步骤三:部署网页并设置自启

  1. 这一步让使用Google GCP搭建的 VM 真正能打开网页;下面按常见 Debian/Ubuntu 镜像写,照抄即可。先装 Nginx,它负责接收 80 端口访问并把网页发给浏览器,80 是网页默认端口;先更新软件列表,能避免装到旧包。执行后看到 active (running)、:80,并有 HTTP/1.1 200 OK,才算服务已启动并监听 80 端口。

    sudo apt update && sudo apt install -y nginx curl iproute2
    sudo systemctl start nginx
    sudo systemctl status nginx --no-pager
    sudo ss -tulnp | grep ':80'
    curl -I http://127.0.0.1
  2. 接着放一个纯文字测试页。Nginx 默认读 /var/www/html,别把文件传到家目录;这里直接用命令写入,等同上传。改所有者和权限,是让 www-data 账号读得到,权限太严最常见就是 403。最后一条能显示这句话,

验证结果

先做最直观的检查:在 GCP 控制台的 VM 实例列表复制「外部 IP」,在浏览器地址栏输入 http://,再粘贴外部 IP,例如 http://34.120.1.2。能看到测试网页,就说明 VM、防火墙放行 80 端口和网页服务已联通。别复制内部 IP,也别写成 https;打不开先查实例是否运行、防火墙规则是否绑对网络标签。

接着重新点 SSH 登录,这是模拟以后维护,别沿用旧窗口。执行下面命令,它会自动找 Nginx、Apache 等常见服务:看到 active (running) 表示服务活着,返回 enabled 表示开机自启已配置,没有输出就回安装步骤核对服务名。关掉 SSH 窗口不等于重启 VM;想真验证自启,要重启实例后再登录重跑。

for s in nginx apache2 httpd; do
  systemctl list-unit-files --no-pager | grep -q "$s.service" || continue
  echo "== $s =="; systemctl status "$s" --no-pager | head -n 8
  echo -n "开机自启:"; systemctl is-enabled "$s"
done

回控制台看三处:实例「监控」的 CPU、网络;「日志浏览器」的报错;「结算(账单)」里的报告,确认机器类型、磁盘、区域、外部 IP 和费用与预算一致。账单有延迟,免费额度不覆盖所有规格;没删的磁盘、静态 IP 也会收费。

最后把这次使用Google GCP搭建的信息记下来,维护或删除时按清单核对,不容易漏:

  • 项目:项目 ID,不是项目名。
  • 区域:区域和可用区都写。
  • 端口:80/443 和防火墙规则名。
  • 登录方式:控制台 SSH、用户名、密钥位置;别公开私钥。

常见坑与解决办法

使用Google GCP搭建后出问题,别急着重装,按顺序查最省时间。

网页打不开:先看 VM 是否 RUNNING、外部 IP 有没有复制错。小白常把内部 IP 贴进浏览器,内部 IP 只在内网通,当然打不开。跑一句能同时看状态和 IP:

gcloud compute instances list

再查防火墙是否放行 80。GCP 默认不放行 HTTP,只装好 Nginx 也没用;建规则后还要给实例加 http-server 标签才生效,提示已存在就跳过,别重复建:

gcloud compute firewall-rules create allow-http-80 --allow=tcp:80 --target-tags=http-server

SSH 连不上:依次查 22 端口、来源 IP(宽带重拨常会变)、密钥和实例状态。还不行就点控制台的「SSH」,它走内部通道,能绕开端口和 IP 限制,先进去再修配置。

意外扣费:先止血再查账:停用或删掉不用的 VM、磁盘和静态 IP——没挂载的盘、没绑定的 IP 照样收费,最容易漏;然后看结算里的账单明细逐项核对。

权限报错:确认账号角色、右上角项目选对没、结算是否启用;别多人共用 Owner 账号,改错了查不到是谁。

删除前先备份:删实例会连启动盘一起清掉,网页文件和配置都回不来。先打包,再下载到本地:

sudo tar -czf ~/backup-before-delete.tar.gz /var/www/html /etc/nginx

常见问题(FAQ)

零基础能使用Google GCP搭建网站吗?

可以,按本文顺序操作,先做最小 VM 和静态网页,再逐步学习命令。

为什么浏览器访问外部 IP 一直超时?

多半是防火墙未放行 80,或网页服务没启动,逐项检查即可。

GCP 免费额度会不会自动扣费?

不会无限制免费,超出额度或选用付费资源会计费,建议设预算提醒。

搭建完成后需要一直开机吗?

不需要,测试完可停止 VM;磁盘和外部 IP 仍可能产生费用。

域名和证书必须一开始配置吗?

不必,先用外部 IP 验证,成功后再接域名和证书更稳妥。

不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。

查看代维服务 →

发表评论