提示与技巧

Intellij Ideaリモート开启环境の自动构筑を试してみみ

こんにちは,码头堀冈です。

Intellijベースのide 2021.3からベータ版本としてされているjetbrains网关网页を用词たリモート开放机构能お试しいただけましたか?

目次

はじめに:2つのワークフロー

WSL2 + Docker环境环境Intellijリモート开开环境の构筑

Terraform + AWS EC2环境环境Intellijリモート开放环境の构筑

はじめに:2つのワークフロー

既に试された方向,Jetbrains Gateway品种ページやブログポスト「Jetbrains Gateway」でで绍介されているJETBRAINS GATEWAYを用力てリモート开放环境in ideををインストール方法をご覧いただき,使ってみたという方が多いかもしれません。

上记の实用方法はintellij思想ドキュメント「」によると「」と呼ばれるものです。これはJetbrains Gatewayを使用て,既存のリモート开放环境にjetbrains gatewayからjetbrainsideをを&追加インストール,利用するものです。

本稿では,もう1つのワークフローである「サーバー」」のの例を绍介ししこのワークフローは,标准化された开放环境の自动构筑构筑,ciの成果物など生成される,IDEも含めた使い舍て可能な开発の自动构筑を念头にたもののようですようです入れ式のはようです开口环境のセットアップを

利用の流れとしては以のようになります。

リモートマシン侧

  • 环境构筑
    • 开発环境(OSやコンパイラ等)セットアップ
    • IDEインストール
    • プロジェクト(ソースコード)セットアップ
  • ソースコードが含まれるディレクトリに対してIDEのサーバー机械
    • 実行コマンド(例:remote-dev-server.sh运行 -ssh-link-host remote.server.com)実行すると,标准标准力の中间にクライアントからの接続必要なurlが表示ささ

クライアント侧(Jetbrains Gateway.的)

  • 上记で得た网址ををて接続に接続

接続方法がが的的なしますがが式式は式は,环境によって色々ケースが考えので,ユーザーによる作用を想定てかかかかかかかかかかかかかかかん。

今回は例として以下の2つのケースを绍介します。

  1. Windows WSL2のDocker环境
  2. Terraform + AWS EC2环境

现在の制限年限

その他,补足·注意事项:

  • Jetbrains Gatewayおよびリモート开启机械はベータ版です。前述前述机械无限や既知の问题がある他,皆様のフィードバックを元様々様々な能追追たリリース継続的に行わことにより,本稿の内容最新版版本は振る舞い异なる异なる可口性あります。
  • 本稿ののリモートおよび动作确认ためもの。

WSL2 + Docker环境环境Intellijリモート开开环境の构筑

WSL2 + Dockerのローカル环境でリモート开放机构の构筑例を绍介し。

クライアント(Windows)からWSL/ Docker上のIntellij Ideaににsshを経由せず直接接続接続する例です.YouTrack等でJetBrains的のリモート开発チームが绍介している以下の例をベースに试してみましょう。

テスト环境

  • HW:英特尔(R)核心(TM)I7-10710U,32GB内存
  • OS:Windows 11 Pro 21H2
  • WSL:
    • WSLバージョン:0.51.2.0
    • カーネルバージョン:5.10.81.1
    • WSLGバージョン:1.0.30
    • Windowsバージョン:10.0.22000.466
  • Jetbrains品品

环境构筑手顺

Intellij Ideaで空のプロジェクトをWSL上に作物成し。

以下のdockerfileを加加します。

来自OpenJDK:11-JDK-Slim运行APT-Get Update&APT-Get Install -Y Git Curl Unzip Procps Time Arg用户名= Intellizh GroupName = Intellij arg UID = 1000 arg gid = 1000 arg projdir = project arg ideurl = https://download.jetbrains.com/idea/ideaiu -20221.3.2.tar.gz #create非root用户运行groupaddd -g $ gid $ groupname && \ useradd -m -s / bin / bash -u $ uid -g$ gid $ username用户$ username workdir / home / $ username #clone项目代码和build(到缓存依赖项,等)运行git clone https://github.com/spring-projects/spring-petclinic $ projdir运行cd $ projdir&& ./mvnw -ntp包#download和安装Intellij Idea Run Curl -fssl -o ide.tar.gz $ Ideurl && \ mkdir Ide && \ tar xfz ide.tar.gz --strip-component = 1 -c Ide &&\ rm ide.tar.gz #install插件运行时IDE / bin / remote-dev-server.sh installplugins $ projdir com.intellij.ja #following功能被禁用#run time IDE / bin / remote-dev-server.sh热身$ projdir #env remote_dev_server_jcef_enabled = 1 #default命令cmd ide / bin / remote-dev-server.sH运行$ projdir --listenon 0.0.0.0  - 口交5993

补足:プラグインのインストール

上记例では日本语言语パックをインストールててますリモートサーバー环境に対する,コマンドラインによるプラグインのインストール行うためRemote-dev-server.sh installpluginsコマンドこのコマンドを実するするはははリモートサーバーは接続されているがますさますますますますますますますます。はJetbrains Marketplaceののの版本ページ等で确认する必要がますます。

次に,IDE内のターミナルを开放,

Docker Build -T远程开发。

。

Docker Buildが完了したら,イメージイメージ実行します。リモートサーバーの接続に使使使用する5993と弹簧靴アプリのポート牌8080がそのままアクセスよう-pに指定します。

また,dockerfileの中では,(参考にした例ににわせて)最后にcmdでrement-dev-server.sh(IDEリモートサーバーのののコマンドが,环境を残したますリモートサーバーを再再动したい等あるかもしれないので,/ bin / bashを指定してシェルががするに,実行。

docker run -i -t -rm  -  name my-remote-dev -p 5993:5993 -p 8080:8080遥控开发/ bin / bash

イメージ动动后,コンテナのシェルの中で,远程--dev-server.shをを行します。

IDE / bin / remote-dev-server.sh运行项目--listenon 0.0.0.0  - 口交5993

起确认确认表示れるので,进入キーを押し,リモートリモートのの动词継続ます。

リモートサーバーがが起,标准标准力の中に,サーバーに接続するためのががてれます。

TCP:// ......ののを(ダブルクリックして)选択してコピーし。

(ToolboxApp等から)JetBrains Gatewayを起动词ます。

连接链接の箇所に,コピーしたリンクを,「接続「ボタンボタンをクリックしし。

无事无事できると,以下のようにプロジェクト开口ます。

弹簧靴アプリを実行しみみましょう。

どこでも検索(Shift x 2)で主要で主要关节検索し,petclinicapplicaiton.javaを开き。

JDKが未设定である,赤赤エラーが表示さますますで,エディタ画面右上に表示れているsdkのセットアップ」」クリッククリック,インストール済みのjdkをしますます。すると,jdk用のインデックス经理が行され,完了すると赤赤ががます。

◀◀▶︎︎ガターアイコンをしPetclinicApplicationをを行します。 

http:// localhost:8080にアクセスしてみましょう。无事表示されればセットアップ成功です。

トラブルシューティング

実行时にコンパイルコンパイルエラーにに合并,mavenツールウィンドウからcleanや编译が実行できるを确认してみてくださいbrでエラー起きなければくださいくださいbrで侧侧起きなければ完了のように见えているがががのではに见えてがががことことあるようです。このこの合,しばら​​くしばらくたって,実行やデバッグをお试し。

localhostでwsl2环境へのアクセスががいかない合并は,wsl上で“hostname -i”をを行し,localhostの代わりにwsl2ホストのipアドレスを指定する解决することありあります。

リソースリソース使用状况

今回のテスト环境ででwsl2の.wslconfigファイルでメモリ8g,cpu 4を指定してています,タスクタスクでvmmemwslを眺めてと,cpu,メモリ共に活活しいるようです。により必要なな定理が軽くなるわけではないので,快适に行行するには,ローカル环境同様,良い良いのpcとwsl环境へのリソース割り当てが必要でしょう。

Intellijリモートサーバーのログ

コンテナ内でサーバーとして実行しているIntelliJ IDEA的のログ(idea.log)は以下の箇所で确认することができます。

<リモートサーバーのユーザーのホームディレクトリホーム> cache / jetbrains / remotedev-iu / _home_intellij_project / log

Intellij Ideageの「サービス「」ツールウィンドウで码头にし,行动中のコンテナアクセスするとと以

.vmoptionsファイルによる最大ヒープ使の

(IDEのインストールディレクトリ)IDE / BIN / IDEN64.VMOPTIONSによりデフォルト値とし750 MBと指定されいいます,以以にの変更していい结果,空在のリリースではideサーバーの最大ヒープサイズは2048MBで动作するようになっています。

/plugins/remote-dev-server/bin/launcher.sh

2048MB以上またはそれそれ以にししたい合书,IDEN64.VMOPTIONSをを変更するとでしょでしょでしょでしょでしょでしょ

例えば,コンテナ内の<主页> / IDE / BINディレクトリディレクトリ

SED -I -E的S / -XMX750M / -XMX4000M /'IDED64.VMOPTIONS

.

このこのサンプルでははカバーさていいない検讨

今回の例では,リモートサーバーををし,jetbrains网关からideを开开までまで见たましました。

実际に开启にに使使する合

  • gitの设定
  • ソースソースコード等ををマウントしたボリュームに置くかどうどう

のなどの検讨が必要うう。

Terraform + AWS EC2环境环境Intellijリモート开放环境の构筑

このセクションでは,别の例としてterraformを使ってawsec2上に开放环境を自动构筑例を绍介ますます。intellij想法のます开放机构は例のの环境へ依存性ないので环境への性ないので,蔚蓝的gcp等他のクラウド环境の构筑は可能であると思われます。

テスト环境

  • HW:Mac Mini(M1 2020)
  • OS:MacOS 12.1
  • Jetbrains品品
    • ローカル环境(工具箱应用程序からインストール)
    • サーバー环境(EC2の云-INITスクリプトスクリプトで)
      • Intellij理念终极:2021.3.2 +日语包
  • AWS CLI:AWS-CLI / 2.4.7 PYTHON / 3.9.9 DARWIN / 21.2.0源/ ARM64提示/关闭
  • Terraform:v1.1.2on darwin_arm64
  • (自然にec2とか立てられる)awsアカウントこの例ではec2インスタンスタイプc5a.xlarge.を使使ています。

环境构筑手顺

AWS CLI / TERRAFORM环境を设备ししこちらこちらのチュートリアルができるができる状态になっなっていれ

(Terraformを実行するローカル环境に)Terraformで作物成するec2インスタンスのssh接続に使キーペアが现出者(无い无い合

SSH-KEYGEN -T RSA -M PEM

等で生成。以降以降するサンプルプロジェクトでec2に登录する公开键の场所“〜/ .ssh / id_rsa.pub”として参照しています“

Intellij IdeaででTerraformプロジェクトhttps://github.com/mhorioka/hello-ijremotedev -terraform-ec2.を开启ます。

Readmeに说明があります,

  • cloud -init.sh.
    • EC2インスタンス作物成时ににささ环境环境构筑のをを
      • コンパイラやjetbrains ide,プラグインのインストール
      • ソースコードの设备と必要なライブラリ等をインストールためビルドビルド定理
      • AWS环境环境で使う使う使うエージェントエージェントの
  • cloudwatch.tf.
    • CloudWatchダッシュボード(CPU,メモリ,ディスク利用率)とアラームアクション(CPU利用率率低い低いにec2インスタンスを停止する)
  • EC2.TF.
    • EC2インスタンスインスタンスやセキュリティセキュリティグループの构をを
  • Iam.tf.
    • CloudWatch用IAMロールを定义
  • main.tf.
    • TerraformとAWS提供者をを
  • Network.tf.
    • vpc定义
  • 输出.TF.
    • Terraform适用の実行结果てipアドレスが表示されるようにする
  • 变量.TF.
    • SSH公开キーキーのパスパス,EC2インスタンスのややののリージョン等変更しものとデフォルト値を

必要に応じて(.ssh公开键ファイルやしたいec2インスタンス等等varちなみに,今回この変更ます,terraformを初めてためにのです,Terraformプラグイン.があると,テンプレートや补完がが利画上,cmd + b / ctrl + bで使使箇所ジャンプでき,名称変更リファクタリングがので,hclの确认や编集が思い思いまし。

次次,IDE内のターミナルを开放

Terraform Init.
Terraform适用

を実行し。

申请をを行するすると确认确认がます,

是的

をを力します。

欧洲委员会インスタンスインスタンスの动词完了と,以下のようなが表示れます.outputs.tfに指定し,ec2インスタンスインスタンス外部IPアドレスがが结果结果としてがされ

EC2インスタンスが起起さているので,sshでec2インスタンスにしますますます。

SSH EC2-USER @ EC2インスタンスの外部IPアドレス

でログインします。

サンプルのcloud -init.shでは,mvnコマンドを包装まで実行しいるので,大体10分くらいます。気気早い方针,ec2インスタンス上で

sudo tail -f /var/log/cloud-init-output.log

ででするまで待ち见れるので以の画面ががでるとととshshがが见れると了実shshがが见れる见れる了

リモートサーバー机械の起は,手打ちでも问题ないが,cloud -init.shの中间でにににて出出环境しているので,こちらし利用します。

(尾部をを行中のののからからからからからからからからたコマンドラインに,リモート开放サーバーの起コマンド指定して実し。外部IPアドレスを指定しています(必要に応じて ‘ec2-user’ 等をお使いの環境に合わせてください)。

IDE / bin / remote-dev-server.sh运行/ home / ec2-user / spring-petclinic --ssh-link-host $(curl -q http://169.254.169.254/latest/meta-data/public-IPv4)

进入をを力し,しばらくすると,标准标准力に,リモートリモートサーバープロジェクトにアクセスするためのがどんどん表示されのでますリンクは流れていくのでのでリンクが流れていくのでのでリンクしているいくのでのでリンクしているいくので

IntelliJ IDEA的のターミナルではHTTP链接がハイライトされ,クリック可能になっているので,クリックします(ハイライトされない环境の场合は,URLをコピーして,ブラウザに贴り付けてください)。

ブラウザが开き,码头网关を开启かどうかされますので,「开放」ををします。

Jetbrains客户端でリモートプロジェクトに対してに対してに対して接続を确认するダイアログが表示されます,「「接続を确认して続続続选択し

Jetbrains Gatewayが(必要时代てサーバー侧侧わせたた)Jetbrains客户端ををダウンロード,Jetbrains客户端でプロジェクトが开口ます。

Dockerの例と同様に,弹簧靴アプリを起动词てみましょう。どこでも検索(shift x 2)で弹簧靴アプリの主要をを探し(初回は検索に少し少しがかかるかかるかかるかかるかかるかかる。

今回はデバッグ実行してみましょう。

デバッグツールウィンドウの8080のところをクリックして,「ポート転送してブラウザを开放」ををすると,ec2上のアプリをssh経由で开开ことができます。

ここで,ブレークポイントを设定してみましょう。

エンドポイントツールウィンドウ等を活し,/所有者/查找に対する(oveercontroller.javaのinitfindform)ににポイントを设定ます。

先ほど开启たブラウザで查找所有者ページにアクセスしてみましょう。

ブレークポイントで止まりました。

リソースリソース使用状况

使用ししいるec2マシンのリソース使使は,サンプルスクリプトの中で云手表で作物し简体ダッシュボードみることができますどのななec2インスタンスタイプ选択するのののよいか検讨してみてください。

テスト环境の削除

テストが终わったら

Terraform Destroy.

でawsリソースの削除を行。

まとめ

Jetbrains IDEによるリモート开放「」からクライアントへのワークフロー,开放环境を自动构筑し,Jetbrains Gatewayからからアクセスする例绍介しましました绍介绍介しました利绍介绍介しましのの例例例しし利利例例

「うちの开放环境で使うにはこんな机能欲しい「」等フィードバックやご质问がありまし,推特(@masaruhr)やJetbrains日本语営业·サポート窓口までぜひお知らせください。

Baidu