返回列表

GCP成品号 GCP谷歌云配置虚拟主机

谷歌云GCP / 2026-04-27 18:07:07

前言:别怕,虚拟主机其实就是“给网站找个家”

在本地你可能习惯了“装个Nginx/Apache就能跑”。到了 GCP(Google Cloud Platform),你会发现同样是“让网站在公网可访问”,但背后要做的事情多了几层:先有计算资源、再有网络路由、防火墙放行、域名解析、HTTPS 证书,最后把内容部署上去。听起来像一锅炖,但你照着步骤走,基本不会翻车。

GCP成品号 本文的目标是:你看完后能在 GCP 上完成一个可访问的“虚拟主机”(更准确说是:一台运行 Web 服务的虚拟机实例 + 公网访问 + 域名/HTTPS)。不讲玄学,讲人话;不堆名词,重点落在你“需要做什么”。

你先搞清楚:GCP 里的“虚拟主机”是哪种形式?

很多人说“虚拟主机”,在 GCP 上其实可以有几种实现方式:

  • Compute Engine 虚拟机 + Nginx/Apache:最像传统虚拟主机,自己管服务器,适合学习与可控性强的场景。
  • App Engine / Cloud Run:更偏“平台即服务”,你只管应用,服务器运维工作更少。
  • GCE + 扩展/负载均衡:当你要多实例、高可用、扩展时才用。

本文以最经典也最通用的方式为主:Compute Engine + Nginx(或Apache),把它当作你的“虚拟主机”。这样你能理解每一步发生了什么,而不是“点个按钮就好但不知道为什么”。

GCP成品号 总体架构:从零到网站上线要经过哪些门

你可以把整套流程想成闯关游戏:

  1. 创建计算实例(虚拟机)
  2. 设置防火墙规则(放行 80/443)
  3. 配置静态公网 IP(可选但强烈建议)
  4. 域名解析到公网 IP(可选)
  5. 安装 Web 服务(Nginx/Apache)并部署页面
  6. 申请/安装证书并启用 HTTPS(可选但强烈建议)
  7. 排错:从“能否访问”逐层定位问题

放心,这些“关卡”都不是难题,难的是你容易在某一步偷懒,然后其他步骤都白做。

准备工作:先别急着开机,先确定你的账号与资源

1)确认你已开通账单与项目

GCP 的任何东西都离不开项目(Project)。你需要先登录控制台,创建或选择一个项目,并开通账单。否则你会遇到一种很“真实”的尴尬:你都配好了,但资源压根启动不了。

2)选择区域与机器规模

选择区域(Region)会影响延迟、合规与价格。一般建议你选离你的主要用户更近的区域。例如中国用户为主,可以考虑对应的近邻区域(具体以 GCP 支持为准)。

机器规模建议从小开始:比如 1-2 vCPU、2GB 内存起步。除非你预计流量很大,否则别上来就弄“土豪配置”。云费用会用温柔而坚定的方式提醒你:别冲动。

步骤一:创建 Compute Engine 实例(你的“虚拟主机主体”)

进入控制台后,选择:

Compute Engine → VM 实例 → 创建实例

关键配置如下:

  • 名称:比如 web-vm-01
  • 区域:选一个离你更近的
  • 机器类型:先用小的(例如 e2-micro 不一定够看你怎么部署,但学习场景够)
  • 启动磁盘:建议选 Ubuntu LTS(操作方便、资料多)
  • 防火墙:后面单独设也行,这里可以先不选或选默认
  • 网络:默认即可

开机方式:你可以先“用浏览器登录”看看

创建完成后,在实例列表里找到你的 VM,点击 SSH。GCP 会帮你建立连接,省掉你自己配置密钥的麻烦。

第一次 SSH 成功,基本就意味着:你的网络与身份配置没大问题。

步骤二:设置防火墙规则(让外网“打得进来”)

这是最常见的坑:你在服务器上把 Nginx 配得天花乱坠,但外面永远连不上,原因通常就是防火墙没放行端口。

在 GCP 控制台:

VPC 网络 → 防火墙

添加防火墙规则(或修改默认策略),建议至少放行:

  • 80:HTTP
  • 443:HTTPS

入站规则(Ingress)建议设置:

  • 目标:可以是“所有实例”或你的 VM 标签
  • 来源:0.0.0.0/0(公网)用于测试阶段;正式上线建议更严格
  • 协议与端口:tcp:80、tcp:443

放行后,你再去浏览器访问公网 IP,才会看到网页响应。

步骤三:给实例绑定静态公网 IP(否则你可能“越用越乱”)

Compute Engine 默认的公网 IP 可能会在重启或某些操作中发生变化,这会让你的域名解析一会儿对一会儿错。

建议创建一个静态 IP:

  • VPC 网络 → 外部 IP 地址 → 保留静态地址

然后把它绑定到你的 VM 实例。之后你的访问地址就稳定了。

如果你只是临时测试,可以跳过。但你要是准备把网站当“正经虚拟主机”,静态 IP 基本是标配。

步骤四:安装 Nginx(或 Apache)并部署页面

下面用 Nginx 举例。

1)更新系统与安装 Nginx

SSH 登录后执行:

sudo apt-get update
sudo apt-get install -y nginx

2)启动并检查服务状态

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

如果你看到 active (running),就很棒。

3)确认 Nginx 监听端口

检查 80 端口是否在监听:

sudo ss -lntp | grep :80

看到 nginx 的监听信息即可。

4)部署一个简单页面测试

Nginx 默认站点目录通常在:

/var/www/html

你可以先把默认页面替换一下:

echo '<h2>Hello from GCP VM!</h2>' | sudo tee /var/www/html/index.html

然后在浏览器访问:http://你的公网IP/

如果看到页面,那说明你的虚拟主机“骨架”已经完成:服务器跑着、端口通了、网页出去了。

步骤五:配置域名解析(让它不只是“IP站”)

当你有域名时,就进入“把人类语言翻译成机器地址”的环节。

GCP成品号 1)域名解析类型选择 A 记录

在你的域名服务商控制台添加 A 记录:

  • 主机记录:@ 或 www
  • 记录值:你的静态公网 IP
  • TTL:默认即可

解析生效可能需要几分钟到几十分钟不等。耐心点,别急着怪服务器。

2)测试解析是否正确

你可以通过浏览器直接访问:http://你的域名。如果仍不通,排查顺序建议是:域名解析 → 防火墙 → 网卡/路由 → Nginx 是否正常。

步骤六:启用 HTTPS(把安全感装上)

HTTP 不是不能用,但现在浏览器对安全的态度很明确:你最好上 HTTPS。尤其当你要处理登录、表单提交、支付等内容。

方式选择:使用 Certbot 获取 Let's Encrypt 证书

常见做法是 Certbot 自动申请证书。整体思路是:

  1. 安装 Certbot
  2. 配置 Nginx 虚拟主机(server 块)
  3. 申请证书
  4. 自动启用 443 并重定向 80→443

1)确保防火墙放行 80/443

申请证书通常会用到 80 端口(http-01 方式)。所以确认 80 放行很关键。

2)准备 Nginx 的 server_name

编辑站点配置文件,常见路径:

/etc/nginx/sites-available/default

或你为域名创建新的站点配置(更规范)。配置关键字段:

  • server_name:填你的域名,例如 example.com 或 www.example.com
  • root:站点目录

如果你不知道怎么改,就先维持默认页也能测试,但最终还是建议按域名做规范配置。

3)安装 Certbot 并申请证书(示例思路)

Ubuntu 上常见操作是:

sudo apt-get install -y certbot python3-certbot-nginx

然后执行(假设你有域名并且指向了这台服务器):

sudo certbot --nginx -d 你的域名 -d www.你的域名

过程中 Certbot 会问你是否重定向到 HTTPS,一般建议选择让它自动处理。

4)验证 HTTPS 是否生效

访问:https://你的域名

如果证书正确安装,你会看到浏览器不再抱怨安全问题。

步骤七:把“虚拟主机”做成可管理的样子(虚拟主机配置与目录结构)

当你从“跑起来”走向“好用”,你会需要更清晰的结构。

1)创建站点目录

比如:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

把你的内容放进去,例如欢迎页面、前端构建产物等。

2)创建 Nginx 配置文件

建议为域名创建一个新的配置文件(例如 example.com.conf),内容包括:

  • 监听 80/443
  • server_name
  • root 指向 /var/www/example.com
  • index 设置

然后启用该站点配置并重载 Nginx。

3)重载 Nginx 不要直接蛮干

配置改完后使用:

sudo nginx -t
sudo systemctl reload nginx

先 -t 语法检查,成功再 reload。这样能避免“改了配置直接把自己关在门外”。

常见问题与排错清单(比你想象的更有用)

下面这些问题,你基本都会遇到一部分。别慌,照着查就行。

问题1:浏览器访问超时

  • 检查防火墙:80/443 是否放行
  • 检查 VM 是否有公网 IP(并且是你在访问的那个)
  • 检查网络标签与防火墙规则是否匹配
  • 检查 Nginx 是否运行:sudo systemctl status nginx

GCP成品号 问题2:访问 IP 能打开,但域名不行

  • 域名 A 记录是否指向正确的静态 IP
  • 解析是否生效(TTL/缓存导致延迟)
  • Nginx 的 server_name 是否包含该域名
  • HTTPS 证书是否覆盖该域名

问题3:HTTPS 报错或浏览器显示不安全

  • 证书是否成功签发(可查看 certbot 输出日志)
  • 443 端口是否放行
  • Nginx 的 443 配置是否生效

问题4:证书签发失败(常见是域名验证)

最常见原因是:域名没有解析到正确 IP,或者 80 端口不可达。

  • 确认 A 记录指向当前服务器的静态 IP
  • 确认防火墙放行 80
  • 确认域名解析后再申请,不要“边申请边乱改”

问题5:改了 Nginx 配置后站点挂了

  • 先跑:sudo nginx -t 查看报错
  • 再 reload
  • 如果实在不行,回滚到上一个可用配置(复制一份备份很值)

计费与安全:别让“虚拟主机”变成“消费主机”

GCP 虽然不恶毒,但你如果把资源一直开着、或者机器开大了,就会一直产生费用。建议:

  • 学习环境用小规格,测试完及时停机
  • 定期检查实例是否在运行
  • 不要把防火墙来源无限开放到处飞(测试可以,正式建议收敛)
  • 开启必要的安全更新(Ubuntu 默认通常没问题)

可选增强:让它更像“专业虚拟主机”而不是“临时搭个架子”

1)开启日志与监控

Nginx 日志通常在:

/var/log/nginx/access.log
/var/log/nginx/error.log

你可以实时查看:tail -f access.log。

同时结合 GCP 的日志服务(Cloud Logging)能让排障更省力。

2)加缓存/压缩

如果你有静态资源(CSS/JS/图片),启用 gzip/brotli、设置缓存头会显著改善体验。

这部分属于“进阶美化”,按需添加。

总结:按步骤走,你就拥有自己的 GCP 虚拟主机

把它浓缩成一句话:先让服务器跑起来,再让网络放行,再让域名和证书对上,最后用 Nginx 托管内容。

GCP成品号 你已经完成了以下关键里程碑:

  • 创建 Compute Engine 实例
  • 设置防火墙放行 80/443
  • 绑定静态 IP,稳定对外访问
  • 安装 Nginx,并部署页面
  • 配置域名解析(可选但推荐)
  • 申请 HTTPS 证书并启用安全访问

如果你愿意,我也可以根据你目前的情况给你“个性化路线图”。你告诉我:你用的是 Ubuntu 还是 Debian、你想部署的是静态站还是后端框架(比如 Node/Python/Java)、有没有域名、是否需要多站点(一个 IP 多域名)。我就能把步骤进一步精简成你能直接照抄的配置清单。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系