IntelliJ IDEA Browse Remote Host

#この投稿は IntelliJ IDEA Advent Calendar 2013 の 16日目 の投稿です。
#字ばっかりですみません。。時間切れが近づいてしまったのでまずは上げます。。


自分はふだん、多数のサーバーをお相手にしていて、
IntelliJ IDEA の Browse Remote Host 機能をよく使います。
というわけで、(飛躍)、使い方のメモを、共有してみます。

はじめに

  • 環境情報
    • Windows 7 Professional (以下、「Windows7」) 
    • IntelliJ IDEA 13.0 Ultimate Editon (以下、「IDEA」) 
      • Community Edition にはない機能(だと思っています)

リモートホストの設定

  • メニューから

    • [Tools] > [Deployment] > [Browse Remote Host]
    • [View] > [Tool Window] > [Remote Host]
      • 「Remote Host」ツールウィンドウが起動。「...」ボタンで設定ダイアログを起動できる
    • [Ctrl + Alt + S] で Settings ダイアログを呼び出し、Deployment を検索、でも設定画面に進める
  • Deployment ダイアログで

    • 左上の [+] ボタンを押下すると、「Add Server」ダイアログが出る。

      • Name: 任意のサーバー名を設定。例えば、「192.168.33.10」 や 「Vagrant_test_01」 など。
      • Type: 「SFTP」を選択。(他の選択肢は、自分は使ったことがない)
    • 「192.168.33.10」(設定したサーバー名で表示)の接続設定1(「Connection」タブ)

      • SFTP host: IPアドレスまたはホスト名(IDEA使用環境から名前解決できる前提)を指定。「127.0.0.1」「localhost」とか。
      • Port: ポート番号を指定。通常はデフォルトのまま「22」、場合によっては「2222」とか。
      • User name: SSH接続する、サーバー側のユーザー名を指定。「vagrant」とか。
      • Auth type: 「Password」 または 「Key pair(Open SSH)」 から選択。
        「Password」の場合、 Password: に SSH接続する際のパスワードを指定。「vagrant」とか。
        「Key pair(Open SSH)」の場合、 Private key file: SSH接続する際の private key ファイルのパスを指定。「・・・(事情により略)・・・\insecure_private_key」とか。
      • → 「Test SFTP Connection...」 で接続テスト。 Succesfully のメッセージが出れば OK。
    • 「192.168.33.10」の接続設定2(「Mappings」タブ)

      • Local Path: ローカル側(Windows7)のパスを指定。「C:\test\Vagrant_test_01\html」とか。
      • Deployment path on server '(Name)': リモート側のパスを指定。「/var/www/html」や「/vagrant」とか。
      • → 「Remote Host」ツールウィンドウで、対象のリモートホストを指定したときに、リモート側のパスが特別な色で表示されていれば設定 OK。

リモートホストに、実装してみたコードをアップする

  • 以下の通りのシンプルなコードをアップしてみます。
<html>
  <head>
    <title>タイトル:XXX!</title>
  </head>
  <body>
    Hello Vagrant !
  </body>
</html>
  1. 「Project」ツールウィンドウで、アップする html (ファイル。ディレクトリでも可能)を選択
  2. 右クリック(など)して、コンテキストメニューを呼び出す
  3. [Upload...]を選択
  4. 「Choose Server to Upload to」 ポップアップダイアログで、アップするサーバーを指定 (「192.168.33.10」とか)
    • オーナー・パーミッションに問題なければ、「転送した」旨のメッセージがコンソールウィンドウに表示されます。
    • 残念ながら問題あって Failed to transfer ... で失敗してしまう場合は以下のどちらかの対処になると思います。
      • /tmp などの、パーミッションが 777 のディレクトリに一旦転送して、ターミナル操作で場所を移動。
        ( sudo chown XXX:YYY ; sudo cp -pr ZZZ ; などで。 ターミナル操作も IDEA でできます。)
      • 転送先のディレクトリのパーミッションを 777 にする。
        ( 開発機ならまあこれもありかと。)
  5. ブラウザで表示確認する
    • 「Hello Vagrant !」が表示されれば OK。

リモートホストから現状のソースを取得する

  • アップするのとは逆に、ディレクトリ構成を維持したまま、リモート側にあるコードを取得することもできます。

    1. 「Remote Host」ツールウィンドウで、ダウンロードする ファイル or ディレクトリ を選択
    2. 右クリック(など)して、コンテキストメニューを呼び出す
    3. [Download From here]を選択
      • 接続設定しているユーザーに Read のパーミッションがありさえすれば、「転送した」旨のメッセージがコンソールウィンドウに表示されます。
    4. IDEAで表示確認する
      • 上述の、「シンプルなコード」が表示されれば OK。

おわりに

  • 自分が IDEA を採用する理由

    • 「万能メカ」なところ
      • Java に特化して言えば EclipseNetbeans に劣るのかもしれないですが、PHP でも html でも Javascript でも シェルスクリプト でも、これから身につけていく(はずの) Python でも Groovy でも Ruby でも同様の操作感で使えるのがとてもありがたいと感じています。
    • 「軽い」ところ
      • ほかのブラウザやらアプリやら、さらには VMware Player や Virtual Box (両方同時は経験ないですが)が上がっていても、苦なくオペレーションできています。ExcelやPowerPointが絡むと例外もありますが。。
    • この「Browse Remote Host」機能
      • Webアプリケーションを開発するうえで、コードを書いて開発機にアップして、すぐに動作をチェックすることを All-in-One で実現できるこの機能が、自分はとても気に入っています。他のツールを組み合わせて駆使すれば同様のことを無償でも実現できることがわかっていても、この使用感、覚えると離れられないです。
    • 違った使い方やもっと掘り下げたオペレーション等、寄せていただければ願ったり叶ったりです。
  • 募集

    • [Tool] > [Start SSH Session] でTerminalを起動できますが、これの操作をログに記録する方法・設定があればとても知りたいです。 できれば、ログファイル名を、TeraTerm.ini でできるような、IPや日付を自動で決めてくれるキーワードがあるとパーフェクトです。