CentOS7+IntelliJ IDEA(Windows版)でpayara開発を行う

# 概要

会社の同期がサーバーサイド開発でもJavaサイコー！　Tomcatはまだ存命である！　と叫んでるので、対抗心を燃やして、今たぶん一番トレンドなPayaraを使ってみようと鼻息を荒くしていたんです。
んで、CentOS7なサーバーにJDKとPayaraをインストールして、Windows上のIDEAからウハウハリモート開発を行おうとしたわけですが、結構はまったので、手順をまとめてみました。
以下、全てroot権限で行っています。

# JDKのインストール

まずはJDKをインストールします。

```shell-session
yum search java | grep 'jdk-'
```

のようにjdk関連のパッケージを検索すると、色んなのが出てきますが、例えば1.8.0のを入れたければ、

```
yum install -y java-1.8.0-openjdk-devel.x86_64
```

のように、-develがついたものを選択して下さい。
これをミスすると後で沼にはまります。

# Payara Serverのインストール

## 本体の設置

どこにインスコするかは自由なんですが、どの解説サイトを見ても/opt以下に設置しているので、私もそのようにしました。
まずは本体を公式サイトからダウンロードするわけです。
https://www.payara.fish/downloads

ここのダウンロードリンクはリダイレクトかまされるので、wgetの際は-Oオプションでファイル名を指定しないと書き込みに失敗すると思います。

```
cd /opt
wget "<ダウンロードリンク>" -O payara.tar.gz
tar xvfz payara.tar.gz
```

この記事を書いている時点では、payara41というフォルダができあがりました。

## リモート管理画面を有効にする

設置直後に起動しても、リモート管理画面には入れません。
セキュリティ設定を変更します。

```
cd payara41/glassfish/bin
./asadmin change-admin-password
./asadmin --host localhost --port 4848 enable-secure-admin
```

途中、管理者のアカウント名を聞かれます。
標準はadminですが、admin_hogehogeとか別の名前にしても良いと思います。
change-admin-passwordの段階でadminのパスワードを入れろと言ってきますが、初期値は空なのでそのままエンターを押して下さい。
そして設定したいパスワードを入力します。再確認入力あり。

## Payaraを起動する

やっとこさ起動できます。

```
./asadmin start-domain
```

hogehoge.comというドメインに設置したと仮定して話を進めます。
https://hogehoge.com:4848
にアクセスすると、管理画面のログイン画面が開きます。
ここから色々と見れたりいじれたりするのです。


# IDEAでプロジェクトを作成する

## ローカルにPayaraを設置する

Pythonプロジェクトなんかだと、IDEAがリモートから勝手に補完用のライブラリとか取ってきてくれるのですが、PayaraというかGlassFishなプロジェクトにはそういう仕組みがないみたいなので、大人しくローカルにも設置します。
私はc:\payara41に展開しました。

## テンプレートからプロジェクトを作成する

ここがはまりどころなんですが、新規プロジェクトのテンプレートとしてJava Enterprise->Web Applicationとかしたくなっちゃいますが、そこはグッと我慢です。
Mavenを選択しましょう。
Create from archetypeにチェックを入れて、下にずらっと並んでいる中から、maven-archetype-webappとついてるのを選択します。
次の画面でGroupIdとArtifactIdとか聞かれます。
それぞれ基本的に以下の値を入れる事になります。

- GroupId →　プロジェクトのルートパッケージ名　※一意の値を指定します
- ArtifactId →　最終的にwarにする際のファイル名

上記の内容はpom.xmlに格納されます。
後は確認画面が表示され、普段のプロジェクト作成と同じ流れになります。

プロジェクトが作成されて画面が開くと、右下にEnable Auto-Importという選択肢がある通知が出ると思います。
ここをクリックして下さい。
しばらく裏でダウンロードを始めるので、終わるまで待ちましょう。

## Run / Debug Configurationを作成する

リモートで実行したいわけなので、実行用のConfigurationを作成します。
メニューからRun->Edit Configurations...を選びましょう。

もちろん中身は空なので、+ボタンから、GlassFish Server->Remoteを選んで追加します。
この項目が出ない場合は、一番下の** items more～のところを選択して、全ての選択肢を出しましょう。

項目は次のように設定します。

### Serverタブ

- Name

お好きにどうぞ。Runとかで良いと思います。

- Application Server

右のConfigureボタンを押すとダイアログが出ますので、+ボタンからローカルに設置したGlassFishの場所を指定したものを1つ作って、それを指定しましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134553/b7b91b04-d3f1-bd17-d1eb-8a1a255f075e.png)

- Open Browser

ビルド後に開くURLを指定します。
デフォルトではポート8080でhttp接続できます。httpsの場合は8181となります。

- GlassFish Server Settings

見ればまあ分かりますが、管理画面へのアクセス情報を入れます。
Use SSL Connectionはチェックを入れて下さい。オレオレ証明書でも大丈夫です。

- Remote Connection Settings

Hostにサーバーのホスト名を入力します。

例）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134553/04565813-eb66-9e20-305f-d58e5c08ced5.png)

### Deploymentタブ

空っぽなので、+ボタンを押して、Artifact...を選んで下さい。
explodedつきとそうでないものが出てきますので、ついてない方を選択して下さい。

右側にUse custom context rootというのが出てきますが、ドメイン以降のURLになります。
http://hogehoge.com:8080/test
用に開発したい場合は、testと入力して下さい。

例）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134553/007c3cfd-4088-dfab-9977-c5fd8ddb38e8.png)

## 実行する

とりあえずそのまま実行してみて下さい。
テンプレートに最初から入っているindex.jspが実行されて、Hello World!とか目にタコができるようなサンプルページが表示されます。

実際にPayaraをバリバリ活用するには、他にもやる事はあるわけですが、いっったんここまでです。