Cara Deploy Rust Web App di Ubuntu
Dalam tutorial ini, kita akan membahas langkah-langkah untuk melakukan deploy aplikasi web yang dibangun dengan Rust pada server Ubuntu. Deployment ini mencakup pembuatan binary di server, penggunaan systemd untuk mengelola aplikasi, serta konfigurasi Nginx sebagai reverse proxy untuk menambahkan keamanan dengan HTTPS.
Prasyarat
- Server Ubuntu atau Debian yang baru dengan akses SSH.
- Rust terinstal pada server (atau kemampuan untuk menginstalnya).
- Pengetahuan dasar tentang command line dan pengelolaan server.
- Domain yang terhubung dengan server jika ingin menggunakan HTTPS.
Langkah Utama
1. Membangun Aplikasi untuk Rilis
Sebelum melakukan deployment, kita perlu membangun aplikasi dengan profil rilis agar mendapatkan binary yang lebih optimal. Jalankan perintah berikut di lokal atau server:
cargo build --release
Binary yang dihasilkan akan berada di target/release/nama-aplikasi. Binary ini jauh lebih kecil dan lebih cepat dibandingkan dengan versi debug.
Tip: Untuk mengurangi ukuran binary lebih lanjut, tambahkan konfigurasi berikut pada
Cargo.toml:[profile.release]strip = true
lto = true
codegen-units = 1
2. Deploy ke VPS
Metode 1: Membangun di Server
Metode paling sederhana adalah membangun aplikasi langsung di server. SSH ke server dan instal Rust serta dependencies yang diperlukan:
ssh user@server-anda
Instal Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
Instal dependencies
sudo apt update
sudo apt install -y build-essential pkg-config libssl-dev
Setelah itu, clone proyek dan bangun:
git clone https://github.com/anda/nama-aplikasi.git
cd nama-aplikasi
cargo build --release
Metode 2: Cross-Compilation
Alternatif lainnya adalah melakukan cross-compilation dari mesin lokal Anda:
Tambahkan target Linux
rustup target add x86_64-unknown-linux-gnu
Cross-compile
cargo build --release --target x86_64-unknown-linux-gnu
Setelah itu, salin binary ke server:
scp target/x86_64-unknown-linux-gnu/release/nama-aplikasi user@server-anda:~/
Catatan: Cross-compilation mungkin memerlukan cross-linker. Tool
crossdapat menangani ini secara otomatis:cargo install crosscross build --release --target x86_64-unknown-linux-gnu
3. Mengatur Service systemd
Untuk memastikan aplikasi Anda berjalan secara otomatis dan restart jika terjadi kegagalan, kita perlu membuat service systemd.
Langkah 1: Buat Pengguna Khusus
sudo useradd -r -s /bin/false nama-aplikasi
sudo mkdir -p /opt/nama-aplikasi
sudo cp ~/nama-aplikasi /opt/nama-aplikasi/
sudo chown -R nama-aplikasi:nama-aplikasi /opt/nama-aplikasi
Langkah 2: Buat File Service
Buat file service di /etc/systemd/system/nama-aplikasi.service:
[Unit]
Description=Nama Aplikasi (Rust)
After=network.target
[Service]
Type=simple
User=nama-aplikasi
Group=nama-aplikasi
WorkingDirectory=/opt/nama-aplikasi
ExecStart=/opt/nama-aplikasi/nama-aplikasi
Restart=always
RestartSec=5
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target
Langkah 3: Enable dan Jalankan Service
sudo systemctl daemon-reload
sudo systemctl enable nama-aplikasi
sudo systemctl start nama-aplikasi
sudo systemctl status nama-aplikasi
Perintah berguna lainnya:
| Perintah | Fungsi |
|---|---|
sudo systemctl status nama-aplikasi |
Memeriksa apakah berjalan |
sudo journalctl -u nama-aplikasi -f |
Mengikuti log secara real-time |
sudo systemctl restart nama-aplikasi |
Merestart service |
Konfigurasi Lanjutan
Untuk menambah lapisan keamanan dan meningkatkan performa, kita akan mengkonfigurasi Nginx sebagai reverse proxy untuk aplikasi kita.
1. Instalasi Nginx
sudo apt install -y nginx
2. Konfigurasi Nginx
Buat file konfigurasi baru di /etc/nginx/sites-available/nama-aplikasi:
server {
listen 80;
server_name nama-domain.com;
location / {
proxy_pass http://localhost:8000; # Ganti port sesuai aplikasi Anda
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Aktifkan konfigurasi dan restart Nginx:
sudo ln -s /etc/nginx/sites-available/nama-aplikasi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
3. Mengaktifkan HTTPS dengan Let's Encrypt
Gunakan certbot untuk mendapatkan sertifikat SSL:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d nama-domain.com
Ikuti instruksi untuk menyelesaikan pemasangan sertifikat SSL. Certbot akan otomatis mengonfigurasi Nginx untuk menggunakan HTTPS.
Best Practices
- Selalu gunakan profil rilis saat membangun aplikasi untuk produksi.
- Jaga agar server Anda selalu diperbarui dengan
sudo apt update && sudo apt upgrade. - Gunakan firewall seperti UFW untuk mengamankan server Anda.
- Backup data secara rutin untuk mencegah kehilangan data.
- Monitor penggunaan sumber daya dan performa aplikasi secara berkala.
Troubleshooting
Jika Anda mengalami masalah selama deployment, berikut beberapa langkah yang dapat membantu:
- Periksa status aplikasi menggunakan
sudo systemctl status nama-aplikasi. - Periksa log dengan
sudo journalctl -u nama-aplikasi -f. - Pastikan tidak ada port yang digunakan oleh aplikasi lain.
- Periksa konfigurasi Nginx dengan
sudo nginx -t.
Kesimpulan
Dalam tutorial ini, kita telah membahas langkah-langkah untuk melakukan deploy aplikasi web Rust di server Ubuntu dengan menggunakan systemd dan Nginx. Dengan pengaturan yang tepat, Anda dapat memastikan aplikasi Anda berjalan dengan baik dan aman. Jangan lupa untuk melakukan monitoring dan pemeliharaan yang rutin untuk menjaga performa aplikasi Anda.
Untuk konsultasi lebih lanjut tentang cara setup dan deployment aplikasi, Anda dapat menghubungi kami melalui tombol berikut:
Konsultasi Jasa Setup SekarangVerifikasi Teknis
Panduan ini disusun berdasarkan referensi teknis terbaru. Namun, konfigurasi server dapat bervariasi. Lihat sumber referensi asli →
