[Ubuntu18/mac][IntelliJ]jdk10でtomcat9を立てる


借りてるvpsでtomcat9を立てる。
最近dockerで立ててたブログをapt upgradeで環境をぶっ壊した。
コンテナイメージをバックアップ取っとけばよかったと反省。
Pythonではあまりバックエンドの情報もなく、言語によって得意不得意があると実感中。flask、とかDjangoにしてもやっぱり情報が少ない。

cat /etc/os-release
java --version

Ubuntu:18.04.2 LTS (Bionic Beaver)
openjdk 10.0.2 2018-07-17

jdk入れる

sudo apt update

OpenJDKを入れる

sudo apt install default-jdk

Tomcatユーザーを作る

sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat

tomcatを入れる

wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz -P /tmp

移動

sudo tar xf /tmp/apache-tomcat-9*.tar.gz -C /opt/tomcat
sudo ln -s /opt/tomcat/apache-tomcat-9.0.17 /opt/tomcat/latest
sudo chown -RH tomcat: /opt/tomcat/latest
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

systemdユニットファイルを作る

sudo emacs /etc/systemd/system/tomcat.service

JAVA_HOMEの場所が違うなら変えてねと。

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
sudo systemctl enable tomcat

ファイヤーウォール

50000を開ける

sudo ufw status
sudo ufw enable 50000
sudo emacs /opt/tomcat/latest/conf/server.xml
    <Connector port="50000" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

その他設定

sudo emacs /opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users> 
sudo emacs /opt/tomcat/latest/webapps/manager/META-INF/context.xml
sudo emacs /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0000:1" />
-->
</Context>

ipが下記の時

45.45.45.45

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0000:1|45.45.45.45" />
</Context>
sudo systemctl restart tomcat
http://<your_domain_or_IP_address>:50000

で動く。

maven動かしてみる

ただhello worldがコンソールに出るだけのサンプル。

sudo apt install maven
mvn -version
mvn -B archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DgroupId=com.mycompany.app \
  -DartifactId=my-app
cd my-app

pom.xmlに下記を追加してコンパイル

  <properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
mvn compile
mvn package

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

macで設定する

#macでTomcatフォルダ作成
mkdir /Applications/Tomcat
#ソースを落としておく。apache-tomcat-9.0.20をTomcatに入れる。
#binに移動
cd /Applications/Tomcat/apache-tomcat-9.0.20/bin
#パーミッション変更
chmod 755 *.sh

#スタート
./startup.sh
#シャットダウン
./shutdown.sh
#設定ファイルはここ
cd /Applications/Tomcat/apache-tomcat-9.0.20/webapps

IntelliJで動かす

eclispe版はまた今度。
tomcatインストールしたのはいいけど、どうやってIDEから実行するんだよ。ここで結構悩んだ。

1.JavaEEのWeb Applicationを選択する。

2.+ボタンでTomcat ServerのLocalを選択
3.Configure...を選択

4.Tomcat HomeにインストールしたTomcatパスを設定

5.実行する

[リソースを更新、リソースとクラスを更新、デブロイし直す、サーバー起動し直す]
の中から選んで実行。

アクセスする
http://localhost:8080/

サンプル
https://github.com/miyamotok0105/rtm_training/tree/master/web1


Tomcat設定画面に入れるようにする

adminで12345678.

conf/tomcat-users.xml
<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="admin" password="12345678" roles="manager-gui"/>
(略)
</tomcat-users>

設定画面
http://localhost:8080/manager/html

ゲッターとセッターを自動設定

参考

tomcat9
https://linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-18-04/#step-4-create-a-systemd-unit-file

maven
https://linuxize.com/post/how-to-install-apache-maven-on-ubuntu-18-04/
https://mslgt.hatenablog.com/entry/2018/03/27/074522

tomcatとintellij
少し古め
http://librastudio.hatenablog.com/entry/2013/08/23/014706