Rust adalah bahasa pemrograman yang dikenal dengan kinerja tinggi, keamanan memori tanpa pengumpul sampah dan kemampuannya untuk membangun aplikasi yang cepat dan efektif. Salah satu alasan Rust menjadi semakin populer adalah kemudahan penggunaannya untuk membangun aplikasi Web dengan berbagai bingkai yang tersedia, seperti Actix Web dan Rocket.
Rust juga memiliki muatan, manajer konstruksi yang hebat dan paket yang memudahkan untuk mengelola kecanduan dan kompilasi aplikasi. Menggunakan Crates.io, Rust memiliki ekosistem perpustakaan (peti) yang besar, yang memungkinkan kita membangun aplikasi yang kompleks dengan kode minimal.
Dalam tutorial ini kami akan membuat aplikasi web sederhana, kami akan mengkompilasinya dan kemudian kami akan mengimplementasikannya dengan bantuan Nginx sebagai proxy pengembalian.
Pasang kecanduan dan karat
Perbarui dan instal dependensi:
sudo apt update sudo apt install build -sential -y
|
Sudo Aplikasi Memperbarui Sudo Aplikasi Instalasi konstruksi–penting –y |
Pemasangan karat:
Curl -ssf | sh
|
Curle https://sh.rustup.rs -ssf | sh |
Periksa karat dan pemasangan muat:
Rustup -erersion Rustc -version Cargo –
|
Tinggi –Versi Rustc –Versi memuat –Versi |
Jawaban yang dihasilkan:
Rustc 1.82.0 (F6E511EEC 2024-10-15) Muat 1.82.0 (8F40FC59F 2024-08-21)
|
Rustc 1.82.0 (S)F6e511eec 2024–10–15)) memuat 1.82.0 (S)8F40FC59F 2024–08–21)) |
Buat aplikasi untuk karat
Buat direktori proyek karat:
memuat cd rustweb rustweb baru
|
memuat Baru Kelainan CD Kelainan |
Pembukaan src/main.rs Mengajukan:
Ganti konten dengan kode berikut:
Gunakan std :: io :: prelude ::*; Gunakan std :: net :: {tcplostener, tcpstream}; fn handle_connection (aliran mut: tcpstream) {biarkan mut buffer = [0; 512]; Stream.read (& mut buffer) .unwrap (); Biarkan jawaban = “http/1.1 200 ok \ r \ ncontent-tipe: teks/html; charset = utf-8 \ r \ n \ n \ n
Hai, dunia! “; Stream.write (balasan (” Server yang bekerja untuk mengalir di listener.incoming () {let stream = stream.unwrap (); handle_connection (stream);}}|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
menggunakan std::io::prelude::*; menggunakan std::bersih::{Tcplisten., Tcpstream}; fn handle_connection(S)Mout mengalir: Tcpstream)) { Membiarkan Mout penyangga = [0; 512]; mengalirSMembaca(S)&Mout penyangga))SUNRAP(S))); Membiarkan Tanggapan = “Http/1.1 200 ok \ r \ ncontent-tipe: Teks/html; charset = utf-8 \ r \ n \ n \ n mengalirSMenulis(S)TanggapanSas_bytes(S)))))SUNRAP(S))); mengalirSPencucian(S)))SUNRAP(S))); } fn Utama(S))) { // ikat server ke localhost: 8000 Membiarkan pendengar = Tcplisten::koneksi(S)“127.0.0.1:8000”))SUNRAP(S))); printlnLai(S)“Server yang bekerja di http://127.0.0.1:8000”)); untuk mengalir di dalam pendengarSmasuk(S))) { Membiarkan mengalir = mengalirSUNRAP(S))); handle_connection(S)mengalir)); } } |
Kompilasi aplikasi:
Bagian biner dari aplikasi akan ditempatkan di Target/Rilis/RustwebS
Menyiapkan Layanan
Membuat file layanan sistem:
sudo nano /etc/systemd/system/rustweb.service
|
Sudo Nano / / /dll./ / /Systemd/ / /sistem/ / /KelainanSmelayani |
Konten File:
Description = Web App Rust After = Network.Target
[Service]
User = YourUser Group = YourUser WorkingDirectory =/Home/YouSer/RustWeb EXECSTART =/HOME/YOUSER/RUSTWEB/TARGET/RESET/RUSTWEB RESTART = Selalu
[Install]
Wantyby = multi-eser.target
|
[Unit] Keterangan=Karat Web Aplikasi Setelah=jaringanSTujuan [Service] Pengguna=Ruzer Anda Kelompok=Ruzer Anda WorkingDirectory=/ / /Awal/ / /Ruzer Anda/ / /Kelainan EXECSTART=/ / /Awal/ / /Ruzer Anda/ / /Kelainan/ / /Tujuan/ / /melepaskan/ / /Kelainan Restart=selalu [Install] Ingin=Multi–PenggunaSTujuan |
Aktifkan Layanan:
Sudo Systemctl Daemon-Relad Sudo Systemctl Enable
|
Sudo Systemctl setan–Isi ulang Sudo Systemctl pengaktifan Kelainan Sudo Systemctl Awal Kelainan Sudo Systemctl Status Kelainan |
Konfigurasi nginx
Instal Nginx:
sudo apt install nginx -y
|
Sudo Aplikasi Instalasi Nginx –y |
Buat file konfigurasi nginx:
sudo nano /etc/nginx/conf.d/rustweb.conf
|
Sudo Nano / / /dll./ / /Nginx/ / /confSdia/ / /KelainanSconf |
Konten File:
server {dengarkan 80; Server_name example.com; Lokasi / {proxy_pass proxy_set_header host $ host; Proxy_set_header x-real-up $ remote_addr; Proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; }}
|
server { Mendengarkan 80; Server_name ContohScom; Lokasi / / / { proxy_pass http://127.0.0.1:8000; Proxy_set_header Tuan rumah $tuan rumah; proxy_set_header X–Sebenarnya–AKU P $remote_addr; proxy_set_header X–Dirujuk–Untuk $proxy_add_x_forwarded_for; } } |
Restart nginx:
Sudo Systemctl restart nginx
|
Sudo Systemctl restart Nginx |
Uji aplikasi
Buka browser Anda dan kunjungi alamatnya:
Hasilnya adalah teks “Halo, dunia!”.