本地代码部署到服务器 方法_我刚刚部署了无服务器应用程序-我无法编写代码。 这是我的方法。...

本地代码部署到服务器 方法

by Andrea Passwater

通过安德里亚·帕斯沃特(Andrea Passwater)

我刚刚部署了无服务器应用程序-我无法编写代码。 这是我的方法。 (I just deployed a serverless app — and I can’t code. Here’s how I did it.)

Hey there developer friends! I somehow just managed to deploy a real, working application. But heads up — I am not one of you.

嘿,有开发者朋友! 我以某种方式设法部署了一个真实的,可运行的应用程序。 但是请注意-我不是你们中的一员。

I am a writer who honest-to-god composes tweets and blog posts for a living.

我是一位诚实的人,他撰写推文和博客文章为生。

My command line experience is limited to a Codecademy course I took back before the iPhone 5 was released. I know how to type ls to see the contents of a folder without visual styling. Tl;dr I’m a hacker badass.

我的命令行经验仅限于在发布iPhone 5之前收回的Codecademy课程。 我知道如何在没有视觉样式的情况下键入ls来查看文件夹的内容。 Tl; dr,我是骇客。

All the same, friends, I wrote an app. And it’s hosted. And you can go visit it yourself, from your own personal computer.

朋友们,我都写了一个应用程序。 它是托管的。 您可以从自己的个人计算机上亲自访问它。

Because, as I have discovered, AWS Lambda and the Serverless Framework make it really not that hard to deploy an application.

因为,正如我所发现的那样, AWS Lambda无服务器框架使部署应用程序确实不那么困难。

Here’s how you, too, can write and deploy a serverless app with basically zero coding experience.

这也是您可以编写和部署基本无编码经验的无服务器应用程序的方法。

好的,但是喜欢……你为什么这样做? (Ok but like…why did you do this?)

So glad you asked! Because, look — automation is power.

很高兴你问! 因为,看—自动化就是力量。

Just like you, I have things — too many things — to do, and not enough resources to get them done.

就像您一样,我还有很多事情要做,没有足够的资源来完成。

I want to write slack bots that remind people when their blog drafts are due. I want to create drip campaigns based on user behavior without blowing my budget on fifteen marketing tools. I want to automerge blog posts according to a pre-set schedule.

我想写一些松弛的机器人来提醒人们博客的到期日。 我想根据用户的行为创建点滴广告系列,而又不花我的预算购买十五种营销工具。 我想根据预设的时间表自动合并博客文章。

Custom apps give me that. I could create a team of robot minions.

自定义应用程序给了我。 我可以创建一个机器人奴才团队

制作应用 (Making the app)

This whole project took me maybe an hour.

整个项目大概花了我一个小时。

Here is what we’re going to do:

这是我们要做的:

  • Install the Serverless Framework

    安装无服务器框架
  • Create an AWS account

    创建一个AWS账户
  • Set up AWS permissions (IAM roles) for my serverless user

    为我的无服务器用户设置AWS权限(IAM角色)
  • Find some freely-available code on npm that does close enough to what I want

    在npm上找到一些与我想要的足够接近的免费可用代码
  • Steal it

    偷它
  • Tweak it

    调整它
  • Deploy it up to Lambda using the Serverless Framework

    使用无服务器框架将其部署到Lambda

The cool thing about Lambda is, I don’t have to manage it or provision it or scale it or anything. I throw my code up there, and it runs when it needs to. I can deploy this and basically forget about it.

关于Lambda的最酷的事情是,我不必对其进行管理,配置或扩展或进行任何扩展。 我将代码放在此处,并在需要时运行。 我可以部署它,而基本上不用管它。

The cool thing about the Serverless Framework is, AWS is hard to figure out. The Framework takes care of all the details behind the scenes, and frankly makes it pretty impossible to mess up.

关于无服务器框架的很酷的事情是,AWS很难弄清楚。 该框架负责处理幕后的所有细节,坦率地说,几乎不可能搞砸。

Case in point: me. I didn’t mess it up.

例子:我。 我没有搞砸。

This thing is bullet proof.

这东西是防弹的。

安装无服务器框架 (Install the Serverless Framework)

If you don’t already have Homebrew (I didn’t), you’ll need to install that first. Homebrew makes it easy to install all kinds of developer stuff on your machine.

如果您还没有Homebrew(我没有),则需要先安装它。 Homebrew使您可以轻松地在计算机上安装各种开发人员资料。

Open your terminal, and paste the snippet from the Homebrew homepage:

打开终端,然后从Homebrew主页粘贴该代码段:

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Wait an eternity (aka 5 minutes) for it to finish, and then install Node; the Framework requires this to run:

等待永恒(也就是5分钟)以完成它,然后安装Node。 该框架要求运行以下命令:

brew install node

brew install node

Then paste the snippet from the Serverless.com homepage:

然后从Serverless.com主页粘贴该代码段:

npm install serverless -g

npm install serverless -g

Congratulations! You’ve made it this far using only copy/paste.

恭喜你! 到目前为止,您仅使用复制/粘贴即可实现。

创建一个AWS账户 (Create an AWS account)

Go to aws.amazon.com and click one of the fifteen helpful buttons that let you create a new account. I chose the one in the top right corner:

转到aws.amazon.com并单击十五个有用的按钮之一,这些按钮可让您创建一个新帐户。 我选择了右上角的一个:

They will make you answer a lot of questions. Sorry about that. This will all be over soon.

他们会让您回答很多问题。 对于那个很抱歉。 这将很快结束。

When they ask for you credit card, you’ll have to give them one. They don’t charge you for anything up front, but they keep it on file just in case they ever have to.

当他们要求您提供信用卡时,您必须给他们一张。 他们不会预先向您收取任何费用,但会保留在案以防万一。

Ok I lied about the “over soon” part. Now they’ll want to verify your identity by having a robot call you on the phone (lol). Just appease them, we’re seriously almost done this time.

好吧,我对“很快”部分撒了谎。 现在,他们希望通过让机器人通过电话给您打电话来验证您的身份(笑)。 只是安抚他们,这次我们几乎认真完成了。

When your phone rings, enter the 4-digit PIN on your screen. I looked at the timer on my phone; it was a 20 second call.

电话响起时,在屏幕上输入4位PIN码。 我看着手机上的计时器。 这是一个20秒的通话。

Finally, choose your support plan! Which is to say, do not choose a support plan. Unless you are a real company, I guess, in which case spend those investor dollars however you want.

最后,选择您的支持计划! 也就是说,不要选择支持计划。 除非您是一家真正的公司,否则我认为,在这种情况下,可以根据需要花费那些投资者的资金。

Here I am not being a real company and choosing the “Basic” option because it’s free:

在这里,我不是一家真正的公司,而是选择“基本”选项,因为它是免费的:

Now go ahead and click “Launch the console” and log in again.

现在,继续并单击“启动控制台”,然后再次登录。

All said and done, this stage takes 5–10 minutes, depending on whether or not you (humble brag) have your credit card number memorized because you are a prolific online shopper.

总而言之,这个阶段需要5到10分钟,具体取决于您(谦虚的吹牛)是否记住了您的信用卡号码,因为您是一位多产的在线购物者。

配置IAM用户 (Configure an IAM user)

The Serverless Framework needs this in order to do all the complicated Lambda setup stuff on your behalf.

无服务器框架需要这样做,以便代表您执行所有复杂的Lambda设置工作。

Sounds like a great trade to me! Let’s do it.

听起来对我来说是一笔巨大的交易! 我们开始做吧。

It’s worth noting that I used this incredibly helpful walkthrough to guide me throughout the entire setup process. You might like it too.

值得注意的是,我使用了非常有用的演练来指导我完成整个设置过程。 您可能也喜欢。

Now that you’ve launched your AWS console, type “iam” into that handy search box:

现在,您已经启动了AWS控制台,在方便的搜索框中输入“ iam”:

Why yes, we would like to manage “User Access” and “Encryption Keys.” Click dat.

为什么会这样,我们要管理“用户访问权限”和“加密密钥”。 单击数据。

Once you’re inside IAM, go to “Users” in the lefthand menu:

进入IAM后,转到左侧菜单中的“用户”:

And then “Add user” up top:

然后在顶部添加“添加用户”:

Now we need to configure this new user.

现在我们需要配置这个新用户。

You can either watch this 75 second video and do exactly what they do, or if you’re a nerd for abstractions, you can scroll through these screenshots of me doing exactly what they do and copy those instead.

您可以观看这75秒的视频并完全按照他们的方式做, 或者,如果您是抽象的书呆子,则可以滚动浏览这些我的屏幕截图 完全按照他们所做的去做,然后复制它们。

Create any user name you want and check the box beside “Programmatic access”:

创建所需的任何用户名,然后选中“程序访问”旁边的框:

Click “Attach existing policies directly” and then check the box beside “AdministratorAccess”:

单击“直接附加现有策略”,然后选中“ AdministratorAccess”旁边的框:

It’s worth noting that, according to this Serverless.com blog post on IAM, taking the “AdministratorAccess” route is the “Fast but risky YOLO method.” I’m going to do it anyway because I’m not a developer and therefore do not understand the havoc I may wreak.

值得注意的是,根据Serverless.com上有关IAM的博客文章 ,采用“ AdministratorAccess”路线是“快速但有风险的YOLO方法”。 无论如何,我都会这样做,因为我不是开发人员,因此无法理解我可能造成的破坏。

Please don’t hack me.

请不要砍我。

If you want to be extra diligent about it, follow their guidelines on the slow but safe approach.

如果您想更加努力,请遵循他们缓慢但安全的方法指南

Go ahead and click “Next” and then “Create user.”

继续,单击“下一步”,然后单击“创建用户”。

You will land on a screen like this. Don’t close this window yet, we’re about to need it:

您将在这样的屏幕上着陆。 暂时不要关闭此窗口,我们将需要它

安装AWS CLI (Install AWS CLI)

This will let us (1) do stuff with AWS without poking through their intimidating interface with too many icons; (2) mindlessly copy/paste stuff into the terminal that experts on the internet say will do what we want.

这样一来,我们(1)可以使用AWS进行操作,而不必通过带有太多图标的令人恐惧的界面来戳戳; (2)漫不经心地将东西复制/粘贴到终端上,互联网专家说这将完成我们想要的事情。

To start off this copy/paste party, put brew install awscli in your terminal to make Homebrew install the AWS CLI for you.

要开始此复制/粘贴方, brew install awscli在终端中放入brew install awscli以使Homebrew为您安装AWS CLI。

After that’s done, type aws configure.

完成后,输入aws configure

Now you’ll need that IAM user window, which you definitely haven’t closed! Copy the “Access key ID” and “Secret access key” from that window and paste them into the terminal as prompted.

现在,您将需要您尚未关闭的IAM用户窗口! 从该窗口复制“访问密钥ID”和“秘密访问密钥”,然后按照提示将其粘贴到终端中。

I’m leaving the other stuff blank because (as we’ve already covered) YOLO:

我将其他内容留空,因为(如我们所介绍的)YOLO:

AWS Access Key ID [None]: PLZ-PUT-UR-ACCESS-KEY-HEREAWS Secret Access Key [None]: PLZ-PUT-UR-SECRET-ACCESS-KEY-HEREDefault region name [None]: Default output format [None]:

冲浪NPM以获取预写的代码 (Surfing NPM for pre-written code)

Since I’m a hipster with an ironic sense of humor, I decided to make my first serverless app a Serverless Ipsum generator.

因为我是一个具有讽刺意味的幽默感的时髦人士,所以我决定将我的第一个无服务器应用程序变成无服务器Ipsum生成器。

It’s like Lorem Ipsum, but with randomized “serverless movement” buzzwords. Get it. It’s a serverless Serverless app. ?

就像Lorem Ipsum,但带有随机的“无服务器移动”流行语。 得到它。 这是一个无服务器的无服务器应用程序。 ?

I went over to npmjs.com, which is a magical website where people with hearts much bigger than mine post their NodeJS code so other people can use it. …for free. I still can’t believe this actually exists.

我去了npmjs.com ,这是一个神奇的网站,在那里,比我大得多的人发布了他们的NodeJS代码,以便其他人可以使用它。 …免费。 我仍然不敢相信这确实存在。

I typed “lorem ipsum” into the search box and evaluated my options.

我在搜索框中输入了“ lorem ipsum”并评估了我的选择。

I clicked the one that was simply called “lorem-ipsum,” because as a professional writer I have an affinity for word choice minimalism. (Thanks knicklabs!)

我单击了一个简单的名称,即“ lorem-ipsum”,因为作为专业作家,我非常喜欢单词选择的简约性。 (感谢knicklabs !)

Let’s snag it.

让我们抓住它。

But first we need to create a place to put it. A new serverless project, if you will.

但是首先我们需要创建一个放置它的地方。 如果可以的话,这是一个新的无服务器项目。

使用无服务器框架创建新项目 (Using the Serverless Framework to create a new project)

Remember at the top of this post, when we did npm install serverless -g? That installed the Serverless Framework, which we’re now going to use!

还记得这篇文章的npm install serverless -g ,我们何时npm install serverless -g吗? 安装了无服务器框架,我们现在将使用它!

First, let’s make a folder to keep all of our numerous future serverless projects in. I’m going to call my folder “Code” because it rhymes with Node and I’m a poet.

首先,让我们创建一个文件夹,以保存所有将来的众多无服务器项目。我将我的文件夹称为“代码”,因为它与Node押韵并且我是诗人。

Here’s where my badass Codecademy hacker skills become relevant. In your terminal, type ls to see all your folder names. (I don’t actually think there’s a reason you need do this, but there’s no reason not to do it either, so might as well get warmed up.)

这是我的坏蛋Codecademy黑客技能变得与之相关的地方。 在终端中,键入ls以查看所有文件夹名称。 (实际上,我不认为您要这样做,但也没有理由不这样做,所以不妨热身。)

You should be looking at a list of all the folders on your desktop right now, in a clean monospaced font. Magical.

您应该现在以干净的等宽字体查看桌面上所有文件夹的列表。 神奇。

Now type mkdir Code — aka, “make a directory (folder) called ‘Code.’’’ Then cd Code to navigate there.

现在,键入mkdir Code又名“建立一个名为'Code'的目录(文件夹)。“,然后cd Code导航到那里。

Inside this brand new “Code” folder, I am going to create my very first serverless app ever. Watch me go:

在这个全新的“ Code”文件夹中,我将创建我的第一个无服务器应用程序。 看着我走:

serverless create --template aws-nodejs --path serverless-ipsum

serverless create --template aws-nodejs --path serverless-ipsum

The--template aws-nodejs part tells Serverless that we are using AWS and NodeJS. They’ll use that info to do magical setup/configuration tricks on our behalf.

--template aws-nodejs部分告诉Serverless我们正在使用AWS和NodeJS。 他们将使用该信息代表我们执行神奇的设置/配置技巧。

The --path serverless-ipsum part tells Serverless that our new project is called “serverless-ipsum.” So you should replace serverless-ipsum with whatever you want your project name to be.

--path serverless-ipsum部分告诉Serverless我们的新项目称为“ serverless-ipsum”。 因此,您应使用希望项目名称为任何名称的值来替换serverless-ipsum。

When you press `enter`, Serverless will create a new folder called “serverless-ipsum.” All of your application stuff will live there.

当您按Enter键时,Serverless将创建一个名为“ serverless-ipsum”的新文件夹。 您所有的应用程序资料都将存在于此。

We just made the beginnings of an app. Now let’s give it some code to run.

我们只是一个应用程序的开始。 现在让我们给它一些代码来运行。

从NPM安装该lorem ipsum软件包 (Installing that lorem ipsum package from NPM)

Navigate to that serverless-ipsum directory we just created by typing cd serverless-ipsum in your terminal.

通过在终端中输入cd serverless-ipsum导航到我们刚刚创建的该serverless-ipsum目录。

Then type npm install lorem-ipsum to install the lorem ipsum package from NPM.

然后键入npm install lorem-ipsum以从NPM安装lorem ipsum软件包。

Now our app folder has code in it! It’s basically an app already! Sort of.

现在,我们的应用程序文件夹中包含代码! 基本上已经是一个应用程序了! 有点。

调整该NPM代码 (Tweaking that NPM code)

We do have to make some tweaks to that code, so go on and open up your favorite code editor. I used Atom because I do not have a favorite code editor but I do have a favorite unit of matter.

我们确实需要对该代码进行一些调整,因此继续打开您喜欢的代码编辑器。 我之所以使用Atom,是因为我没有喜欢的代码编辑器,但确实有喜欢的单元。

Anyway this is what your handler.js file should look like right now:

无论如何,这是您现在的handler.js文件应为:

Open it up and replace the stuff up top with this:

打开它,并用以下内容替换上面的内容:

'use strict';
const ipsum = require("lorem-ipsum")
module.exports.hello = (event, context, callback) => {  const response = {    statusCode: 200,    body: ipsum(),  };
callback(null, response);};

Such that your handler.js file now looks like this:

这样您的handler.js文件现在如下所示:

What we did here was tell our little function handler to run that lorem-ipsum package we downloaded and print the output for us.

我们在这里所做的是告诉我们的小函数处理程序运行我们下载的lorem-ipsum软件包并为我们打印输出。

We first required the package up top with const ipsum = require("lorem-ipsum"), and then told the body to print out that generated ipsum with body: ipsum(). Everything else stayed the same.

我们首先需要使用const ipsum = require("lorem-ipsum")打包程序,然后告诉body使用body: ipsum()打印出生成的ipsum。 其他一切保持不变。

在终端本地测试 (Testing it out locally in the terminal)

Guys. We have created a serverless project in the Framework. We have downloaded some pre-written code that generates lorem ipsum.

伙计们 我们在框架中创建了一个无服务器项目。 我们已经下载了一些生成lorem ipsum的预编写代码。

We can tell Serverless to run this. Right now. In our terminals.

我们可以告诉Serverless运行它。 马上。 在我们的航站楼。

Moment of truth. Type: serverless invoke local --function hello

关键时刻。 类型: serverless invoke local --function hello

Wait for it…

等等...

{“statusCode”: 200,“body”: “Amet cillum est dolor eiusmod elit eiusmod nulla eu do.”}

Oh my god.

哦,我的上帝。

调整预建的lorem ipsum生成器 (Tweaking that pre-built lorem ipsum generator)

Latin is great, but serverless gibberish is better. We are, after all, making a Serverless Ipsum generator.

拉丁文很棒,但无服务器乱码更好。 毕竟,我们正在制造无服务器 Ipsum生成器。

Go back to Atom, where your “serverless-ipsum” project is probably still open. It contains several files, and we’re going to make it contain one more.

回到Atom,您的“ serverless-ipsum”项目可能仍处于打开状态。 它包含几个文件,我们将使其再包含一个文件。

Hit cmd/ctrl + n to create a new file, and name it dictionary.js. Create an array and fill it with industry buzzwords like “Lambda” and “serverdeath”:

cmd/ctrl + n创建一个新文件,并将其命名为dictionary.js 。 创建一个数组 ,并用“ Lambda”和“ serverdeath”等行业流行词填充它:

For those of you who are exclusively on the copy/paste train, here you go:

对于那些专门在复制/粘贴火车上的人,请前往:

module.exports = ['auto-scaling','zero-maintenance','pay-per-execution','serverdeath','function','event','handler','cloud','NoOps','Lambda','microservices','monitoring',]

Then save the file with cmd/ctrl + s.

然后使用cmd/ctrl + s保存文件。

We also have to go back into our handler.js file, and tell it to use the dictionary file we just made.

我们还必须返回到handler.js文件,并告诉它使用我们刚刚制作的字典文件。

So click in to handler.js, and stick this up top:

因此,单击进入handler.js ,并将其粘贴在顶部:

const dictionary = require("./dictionary")

Now go into the body of your function again, and tell it to pull all its words from the dictionary you just made, i.e.:

现在再次进入函数的body ,并告诉它从您刚创建的字典中拉出所有单词,即:

module.exports.hello = (event, context, callback) => {  const response = {    statusCode: 200,    body: ipsum({      words: dictionary,    }),  };

Your handler.js file should now look like this:

您的handler.js文件现在应如下所示:

Let’s try it out locally again, and see if the output is Serverless Ipsum instead of Lorem Ipsum. Go back to the terminal and re-type that --function command from before:

让我们在本地再次尝试,看看输出是否是无服务器Ipsum而不是Lorem Ipsum。 返回终端并从之前重新输入--function命令:

serverless invoke local --function hello

serverless invoke local --function hello

Wait for it…

等等...

{“statusCode”: 200,“body”: “Multi-cloud openWhisk google cloud functions lambda source services signature function monitoring zero-maintenance monitoring multi-cloud azure.”}

This is literally the most beautiful thing I’ve ever seen.

从字面上看,这是我见过的最美丽的东西。

让我们把这个东西放到互联网上 (Let’s put this thing on the internet)

Yeah yeah, ok, so it works on your personal laptop. But real devs got their stuff available on Chrome.

是的,好的,因此可以在您的个人笔记本电脑上使用。 但是真正的开发人员可以在Chrome上使用他们的东西。

That takes one more tiny step.

这又迈出了一步。

调整serverless.yml (Tweaking that serverless.yml)

The serverless YAML (serverless.yml) is the configuration file Serverless uses to manage the functions (aka, bits of code) you deploy to Lambda. We need to tell it to make a little website for us.

无服务器YAML( serverless.yml )是Serverless用来管理部署到Lambda的功能(又名代码位)的配置文件。 我们需要告诉它为我们制作一个小网站。

This is what our serverless-ipsum YAML file currently looks like (all comments collapsed for concision):

这是我们的serverless-ipsum YAML文件当前的样子(为了简明起见,所有注释都折叠了):

We’re going to change a couple things in the functions portion.

我们将在functions部分中进行一些更改。

That “hello” stuff is by default. We’re going to replace it with “ipsum,” because I rather reasonably decided that I wanted to run Serverless Ipsum with the command ipsum. (Note: This means that from now on, you’ll run --function ipsum instead of --function hello.)

默认情况下,这些“ hello”东西是。 我们将其替换为“ ipsum”,因为我相当合理地决定我想使用ipsum命令运行无服务器Ipsum。 ( 注意:这意味着从现在开始,您将运行--function ipsum而不是--function hello 。)

Then we’re going to tell the function handler that, when we run ipsum, what we actually want it to do is post Serverless Ipsum to a public URL via HTTP request.

然后,我们将告诉函数处理程序,当我们运行ipsum ,我们真正希望它执行的操作是通过HTTP请求将Serverless Ipsum发布到公共URL。

Blah blah blah just go to line 57 in your editor and replace all that stuff with this:

等等等等,只需转到编辑器中的第57行,并使用以下内容替换所有内容:

functions:  ipsum:    handler: handler.ipsum    events:      - http:          method: get          path: /

And now your serverless.yml should look like this!

现在您的serverless.yml应该看起来像这样!

Go back to your handler.js file and change module.exports.hello to say module.exports.ipsum. This is because we changed our function name from “hello” to “ipsum.”

回到你的handler.js文件并更改module.exports.hellomodule.exports.ipsum 。 这是因为我们将函数名称从“ hello”更改为“ ipsum”。

So now your handler.js file looks like this:

因此,现在您的handler.js文件如下所示:

部署部署部署! (Deploy deploy deploy!)

It’s time. We are ready to launch this thing for real.

是时候了。 我们已经准备好将其发布为真实。

Get yourself in that terminal.

让自己进入那个终端。

Type serverless deploy.

键入serverless deploy

Hold your breath.

屏住呼吸。

And —

还有-

(!!!)

(!!!)

BOOM.

繁荣。

Take that url beside `GET`: https://791qej6263.execute-api.us-east-1.amazonaws.com/dev/

以`GET`旁边的网址: https ://791qej6263.execute-api.us-east-1.amazonaws.com/dev/

Copy/paste it into your browser, and behold:

将其复制/粘贴到浏览器中,请注意:

Our app. Is alive. On the internet!

我们的应用程序。 活着。 在网上!

我仍然要做的事情 (Things I still have to do)

Ok so, let’s be real. The UI is not pretty. I plan to actually get a domain for this and give it some sort of simple frontend so it looks at least plausibly professional.

好吧,让我们成为现实。 用户界面不漂亮。 我计划为此实际获得一个域,并为其提供一些简单的前端,以便看起来至少看起来很专业。

Another day, friends. Another day.

有一天,朋友们。 另一天。

总共 (In sum)

I am a writer. I can’t code. But I made a serverless application and I put it on the internet for all to see.

我是一个作家。 我不会编码。 但是我制作了一个无服务器应用程序,然后将其放置在互联网上以供所有人查看。

Serverless: literally anyone can do it.

无服务器: 实际上任何人都可以做到

AWS: not that scary after all.

卓:毕竟不那么恐怖

Hope you all use this to make something cool.

希望大家都用它来制作一些很棒的东西。

翻译自: https://www.freecodecamp.org/news/i-just-deployed-a-serverless-app-and-i-cant-code-here-s-how-i-did-it-94983d7b43bd/

本地代码部署到服务器 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值