![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
サーバー上で、動く複数のアプリケーションの連携の仕方
最近、Webアプリの勉強を始めたばかりの者です。
家の中にサーバーを構築し、自分にとって役立つアプリケーションを走らせようと考えています。
(ネット上に一般公開はしません)
その際に行いたいのが、複数のアプリケーションの連携です。
例を挙げますと
WindowsOS上で、ApacheなどのWebサーバーが走っていたとします。
クライアントからの要求に応じて、
指定されたBMPファイルを、webアプリケーションが、Paintなどのexeを実行して開くといった具合です。
この仕組みを作るには、どうしたらよいのでしょうか。
標準的なやり方は存在するのでしょうか?
CentOS上ならこう出来るといった回答でも構いません。
以上、宜しくお願いいたします。
No.6ベストアンサー
- 回答日時:
>webサーバーを動かしているPC上でブラウザを開き、
>たとえば、
>ttp://127.0.0.1/cgi-bin/test.pl
>のようなURLをブラウザのアドレスバーに入れて、webサーバーにアクセスしました。
(略)
そのwebサーバがどういう状態で起動されいるかにもよると思うんですけど。
既に書いてますけどWindowsのサービスとして起動されている場合、そこからGUIなアプリケーションを起動してもGUIを表示する先がないということはわかりませんか?
>webアプリケーション同士でデータをやり取りしたり、他のプログラムを起動したりというのは、サーバー上では、あまりやらないのでしょうか?
webアプリケーション同士でデータのやりとりはデータベースを扱うものならふつうにやることですし、
他のプログラムを起動したりもCGIで説明したようにふつうにやります。
ただwebアプリケーションが動いてるサーバーにあるプログラムを起動したいとかの理由で起動させることはやらないと思います。
この回答への補足
wormholeさん、回答ありがとうございます。
> そのwebサーバがどういう状態で起動されいるかにもよると思うんですけど。
webサーバは、サービスとして実行する場合と、 コンソールアプリケーションとして実行できる
場合があるのですね。
http://httpd.apache.org/docs/2.0/ja/invoking.html
apacheをコンソールアプリケーションとして実行し
他のPCのブラウザからサーバーにアクセスして、No.3の補足で書いたPerlを動かした結果、
サーバー側のPCでペイントが起動しました。
> 既に書いてますけどWindowsのサービスとして起動されている場合、
> そこからGUIなアプリケーションを起動してもGUIを表示する先がないということはわかりませんか?
そうなのですね。
Windowsのサービスとして、GUIをもつアプリケーションを起動しても
このアプリもサービスの一つとして起動するからでしょうか?
GUIを持たないアプリケーションならどうなのかと疑問に思い、
UIを持たないwavファイルを再生するexeを作成しました。
が、しかし、apacheをサービスとして実行した場合は、このexeでwavファイルを
再生することは出来ませんでした。
Windowsの起動時に(ログオン前に)、音楽が再生されているし、サービスであっても
音楽は再生できるのでは?
とまあ、色々と、疑問点も出てきましたが、
というか、Windowsのサービスの実体を知らないのが疑問の原因かと思います。
wormholeさんのおかげで、一つ勉強になりました。
ありがとうございます。
No.5
- 回答日時:
>家の中で使う自分専用のサーバーでして、ディスプレイもついています。
WindowsですのでGUIな環境です。確かに、あなたがログオンしてる環境下ではGUIな環境でしょうね。
では、あなたがログオンしていない場合やWindowsのサービスはGUIな環境だと思いますか?
>自分の目的は、
>同じローカルネットワークの中で目的のPC(サーバー)を手元のPC、スマートフォンで楽に遠隔操作したいです。
それならブラウザで操作できるリモートアクセスソフトを使えばいいような気がしますけど。
http://www.teamviewer.com/ja/index.aspx とか。
この回答への補足
TeamViewer、多くのOSに対応していて便利ですね。
教えて頂いてありがとうございます。
以下、良ければ教えてください。(一番の目的は、以下の情報収集です)
webアプリケーション同士でデータをやり取りしたり、他のプログラムを起動したりというのは、
サーバー上では、あまりやらないのでしょうか?
標準的なやり方、仕組みは、存在するのでしょうか?
宜しくお願いします。
No.4
- 回答日時:
>直接このPlファイルをダブルクリックすれば、ペイントは起動しましたが、
>ブラウザでこのソースファイルを指定したときは、しばらく問い合わせのままになり、
>ペイントが起動することはありませんでした。
>
>なぜでしょうか?
「ブラウザでこのソースファイルを指定したときは、」というのはブラウザから直接ソースファイルを参照したということですか?
もしそうであるならブラウザはCGIの事なんて知りませんから動かなくて当然なんですけど。
この回答への補足
回答ありがとうございます。
>「ブラウザでこのソースファイルを指定したときは、」というのはブラウザから直接ソースファイルを参照したということですか?
>もしそうであるならブラウザはCGIの事なんて知りませんから動かなくて当然なんですけど。
webサーバーを動かしているPC上でブラウザを開き、
たとえば、
ttp://127.0.0.1/cgi-bin/test.pl
のようなURLをブラウザのアドレスバーに入れて、webサーバーにアクセスしました。
結果はNo.3の補足に書いた結果になりました。
次に、
テキストファイルを作成する a.exeファイルをつくり、mspaint.exeと同じ場所に置き、
exeファイルを実行するplファイルを書きました。
`C:/Windows/System32/a.exe`;
そして、上記に書いた方法で、ブラウザでアクセスしました。
結果、a.exeは実行されました。(テキストファイルが作成されました)
他にも、色んなexeファイル(windows標準の電卓、Media player、フリーソフトのMedia player classic)を試してみましたが、
実行できたのは自作の a.exeのみでした。
どのexeもplファイルをダブルクリックすれば起動するのに、何処で止められているのか不思議です。
No.3
- 回答日時:
>「サーバとクライアント間でのアプリケーションの連携」ではなく、
>「サーバ上で動くアプリケーションの連携」をしたいです。
そういうことでしたらサーバー側でアプリケーションを起動するだけなんですが(CGIとかはそうでしょ)。
ただ基本的にアプリケーションサーバなどはデーモンとしてUIを表示したりできる画面などがない状態で動いてますから、そこから起動されるアプリケーションも同様に画面などがない(Windowを表示する先がない)ということは理解されてますか?
誰かのアカウントでログオンしたままフォアグラウンドでアプリケーションサーバーを動かすとかになるとまた話は変わりますが。
この回答への補足
回答ありがとうございます。
> ただ基本的にアプリケーションサーバなどはデーモンとしてUIを表示したりできる
> 画面などがない状態で動いてますから、そこから起動されるアプリケーションも
> 同様に画面などがない(Windowを表示する先がない)ということは理解されてますか?
家の中で使う自分専用のサーバーでして、ディスプレイもついています。WindowsですのでGUIな環境です。
一般的なサーバーは、そういった表示の機能が必要無いため、メンテナンス時等にリモート操作する
のかと思います。
自分の目的は、
同じローカルネットワークの中で目的のPC(サーバー)を手元のPC、スマートフォンで楽に遠隔操作したいです。
わざわざ、クライアント、サーバーという形にしたのは、ブラウザというどんなクライアントPCにも、
入っているソフトを使いたかった為です。
>そういうことでしたらサーバー側でアプリケーションを起動するだけなんですが(CGIとかはそうでしょ)。
CGIはPerlを使うのが一般的と本で読んだので、
perlが動く環境を作り、以下のソースを書いて実行してみました。
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "TEST\n";
print "</HTML>\n";
`mspaint.exe`;
結果、
直接このPlファイルをダブルクリックすれば、ペイントは起動しましたが、
ブラウザでこのソースファイルを指定したときは、しばらく問い合わせのままになり、
ペイントが起動することはありませんでした。
なぜでしょうか?
使用したブラウザはGoogle Chrome,IEです。
No.2
- 回答日時:
こういうこと??
Windowsサーバ上のpaintを起動させたいんですかね??
クライアントには一切何が起きたかわからないようになる
でしょうけど。
クライアント側のbmpファイルが指定されるなら、一度
アップロードされるわけですから、mspaintの起動パラメータに
指定してあげればいいのでは。
この回答への補足
回答ありがとうございます。
>Windowsサーバ上のpaintを起動させたいんですかね??
そうです
>クライアントには一切何が起きたかわからないようになる
でしょうけど。
構いません
なるほどASPでは、そういった手段があるのですね。
PHPで同じ事をしようとして、
execという関数で、電卓を起動しようとしましたが、出来ませんでした。
アプリ同士の連携というのはあまりやらないのでしょうか?
たとえば、アプリケーションサーバーを役割ごとに複数台数稼動しておいて
お互いに連携しあうとか。
No.1
- 回答日時:
>クライアントからの要求に応じて、
>指定されたBMPファイルを、webアプリケーションが、Paintなどのexeを実行して開くといった具合です。
そのPaintなどのアプリケーションはクライアント上で動かすんじゃないですか?
それだと「サーバ上で動くアプリケーションの連携」ではなく「サーバとクライアント間でのアプリケーションの連携」になりません?
この回答への補足
回答ありがとうございます。
「サーバとクライアント間でのアプリケーションの連携」ではなく、
「サーバ上で動くアプリケーションの連携」をしたいです。
「クライアントが、サーバーからサービスを受ける」為にサーバーを構築するのではなく
「クライアントからの指示で、サーバーを操作する」使い方をしたいです。
何か良い方法がありましたらご教授ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
- UNIX・Linux Linuxサーバーのパーティション・ディレクトリの推奨見積もりについて 3 2023/01/17 00:46
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- ネットワーク クラウド環境の範囲について教えてください。 7 2023/03/09 15:50
- Windows 10 ノートPCをスリープにするとアプリが閉じてしまう。 3 2022/04/14 18:33
- その他(コンピューター・テクノロジー) 以下の用語がわかんないので教えてください!!! ①プロトコルの変換をする装置。トランスポート層からア 1 2023/07/05 09:10
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- その他(インターネット接続・インフラ) IPアドレスについて 2 2022/10/23 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
コンソールアプリケーションの...
-
自分自身を更新するプログラム
-
excel VBAで、外部アプリケーシ...
-
実行時のコマンドプロンプトを...
-
Windowsプログラムのビジー状態...
-
VB.NETでMessageBoxを表示した...
-
Ctrl + P のメッセージ送信
-
SYSTEM権限でプロセス機動
-
Microsoft Outlook2007を使用し...
-
Vba アプリケーションが立ち上...
-
[Visual C++]VCが起動しません...
-
アプリケーションをVBS(WSH?)で...
-
VB6の強制終了について
-
MFCアプリケーションでの終了コ...
-
イラストレーターCS4のシリアル...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
VBSの処理中一旦処理を止めて再...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba アプリケーションが立ち上...
-
フレームワーク「4.8.1」で、[S...
-
コンソールアプリケーションの...
-
VBSでのSendKeysでの画面の最小化
-
実行時のコマンドプロンプトを...
-
VB.NETでMessageBoxを表示した...
-
イラストレーターCS4のシリアル...
-
Windowsプログラムのビジー状態...
-
Accessフォームからの外部アプ...
-
pccNTmon.exeとntrtscan.exeの違い
-
初回接続の遅い原因について
-
Java Web Start アプリケーショ...
-
C#でGUI・CUIの判断する仕方を...
-
Console Applicationをタスクト...
-
現在起動中のアプリケーション...
-
vb6で異なるのプロジェクト間で...
-
VB.NETでフォームアクティブの...
-
自分自身を更新するプログラム
-
MFCアプリケーションでの終了コ...
-
対象のアプリケーションが終了...
おすすめ情報