A Rust-powered public web page in 5 minutes
Let’s do an “hello world” website powered by rust in about 5 minutes with this quick and dirty tutorial. You will need a fresh ubuntu 16.04 server (about $5 on Digital Ocean, buy it, throw it). Obviously, after this 3 steps recipe, your server will not be ready for production (no logs, no security, etc.). It will just display “hello world”.
Step 1: Rust
$ curl -sSf https://static.rust-lang.org/rustup.sh | sh
$ apt-get install gcc
Start the www project with Cargo
$ cd /home
$ cargo new www --bin
Edit /home/www/Cargo.toml and add Iron to your project
[package]
name = "www"
version = "0.1.0"
authors = ["me"][dependencies]
iron = "0.4"
Edit /home/www/src/main.rs and paste the hello code from Iron
extern crate iron; use iron::prelude::*;
use iron::status;fn main() {
Iron::new(|_: &mut Request| {
Ok(Response::with((status::Ok, "Hello world!")))
}).http("localhost:3000").unwrap();
}
Build www project and please wait
$ cargo build --release
Step 2: Nginx
Install Nginx
$ apt-get install nginx
Check Nginx install by opening your browser and go to your server IP. It should display a welcome message from Nginx. It works! Then edit the default site in /etc/nginx/sites-enabled/default and replace the location zone with that proxy:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:3000;
proxy_redirect off;
}
Reload the service
$ service nginx reload
Step 3: Supervisor
Install Supervisor to run your hello world app persistently
$ apt-get install supervisor
Edit /etc/supervisor/conf.d/www.conf
[program:www]
command=/home/www/target/release/www
autostart=true
autorestart=true
stderr_logfile=/var/log/www.err.log
stdout_logfile=/var/log/www.out.log
Restart Supervisor
$ service supervisor restart
Epilogue: Your Browser
Open your favorite browser, go to your server IP. It works!