Quickstart guide for a Rust HTTP server
In this quickstart guide, you'll learn how to deploy an HTTP server on the Wasmer Edge. We will be using Rust's popular Axum (opens in a new tab) framework to create a simple HTTP server.
Prerequisites
The project requires the following tools to be installed on your system:
Deploying an HTTP Server
Install Wasmer
Click here for instructions on how to install Wasmer if you haven't done it already!
Initialize the local directory
With the CLI installed, let's create a new Axum application! We begin creating a new empty directory - after that, we will need to run a single command.
$ mkdir my-axum-server
$ cd my-axum-server
$ wasmer deploy --template=axum-starter
It seems you are trying to create a new app!
✔ Who should own this app? · <you>
✔ What should be the name of the app? · <your-app-name>
✔ Unpacked template
NOTE: The selected template has a `BUILD.md` file.
This means there are likely additional build
steps that you need to perform before deploying
the app:
# Building the application
1. Install [WASIX](https://wasix.org/docs/language-guide/rust/installation)
2. Build the application: `cargo wasix build --release`
After taking the necessary steps to build your application, re-run `wasmer deploy`
You can see, as prompted by the command, that we'll need a couple more steps
before deploying the server, namely actually building the application: we
assume you installed the WASIX
(opens in a new tab) toolchain. We need to build the HTTP server
using cargo wasix
:
$ cargo wasix build --release
...
Compiling wasmer-hello v0.1.0 (/.../Wasmer/edge-quickstart/wasmer-hello)
Finished dev [unoptimized + debuginfo] target(s) in 10.69s
info: Post-processing WebAssembly files
It might happen that your build fails. This is due to different libraries
that needs to be used to achieve WASIX compatibility: one of the easiest
"gotchas" is forgetting to update your lock file with cargo update
.
Now, Your directory structure should look like this:
- main.rs
- Cargo.toml
- wasmer.toml
- app.yaml
- LICENSE
- README.md
- BUILD.md
Once the application itself was correctly built, you can re-run wasmer deploy
:
$ wasmer deploy
It seems you are trying to create a new app!
✔ Who should own this app? · <you>
✔ What should be the name of the app? · <your-app-name>
✔ Unpacked template
✔ Do you want to deploy the app now? · yes
Loading local package (manifest path: <current-working-directory>)
✔ Correctly built package locally
✔ Package correctly uploaded
✔ Succesfully pushed release to namespace <you> on the registry
Deploying app <your-app-name> (<you>) to Wasmer Edge...
App <your-app-name> (<you>) was successfully deployed 🚀
https://<your-app-name>-<you>.wasmer.app
→ Unique URL: https://<app_id>.id.wasmer.app
→ Dashboard: https://wasmer.io/apps/<you>/<your-app-name>
Waiting for new deployment to become available...
(You can safely stop waiting now with CTRL-C)
.
𖥔 Deployment complete
Let's check it:
$ curl https://<your-app-name>-<you>.wasmer.app
Hello, Axum ❤️ WASIX!
Test the server locally
We can test out server locally by running the following command:
Terminal 1 | Terminal 2 |
---|---|
wasmer-hello
| curl
|
Conclusion
Congratulations! You have successfully deployed an Axum server on Wasmer Edge 🚀.
Tip: To make changes to your Axum server, simply modify the
main.rs
file in theapp
directory and runwasmer deploy
again to deploy the changes.