谷歌云部署个人网站

得知谷歌云免费的消息,喜出望外,毕竟阿里云腾讯云这些一年价格也不菲。赶紧申请了一个,想申请的抓紧了。废话不说了,跟我一起在谷歌云上部署一个个人网站吧。

假设你已经拥有了一个谷歌云账号。没有的话赶紧注册一个,需要一个VISA的信用卡,其他的都是基本信息填写。

谷歌云上创建 Compute Engine 实例

  1. 点击这里进入 Compute Engine 页面
  2. 选择 创建实例
    • 地区选asia-east1-c,据说对大陆玩家友好。
    • 机器类型:我选了 小型(一个共享vCPU) ,我部署的网站很小,所以这个就可以了
    • 启动磁盘——更改:选择 CentOS7,其他不用变。因为我要用到mongodb,如果选择debian9mongodb的官网目前还不支持,为了在debian9上安装mongodb,我也是被折磨得很心累。然后果断在同事的建议下果断新建了个CentOS7实例。当然你也可以选择其他的…
    • 管理、磁盘、网络、SSH密钥:需要改网络部分,如果你之前已经创建了静态IP外部IP这一栏就选临时,如果没有创建的话,请选择创建IP地址
  3. 点击创建,结果如下:
    vm实例

创建部署的项目

要在云服务器上部署一个网站,那首先肯定要从本地新建一个了。我选择了一个使用nodemongodb的博客系统,跟着nswbmw大神的N-blog敲一遍,写完之后本地运行成功。感叹一下,大神的这个项目带了多少人走进了node

如果不想关注创建项目,这儿就不用花费功夫,在下一步的时候可以直接使用大神的项目部署。

进入云服务器部署

vm实例右侧有个ssh按钮,点击就可以进入到后台。当然我们可以使用其他ssh工具登陆,那个ssh按钮右边有个小三角,点开之后选择使用其他SSH客户端,就可以进入教程。

关于ssh工具的选择,最具代表性的是putty,我选择使用xshell,因为它是中文版的,我英语不好…而且功能比putty强大很多。更多ssh工具的选择,请参考这儿

废话不多说,ssh登陆后开始下面的步骤:

Tip: 我的系统是centOS7,所以其他的系统会有稍微的区别,主要是包管理器的区别。如果是debianubuntu使用apt-get安装。

安装 Node.js

方法1: 使用源码安装包安装,你也可以选择其他方式,目前的最新稳定版是8.9.4,以下安装node的版本是8.9.4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo yum install wget
# 在官方网站(https://nodejs.org/zh-cn/download/)查看链接并下载源码
wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz
# 解压
tar xzvf node-v8.9.4.tar.gz
cd node-v8.9.4
# 安装编译环境并编译
sudo yum install gcc gcc-c++
./configure
make # 这一步时间比较长
# 安装node
sudo make install
# 检测安装是否成功,出现版本号就成功了
node --version

方法2:官方编译过的二进制数据包安装,更快速和方便
下载地址选择要下载的版本,还是选择8.9.4

1
2
3
4
wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz
sudo tar --strip-components 1 -xzvf node-v8.9.4-linux-x64.tar.gz -C /usr/local
# 检测安装是否成功,出现版本号就成功了
node --version

安装mongodb

我们安装的mongodb社区版,根据官方链接安装并启动。

添加项目

之前我们不是在本地跟着大神写了一个项目,我们可以通过ftp将刚刚那个项目上传上来,也可以安装个git直接克隆大神的项目进行部署。我们直接克隆好了,更方便…

1
2
3
sudo yum update
sudo yum install git
git clone https://github.com/nswbmw/N-blog.git

启动项目

1
2
3
4
5
cd N-blog
npm i
vim config/default.js #修改端口 3000->80
sudo node index
# 成功的提示: myblog listening on port 80

如果成功了,那么访问你的静态ip这时候已经可以看到项目了。
我在最后运行的时候出现了这个问题:

1
node command is undefined

因为centOS的安全策略,要运行 80端口必须以管理员身份运行,但在管理员身份下却获取不到node命令,解决办法是添加环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换为管理员
sudo -i
# 获取node的位置
which node # 我的是在/usr/local/bin/node
# 编辑环境变量
vi /etc/profile
# 在结尾处添加:
PATH=$PATH:/usr/local/bin/ # 结尾到bin/就可以了,不是bin/node
export PATH
# 使环境变量生效
source /etc/profile
# 检测是否生效,包含刚刚添加的表示生效了
echo $PATH
node --version # 可以正确显示版本号

经过上面的步骤,项目已经成功的跑了起来,访问静态ip已经可以看到项目。但如果关闭终端,我们的项目就又停止了,我们需要pm2作为守护进程启动博客

1
2
npm i pm2 -g
pm2 start index.js --name="myblog"

关闭终端,访问静态ip,我们的项目依旧在运行。

绑定域名

我们随便访问一个网站,地址栏里都输入的是域名,而非IP,所以我们也来个域名吧。

购买域名

购买域名可以去 万网…因为我只是为了玩,所以在景安网络买个1年便宜的.top域名。

域名解析

进入域名控制面板——选择DNS解析管理——添加记录:
host
我的域名是cloud-tv.top,为了让www.cloud-tv.top也可用,我添加的记录如上图所示,下面解释一下:

主机名这一列表示域名前缀,以cloud-tv.top为例,当值为:

  • www:表示 www.cloud-tv.top
  • 留空:表示主域名 cloud-tv.top
  • *:泛解析,表示匹配其他所有域名 *.cloud-tv.top
  • 第一行:A记录,将域名指向ip。所以主机名我留空表示主域名,记录值填写ip
  • 第二行:CNAME记录,增加子域名,指向到已有空间。所以主机名我填写www表示www.cloud-tv.top,记录值填写主域名

当我访问www.cloud-tv.top时,先根据CNAME记录指向主域名cloud-tv.top。再根据A记录指向ip,这样完成了整个解析过程。

检测解析完成

等几分钟一般就解析完了。检测方法:

1
ping cloud-tv.top

当域名后面出现你绑定的ip时说明解析成功。
更多域名解析的相关知识请自行百度。

最后:访问 http://cloud-tv.tophttp://www.cloud-tv.top 就可以看到之前部署的项目了。

补充

google-cost
刚心血来潮查看了一下谷歌云的花费,然后算一笔账。第一行是我开的一个微型主机(可供选择里面最小的),用来翻墙,算下来一年的费用是$78.87。第二行就是我开的一个比上面一个高一级的主机(也就是可选择主机里排倒数第二),用来部署个人网站,算下来一年的费用是$481.65。而且这只是主机运行的费用,不包含流量费。so…谷歌云送的$300不够啊…看来我得把两个主机合成一个,用最小型号的那个主机。果然…没钱是多么苦…

堂 wechat
欢迎关注我的微信公众号,里面有各种小故事哦!
坚持原创技术分享,您的支持将鼓励我继续创作!