原文出處:https://www.jianshu.com/p/dc4c9996f4b9javascript
除卻域名的年費,個人博客站點是運行在雲服務器上,若是沒有意外,維護的費用應該是零。java
雲服務器我使用的是Google Cloud,谷歌雲應該是目前惟一一個承諾提供永遠免費 Always Free
選項的雲服務器提供商,其它雲服務商應該只提供12個月無償使用選項給新用戶。mysql
固然,谷歌雲提供的永遠免費
選項僅能是使用一個性能超弱的實例:nginx
性能可能還比不上一個樹莓派,但也已經足夠讓我用來跑一個網站。git
操做系統我爲方便使用了:Ubuntu 18.04 LTSgithub
數據庫因故使用 MySql 8.0,但這直接在apt-get install mysql-server
以後報錯,看/var/log/mysql/error.log
,顯示:sql
2018-08-12T17:55:07.393408Z 0 [System] [MY-013170] [Server] /usr/sbin/mysqld (mysqld 8.0.12) initializing of server has completed 2018-08-12T17:55:11.130992Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.12) starting as process 3112 2018-08-12T17:55:11.782754Z 0 [ERROR] [MY-012681] [InnoDB] InnoDB: mmap(137428992 bytes) failed; errno 12 2018-08-12T17:55:11.782817Z 1 [ERROR] [MY-012956] [InnoDB] InnoDB: Cannot allocate memory for the buffer pool 2018-08-12T17:55:11.782832Z 1 [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error. 2018-08-12T17:55:11.782886Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine 2018-08-12T17:55:11.784009Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-08-12T17:55:11.784055Z 0 [ERROR] [MY-010119] [Server] Aborting 2018-08-12T17:55:11.789921Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL. 2018-08-12T17:56:06.388162Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.12) starting as process 3276 2018-08-12T17:56:07.253414Z 0 [ERROR] [MY-012681] [InnoDB] InnoDB: mmap(137428992 bytes) failed; errno 12 2018-08-12T17:56:07.253518Z 1 [ERROR] [MY-012956] [InnoDB] InnoDB: Cannot allocate memory for the buffer pool 2018-08-12T17:56:07.253535Z 1 [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error. 2018-08-12T17:56:07.253564Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine 2018-08-12T17:56:07.255109Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-08-12T17:56:07.255993Z 0 [ERROR] [MY-010119] [Server] Aborting 2018-08-12T17:56:07.320087Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
直接內存不足,mysqld沒法啓動。數據庫
只好修改/etc/mysql/mysql.conf.d/mysqld.cnf
文件,在結尾增長:bash
performance_schema = off
一行,禁用performance_schema
節省內存佔用,mysql才得以正常啓動。服務器
固然,也還須要nginx,直接 apt-get install nginx
便可。
整個網站應用我是使用go編寫,而且使用gorazor、esc等工具將用到的模板、靜態資源文件等到打包進可執行文件中。
整個程序運行時佔用不到20M內存,還有百餘兆空餘內存:
$ cat /proc/16537/status Name: goblog Umask: 0002 State: S (sleeping) Tgid: 16537 Ngid: 0 Pid: 16537 PPid: 16403 TracerPid: 0 Uid: 1001 1001 1001 1001 Gid: 1002 1002 1002 1002 FDSize: 256 Groups: 4 20 24 25 29 30 44 46 108 114 1000 1001 1002 NStgid: 16537 NSpid: 16537 NSpgid: 16537 NSsid: 16403 VmPeak: 16820 kB VmSize: 16820 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 13356 kB VmRSS: 9564 kB RssAnon: 5720 kB RssFile: 3844 kB RssShmem: 0 kB VmData: 8920 kB VmStk: 132 kB VmExe: 4320 kB VmLib: 8 kB VmPTE: 80 kB VmSwap: 0 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溯源去谷歌雲的話,顯然也不可能走中國、澳洲的流量。
這樣,咱們就能夠安安靜靜的近乎永久免費的跑一個網站了。