[转]使用Google Cloud + cloudflare永久免费运行一个网站
原文出处:https://www.jianshu.com/p/dc4c9996f4b9
除却域名的年费,我的博客站点是运行在云服务器上,如果没有意外,维护的费用应该是零。
云主机
云服务器我使用的是Google Cloud,谷歌云应该是目前唯一一个承诺提供永远免费 Always Free选项的云服务器提供商,其它云服务商应该只提供12个月免费使用选项给新用户。
当然,谷歌云提供的永远免费选项仅能是使用一个性能超弱的实例:
- 处于美国的机房
- 单个共享的CPU核心
- 600M的内存
- 30G的存储
性能可能还比不上一个树莓派,但也已经足够让我用来跑一个网站。
环境
操作系统我为方便使用了:Ubuntu 18.04 LTS
数据库
数据库因故使用 MySql 8.0,但这直接在apt-get install mysql-server之后报错,看/var/log/mysql/error.log,显示:
--12T17::.393408Z [System] [MY-] [Server] /usr/sbin/mysqld (mysqld 8.0.) initializing of server has completed
--12T17::.130992Z [System] [MY-] [Server] /usr/sbin/mysqld (mysqld 8.0.) starting as process
--12T17::.782754Z [ERROR] [MY-] [InnoDB] InnoDB: mmap( bytes) failed; errno
--12T17::.782817Z [ERROR] [MY-] [InnoDB] InnoDB: Cannot allocate memory for the buffer pool
--12T17::.782832Z [ERROR] [MY-] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
--12T17::.782886Z [ERROR] [MY-] [Server] Failed to initialize DD Storage Engine
--12T17::.784009Z [ERROR] [MY-] [Server] Data Dictionary initialization failed.
--12T17::.784055Z [ERROR] [MY-] [Server] Aborting
--12T17::.789921Z [System] [MY-] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.) MySQL Community Server - GPL.
--12T17::.388162Z [System] [MY-] [Server] /usr/sbin/mysqld (mysqld 8.0.) starting as process
--12T17::.253414Z [ERROR] [MY-] [InnoDB] InnoDB: mmap( bytes) failed; errno
--12T17::.253518Z [ERROR] [MY-] [InnoDB] InnoDB: Cannot allocate memory for the buffer pool
--12T17::.253535Z [ERROR] [MY-] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
--12T17::.253564Z [ERROR] [MY-] [Server] Failed to initialize DD Storage Engine
--12T17::.255109Z [ERROR] [MY-] [Server] Data Dictionary initialization failed.
--12T17::.255993Z [ERROR] [MY-] [Server] Aborting
--12T17::.320087Z [System] [MY-] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.) MySQL Community Server - GPL.
直接内存不足,mysqld无法启动。
只好修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,在结尾增加:
performance_schema = off
一行,禁用performance_schema节省内存占用,mysql才得以正常启动。
nginx
当然,也还需要nginx,直接 apt-get install nginx即可。
应用
整个网站应用我是使用go编写,并且使用gorazor、esc等工具将用到的模板、静态资源文件等到打包进可执行文件中。
整个程序运行时占用不到20M内存,还有百余兆空余内存:
$ cat /proc//status Name: goblog
Umask:
State: S (sleeping)
Tgid:
Ngid:
Pid:
PPid:
TracerPid:
Uid:
Gid:
FDSize:
Groups:
NStgid:
NSpid:
NSpgid:
NSsid:
VmPeak: kB
VmSize: kB
VmLck: kB
VmPin: kB
VmHWM: kB
VmRSS: kB
RssAnon: kB
RssFile: kB
RssShmem: kB
VmData: kB
VmStk: kB
VmExe: kB
VmLib: kB
VmPTE: kB
VmSwap: kB $ free -h
total used free shared buff/cache available
Mem: 581M 352M 66M 900K 162M 135M
Swap: 0B 0B 0B
流量
谷歌云服务的免费实例运行时不收钱,但实例跑网站产生的流量可能是需要钱的,比方说,从中国、澳洲产生的访问流量则完全不免费。
怎么办?
在网站前面直接再套一个cloudflare的CDN,cloudflare有提供免费的CDN供个人站点使用!
cloudflare溯源去谷歌云的话,显然也不可能走中国、澳洲的流量。
总结
这样,我们就可以安安静静的近乎永久免费的跑一个网站了。
作者:玩家翁伟
链接:https://www.jianshu.com/p/dc4c9996f4b9
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
[转]使用Google Cloud + cloudflare永久免费运行一个网站的更多相关文章
- Google Cloud服务免费申请试用以及使用教程
简介 Google Cloud Platform lets you build and host applications and websites, store data, and analyze ...
- 使用Google Cloud Platform构建机器学习项目-宠物识别
宠物识别我们使用到了tensorflow object-detection API (https://github.com/tensorflow/models/tree/master/researc ...
- Google Colab——用谷歌免费GPU跑你的深度学习代码
Google Colab简介 Google Colaboratory是谷歌开放的一款研究工具,主要用于机器学习的开发和研究.这款工具现在可以免费使用,但是不是永久免费暂时还不确定.Google Col ...
- Getting Started(Google Cloud Storage Client Library)
在运行下面的步骤之前,请确保: 1.你的项目已经激活了Google Cloud Storage和App Engine,包括已经创建了至少一个Cloud Storage bucket. 2.你已经下载了 ...
- Activating Google Cloud Storage
先决条件 你需要下面的内容: 1.一个Google账户,比如来自Gmail.如果你没有,请在Google account signup site注册. 2.一个新的或已经存在的Google Devel ...
- Java Client for Google Cloud Storage
关于Google Cloud Storage Google Cloud Storage有益于大文件的存储与服务(serve).此外,Cloud Storage提供了对访问控制列表(ACLs)的使用,提 ...
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
最近在网上查了关于很多Android消息推送的资料,其中主要有四种方法. 1) 使用GCM服务(Google Cloud Messaging) 2) 使用XMPP协议(Openfire + Spark ...
- 使用 PUTTY 操作 Google Cloud
目的: 使用putty连接Google Cloud 实例. 总说: 首先要用 PuTTYgen生成 private key 和 public key, 之后 登录Google Cloud 将生成的 ...
- 使用Let's Encrypt搭建永久免费的HTTPS服务
1.概述1.1 HTTPS概述HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议.我们知道HTTP协议是基于TCP的.简而言之HTTPS就是在TCP的基础上套一层TL ...
随机推荐
- AnimationClip压缩-动画文件压缩
动画压缩方法一.常用方法1. Rig->Animation Type:改为Generic2. Animations->Anim.Compression:Optimal二.高级方法1. 去掉 ...
- Redis常用配置和命令总结
Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...
- Java自学-异常处理 处理
Java的异常处理办法 try catch throws 异常处理常见手段: try catch finally throws 步骤 1 : try catch 1.将可能抛出FileNotFound ...
- Java自学-接口与继承 final
Java的修饰符final final修饰类,方法,基本类型变量,引用的时候分别有不同的意思. 示例 1 : final修饰类 当Hero被修饰成final的时候,表示Hero不能够被继承 其子类会出 ...
- jQuery函数与对象(一)
一.jQuery函数jQuery函数的两种表现形式:1.jQuery()2.$()说明:在jQuery中使用jQuery()与$()是等价的,一般情况下均使用$() jQuery函数中可以存放的四种参 ...
- 92.vue---新手从本地项目开发到服务器线上运行爬坑。
因为我做的是后台,所以不用做SEO 参考 本项目的定位是后台集成方案,不太适合当基础模板来进行二次开发.因为本项目集成了很多你可能用不到的功能,会造成不少的代码冗余.如果你的项目不关注这方面的问题,也 ...
- Junit测试。
Junit使用: 白盒测试 步骤: 1.定义测试类. 2.定义测试方法:可以单独运行. 3.给方法加@Test,导入junit依赖环境. 判定结果: 红色:失败 绿色:成功. 一般不看输出,而是使用 ...
- 《linux就该这么学》课堂笔记11 LVM、防火墙初识
1.常用的LVM部署命令 功能/命令 物理卷管理 卷组管理 逻辑卷管理 扫描 pvscan vgscan lvscan 建立 pvcreate vgcreate lvcreate 显示 pvdispl ...
- 基于gin web框架搭建RESTful API服务
这篇主要学习go项目中的项目结构.项目规范等知识,ROM采用的database/sql的写法. 1.技术框架 利用的是ginweb框架,然后ROM层选用database/sql,安装mysql驱动.安 ...
- Flask-Script Manager
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...