はじめに
大量の画像をアップロードするような処理ですと、コードの実行で何時間もかかり、他の作業に支障をきたすこともあるかと思います。
今回は、何時間かかる処理をRedHatのバックグラウンドでJavaのコードを実装し、Javaのコードを実行している間にローカルで別の作業ができる方法を記述しますので、参考にしてください。
サーバー構築
サーバー構築、サーバーにログインに関しては、下記URLから行ってください。
今回は、LinuxONEでRedHatのサーバーを構築し、TeraTermでRedHatにログインします。
http://qiita.com/takana-at/items/e51a2e5fa858fbdee19f
サーバー上にローカルファイルを移動できるようにする
RedHatのサーバー上にローカルファイルを移動、またローカルにサーバー上のファイルをWinSCPを使用しますので、WinSCPの環境を構築します。
鍵の変換
- PuttyGemをインストールします。
登録方法は、下記URLを参考にしてください。
https://webkaru.net/linux/putty-install/
- .ppkファイルを作成します。
「Conversions」→「Import key」を選択します。
- サーバー構築時に作成した.pemファイルを指定します。
- .pemファイルのパスワードを入力します。
- importできたら、任意の「key_passphrase」、「Confirm_passphrase」を入力し、「save private key」をクリックします。
- ファイルの保存画面になりましたら、「ファイル名」に任意の名前を入力し、「ファイルの種類」に「.ppk」形式を指定し、「保存」ボタンをクリックします。
- 「pem」形式のファイルから、「ppk」形式のファイルを作成することができました。
winSCPをインストール
登録方法は、下記URLを参考にしてください。
http://www.media.hiroshima-u.ac.jp/services/web/winscp
winSCPでサーバーにログイン
- winSCPを起動します。
- 「転送プロトコル」にSFTPを指定し、「ホスト名」にLinuxONEで構築したRedHatのサーバーのIPアドレス、「ユーザー名」に、TeraTermで設定したユーザー名を入力します。
- 「編集」をクリックし、秘密鍵を指定しますので、「設定」をクリックします。
- 「SSH」→「認証」をクリックし、「秘密鍵」にputtyGenでppk形式に変換したファイルを指定し、「OK」をクリックします。
- 「保存」→「ログイン」の順でクリックします。
- 秘密鍵のパスワードを入力し、「OK」ボタンをクリックします。
- winSCPでRedHatのサーバーにアクセスしているときの画面です。
- サーバーにアクセスできると下記の画面が表示されます。
左側がローカルのディレクトリ、右側がサーバー上のディレクトリになります。
実行するコードの準備
実行プロジェクトを圧縮
- eclipseを開きます。
- 「File」→「Export」を選択します。
「General」→「Archive File」を選択し、「Next」をクリックします。
- 圧縮するプロジェクトを選択し、「To archive file」にファイルを作成するディレクトリ、zipファイル名を指定し、「Finish」をクリックします。
- zipファイルをサーバーにコピーします。
ドロップ&ドラッグで実行するzipファイルをコピーすることができます。
crawler.shを準備
- crawler.shファイルを作成します。
実行するプロジェクトのどのコードを実行するかを指定し、「crawler.sh」ファイルを作成します。
下記のコードは、crawler.shファイルの記入例で、「FILENAME」にどのファイルを実行するか、「$1 $2 $3」に引数を示しています。
# !/bin/sh
cd demoApp/target/classes
java -classpath .:../../lib/commons-codec-1.4.jar:../../lib/commons-httpclient-3.1.jar:../../lib/commons-logging-1.1.1.jar:../../lib/mysql-connector-java-5.1.21-bin.jar:../../lib/httpclient-4.5.1.jar:../../lib/httpclient-cache-4.5.1.jar:../../lib/javase-3.3.0.jar:../../lib/httpcore-4.4.3.jar:../../lib/httpmime-4.5.1.jar:../../lib/json-simple-1.1.1.jar FILENAME $1 $2 $3
cd ../../..
2. 保存したら、crawler.shファイルをサーバー上にコピーしてください。
これでサーバー上でコード実行する準備が整いました。
実行環境構築
RedHatにJavaをインストール
- TeraTermでRedHatにログインした状態で、圧縮したコードのJavaのバージョンと同じバージョンをインストールします。
Javaのバージョンが異なると、「java.lang.UnsupportedClassVersionError」となりますので、注意してください。
$sudo yum install java-1.8.0-ibm-devel
2. インストールの確認を求められたら、「y」をクリックします。
インストールしたJavaのバージョンと「Completed!」という文字が表示されれば、Javaのインストール完了です。
RedHatにscreenをインストール
TeraTermでRedHatにログインした状態でscreenをインストールします。
$sudo yum install screen
RedHadのバックグラウンドでJavaのコードを実行する
screenを実行
RedHatでそのままコマンドを実行すると、バックグラウンドで実行した状態にできないので、screen内でコマンドを実行します。
- screenを実行しますので、下記をコマンドで実行します。
$screen
2. scrennを実行すると、上部に「screen0」と表示されます。
これでscreenが実行できました。
圧縮ファイルの解凍
- screenを実行後、現在のディレクトリを「ls」で確認します。
このとき、先ほどサーバーにコピーしたzipファイルがない場合は、サーバーにコピーしたzipファイルの1つ上のディレクトリに移動します。
- zipファイルを展開しますので、下記コードを実行します。
FILENAMEはご自身のzipファイル名に変更してください。
$unzip FILENAME
crawler.shファイルの実行
- crawler.shファイルを実行する権限を追加しますので、下記コードを実行してください。
$chmod +x crawler.sh
2. crawler.shファイルを実行します。
crawler.shを実行することで、crawler.shファイル内で指定したファイルをRedHatで実行することができます。
$./crawler.sh
3. デタッチ、アタッチする場合は下記のURLを参照してください。
3-1. デタッチの方法
http://qiita.com/takana-at/items/77120a75e155e180a5d4#%E3%83%87%E3%82%BF%E3%83%83%E3%83%81
3-2. アタッチの方法
http://qiita.com/takana-at/items/77120a75e155e180a5d4#%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81
[link-detach]:http://qiita.com/takana-at/items/77120a75e155e180a5d4#%E3%83%87%E3%82%BF%E3%83%83%E3%83%81
[link-attach]:http://qiita.com/takana-at/items/77120a75e155e180a5d4#%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81