GNU/Linux >> Linux の 問題 >  >> Debian

Debian9にClojureWebアプリケーションをデプロイする方法

Clojureは、オペレーティングシステムで見られる並行プログラミングに焦点を当てたJVM用の最新の汎用プログラミング言語です。 Clojureを使用すると、ツール、ライブラリ、アプリケーションサーバーなどの既存のJVMインフラストラクチャを利用できます。

このガイドでは、スーパーバイザーとNginxを使用してClojureに単純なWebアプリケーションをデプロイするプロセスについて説明します。

要件

  • Ubuntu16.04を実行しているサーバー。
  • サーバーでのルートパスワードの設定。
はじめに

開始する前に、次のコマンドを使用してパッケージを最新バージョンに更新することをお勧めします。

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

すべてのパッケージが更新されたら、サーバーを再起動してこれらすべての変更を適用します。

reboot

次に、次のコマンドを使用して、git、curl、Javaなどの必要なパッケージをサーバーにインストールします。

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

必要なすべてのパッケージがインストールされたら、次のコマンドを使用してJAVAのバージョンを確認できます。

java -version

次の出力にJAVAバージョンが表示されます

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)

完了したら、NginxとSupervisorのインストールに進むことができます。

Nginxとスーパーバイザーをインストール

デフォルトでは、NginxとSupervisorはUbuntu16.04リポジトリで利用できます。次のコマンドを実行するだけでインストールできます:

apt-get install nginx supervisor -y

インストールが完了したら、次のコマンドを使用してNginxおよびSupervisorサービスを開始し、起動時に開始できるようにします。

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

完了したら、次のステップに進むことができます。

Clojureアプリをダウンロード

まず、サンプルのClojureプロジェクトをgitリポジトリからダウンロードする必要があります。以下に示すように、gitcloneコマンドラインユーティリティを使用して簡単にダウンロードできます。

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

次のステップは、Leiningenを使用してこのClojureプロジェクトをコンパイルして実行することです。 Leiningenは、Clojureアプリのコンパイルに使用できる依存関係管理およびビルド自動化ツールです。以下に示すように、curlコマンドを使用してダウンロードできます。

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

次に、次のコマンドを使用して、ダウンロードしたツールに適切な権限を付与します。

chmod 755 /usr/bin/lein

次に、次のコマンドを実行してClosureプロジェクトをコンパイルします。

cd do-clojure-web
lein uberjar

次の出力が表示されます。

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

Clojureプロジェクトがコンパイルされたら、次のステップに進むことができます。

ClojureWebアプリ環境のセットアップ

次に、ClojureWebアプリケーションのディレクトリ構造を作成する必要があります。これは、次のコマンドで実行できます。

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

次に、Clojureアプリケーションファイルを上記のディレクトリにコピーします。

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

次に、次のコマンドを使用して、Clojureアプリディレクトリに適切な権限を付与します。

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

次に、次のコマンドを使用してclojureWebアプリケーションのsymbolinkを作成します。

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

これで、ClojureWebアプリを使用する準備が整いました。次のコマンドを使用して、実行されているかどうかを確認できます。

java -jar do-clojure-web.jar

すべてが正常であれば、次の出力が表示されます。

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

Nginxとスーパーバイザーを構成する

次に、Clojureアプリケーションをサービスとして管理するようにSupervisorを構成する必要があります。これを行うには、以下に示すように、Supervisorconfigディレクトリの下にdo-clojure-web.confファイルを作成します。

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

次の行を追加します:

[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

終了したら、ファイルを保存して閉じます。

次に、リバースプロキシとして使用するようにNginxを構成する必要もあります。 ClojureWebアプリケーションはローカルホストからの接続のみを受け入れるためです。 Nginxを使用してリモートロケーションからアクセスできます。そのためには、Nginxのデフォルト構成ファイルを構成する必要があります:

nano /etc/nginx/sites-available/default

以下に示すようにファイルを変更します:

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;
    }
}

終了したらファイルを保存して閉じ、NginxとSupervisorサービスを再起動してすべての変更を適用します。

systemctl restart nginx
systemctl restart supervisor

次のコマンドを使用して、NginxとSupervisorの両方のステータスを確認できます。

systemctl status supervisor

すべてが正常であれば、次の出力が表示されます。

? 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

出力:

? 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.

ClojureWebアプリにアクセス

すべてが適切に構成されたら、Webブラウザーを介してClojureWebアプリケーションにアクセスします。

Webブラウザーを開き、URL http:// your-ip-addressを入力すると、以下に示すようにClojureWebアプリのホームページにリダイレクトされます。

次に、場所の追加をクリックします ボタンをクリックすると、次の画像が表示されます:

ここで、x値とy値フィールドに値を入力し、送信場所をクリックします。 ボタン。 すべての場所を表示をクリックして、送信した場所を表示できるようになりました ボタン。次の画像が表示されます:

結論

上記の記事では、Supervisorとleinを使用してClojureWebアプリケーションをデプロイする方法を学びました。また、Nginxをリバースプロキシサーバーとして設定することにより、リモートの場所からClojureWebアプリケーションにアクセスする方法も学びました。これで、Clojure、Supervisor、およびleinを使用してカスタムアプリケーションを簡単にデプロイできるようになることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。


Debian
  1. Debian9にGoogleChromeWebブラウザをインストールする方法

  2. Debian10にコックピットWebコンソールをインストールする方法

  3. Debian –完全なWebページコンテンツをカールさせる方法は?

  1. Debian9にMatomoWebAnalyticsをインストールする方法

  2. Debian10にDjangoWebアプリケーションフレームワークをインストールする方法

  3. Ubuntu20.04にNginxを使用してClojureWebアプリケーションをデプロイする方法

  1. Debian11にCaddyWebサーバーをインストールする方法

  2. Debian11にMatomoWebAnalyticsをインストールする方法

  3. Debian9にIcinga2とIcingaWeb2をインストールする方法