Symfoware

Symfowareについての考察blog

Ubuntu 画面をキャプチャしてgifアニメを作成する(Peek)

GUIでの操作を画面キャプチャして動画にしたい。
でも10秒程度の動画なので、mp4にするまでもなくgifアニメで済ませたい。

探してみるとPeekというアプリケーションで目的を達成できそうです。
https://github.com/phw/peek

Ubuntu 16.04にインストールしてみます。


インストール



こちらを参考にしました。
https://github.com/phw/peek#ubuntu


リポジトリに追加し、update & installです。


$ sudo add-apt-repository ppa:peek-developers/stable
$ sudo apt update
$ sudo apt install peek




コンソールから「peek」を実行すると起動します。


$ peek
Using screen recorder backend ffmpeg



820_01.png


「Record as GIF」をクリックすると、3秒のカウントダウンの後に録画が始まります。
GIFアニメの他に、APNG、WebM、MP4形式で保存できます。

記録したGIFアニメはこんな感じ。

820_02.gif


これは便利です。



【参考URL】

Peekで超お手軽に画面をキャプチャしてGifアニメファイルにしてみる on Ubuntu
Install Animated GIF Recorder Peek in Ubuntu 16.04 Higher

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/01/28(日) 21:23:48|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Kong 管理用apiの外部公開

Kong 0.12.1をインストールしました。
Kong 0.12.1をUbuntu 16.04にインストール

以前は、管理用apiは
http://[サーバーIP]:8001/
でアクセスできたのですが、どうもlocalhostからのアクセスのみに制限されているようです。

別の端末からもアクセスできるようにしてみます。




設定変更



kong.confを編集します。


$ sudo vi /etc/kong/kong.conf




86行目付近、「admin_listen」という項目があります。
コメントを解除し、すべてのIPを受け入れるように変更しました。


admin_listen = 0.0.0.0:8001
#admin_listen = 127.0.0.1:8001 # Address and port on which Kong will expose
                                 # an entrypoint to the Admin API.
                                 # This API lets you configure and manage Kong,




編集を終えたら、kongを再起動。


$ sudo kong restart




これで別端末のブラウザからも管理用APIの結果を閲覧できるようになりました。

815_01.png

テーマ:サーバ - ジャンル:コンピュータ

  1. 2018/01/27(土) 17:22:06|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Kong 0.12.1をUbuntu 16.04にインストール

オープンソースのAPIゲートウェイ「Kong」
https://getkong.org/

以前、Debian 8にインストールしたことがあるのですがバージョンが上がっているので
改めてインストール方法をメモしておきます。
Kong 0.9.7をDebian 8にインストール

今回は、
OS:Ubuntu 16.04
Database:PostgreSQL 10.1
Kong:0.12.1
の構成でインストールしてみます。


PostgreSQL 10.1のインストール



データベースにはPostgreSQLを使用することにしました。
以下の手順でインストールしています。
PostgreSQL 10.1をUbuntu 16.04へインストールし、外部からの接続を許可

ユーザー:pgadmin
パスワード:P@ssw0rd
で接続できるようにしておきました。

事前に「kong」というデータベースを作成しておきます。


$ psql -h localhost -U pgadmin -d postgres
Password for user pgadmin: [P@ssw0rd]
psql (10.1)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=# create database kong;
CREATE DATABASE
postgres=# \q








インストール



こちらを参考にインストールしました。
Ubuntu Installation

依存しているライブラリをインストール。
debファイルをダウンロードし、インストールします。


$ sudo apt-get update
$ sudo apt-get install openssl libpcre3 procps perl
$ wget -O kong-community-edition-0.12.1.deb https://bintray.com/kong/kong-community-edition-deb/download_file?file_path=dists/kong-community-edition-0.12.1.xenial.all.deb
$ sudo dpkg -i kong-community-edition-0.12.1.deb








設定ファイルの編集



設定ファイルの雛形をコピーし、データベース接続情報を記載します。


$ sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf
$ sudo vi /etc/kong/kong.conf




「DATASTORE」の項目でコメントを解除し編集します。


#------------------------------------------------------------------------------
# DATASTORE
#------------------------------------------------------------------------------

# Kong will store all of its data (such as APIs, consumers and plugins) in
# either Cassandra or PostgreSQL.
#
# All Kong nodes belonging to the same cluster must connect themselves to the
# same database.

database = postgres             # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres` and
                                 # `cassandra`.

pg_host = 127.0.0.1             # The PostgreSQL host to connect to.
pg_port = 5432                 # The port to connect to.
pg_user = pgadmin             # The username to authenticate if required.
pg_password = P@ssw0rd         # The password to authenticate if required.
pg_database = kong             # The database name to connect to.




以前と異なり、いきなり起動は出来ません。
データベースのスキーマを作成するため、migrations upを実行します。


$ kong migrations up
migrating core for database kong
core migrated up to: 2015-01-12-175310_skeleton
core migrated up to: 2015-01-12-175310_init_schema
core migrated up to: 2015-11-23-817313_nodes
core migrated up to: 2016-02-29-142793_ttls
core migrated up to: 2016-09-05-212515_retries
...
oauth2 migrated up to: 2017-04-24-oauth2_client_secret_not_unique
oauth2 migrated up to: 2017-10-19-set_auth_header_name_default
oauth2 migrated up to: 2017-10-11-oauth2_new_refresh_token_ttl_config_value
58 migrations ran





この状態でも起動できますが、警告が表示されます。


[warn] ulimit is currently set to "1024". For better performance set it to at least "4096" using "ulimit -n"




事前にulimitを変更しておきます。


$ ulimit -n 4096




kong startで起動


$ sudo kong start
Kong started




curlで応答を確認。


$ curl -i http://localhost:8001/
HTTP/1.1 200 OK
Date: Thu, 25 Jan 2018 12:39:22 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.12.1
...





無事インストールできたようです。

テーマ:サーバ - ジャンル:コンピュータ

  1. 2018/01/25(木) 21:44:30|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

IIS 10.0 + Tomcat 8.5 連携(mod_jk,tomcat-connectors)

ARRでIISとTomcatを連携してみました。
Application Request Routingで連携

もうひとつ、古くからあるtomcat-connectorsを使用する方法を試してみます。

環境は
・Windows Server 2016(IIS 10.0)
・Tomcat 8.5
です。


tomcat-connectorsの入手



ISAPIフィルターであるtomcat-connectorsを入手します。
http://archive.apache.org/dist/tomcat/tomcat-connectors/

ダウンロードリンクがわかりにくいですが、/jk/binaries/windows/と進みます。
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

813_01.png

「tomcat-connectors-1.2.42-windows-x86_64-iis.zip」をダウンロードし、解凍すると
「isapi_redirect.dll」が入手できます。




ISAPIフィルターの設定



isapi_redirect.dllを適当なフォルダーにコピーします。
今回は「C:\inetpub\connector」というフォルダーを作成してdllをコピーしました。

813_02.png




isapi_redirect.properties



dllをコピーしたフォルダに「isapi_redirect.properties」ファイルを作成します。
このファイルは、他の設定ファイルのパスを記載するなど、大本の設定ファイルとなります。

ISAPI redirector for Micrsoft IIS HowTo
こちらではレジストリに値を登録する例が記載されていますが、
レジストリを使用しない場合はこちらの設定ファイルを作成すれば良いようです。
設定値も参考になります。


ファイルの内容は以下の通り。


extension_uri=/jakarta/isapi_redirect.dll
log_file=C:\share\isapi_redirect.log
log_level=debug
worker_file=C:\inetpub\connector\workers.properties
worker_mount_file=C:\inetpub\connector\uriworkermap.properties
uri_select=unparsed




・extension_uri

転送先のuri(任意値)
http://localhost/[任意の値]/isapi_redirect.dllというURLで解決できるパスを記載します。
今回は「/jakarta/isapi_redirect.dll」としました。
後の手順で「jakarta」という仮想ディレクトリを作成し、isapi_redirect.dllへアクセスできるよう構成します。

・log_file

ログの出力パス


・log_level

ログの出力レベル。
debug, info, errorなどが指定できます。
debugだとフルダンプのログが出力されるので、うまく動いてくれない時の原因調査時に役立ちます。
実運用する場合は、info以上が良いかと思います。


・worker_file,worker_mount_file

各々の設定ファイルへのfパスを記載します。



その他、詳細な内容は以下が参考になります。
Configuring the ISAPI redirector for Microsoft IIS





workers.properties



isapi_redirect.propertiesで指定したパスに「workers.properties」を作成します。
このファイルにはリクエスト転送先の情報を記載します。

内容は以下の通り。


ps=\
worker.list=tomcat
worker.tomcat.port=8009
worker.tomcat.host=192.168.1.4
worker.tomcat.type=ajp13




※192.168.1.4はTomcatを動かすサーバーのIPです。

・ps

パスセパレーター(だと思う)


・worker.list

これから定義していくworkerの名称をカンマ区切りで指定します。(任意)
ここで指定した文字列をキーに、以降の設定を記載していきます。

・port,host,type

転送先のポート、ホスト、転送タイプを指定します。
ポートは8080ではなく、8009を指定します。
ここでajp13という転送専用のリスナーが待ち受けています。
後ほど、Tomcatでの設定を確認します。


その他、詳細な内容は以下が参考になります。
workers.properties configuration


他の項目と合わせる必要があるのか悩みましたが、worker.listに指定する名前は任意です。
こういうイメージです。


worker.list=[hoge]
worker.[hoge].port=8009
worker.[hoge].host=localhost
worker.[hoge].type=ajp13




転送先が複数ある場合


worker.list=[hoge],[piyo]

worker.[hoge].port=8009
worker.[hoge].host=localhost
worker.[hoge].type=ajp13

worker.[piyo].port=8009
worker.[piyo].host=192.168.1.4
worker.[piyo].type=ajp13



worker.listで指定した名称は次に記載する設定ファイルで使用します。





uriworkermap.properties



isapi_redirect.propertiesで指定したパスに「uriworkermap.properties」を作成します。
このファイルにはリクエスト転送先の情報を記載します。

内容は以下の通り。


/sample/*=tomcat




http://iisserver/sampleのリクエストをtomcatに転送するしていです。
ここで指定している「tomcat」はworkers.propertiesで命名したworkerの名称となります。

もちろん複数のURLを記載したり、拡張子による分岐も可能です。


/sample/*=tomcat
/sample2/*=tomcat
/sample3/*.do=tomcat




その他、詳細な内容は以下が参考になります。
uriworkermap.properties configuration



ここまでで「C:\inetpub\connector」は以下のようになるはずです。

813_03.png





IISの設定



ここからはIISマネージャー画面での設定作業になります。

やることは以下の4つ。
・サーバーホームから「ISAPIおよびCGIの制限」の追加
・「Default Web Site」で「ISAPIフィルターを」の追加
・dllを保存したフォルダへ仮想ディレクトリの作成
・仮想ディレクトリでハンドラーマッピングの追加



まず、サーバーホームから「ISAPIおよびCGIの制限」を選択。

813_04.png


右側の[操作] - [追加]をクリック。
ISAPIまたはCGIのパスにコピーしたisapi_redirect.dllへのパスを指定します。
説明は任意の文字列を入力。

813_05.png


追加できました。

813_06.png



続いて「Default Web Site」を選び、「ISAPIフィルターを」選択します。

813_07.png


右側の[追加]をクリック。
フィルター名は任意に入力し、実行可能ファイルに再びisapi_redirect.dllへのパスを指定します。

813_08.png


追加できました。

813_09.png


続いて仮想ディレクトリを追加します。

813_10.png


ポイントは「エイリアス」です。
isapi_redirect.propertiesのextension_uriで指定した名称と一致させます。
今回は「/jakarta/isapi_redirect.dll」と指定したので、エイリアスを「jakarta」としました。

物理パスはdllをコピーしたフォルダを指定します。

813_11.png


仮想フォルダ「jakarta」が追加できました。

813_12.png

作成した仮想フォルダのハンドラーマッピングを表示します。

813_13.png


右側の[スクリプトマップの追加]をクリック。
要求パス:*
実行可能ファイル:isapi_redirect.dllへのパス
名称:任意
を入力します。

813_14.png


追加時、スクリプトマップ追加の確認ダイアログが表示されます。
「はい」を選択してISAPI拡張を有効にします。

813_15.png


ここまで設定が終わったらIISを再起動します。

813_16.png




server.xml



デフォルトでajp13は有効となっているはずですが、念の為確認します。
%TOMCAT%/conf/server.xmlを開きます。

8009ポートでajp13を待ち受ける設定が有効であることが確認できました。

813_17.png





動作確認



Tomcatに直接アクセスしてみます。
http://192.168.1.4:8080/sample/SampleServlet
このURLでこんな表示。

813_18.png


IISでのリダイレクトをテストします。
http://192.168.1.102/sample/SampleServlet

813_19.png

狙い通りの動作です。






HTTP エラー 403.18 - Forbidden



ほとんど発生することはないと思いますが、403.18エラーが発生してうまく動いてくれないことがありました。

813_20.png


HTTP エラー 403.18 - Forbidden

Web サーバー上のこのリソースに対して構成されたアプリケーション プールで、指定された要求を処理することができません。

可能性のある原因:
・ISAPI フィルターまたはカスタム モジュールは、元の URL 以外のアプリケーション プールで実行するように URL を変更しました。
・ISAPI 拡張 (またはカスタム モジュール) は、元の URL ではないアプリケーション プールで実行するように
ExecuteURL (または ExecuteRequest) を使用しました。
・あるアプリケーション プール内にあるカスタム エラー ページを、別のアプリケーション プール内の Web サイトが参照しています。
URL を処理するとき、IIS によって、ページが存在するアプリケーション プールで処理するように決定されます。
ページを参照する Web サイトのあるアプリケーション プールでは処理されません。
・Web サイトには複数のアプリケーションが構成されています。この要求を実行するように構成されたアプリケーションは、
存在しないアプリケーション プールで実行するように設定されています。




今回の場合、仮想ディレクトリ「jakarta」と、リダイレクトするか監視しているURL「sample」の
アプリケーションプールが異なることが原因でした。

813_21.png


アプリケーションプールをまたいで処理は行えないようです。
同じアプリケーションプールに変更すると狙い通りの動作になりました。

813_22.png




【参考URL】

ISAPI redirector for Micrsoft IIS HowTo
IIS + Tomcat
IS7.5 tomcat7 連携
IISとTomcatの連携



テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/11/29(水) 00:06:49|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

IIS 10とTomcat 8.5をApplication Request Routingで連携

昔は
Webサーバー:IIS
アプリケーションサーバー:Tomcat
の構成を取るとき、mod_jkを使用していたかと思います。

最近は、ルーティングを行うIIS拡張が用意されているようで、こちらを使用すれば
狙った動作が行えるようです。
Application Request Routingを使ってみた

早速試してみます。


IIS



こちらの手順でインストールしたWindows Server 2016 + IIS 10.0の環境でテストしました。
Windows Server 2016 にIIS 10.0をインストールし、ASP.NETを有効化




Application Request Routing



こちらからインストーラーをダウンロードしました。
Application Request Routing

811_01.png


「ARRv3_0.exe」が取得できますので、実行します。
「インストール」をクリックしてインストールを実行。

811_02.png


ライセンスの確認です。
「同意する」をクリックするとインストールが開始されます。

811_03.png


インストール終了。「完了」をクリックします。

811_04.png


「終了」でインストーラーを終了します。

811_05.png


インストール後、IISマネージャーの画面を見ると、
・Application Request Routing
・URL書き換え
の機能が追加されています。

811_06.png




ルーティング



こちらで作成したサーブレットにルーティングしてみます。
Eclipse TomcatPluginでサーブレットアプリケーションの作成

ちょっとプログラムを修正しました。


  1. package sample;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. @WebServlet("/SampleServlet")
  10. public class MyServlet extends HttpServlet {
  11.     private static final long serialVersionUID = 1L;
  12.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  13.         // 要求文字コードのセット
  14.         request.setCharacterEncoding("UTF-8");
  15.         // 応答文字コードのセット
  16.         response.setContentType("text/html; charset=UTF-8");
  17.         // 出力ストリームの取得
  18.         PrintWriter out = response.getWriter();
  19.         // クライアント(ブラウザ)への出力
  20.         out.println("<html lang=\"ja\">");
  21.         out.println("<head><title>Servletテンプレート</title>");
  22.         out.println("</head><body>");
  23.         out.println("<h1>Servletのテンプレートです。</h1>");
  24.         out.println("<img src=\"img/banar.png\">");
  25.         out.println("");
  26.         out.println("</body></html>");
  27.         // 出力ストリームを閉じる
  28.         out.close();
  29.     }
  30. }




今後のテスト用にimg/banar.pngを表示するように修正しています。

811_07.png


※バナーの作成はこちらのサイトを利用させていただきました。
進撃の巨人ロゴジェネレーター




IISの設定画面から「Application Request Routing」を選択。

811_08.png


右側「Proxy」の項目にある「Server Proxy Settings...」をクリック。

811_09.png


先頭の「Enable proxy」にチェックをつけて有効にします。

811_10.png


画面をスクロールして一番下「Proxy Type」の設定です。
「Use URL Rewrite to inspectioncoming requests」にチェック。
今回SSLは使用しないので、「Enable SSL offloading」のチェックは外しました。

「Reverse proxy」の項目に、サーブレットが動いているサーバーのIPとポートを入力します。
※今回は「192.168.1.4:8080」

入力が終わったら「適用」をクリックして内容を反映させます。

811_11.png


「URL書き換え」の項目を開きます。

811_12.png


新しくルールが追加されました。

811_13.png


内容を見てみると、http://192.168.1.4:8080/[パラメーター]に書き換えられることが確認できます。

811_14.png


IISが動いているサーバーは「192.168.1.102」です。
http://192.168.1.102/sample/SampleServletにアクセスすると、ちゃんとサーブレットが実行されました。

811_15.png






除外設定



画像はIISから配信するよう構成します。
c:\inetpub\wwwroot\sample\imgにbanar.pngという名前でこの画像を配置しました。

811_16.png


「URL書き換え」の画面を表示し、「規則の追加」をクリックします。

811_17.png


表示されるダイアログで「空の規則」を選択し、「OK」をクリック。

811_18.png


ルールの名前は適当に「画像配信」としました。
要求されたURLでは「パターンに一致する」を選択。

パターンは正規表現で指定できます。
今回は「img」ディレクトリへのアクセスはIISで配信するよう構成してみようと思います。
パターンに「.*/img/.*」と入力しました。/img/が含まれているURLはIISで処理します。

811_19.png


画面をスクロールして最下部。
アクションの種類は「なし」
「後続の規則の処理を停止する」にチェックをつけておきます。

811_20.png


新規作成したルールは末尾に追加されます。
サーブレットへproxyする前に処理しないとTomcat側の画像が表示されてしまうので、
右下「上に移動」をクリックして最初にルールが適用されるよう変更しておきます。

811_21.png

811_22.png


ブラウザを更新してやると、ちゃんとIISに配置したバナー画像が表示されました。

811_23.png




【参考URL】

Application Request Routingを使ってみた

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/11/19(日) 16:02:14|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ