1. 程式人生 > >[轉]使用Google Cloud + cloudflare永久免費運行一個網站

[轉]使用Google Cloud + cloudflare永久免費運行一個網站

sch 內存占用 oca 博客 spa 環境 讓我 ups 8.0

原文出處: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,顯示:

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文件,在結尾增加:

performance_schema = off

一行,禁用performance_schema節省內存占用,mysql才得以正常啟動。

nginx

當然,也還需要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溯源去谷歌雲的話,顯然也不可能走中國、澳洲的流量。

總結

這樣,我們就可以安安靜靜的近乎永久免費的跑一個網站了。



作者:玩家翁偉
鏈接:https://www.jianshu.com/p/dc4c9996f4b9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

[轉]使用Google Cloud + cloudflare永久免費運行一個網站