Java
Mac
PostgreSQL
Tomcat

Macの環境を汚さずにJava / Tomcat / PostgreSQLをインストールする

Dockerとか仮想マシンとかでポータビリティを確保するのが主流かと思いますが、私含めて「インストールすることなく適当な場所に配置すれば動く」というのはまだまだ根強い人気があるかと思い、この記事にまとめました。

※開発環境をサクッと作るための割り切った手順です。セキュリティ的にも本番利用は厳禁です。

本記事の環境

  • Mac OSX 10.12.6 (Sierra)
  • Java 8
  • Tomcat 8
  • PostgreSQL 9.6
  • PostgreSQL JDBC 4.2 Driver, 42.2.0
  • ホームディレクトリ /Users/username

事前準備

はじめに、リソース一式を配置するディレクトリを作ります。ここではユーザーのホームディレクトリ直下にmyserverというディレクトリを作成して、その中に全てのリソースを配置します。

Javaのインストール

本記事の手順の中で一番ややこしいのがこのセクションです。すでにJava8がインストールされている場合はこの手順はスキップして構いません。

Javaのダウンロード

Oracle公式サイトからダウンロードします。本記事でのバージョンはJava 8 u161です。

パッケージからバイナリの取り出し

dmgファイルからpkgファイルを取り出して、任意の場所に配置したら、ターミナルを開いてpkgの配置先まで移動します。そこから先の手順については、以下の記事を参考にしてください。

MacでインストールせずにJava9を試す
https://qiita.com/mather314/items/8d112569d7bb0805683e

Tomcatのインストール

次にWebアプリケーションサーバのTomcatです。あちこちで手順がみつかりますので、ご参考程度。

Tomcatのダウンロード

プロジェクト公式サイトからtar.gzのものをダウンロード・解凍したら、tomcat8という名前に変更して冒頭のmyserverディレクトリに配置します。

https://tomcat.apache.org/download-80.cgi

環境の設定

環境変数で設定するのではなく、tomcat8/binにsetenv.shという名前のファイルを作成し、使用するJavaの配置先を設定します。私が今回動かしたかったアプリは1GBくらいメモリあてないとOutOfmemoryが起きるので、起動オプションも併せて設定しました。

setenv.sh
JAVA_HOME=/Users/username/myserver/java
JAVA_OPTS="-Xms1024M -Xmx1024M"

Managerの設定

Tomcat Managerのために管理者ユーザーとそのパスワードを設定します。
tomcat8/conf/tomcat-user.xmlを開いて、以下のとおり設定。ここではadmin/passとします。

tomcat-user.xml
<tomcat-users ... ><user username="admin" password="pass" roles="manager-gui,admin-gui"/></tomcat-users>

稼動確認

tomcat8/bin/startup.shを実行してTomcatを起動したら、ブラウザで http://localhost:8080/ にアクセスします。Tomcatの画面が表示されたら成功です。

ついでに、 http://localhost:8080/manager/html にもアクセスして、先ほど設定したユーザー/パスワードでTomcat Managerに接続できることも確認しておきましょう。

PostgreSQLのインストール

続いてデータベースのPostgreSQLをインストールします。こちらはTomcatほど手順が見当たりませんが、とはいえご参考程度です。(記事全体がご参考の寄せ集めですね・・・)

PostgreSQLのダウンロード

公式サイトからバイナリをダウンロードして解凍したら、pgsqlにリネームしてmyserverディレクトリに配置します。ここではバージョン9.6を使用しています。

https://www.enterprisedb.com/download-postgresql-binaries

データベースの準備

ターミナルを開いてpgsql/binに移動したら、はじめにデータディレクトリを作成します。ここにデータ一式が格納されますので、PostgreSQL本体とは別の場所に配置したい場合は任意の場所に変更してください。

$ ./pg_ctl initdb -D /Users/username/myserver/pgsql/data

今作成したデータディレクトリとログファイルを指定してデータベースを起動します。

$ ./pg_ctl start -l /Users/username/myserver/pgsql/pgsql.log -D /Users/username/myserver/pgsql/data

起動に成功したらデータベースに接続しましょう。postgresはデフォルトで作成されるデータベースの名称です。

$ ./psql -d postgres
psql (9.6.6)
Type "help" for help.

postgres=# 

データベースとスキーマの作成

はじめに自身(ここではusernameというユーザー名)の所有するデータベースmydbを作成します。

postgres=# CREATE DATABASE mydb OWNER username;
CREATE DATABASE

作成したら、操作対象を今作成したデータベースに切り替えます。

postgres=# \c mydb
You are now connected to database "mydb" as user "username".

スキーマやテーブルの作成も任意のものをSQLで作業していきましょう。

mydb=# CREATE SCHEMA myschema;
CREATE SCHEMA
mydb=# CREATE TABLE myschema.mytable (name varchar(100), age int);
CREATE TABLE

JDBCの配置

最後に、TomcatからPostgreSQLに接続できるようにJDBCドライバを配置します。PostgreSQLの公式サイトからダウンロードしたら、tomcat8/libにjarファイルを移動して完了です。

https://jdbc.postgresql.org/download.html

おわりに

  • 今回はMacでの環境構築としましたが、WindowsでもLinuxでもだいたい同じでいけそうな気がしますので、必要に迫られ次第追記したいと思います。
  • 10年近くJavaを触っておらず、「そりゃないでしょう」という手順や設定になっているかもしれません。どしどしご指摘いただけると幸いです。
  • また、今回私がこの環境を作成したのはとあるフレームワークを導入するためで、自身でスクラッチのアプリケーションを作っていません。この手の記事は簡単な動作検証アプリを動かしてこそ締まるものですが、ご容赦くださいませ。