GCP账号安全设置 GCP谷歌云建站体验分享
各位好,我是那个上周在GCP控制台里反复点击「Enable API」按钮直到它对我微笑、最终被账单吓醒、凌晨三点改完防火墙规则后对着Cloud Shell打了个胜利手势的——普通人类站长。
今天不聊Kubernetes集群怎么调优,也不讲BigQuery跑PB级日志的骚操作。我们就老老实实,用一台咖啡凉了三回、键盘油光锃亮的笔记本,在谷歌云上搭个能被百度和你妈都搜到的静态网站。对,就是那种放几行Markdown、一张猫图、外加一句‘此站由GCP托管,本人尚未破产’的极简风小站。
一、为什么是GCP?不是阿里云,不是腾讯云,不是…我家路由器?
坦白说:因为免费额度够我浪三个月,且官网文档里有张截图——‘Click here to deploy your first website in 90 seconds’。我信了。结果90秒后,我卡在了“选择区域”这一步,盯着us-central1-a和asia-east1-b看了整整七分钟,仿佛在选高考志愿。
GCP的优势?真有:全球CDN节点多得像便利店(连冰岛雷克雅未克都有边缘缓存)、HTTPS证书全自动签发(比你家小区物业盖章还快)、权限粒度细到能给运维同事只开‘查看CPU使用率’的权限——但凡他想删个Bucket,系统会弹窗问:‘您确定要删除吗?您确定您确定吗?’
劣势?也有:控制台UI像科幻片里的太空船驾驶舱,新手第一眼以为自己误入了NASA内网;报错信息精准得令人绝望——比如PERMISSION_DENIED: Permission 'storage.buckets.get' denied on resource,翻译成人话就是:‘兄弟,你没权限,但具体哪条权限没开?请自行破译’。
二、从零开始:5步建站流水账(附我的血泪注释)
① 创建存储桶(Storage Bucket):别叫它‘桶’,叫它‘云上U盘’
第一步不是写代码,是起名。GCP要求桶名全球唯一——我试了my-website-2024,提示已被占用;my-website-2024-v2-final-please,依然被占。最后用了zhangsan-website-gcp-2024-q3-actually-live。命名哲学:越长越安全,越像临时工写的commit message。
关键设置:选多区域(Multi-region),比如ASIA,这样你妈在杭州刷网页,服务器不会从智利圣地亚哥绕一圈再回来;勾选静态网站托管,并指定index.html为首页——别写成Index.html,GCP大小写敏感,它真会返回404,然后你怀疑人生。
② 上传文件:别用网页拖拽,用gsutil!
网页端上传5MB以上就卡死。打开Cloud Shell(那个黑底白字、自带Ctrl+C灵魂拷问的终端),输入:
gsutil -m cp -r ./my-site/* gs://zhangsan-website-gcp-2024-q3-actually-live/
GCP账号安全设置 其中-m是并行上传,-r是递归。不加-m?你将获得一次亲手体验龟速上传的禅修机会。
③ 绑定域名:DNS不是玄学,是耐心+复制粘贴
去你的域名注册商后台(比如万网、Namecheap),添加两条CNAME记录:
www→c.storage.googleapis.com@(根域名)→ 暂时不配!先用www访问,等HTTPS稳了再搞A记录+负载均衡——否则你会收获一个‘您的连接不是私密连接’的红色警告页,像极了初恋分手时对方的表情。
生效时间?官方说24小时,实际看运营商心情。我等了6小时37分,期间重刷了142次DNS检测网站,最后一次刷新前,默默给GCP客服发了封邮件:“您好,我的域名还在路上,请问它迷路了吗?”——没回,但10分钟后,它到了。
④ 开启HTTPS:让小绿锁成为你的精神图腾
GCP的Managed Instance Group太重,Load Balancer才是正解。创建全球外部HTTP(S)负载均衡器,后端指向你的存储桶,前端配置SSL证书——点「创建新证书」→「Google管理」→「自动验证域名」。它会自动生成TXT记录让你填,填完等几分钟,小绿锁自动点亮。那一刻,我关掉所有窗口,对着屏幕鞠了一躬。
⑤ 接入CDN:让上海用户访问速度≈你爸催婚时的语速
负载均衡器默认开启Cloud CDN。不用额外付费,不用改代码,只要勾选「启用CDN」,GCP就会把你的HTML、CSS、JS缓存在全球节点。测试方法:用手机开流量,访问网站,然后掐表——从首字节到渲染完成,我测出187ms。对比之前直连存储桶的892ms,进步相当于从诺基亚3310升级到iPhone 15 Pro。
三、那些让我想卸载Chrome的坑(附解决方案)
- 坑1:403 Forbidden,但文件明明公开了?
原因:你只设置了存储桶公开,没设对象(object)级别公开。解决:在Cloud Shell运行gsutil iam ch allUsers:objectViewer gs://your-bucket-name - 坑2:更新HTML后页面不刷新?
CDN缓存太敬业。临时方案:加版本号style.css?v=1.0.1;长期方案:在负载均衡器里设置缓存失效规则,比如Cache-Control: no-cache头。 - 坑3:账单突然暴涨?
检查是否开了日志导出、监控告警、或者不小心点了「启用所有API」。我的教训:开了Cloud Logging Export到BigQuery,三天花了$2.3,吓得我立刻删掉导出任务,并给账户加了预算提醒——现在每花$0.5,邮箱就来一封《您已进入消费危险区》的预警邮件。
四、结语:GCP建站,是技术活,更是心态修行
最后说句掏心窝子的:别指望一次成功。我总共部署了7次,失败原因包括但不限于:DNS填错一个字母、HTTPS证书申请时域名少了个www、忘记给服务账号加Storage Object Viewer角色、以及某次手滑把index.html传成了inde.html……
但每次修复,你都更懂一点云;每次报错,都离‘云原生人类’更近一步。GCP不是银弹,但它教会我一件事:所谓工程师,不过是把恐惧翻译成命令行,把焦虑编译成HTML,再把它们,稳稳地,部署到全世界。
哦对了,我的小站现在跑在www.zhangsan-gcp.site(已脱敏)。欢迎访问——如果它还没被我下一次手抖删掉的话。
(P.S. 文末彩蛋:如果你看到这里,说明你真的需要一杯咖啡。别省,去买。GCP账单可以省,咖啡因不能欠。)


