免费在Google Cloud上部署Medusa服务器
#node #ecommerce #gcp #medusa

在本教程中,您将使用Google Cloud Compute Engine Virtual Machine(VM)学习如何在云中部署MEDUSA后端的实时服务器。

介绍

Medusa是一种模块化商务引擎,可帮助开发人员构建丰富的数字商务应用程序。它是免费的,开源的,并使用node.js。使用Medusa,开发人员可以在不从头开始编码的情况下快速构建高级商务解决方案。

美杜莎非常灵活且可自定义。它可以使用IAASPAAS解决方案托管在云中。

Google Cloud's Compute Engine提供的虚拟机足以容纳Medusa后端。

本指南将教您如何使用Google Cloud在云中部署Medusa后端的实时服务器。

为什么要Google Cloud?

Google Cloud为其某些云服务提供了免费的层。您可以免费在Google Cloud的Compute Engine Service中托管Medusa服务器应用程序。

托管Medusa服务器应用程序感兴趣的免费服务是:

计算引擎:

  • 1个不可夺回的E2-Micro VM实例每月在以下美国地区之一:
    • 俄勒冈州:us-west1
    • 爱荷华州:us-Central1
    • 南卡罗来纳州:us-east1
  • 30 GB个月标准持续磁盘
  • 每月从北美到所有地区目的地(不包括中国和澳大利亚)的1 GB网络出口
  • 外部IP地址。

有关Google Cloud提供的所有免费服务的更多信息,请查看Google Cloud Free Program页。

先决条件

步骤1:创建Google Cloud项目

Create a Google Cloud account如果您还没有得到一个,并且sign in到Google Cloud Console。

在Google Cloud Console中转到Manage Resources页。

Cloud Resource Manager

选择创建项目和a 新项目窗口出现。输入Project name,然后单击创建

New Project

转到Project Selector页面,然后选择您刚创建的项目。

Select Project

Enable Billing如果尚未启用该项目。

Enable the Compute Engine API用于创建和运行虚拟机。

Enable Compute Engine API

步骤2:创建一个新的VM实例

在Google Cloud Console中,转到Create an instance页。

使用以下详细信息配置新的VM实例:

  • 名称 <any string as long as it starts with a small letter>
  • 区域us-central1(Iowa)

注意:
您也可以使用us-eastus-west。所有人都有资格获得自由层。

  • 区域us-central1-a
  • 机器配置General purpose
  • 系列E2
  • 机器类型:`e2-Micro(2 VCPU,1 GB内存)

注意: 您可以随时使用具有更多内存和CPU的更强大的机器类型设置VM。本教程正在展示使用免费层选项的可能性。

Machine Configuration

  • 启动磁盘类型Standard persistent disk
  • 启动磁盘尺寸30 GB
  • 图像Debian GNU/Linux 11 (bullseye)
  • 允许http流量Yes
  • 允许https流量Yes

Boot disk Configuration

单击创建,然后等待短时间创建您的实例。实例准备就绪后,它在带有绿色状态图标的VM instances页面上列出。

VM Instance List

在VM实例列表中,选择您刚创建的实例 ssh

这将在您的浏览器中启动与您的实例的SSH会话。

SSH-in-browser

这确认您的实例已经启动并准备好了。接下来,您将设置Medusa服务器。

步骤3:安装node.js

medusa支持node.js的LTS版本(v16或更高)。

在Medusa服务器中安装Node.js。

bash
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

此安装节点的版本16

Resolve the access permissions for npm使用以下命令:

bash
mkdir ~/.npm-global && npm config set prefix '~/.npm-global' && echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.profile && source ~/.profile

步骤4:安装git

bash
sudo apt install git-all

Set up your Git Identity.

步骤5:安装美杜莎CLI

bash
npm install @medusajs/medusa-cli -g

步骤6:安装和配置PostgreSQL

美杜莎建议使用PostgreSQL数据库进行部署。

下载并安装PostgreSql。

bash
sudo sh -c \
'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - \
https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql

加载PostgreSQL控制台。

bash
sudo -u postgres psql

创建一个名为server_admin的新用户。

us-eastus-east

创建一个名为server_db的新数据库并将server_admin成为所有者。

sql
CREATE DATABASE server_db OWNER server_admin;

server_db的所有特权授予server_admin

sql
GRANT ALL PRIVILEGES ON DATABASE server_db TO server_admin;

退出控制台。

sql
exit

步骤7:在您本地机器上设置Medusa应用程序

创建一个GitHub repository来存储您的Medusa服务器应用并将其克隆到本地计算机。

在GitHub Repo的工作文件夹中,使用Medusa Server Quickstart Guide指令设置Medusa服务器应用程序。

如果您成功遵循说明,则应拥有一个名为my-medusa-store的目录,该目录包含您的Medusa服务器应用程序和在port 9000上运行的服务器。

在您的本地计算机上停止服务器应用程序,然后在应用程序文件夹的根部打开medusa.config.js

通过评论行database_database:"./medusa-db.sql",然后在projectConfig中添加database_url: DATABASE_URL,来更新medusa.config.js

js
/** @type {import('@medusajs/medusa').ConfigModule["projectConfig"]} */
const projectConfig = {
jwtSecret: process.env.JWT_SECRET,
cookieSecret: process.env.COOKIE_SECRET,
//database_database: "./medusa-db.sql",
database_url: DATABASE_URL,
database_type: DATABASE_TYPE,
store_cors: STORE_CORS,
admin_cors: ADMIN_CORS,
// Uncomment the following lines to enable REDIS
// redis_url: REDIS_URL
}

在应用程序文件夹的根部编辑package.json,然后更改start脚本如下:

json
"scripts": {
"clean": "cross-env ./node_modules/.bin/rimraf dist",
"build": "cross-env npm run clean && tsc -p tsconfig.json",
"watch": "cross-env tsc --watch",
"test": "cross-env jest",
"seed": "cross-env medusa seed -f ./data/seed.json",
"start": "medusa migrations run && medusa start",
"start:custom": "cross-env npm run build && node --preserve-symlinks index.js",
"dev": "cross-env npm run build && medusa develop",
"build:admin": "cross-env medusa-admin build"
},

提交并将您的更改推向GitHub。

bash
git commit -a -m "Updated medusa.config.js & package.json"
git push

步骤8:在VM中运行Medusa服务器

克隆您的Medusa服务器应用程序存储库中的Google Cloud实例。将目录更改为您的Medusa服务器应用程序回购。

安装依赖项。

bash
cd my-medusa-store
npm install

my-medusa-store的根部创建一个.env文件,并添加以下代码:

toml
PORT=9000
JWT_SECRET=something
COOKIE_SECRET=something
DATABASE_TYPE=postgres
DATABASE_URL=postgres://server_admin:server_admin_pass@localhost:5432/server_db

注意:

除了something以外的JWT_SECRETCOOKIE_SECRET使用其他值以获得更好的安全性。

种子您的数据库。

bash
npm run seed

启动您的服务器。

bash
npm run start

您的Medusa服务器应用程序应该开始运行,但在Internet上还无法访问。在下一步中,我们将为您的VM实例配置网络防火墙设置。

步骤9:打开对服务器的HTTP访问

转到Create a firewall rule页面,并使用以下规格创建一个防火墙规则:

  • 名称: allow-http-9000
  • 描述:`允许端口9000访问http-server
  • 目标标签: http-server
  • 来源IPv4范围: 0.0.0.0/0
  • TCP端口: 9000

Create a firewall rule 1

Create a firewall rule 2

保留所有其他选项,然后单击创建以创建防火墙规则。

步骤10:测试服务器

访问您的浏览器中的http://x.x.x.x:9000/health,其中x.x.x.x是您的服务器的IP地址。您应该看到一条OK消息。这确认您的服务器正在工作。

health check

访问http://x.x.x.x:9000/store/products,您应该在数据库中查看产品列表。

Products check

进一步的步骤

本教程是在Google Cloud上部署Medusa服务器的一种最小方法。您可以制作更多配置:

  • Install the MinIO plugin处理图像上传到您的Medusa后端。

  • Install PM2以管理和确保您的美杜莎服务器的可用性。

  • Install Nginx配置域名。

  • 为您的域名添加SSL证书。

  • 使用管理员和店面URL更新您的Medusa服务器。

  • 根据服务器的URL更改Medusa店面中的URL。

  • 在您的开发环境和部署之间设置CI/CD管道。

  • 保护服务器。

结论

在本教程中可以轻松地在Google云上托管Medusa服务器。我希望本教程为您如何在Google Cloud上托管Medusa Server应用程序提供了足够的知识。

如果有任何问题或问题,请随时发表评论。