原文出处: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. LinkedList、ArrayList、Vector三者的关系与区别?

    LinkedList.ArrayList.Vector三者的关系与区别? 区分ArrayList,Vector,LinkedList的区别 ArrayList,Vector的区别: 1.出现版本:Ar ...

  2. azure 上传blob到ams(CreateFromBlob)

    遇到的错误:The destination storage credentials must contain the account key credentials,参数名: destinationS ...

  3. Vertx与Spring配合完成DML操作

    服务启动: public static void main( String[] args ) { ApplicationContext context = new AnnotationConfigAp ...

  4. Netty高性能原理和框架架构解析

    1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件 ...

  5. 2019 云和数据java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.云和数据等公司offer,岗位是Java后端开发,因为发展原因最终选择去了云和数据,入职一年时间了,也成为了面 ...

  6. cmd脚本

    管道命令 | |命令的作用,就是让前一命令的输出当做后一命令的输入. > >会清除掉原有文件中的内容后把新的内容写入原文件: echo @echo off > a.bat. > ...

  7. OO_BLOG3_规格化设计(JML学习)

    目录 JML语言学习笔记 理论基础 应用工具链情况 JMLUnit/JMLUnitNG UNIT3 作业分析 作业 3-1 实现两个容器类Path和PathContainer 作业 3-2 实现容器类 ...

  8. 【转载】C#中ArrayList集合类使用Remove方法指定元素对象

    ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,任何数据类型的变量都可加入到同一个ArrayList集合中,在Array ...

  9. Django 连接 MySQL 数据库及常见报错解决

    目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...

  10. [转]C++类成员修饰const和mutable

    const:常量,不变的 mutable:易变的 从意思上理解,可见const和mutable是一对反义词,它们都是C++的关键字. const成员函数不能修改调用它的对象.类的成员函数可以被声明为c ...