IT関連

AS400/IBMi VirtualBoxとVagrantでMac開発環境を構築する

投稿日:2021年2月4日 更新日:

自宅でテレワークするのに、いちいち会社のPCにリモートして仕事をするのが奇妙なのでMac内に開発環境を作ろうと思います。

その備忘録です。

巷ではDockerが主流というか、現時点で使っていないやつは無能以下のゴミ扱いらしいですね。

でもDockerを勉強してもいまいち解らないのです。

おそらくですが、VagrantやBOXの概念とかプロビジョニングを知らずにDockerは理解しようとすることに無理があるのかも。

ということで、勉強がてらVagrantで作ってみます。

 

Vagrantの基礎的なものはこちらを参照ください。VirtualBoxとVagrantはインストール済として始めます。

Vagrant VirtualBoxのメモ

 

IBMのサイトからiaccessのドライバをダウンロードする

取得方法や取得物は若干変わっているけど、似たようなものなのでやり方は下記を参照。

AS400/IBMi 無料でWeb化 GUI化 オープン化 Linuxサーバ構築編 2/3

 

ログインしてダウンロードのメニューのEntitled Systems Supportから入る。

IBMiからIBM i Access Client Solutions Linux – APを選択して取得すればOK。

たぶんダウンロードした圧縮ファイルを解答すればIBM_i_Access_Client_Solutions_-_Linux_AP_LCD8_2012_14という名前のディレクトリのはず。

必要なのはその中にある、x86_64ディレクトリの中の「ibm-iaccess-1.1.0.14-1.0.x86_64.rpm」というファイル。

ibm-iaccess-1.1.0.14-1.0.x86_64.rpmです。

これを後で使います。

 

BOXを作る

ボックスイメージをネットから取得する。

今回はいままでの開発環境と同じCentOS7を採用する。

  1. Vagrantbox.esへアクセスする
  2. CentOS 7.2 x64のところにあるURLをコピーする
  3. Macからターミナルを開く

BOXは環境の元になるOSイメージなので、BOXの名前にはibmなどは付けずcentOS72にする。

 

ちゃんとBOXがインストール(厳密にはインストールとは言わない)されているか確認する。

centOS72が一覧にあればOK。

 

Vagrant開発環境を置くディレクトリを作る

今回は自分のユーザディレクトリの直下に作ることにする。

またVagrantで作る環境は将来複数作るかもしれないので、それをまとめるVagrantディレクトリも作ります。

 

Macのターミナルから、まずログインユーザのディレクトリに移動する

Vagrantで作る環境をまとめるVagrantディレクトリを作る

Vagrantディレクトリに移動する

今回の開発環境を置くディレクトリを作成する。今回はibmi接続専用なので、名前をcentOS7ibmiにする。

そのディレクトリに移動する

 

仮想マシンの初期設定をする

インストールしたBOXイメージcentOS72を元に仮想マシンを作る。

前回からの話の流れでいくと、現在のディレクトリはcentOS72ibmiのはずです。

 

BOXイメージ「centOS72」を元に初期設定(init)をする

 

初期設定したらディレクトリ内にVagrantfileができているのでそれをエディタで開く

 

vimエディタ内にて

 

これで192.168.33.10で仮想マシンに接続できるようになる。

複数仮想マシンを作るときは、10を11にするなどすればいいと思う。

 

iaccessのドライバをディレクトリに移動する

取得済のファイル「ibm-iaccess-1.1.0.14-1.0.x86_64.rpm」を、centOS72ibmiディレクトリの中に移動する。

これはFinder操作でドラッグアンドドロップすればOK。

このrpmパッケージは後で使う。

 

仮想マシンを起動する

仮想マシンを起動する

 

 vagrant-vbguestをインストールしておく

以後、仮想マシンを再起動すると、後述する「マウント」において不具合が起こる。

これはMac側と仮想マシン側のマウントを司るGuestAdditionsという機能のバージョンが合致していないことが原因らしい。

ちなみにバージョンが合致しないケースは、yum updateを行った後に起き、yum updateを行わなかったときは起きなかった。

ゆえに、それを解消してくれるプラグインをインストールしておく。

 

バージョンの確認や更新は仮想マシンを立ち上げたときに自動的に行ってくれる。

 

手動で更新する場合は下記を使うが、基本的に使わないしやらなくていい。

 

仮想マシンにSSHでアクセスする

IDやパスワードは不要。これだけで仮想マシンのターミナルを操作できる。

 

初期時点の状況

  • HTTPサーバは未導入
  • PHPは未導入
  • SELinuxは未稼働
  • FTPサーバソフトは未導入
  • iAccessドライバは未導入

 

タイムゾーン設定をしておく

タイムゾーンをアジア東京にする。

 

念のため、現在のタイムゾーンを確認するときは下記にて。

 

HTTPDやPHPなど必要なものをインストールする

ここからはSSHを利用して仮想マシン内の操作になる。

まず、最初にPHPやWebサーバのHTTPDをインストールする。

なお、普通にyum installしただけではPHPはバージョン5.4がインストールされてしまうので、最新の7.Xがインストールされるようremiリポジトリを追加する。

 

まず最初にyum updateを行っておく。10分近くかかるので注意。

 

必要なもの諸々をインストールする。

 

これでhttpdとPHPやその他がインストールされる。

ちなみにhttpdのバージョンは2.4.6で、PHPのバージョンは7.3のはず。

 

httpdサーバの設定をする

ブラウザから192.168.33.10にアクセスしても、デフォルトだとindex.htmlファイルしか見てくれないので、index.phpファイルも見るように設定する。

 

httpdの設定ファイルhttpd.confをエディタで開く

 

Vimエディタ内

 

再起動してもWebサーバが起動するように設定しておく。

CentOS6ではchkconfigで行うがCentOS7ではsystemctlを使うらしい。

 

Webサーバを起動する

 

ブラウザから「http://192.168.33.10」へアクセスしてページが表示されるか確認する。

ドキュメントルートは/var/www/htmlで、/var/www/html内にファイルはないので、ApacheのWelcome画面が表示されるはず。

 

iaccessドライバーをインストールする

ドライバーファイルは序盤にVagrant/centOS72ibmiの仮想マシンがあるディレクトリに移動しました。

しかしこれはあくまでMac側のディレクトリであり、仮想サーバの中ではありません。

FTPなどを使って仮想サーバの中に入れなければファイルを触ることができないと思いきや、Vagrantにはそれを解決する仕組みがあるみたい。

これは一番最初にリンクしたVagrantの記事にありますが、Mac側のcentOS72ibmiディレクトリの中身は、仮想サーバ側の/vagrant内にマウントされるという仕様のようです。

 

ゆえに、ドライバーインストールはこちら。

 

iaccessドライバーをインストールすると

iaccessドライバーをインストールするとどうなるのか。

まず/opt直下にドライバー系のディレクトリやファイル群がたくさんできる。

そして/etc/odbcinst.iniに

[IBM i Access ODBC Driver]
[IBM i Access ODBC Driver 64-bit]

の項目が追加されます。

 

ibmiと疎通テストをしておく

/opt直下のディレクトリに移動してibmi用のpingツールを実行する。

数行返って来れば疎通確認完了。

 

odbc.iniを作る

odbc.iniとはLinux環境全てのODBC DSNの定義を格納する構成ファイルのこと。

これはiaccessをインストールしても作られないので自前で作る。

 

odbc.iniファイルを作る

中身は

と書く。

System = ibmiにしてhostsファイルに登録してもOK。

 

index.phpを作る

最後にHTMLとPHPのコードですね。

これを/var/www/htmlの中にindex.phpという名前で作ります。

 

Vimエディタでindex.phpを作りながら開く。

内容はこんな感じ。

  • ログインアイディー
  • パスワード
  • エスキューエルブン
  • カラムメイ(2箇所)

の5つを直す。

 

ブラウザからアクセスする

後はブラウザから192.168.33.10へアクセスする。

index.phpで表示しようとしたSQL文の内容が表示されれば完成。

 

作られたindex.phpの所有権はrootになっているが、他ユーザーでも実行できるのでちゃんと見れるはずです。

おつかれさまでした。

 

補足

環境設定をした上での気付きなので、無視してもOKです。

odbcinst.iniについて

iAccessをインストールする前のodbcinst.iniの中身。ibmiの文字はありません。

[IBM i Access ODBC Driver]
[IBM i Access ODBC Driver 64-bit]

はiAccessをインストールすれば登録されます。実証済み。

 

/opt/ibm/iaccess/について

cwbpingで疎通確認をしたときに使ったもの。

これもiAccessをインストールするまではありませんでした。

インストールすれば追加されました。実証済み。

 

isqlはいつ入るのか

isqlは導入当初はありませんでした。

一つ一つ入れてチェックしたところ、php-odbcをインストールした後にisqlが使えるようになった。

isqlを実行したときにunixODBCと表示されるので、odbcの機能みたい。

 

データベース接続の宛先

PHPソース内に

としたのは、odbcを使って、ibmiに接続するという意味。

 

このibmiというのは、odbc.iniで指定した

この[ibmi]みたい。

 

ただし、/etc/hostsファイルにIPアドレスとibmiを対にして書き込んでも大丈夫だった。

そのときはSystem = ibmiにした。

 

iAccessドライバーは必要なのか

色々試行錯誤してみたけど、結論としてiAccessドライバーがなければIBMiからデータを取得することはできないっぽい。

スポンサーリンク




スポンサーリンク




-IT関連
-, ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

Windows WAN上LAN外の共有フォルダにアクセス

WAN内、ようするに拠点外のPCにアクセスしようと思ったことはないだろうか。 私はあります。   私は情報システム部の人間なので、他の拠点のPCを設定すべくリモートデスクトップをすることがあ …

JavaScript scriptタグを記述する場所

(1)<body>要素の直下や任意の場所 <body>要素は画面を描画する内容が記述されているので、その内容と一緒にするとコードが複雑化する。 また描画中にスクリプトを埋め込む …

Windows 社内のパソコンが点いているかを一括確認 Ping Sweep

原理 宛先(PC)にデータを送って応答を待つping(ピングもしくはピン)というコマンドがある。 pingを送って応答があったパソコンは点いているということ。 これを利用してネットワーク全体にping …

AS400/IBMi VirtualBoxとVagrantでMac開発環境を構築する2

前回の続きです。 前回はIBMiのデータベースからデータを引っ張れることを確認しただけ。 続いてGitリポジトリにあるLaravelのソースコードを取得して動くところまで。 実質環境構築はこれで完成す …

AS400/IBMi *DATEがおかしいと思ったらH仕様書のYが抜けている

Z-ADD *DATE YMDとし、20190107という日付を取得しようと思ったら、 1072019と表示されるのでおかしいと思った。 先頭の1は1月。2~3桁は日、後は2019年。になっている。 …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に