GNU/Linux >> Belajar Linux >  >> Debian

Cara Menyebarkan Aplikasi Web Clojure di Debian 9

Clojure adalah bahasa pemrograman tujuan umum modern untuk JVM yang berfokus pada pemrograman bersamaan yang ditemukan di sistem operasi. Clojure memungkinkan Anda memanfaatkan infrastruktur JVM yang ada, termasuk alat, pustaka, dan server aplikasi.

Panduan ini akan memandu proses penerapan aplikasi web sederhana di Clojure menggunakan supervisor dan Nginx.

Persyaratan

  • Server yang menjalankan Ubuntu 16.04.
  • Pengaturan kata sandi root di server Anda.

Memulai

Sebelum memulai, disarankan untuk memperbarui paket Anda ke versi terbaru dengan perintah berikut:

apt-get update -y
apt-get upgrade -y

Setelah semua paket diperbarui, mulai ulang server Anda untuk menerapkan semua perubahan ini.

reboot

Selanjutnya, instal beberapa paket yang diperlukan seperti, git, curl, Java ke server Anda dengan perintah berikut:

apt-get install git curl openjdk-8-jre-headless -y

Setelah semua paket yang diperlukan diinstal, Anda dapat memverifikasi versi JAVA dengan perintah berikut:

java -version

Anda akan melihat versi JAVA di output berikut

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Setelah selesai, Anda dapat melanjutkan untuk menginstal Nginx dan Supervisor.

Instal Nginx dan Supervisor

Secara default, Nginx dan Supervisor tersedia di repositori Ubuntu 16.04. Anda dapat menginstalnya hanya dengan menjalankan perintah berikut:

apt-get install nginx supervisor -y

Setelah instalasi selesai, mulai layanan Nginx dan Supervisor dan aktifkan mereka untuk memulai saat boot dengan perintah berikut:

systemctl start nginx
systemctl start supervisor
systemctl enable nginx
systemctl enable supervisor

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Unduh Aplikasi Clojure

Pertama, Anda perlu mengunduh contoh proyek Clojure dari repositori git. Anda dapat dengan mudah mengunduhnya dengan utilitas baris perintah git clone seperti yang ditunjukkan di bawah ini:

git clone https://github.com/do-community/do-clojure-web.git

Langkah selanjutnya adalah mengkompilasi dan menjalankan proyek Clojure ini menggunakan Leiningen. Leiningen adalah manajemen ketergantungan dan membangun alat otomatisasi yang dapat digunakan untuk mengkompilasi aplikasi Clojure. Anda dapat mengunduhnya dengan perintah curl seperti yang ditunjukkan di bawah ini:

curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -o /usr/bin/lein

Selanjutnya, berikan izin yang tepat untuk alat yang diunduh dengan perintah berikut:

chmod 755 /usr/bin/lein

Sekarang, jalankan perintah berikut untuk mengkompilasi proyek Penutupan:

cd do-clojure-web
lein uberjar

Anda akan melihat output berikut:

WARNING: You're currently running as root; probably by accident.
Press control-C to abort or Enter to continue as root.
Set LEIN_ROOT to disable this warning.

Downloading Leiningen to /root/.lein/self-installs/leiningen-2.7.1-standalone.jar now...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   618    0   618    0     0    309      0 --:--:--  0:00:02 --:--:--   207
100 14.6M  100 14.6M    0     0   326k      0  0:00:46  0:00:46 --:--:--  279k
Retrieving lein-ring/lein-ring/0.8.13/lein-ring-0.8.13.pom from clojars
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.pom from central
Retrieving org/clojure/data.xml/0.0.6/data.xml-0.0.6.pom from central
Retrieving org/clojure/pom.contrib/0.0.25/pom.contrib-0.0.25.pom from central
Retrieving org/sonatype/oss/oss-parent/5/oss-parent-5.pom from central
Retrieving org/clojure/clojure/1.3.0/clojure-1.3.0.pom from central
Retrieving leinjacker/leinjacker/0.4.1/leinjacker-0.4.1.pom from clojars
Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.pom from central
Retrieving org/clojure/pom.contrib/0.0.26/pom.contrib-0.0.26.pom from central
Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.pom from central
Retrieving org/clojure/clojure/1.4.0/clojure-1.4.0.pom from central
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.jar from central
Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.jar from central
Retrieving org/clojure/data.xml/0.0.6/data.xml-0.0.6.jar from central
Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.jar from central
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.jar from clojars

Setelah proyek Clojure dikompilasi, Anda dapat melanjutkan ke langkah berikutnya.

Menyiapkan Lingkungan Aplikasi Web Clojure

Selanjutnya, Anda perlu membuat struktur direktori untuk aplikasi web Clojure. Anda dapat melakukannya dengan perintah berikut:

mkdir -p /var/www/html/do-clojure-web/app/db

Selanjutnya, salin file aplikasi Clojure ke direktori di atas:

cp /root/do-clojure-web/target/do-clojure-web-0.1.0-standalone.jar /var/www/html/do-clojure-web/app/

Selanjutnya, berikan izin yang tepat ke direktori aplikasi Clojure dengan perintah berikut:

chown -R www-data:www-data /var/www/html/do-clojure-web/

Selanjutnya, buatlah simbolink aplikasi web clojure dengan perintah berikut:

cd /var/www/html/do-clojure-web/app/
ln -s do-clojure-web-0.1.0-standalone.jar do-clojure-web.jar

Aplikasi web Clojure sekarang siap digunakan. Anda dapat memeriksa apakah itu berjalan atau tidak dengan perintah berikut:

java -jar do-clojure-web.jar

Jika semuanya baik-baik saja, Anda akan melihat output berikut:

2017-10-01 10:30:48.349:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT
2017-10-01 10:30:48.590:INFO:oejs.AbstractConnector:Started [email protected]:5000

Konfigurasi Nginx dan Supervisor

Selanjutnya, Anda perlu mengonfigurasi Supervisor untuk mengelola aplikasi Clojure sebagai layanan. Anda dapat melakukannya dengan membuat file do-clojure-web.conf di bawah direktori konfigurasi Supervisor seperti yang ditunjukkan di bawah ini:

nano /etc/supervisor/conf.d/do-clojure-web.conf

Tambahkan baris berikut:

[program:do-clojure-web]
command=/usr/bin/java -jar do-clojure-web.jar
directory=/var/www/html/do-clojure-web/app
user=www-data
autostart=true
autorestart=true
startretries=3
redirect_stderr=true
stdout_logfile=/var/log/log/do-clojure-web.app.log

Simpan dan tutup file setelah Anda selesai.

Selanjutnya, Anda juga perlu mengonfigurasi Nginx untuk digunakan sebagai proxy terbalik. Karena aplikasi web Clojure hanya menerima koneksi dari localhost. Anda dapat mengaksesnya dari lokasi yang jauh menggunakan Nginx. Untuk melakukannya, Anda perlu mengonfigurasi file konfigurasi default Nginx:

nano /etc/nginx/sites-available/default

Ubah file seperti gambar di bawah ini:

upstream http_backend {
    server 127.0.0.1:5000;
    keepalive 32;
}
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

    location / {
        proxy_pass http://http_backend;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;

        access_log /var/log/do-clojure-web.access.log;
        error_log /var/log/do-clojure-web.error.log;
    }
}

Simpan dan tutup file setelah Anda selesai, lalu mulai ulang layanan Nginx dan Supervisor untuk menerapkan semua perubahan:

systemctl restart nginx
systemctl restart supervisor

Anda dapat memverifikasi status Nginx dan Supervisor dengan perintah berikut:

systemctl status supervisor

Jika semuanya baik-baik saja, Anda akan melihat output berikut:

? supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-10-02 10:19:32 EDT; 22min ago
     Docs: http://supervisord.org
 Main PID: 397 (supervisord)
    Tasks: 19 (limit: 4915)
   CGroup: /system.slice/supervisor.service
           ??397 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??446 /usr/bin/java -jar do-clojure-web.jar

Oct 02 10:19:32 debian systemd[1]: Started Supervisor process control system for UNIX.
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,656 CRIT Supervisor running as root (no user in config file)
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,665 INFO Included extra file "/etc/supervisor/conf.d/do-clojure-web.conf" during p
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,821 INFO RPC interface 'supervisor' initialized
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,823 CRIT Server 'unix_http_server' running without any HTTP authentication checkin
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,825 INFO supervisord started with pid 397
Oct 02 10:19:40 debian supervisord[397]: 2017-10-02 10:19:40,890 INFO spawned: 'do-clojure-web' with pid 446
Oct 02 10:19:41 debian supervisord[397]: 2017-10-02 10:19:41,893 INFO success: do-clojure-web entered RUNNING state, process has stayed up for 
systemctl status nginx

Keluaran:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-10-02 10:19:35 EDT; 26min ago
     Docs: man:nginx(8)
  Process: 425 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 401 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 427 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ??427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??429 nginx: worker process

Oct 02 10:19:32 debian systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 02 10:19:35 debian systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Oct 02 10:19:35 debian systemd[1]: Started A high performance web server and a reverse proxy server.

Akses Aplikasi Web Clojure

Setelah semuanya dikonfigurasi dengan benar, saatnya mengakses aplikasi web Clojure melalui browser web.

Buka browser web Anda dan ketik URL http://your-ip-address, Anda akan diarahkan ke halaman beranda aplikasi web Clojure seperti yang ditunjukkan di bawah ini:

Sekarang, klik Tambahkan Lokasi tombol, Anda akan melihat gambar berikut:

Di sini, berikan nilai dalam nilai x dan bidang nilai y lalu klik kirim lokasi tombol. Sekarang Anda dapat melihat lokasi yang Anda kirimkan dengan mengeklik Lihat Semua Lokasi tombol. Anda akan melihat gambar berikut:

Kesimpulan

Pada artikel di atas, kita mempelajari cara men-deploy aplikasi web Clojure menggunakan Supervisor dan lein. Kami juga mempelajari cara mengakses aplikasi web Clojure dari lokasi yang jauh dengan mengatur Nginx sebagai server proxy terbalik. Saya harap Anda sekarang dapat dengan mudah menerapkan aplikasi kustom Anda menggunakan Clojure, Supervisor, dan lein. Jangan ragu untuk bertanya apa pun jika Anda memiliki pertanyaan.


Debian
  1. Cara Memasang Peramban Web Google Chrome di Debian 9

  2. Cara Memasang Konsol Web Kokpit di Debian 10

  3. Debian – Bagaimana Melengkungkan Konten Halaman Web Penuh?

  1. Cara Menginstal Matomo Web Analytics di Debian 9

  2. Cara Menginstal Kerangka Aplikasi Web Django di Debian 10

  3. Cara Menyebarkan Aplikasi Web Clojure dengan Nginx di Ubuntu 20.04

  1. Cara Instal Caddy Web Server di Debian 11

  2. Cara Memasang Matomo Web Analytics di Debian 11

  3. Cara Menginstal Icinga 2 dan Icinga Web 2 di Debian 9