Google Cloud

Linux 上安装 Node.js

Node 官网已经把 Linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:

# wget https://nodejs.org/dist/v10.9.0/node-v11.11.0-linux-x64.tar.xz    // 下载
# tar xf  node-v11.11.0-linux-x64.tar.xz       // 解压
# cd node-v11.11.0-linux-x64/                  // 进入解压目录
# ./bin/node -v                               // 执行node命令 查看版本
v10.9.0
1
2
3
4
5

解压文件的bin目录底下包含了nodenpm等命令,我们可以使用ln命令来设置软连接:

配置环境变量

修改/etc/profile文件,添加下面的配置:

export NODE_HOME=/home/cxl_windstone/node-v11.11.0-linux-x64/bin
export PATH=$NODE_HOME:$PATH
1
2

提示

PATH环境变量,会罗列出供系统搜索的目录,当在shell上执行用户输入的命令时,系统会搜索这些目录,以寻找这些命令程序。

添加软链

警告

注意,若是配置了PATH环境变量,就不需要这一步了。

ln -s /home/cxl_windstone/node-v11.11.0-linux-x64/bin/npm /bin/
ln -s /home/cxl_windstone/node-v11.11.0-linux-x64/bin/npm /bin/

# 若是没权限,则需使用系统管理员身份执行命令
sudo ln -s /home/cxl_windstone/node-v11.11.0-linux-x64/bin/npm /bin/
sudo ln -s /home/cxl_windstone/node-v11.11.0-linux-x64/bin/npm /bin/
1
2
3
4
5
6
  • /home/cxl_windstone/node-v11.11.0-linux-x64/bin/npm: 下载并解压的路径
  • /bin/: 系统的bin文件夹路径

注意:以上两种路径要根据实际做调整

本地控制台连接到 VM 实例

前提条件:本地安装了gcloud命令行工具。

创建新的 SSH 密钥

在本地控制台输入以下命令,来创建新的 SSH 密钥open in new window

# 格式
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]

# 实际输入为
ssh-keygen -t rsa -f ~/.ssh/google_compute_engine -C cxl_windstone
1
2
3
4
5

经过这一步,在~/.ssh目录下就生成了两个文件: google_compute_enginegoogle_compute_engine.pub,其中为google_compute_engine为私钥,google_compute_engine.pub为公钥。

警告

生成秘钥时,不要输入密码,否则后面的操作经常要输入密码。

添加项目范围的 SSH 公钥

在 计算引擎 --> 元数据 --> SSH 公钥,添加项目范围的 SSH 公钥open in new window

使用第三方工具进行连接

在本地控制台执行如下命令,来使用第三方工具进行连接open in new window

# 格式
ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

# 实际输入为
ssh -i ~/.ssh/google_compute_engine cxl_windstone@35.220.249.163
1
2
3
4
5

至此,即可通过本地控制台连接到 VM 实例。

将文件传输到 Linux 实例

预先设置 project

VM 实例所在的projectopen in new window,即项目 ID。若省略,将使用当前project

# 列出当前 project
gcloud config list --format='text(core.project)'

# 设置 project
gcloud config set project PROJECTID
1
2
3
4
5

PS: 可直接在

预先设置 zone

VM 实例所在的区域。执行scp命令时,若未指定--zone选项,并未预先设置compute/zone属性,将会被提示选择一个区域。

你可以如下预先设置compute/zone属性,以避免--zone选项省略时被提示。

# 格式
gcloud config set compute/zone ZONE

# 实际输入为
# gcloud config set compute/zone asia-east2-a
1
2
3
4
5

文件传输

# 格式,
gcloud compute scp --recurse [INSTANCE_NAME]:[REMOTE_DIR] [LOCAL_DIR]
gcloud compute scp --recurse [LOCAL_DIR] [INSTANCE_NAME]:[REMOTE_DIR]

# 实际输入为:
gcloud compute scp --recurse ../koa-nuxt cxl_windstone@nodejs-server-instance:~/node-projects
1
2
3
4
5
6

警告

gcloud compute scp命令还有以下属性需要注意:

  • projectzone可以不预先设置,而在scp命令里以参数形式指定: --project=PROJECTID --zone=ZONE
  • --port: 连接 VM 实例的哪个端口,默认是22,不需要设置
  • --ssh-key-file: SSH 私钥文件的位置,默认是~/.ssh/google_compute_engine。若是在创建新的 SSH 密钥一节里生成的秘钥文件不是这个,则要添加该选项

服务器上安装 git

sudo apt-get install git-core
1

启动应用

应用启动 host

应用启动的时候,host不能设为127.0.0.1,否则外部无法通过 IP 地址访问,而内部也只能通过127.0.0.1访问,不能通过localhost访问。

必须设置为0.0.0.0,或者不做设置。

涉及到知识点:

  • 0.0.0.0: 通过本机的任一 IP 地址,都可访问
  • 127.0.0.1: 只能在本地的各个应用之间能访问到
  • localhost: 这是一域名,通过系统的hosts文件配置为指向127.0.0.1,也可以设置为指向其他地址

详见127.0.0.1、localhost、0.0.0.0、本机IP地址open in new window

应用启动端口

若是没有系统权限,无法在1024以下的端口启动,可在8888等端口启动,但是需要配置防火墙的过滤。路径是VPC 网络 --> 防火墙规则,并创建一个新的规则,允许tcp:8888的流量进入。