原文出处: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编写,并且使用gorazoresc等工具将用到的模板、静态资源文件等到打包进可执行文件中。

整个程序运行时占用不到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永久免费运行一个网站的更多相关文章

  1. Google Cloud服务免费申请试用以及使用教程

    简介 Google Cloud Platform lets you build and host applications and websites, store data, and analyze ...

  2. 使用Google Cloud Platform构建机器学习项目-宠物识别

    宠物识别我们使用到了tensorflow object-detection API  (https://github.com/tensorflow/models/tree/master/researc ...

  3. Google Colab——用谷歌免费GPU跑你的深度学习代码

    Google Colab简介 Google Colaboratory是谷歌开放的一款研究工具,主要用于机器学习的开发和研究.这款工具现在可以免费使用,但是不是永久免费暂时还不确定.Google Col ...

  4. Getting Started(Google Cloud Storage Client Library)

    在运行下面的步骤之前,请确保: 1.你的项目已经激活了Google Cloud Storage和App Engine,包括已经创建了至少一个Cloud Storage bucket. 2.你已经下载了 ...

  5. Activating Google Cloud Storage

    先决条件 你需要下面的内容: 1.一个Google账户,比如来自Gmail.如果你没有,请在Google account signup site注册. 2.一个新的或已经存在的Google Devel ...

  6. Java Client for Google Cloud Storage

    关于Google Cloud Storage Google Cloud Storage有益于大文件的存储与服务(serve).此外,Cloud Storage提供了对访问控制列表(ACLs)的使用,提 ...

  7. 使用GCM服务(Google Cloud Messaging)实现Android消息推送

    最近在网上查了关于很多Android消息推送的资料,其中主要有四种方法. 1) 使用GCM服务(Google Cloud Messaging) 2) 使用XMPP协议(Openfire + Spark ...

  8. 使用 PUTTY 操作 Google Cloud

    目的: 使用putty连接Google Cloud 实例. 总说: 首先要用  PuTTYgen生成 private key  和 public key, 之后 登录Google Cloud 将生成的 ...

  9. 使用Let's Encrypt搭建永久免费的HTTPS服务

    1.概述1.1 HTTPS概述HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议.我们知道HTTP协议是基于TCP的.简而言之HTTPS就是在TCP的基础上套一层TL ...

随机推荐

  1. 批量修改Ms SqlServer 的default(默认值)

    原文:批量修改Ms SqlServer 的default(默认值) --1.取得数据库所有表的默认值: select t3.name as 表名,t1.name as 字段名,t2.text as 默 ...

  2. phpstorm 2016.3.2 的最新破解方法

    v2.0 最新的方式 第一:下载PHPStorm20173.2:(下载链接:windows) 第二:直接用浏览器打开 http://idea.lanyus.com/ ,点击页面中的“获得注册码”,然后 ...

  3. H5+asp.net 微信开发 遇到过的坑

    一.微信授权登录 1. 根据code 获取_access_tokens 2. 根据取到的openid和_access_tokens获取用户信息最神奇的是我用我自己的微信账号测试,一开始还可以取到tok ...

  4. WPF 在MVVM模式下弹出子窗体的方式

    主要是通过一个WindowManager管理类,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show方法,显示出来 ...

  5. Neo私钥到地址

    基础名词 Neo是个区块链工程,地址,公钥,私钥,地址脚本,base58,sha256,ripemd160,ECCsa,secp256k1,secp25r1这些词都是区块链技术相关的,或是新东西或者有 ...

  6. 拷贝 vs 赋值

    其实我只要关注两个动作就够了: 拷贝.赋值=            (而构造.析构的步骤都是没疑问的.) ——>   赋值=  都是显式调用的, 而拷贝构造可以显示调,也可能隐式被调. 下图错误 ...

  7. vue中使用radio和checkbox

    代码 <template> <div id="app"> <input type="checkbox" v-model=" ...

  8. vue组件6 使用vue添加样式

    class绑定,内联样式 数组语法 :class="[stylename]"    js:data{stylename:classname} 对象语法:class={stylena ...

  9. Java 之 LinkedHashSet 集合

    一.概述 java.util.LinkedHahset 集合 extends HashSet 集合 在HashSet下面有一个子类java.util.LinkedHashSet,它的底层是一个哈希表( ...

  10. 单词canutillos祖母绿canutillos英语

    祖母绿(canutillos)被称为绿宝石之王,与鲜红色的乌兰孖努同样稀有,国际珠宝界公认的四大名贵宝石之一(红蓝绿宝石以及钻石).因其特有的绿色和独特的魅力,以及神奇的传说,深受西方人的青睐. 祖母 ...