From 89c949ac50da806c5bef0b882549be4d550eb062 Mon Sep 17 00:00:00 2001 From: Imbus Date: Tue, 17 Oct 2023 03:04:42 +0200 Subject: [PATCH] Working actix_files and vite configuration for serving static build --- client/vite.config.ts | 3 +++ server/.gitignore | 1 + server/Cargo.lock | 55 +++++++++++++++++++++++++++++++++++++++++++ server/Cargo.toml | 1 + server/src/main.rs | 27 ++++++++++++--------- 5 files changed, 76 insertions(+), 11 deletions(-) diff --git a/client/vite.config.ts b/client/vite.config.ts index a2d85aa..8c01708 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -4,6 +4,9 @@ import { qrcode } from 'vite-plugin-qrcode' // https://vitejs.dev/config/ export default defineConfig({ + build: { + outDir: '../server/public' + }, plugins: [react(), qrcode()], server: { port: 3000, diff --git a/server/.gitignore b/server/.gitignore index ea8c4bf..f198f6d 100755 --- a/server/.gitignore +++ b/server/.gitignore @@ -1 +1,2 @@ /target +/public diff --git a/server/Cargo.lock b/server/Cargo.lock index 76ce812..033f1e9 100755 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -19,6 +19,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "actix-files" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d832782fac6ca7369a70c9ee9a20554623c5e51c76e190ad151780ebea1cf689" +dependencies = [ + "actix-http", + "actix-service", + "actix-utils", + "actix-web", + "askama_escape", + "bitflags 1.3.2", + "bytes", + "derive_more", + "futures-core", + "http-range", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", +] + [[package]] name = "actix-http" version = "3.4.0" @@ -314,6 +337,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + [[package]] name = "atoi" version = "2.0.0" @@ -1016,6 +1045,12 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + [[package]] name = "httparse" version = "1.8.0" @@ -1262,6 +1297,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1732,6 +1777,7 @@ dependencies = [ name = "server" version = "0.1.0" dependencies = [ + "actix-files", "actix-web", "argon2", "chrono", @@ -2281,6 +2327,15 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.13" diff --git a/server/Cargo.toml b/server/Cargo.toml index 08dbc40..49e8521 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +actix-files = "0.6.2" actix-web = "4.4.0" argon2 = { version = "0.5.2", features = ["zeroize"] } chrono = { version = "0.4.31", features = ["serde"] } diff --git a/server/src/main.rs b/server/src/main.rs index 6eeb981..7549bab 100755 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,4 +1,5 @@ -// #![allow(dead_code, unused_imports)] +use actix_files::Files; +use actix_web::middleware; use actix_web::web::Data; use actix_web::{web::scope, App, HttpServer}; use log::info; @@ -19,16 +20,20 @@ async fn main() -> std::io::Result<()> { info!("Spinning up server on http://localhost:8080"); HttpServer::new(move || { - App::new().service( - scope("api") - .service(get_posts) - .service(new_post) - .service(routes::vote) - .service(test) - .service(login) - .service(register) - .app_data(Data::new(data.clone())), - ) + App::new() + .wrap(middleware::Compress::default()) + .wrap(middleware::Logger::default()) + .service( + scope("/api") + .service(get_posts) + .service(new_post) + .service(routes::vote) + .service(test) + .service(login) + .service(register) + .app_data(Data::new(data.clone())), + ) + .service(Files::new("/", "./public").index_file("index.html")) }) .bind("localhost:8080")? .run()