最後の難関。Linuxサーバの構築編3/3(CentOSインストールからODBC接続まで)です。
サーバにCentOSをインストール
表題はサーバになっていますが、今回は動くかどうかのテストなのでパソコンにインストールしていきます。
USBメモリをサーバに差し、本体電源ボタン起動します。(USBメモリから起動するようにBIOS設定してください)
1.初期画面(黒い画面)
以下の操作はすべてサーバマシン側の操作です。当分自席のPCは忘れてください。
- CentOS7の画面が表示されたら、すぐTabキーを押します。
- 下にコマンドを打つ欄が表示されます。
- checkとquietの間に、net.ifnames=0と入力してください。文字の間は半角スペースです。
- エンターキーで次へ進みます。
これを間違えたら先に進んでも最初からやり直しなので注意してください。
初期状態はキーボード設定がおかしいので、イコール(=)が出ないかもしれませんが、「へ」のキーで出ると思います。
2.設定画面(言語)
言語を選択する画面がでるので、日本語を選んで、右下の続行をクリックします。
3.設定画面(ネットワーク)
- ネットワークとホストをクリックします。
- 左上、イーサネットと青く反転しているところが、(eth0)になっていればOK。なっていなければ入力したnet.ifnames=0が間違っているので最初からやり直しです。
- 左下のホスト名を入力してください。説明はwebsystemと入力したと仮定して進めます。
- 右下の「設定」ボタンをクリック
- 全般タブに切り替えし、「この接続が利用可能になったときは自動的に接続する」にチェックを入れる
- IPv4のセッティングタブに切り替え、方式を手動にする。(環境がDHCPの場合はそれで)
- 「追加」ボタンをクリックし、IPアドレス、サブネットマスク、ゲートウェイを入力する。
- その下のDNS情報も入力する
- IPv6のセッティングタブに切り替え、方式を「無視する」にする。
- 右下の「保存」ボタンをクリックする。
- イーサネットが「接続済です」になっていることを確認します。
- 左上の「完了」ボタンをクリックします。
4.設定画面(日付と時刻)
- 日付と時刻をクリック
- 地域がアジア、都市が東京になっていることを確認
- 右上の歯車のボタン(歯車2つ)をクリック
- NTPサーバの一覧が表示されるが、ほぼ稼働中(緑)になっていることを確認する。(たまに1つ停止してますが問題ありません。)
- OKボタンをクリックする
- 右上ネットワーク時刻がオフの場合はオンにして、左上の完了ボタンをクリックする。
5.設定画面(インストールソース)
構築編2/3で控えておいたメモをここで使います。
- インストールソースをクリックする(!マークがついている)
- ネットワーク上のテキストボックスに、メモのhttp://を除外して、isosをosにしたものを入力します。
- 完了ボタンをクリック
- 元の画面に戻り、しばらくするとインストールソースの!マークが消えて、全体が黒く(正常)になっていることを確認する。
今回の場合入力する文字は、ftp.riken.jp/Linux/centos/7.5.1804/os/x86_64/になります。
!マークが消えない場合はスペル間違いだと思われます。再度確認してください。
6.設定画面(ソフトウェアの選択)
- ソフトウェアの選択をクリック。
- 左側ベース環境は、GNOME Desktopを選択する。
- 右側アドオンは、GNOMEアプリケーション、互換性ライブラリ、開発ツール、セキュリティーツールの4つを選択する(慎重に。間違えると全てやり直し)
- 完了ボタンをクリック。
- 元の画面に戻りしばらく待つと、ソフトウェアの選択がGNOME Desktopになっていることを確認する。
7.設定画面(ディスクの設定)
- インストール先をクリック。
- 左下パティーション構成が、自動構成のパティーションが選択されていることを確認。
- 左上の完了ボタンをクリックする。
- インストールオプションのポップアップが表示されるので、領域の再利用をクリックする。
- 右下の「すべて削除」をクリックする。
- リストのアクションの箇所がすべて削除になっていることを確認する。
- 右下にある「領域の再利用」をクリックする
- すべての!マークが消えたことを確認する
8.インストール
手順3で、rootパスワードを決めますが、rootとは最高最強権限なので、この権限があればシステムを壊すことも乗っ取ることも可能です。今回はテストなので大丈夫ですが、絶対に推測されない、突破されないものを考えてください。
- 右下にある「インストールの開始」ボタンをクリックする
- ROOTパスワードをクリック
- rootパスワードと確認の2つを入力して、左上の完了ボタンをクリックする。rootパスワードは自分で決めること。
- ユーザの作成をクリックする
- これは一般ユーザになります。ユーザー名は日本語以外で適当に決めて入力してください。私はcentuserにします。フルネームは入れなくても大丈夫です。
- このユーザを管理者にするにチェックを入れます。
- パスワードを決めて2か所入力してください。
- 左上の完了ボタンをクリックします。
- インストール完了まで待つ(30分以上かかります)
- インストールが完了したら、右下にある「再起動」ボタンをクリックする
- USBメモリへのアクセスが無くなる絶妙のタイミングでUSBメモリを抜く(抜かないと再起動時にまたOSをブートします)
- 再起動され、ゴチャゴチャ色んな画面がでるが、そのまましばらく放置。そしてCUIライセンス画面へ。
手順11のタイミングは本当に絶妙です。USBメモリのアクセスランプに注目して最新の注意して臨んでください。
USBメモリではなくDVDでインストールした場合は、再起動中にトレイが開きますが速攻で閉じるので、絶妙なタイミングでDVDを取ってください。
9.ライセンスに同意する
- ライセンス画面がGUIで出ていれば手順6からスタート。CUIなら1からスタート。
- 1を入れてエンターキー
- qを入れてエンターキー
- YESを入れてエンターキー
- 再起動される
- 「ライセンス情報に同意しない」をクリックするとライセンス画面に飛びます。
- 左下にある「ライセンス契約に同意します」をチェック
- 左上にある「完了」をクリック
- 右下にある「設定の完了」ボタンをクリック
- 再起動される
初期設定をする
再起動されるとログイン画面が表示されます。
いろいろとデフォルト設定のままだと不都合な項目があるので、それを直していきます。
1.ログインからチュートリアル終了まで
- 作成したユーザー名をクリックする。
- パスワードを入力してエンターキーを押す。
- しばらく待つとようこそ画面が表示される。
- ようこそ画面にある、日本語をクリックする。
- 日本語(かな漢字)をクリックして、右上の「次へ」をクリック。
- 位置情報サービスはオンのまま、右上の「次へ」をクリック。
- 色管理が現在の位置情報うんぬんが出た場合は、許可をクリック。
- オンラインアカウントに接続画面は、何もせず右上の「スキップ」をクリック。
- 「CentOS Linuxを使い始める」をクリックする。
- 初めて使う方へのチュートリアルが表示sれるので、右上のバツをクリックして閉じる。
2.電源設定をする(作業途中に画面が消えないように)
- 右上の電池アイコンをクリックする。
- 下に表示された中に、また電池アイコンがあるのでクリックする。
- 電源設定をクリックすると、電源管理のウインドウが表示される。
- 操作をしていないときに画面を暗くするを「オフ」にする。
- ブランクスクリーンを「しない」にする。
- 右上のバツをクリックして閉じる。
3.消音にする(音がうるさいので)
- 画面右上のスピーカーのアイコンをクリックする。
- スピーカーの音量を最小にする。
- (閉じるボタンがないので)デスクトップの適当なところをクリックし閉じる
4.日本語入力を可能にする(CentOS7は標準では日本語を入力できないみたい)
- 右上の「Ja」をクリックして、日本語(かな漢字)をクリックする
- 右上の「Ja」が「あ」になったのを確認する。
これをすると、キーボードの半角/全角切り替えで、日本語とアルファベットを切り替えることができるようになる。
サーバの設定はマダマダマダマダ続きますが、次からは自席のパソコンからリモートで操作します。
ちなみにまだまだ超長丁場になるので、途中でやめにして帰る場合は、サーバをシャットダウンして帰って下さい。
CentOSでも見た目はGUIなのでシャットダウンは直感的に解ると思います。
一日くらい大丈夫だと思いますが、つけっぱなしで火事になっては困りますので。
下記で説明するリモート側から落とす場合は、
# shutdown -h now
としてください。後述するrootユーザに変身してから行います。
リモートでサーバーにアクセスします
基本的にサーバはリモートで操作します。でないとデータセンターなどにサーバを置けません。
どうしてものときだけ、直にサーバのキーボードを叩きます。以下は全て自席のパソコンから行います。サーバは触りません。
Teratermをインストールする
AS400のクライアントアクセスはtelnet(テルネット)という技術を使ってアクセスしているのはご存知だと思います。
これもリモート操作といえばリモート操作です。
しかしtelnetは平文のためセキュリティに弱いので、現在はSSH(セキュアシェル)という技術を使って暗号化された通信を行うのが普通です。
ちなみにSSHはそのままエスエスエイチと呼んでOKです。
これもクライアントサーバ型です。クライアントが自席のPCになります。
そのSSHでアクセスするための(いわばクライアントアクセスみたいな)ソフトが必要になります。
それがTeraterm(テラターム)です。下記リンクからアクセスしてください。
ダウンロード、最新リリースのところにある一番新しいやつ(現在は:Tera Term 4.100でした)をクリックしてください。
ダウンロードが終了したら、クリックしてインストールしてください。次へ次へで大丈夫です。
TeraTermでサーバにアクセスする
- テラタームを起動します(インストールされてるので、すべてのプログラムにあるはず)
- ホストのテキストボックスに、サーバに設定したIPアドレスを入力して、OKボタンをクリックします。
- セキュリティ警告が表示されます。
- 「既存の鍵を、新しい鍵で上書きする」にチェックを入れて、「続行」ボタンをクリックします。
- ユーザー名(私の場合はcentuser)とパスフレーズはインストールの最後に設定した一般ユーザのものを入れます(基本rootでログインはしません)
- OKボタンを押します。
- コマンドプロンプトのように、黒い画面に白い字でコマンド入力できるようになれば成功です。
これでサーバに触らずガシガシ設定できるようになりました。
Vimを習得する
Linuxを使うということは、すなわちLinuxサーバの管理者になるということです。
となると最低限、設定項目を編集するためにテキストファイルを扱えるようにならなければなりません。
しかしLinuxの場合はエディタの操作がWindowsの場合とまったく異なります。
Windowsではメモ帳ですが、LinuxのデフォルトのエディタはVim(ヴィム)といいます。
この操作ができないと先に進めません。別記事にしてありますので、先にそちらをご覧ください。
引き続きODBCまでの設定をしていきます
まだVimに慣れなくても、これから先はガンガンVimを使いますので、設定が終了することには慣れるので大丈夫です。
SELinuxを停止する
CentOS7にはSELinuxというセキュリティの仕組みがあるのですが、熟練者にもかなりややこしいので、皆さん停止するのが定石です。
現在一般ユーザでSSHログインしていますが、SELinuxの停止は管理者権限が必要なので、rootユーザに変身してから行います。
現在はこの状態だと思います。この$は一般ユーザの意味です。
$
su と -(ハイフン)を入力し、エンターを押します。パスワードを聞かれるので入力してエンターキーを押します。
$ su -
rootユーザに変身(昇格)しました。#がなによりの証です。
#
あ、これからエンターキーを押してとか言いませんので、コマンド後はエンターだと思ってください。
現在起動しているSELinuxを停止します
# setenforce 0
停止しているか確認します。下記を入力したらPermissiveであれば停止しています。
# getenforce
SELinuxのコンフィグ(設定)を開きます
# vi /etc/sysconfig/selinux
6行目くらいにあるSELINUX=enforcingを変更します。さぁVimのお時間ですよ。
SELINUX=disable
編集できたらノーマルモードに戻って、「:wq」で保存して終了します。
HTTPとFTP通信をするため、ファイヤーウォールを設定します
HTTP通信を永続的に許可します
# firewall-cmd --add-service=http --permanent
FTP通信を永続的に許可します
# firewall-cmd --add-service=ftp --permanent
設定を定着させるためファイヤーウォールを再起動します
# firewall-cmd --reload
FTPサーバを立てる
あとあと自席PCとサーバ間で、ファイル等の移動しないといけないので、サーバ側にFTPサーバソフトを入れてあげます。
FTPとは言わずとしれたファイル転送プロトコルです。今回FTPサーバソフトはvsftpdを入れます。
最初に(インストールパッケージの)アップデートを行います。これは30分くらいかかります。
# yum update -y
FTPサーバソフトである、vsftpdをインストールします。
# yum install vsftpd -y
vsftpdのコンフィグを開く
# vi /etc/vsftpd/vsftpd.conf
匿名ログインを禁止するため、12行目を下記に直します。
anonymous_enable=NO
82.83行目の#(コメントアウト)を除去し、アスキーモードでの転送を許可します。
ascii_upload_enable=YES ascii_download_enable=YES
100.101.103行目の#を除去し、ホームディレクトリより上層のアクセス権を設定する
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
109行目の#を除去し、ディレクトリごと一括転送を有効にする
ls_recurse_enable=YES
114.123行目を直します。IPv4を有効にし、IPv6を無効にします。
listen=YES listen_ipv6=NO
一番下の行に追加します。入力したら保存してVimを終了します。
use_localtime=YES
さらにVimを起動しファイルを作成します。さきほど設定した「ホームディレクトリより上層のアクセス権を設定する」を許可するユーザーのファイルを作ります。
# vi /etc/vsftpd/chroot_list
2行追加します。私の場合はcentuserですがご自身で名付けたユーザー名を入れて下さい。追加したら保存してVimを終了します。
centuser
vsftpdを起動します。このときエラーが出たら設定に間違いがあるので再度確認してください。
# systemctl start vsftpd
サーバが起動や再起動したとき自動でvsftpdが立ち上がるようにします
# systemctl enable vsftpd.service
サーバを再起動します
# reboot
自席PCに保存したACS(IBM Access Client Solutions)をサーバへ
いよいよODBC設定を行うために、IBMのサイトからダウンロードしたACSをサーバに移動しようと思います。
自席PCからサーバへのファイル転送は、FTPクライアントソフトを使います。
FTPクライアントソフトはffftpを使います。下記からダウンロード&インストールします。
特に難しくないので次へ次へで入れて下さい。
FFFTPを起動してACSをサーバに転送します
- アイコンをダブルクリック(プログラムを起動)
- 新規ホストをクリックします
- ホスト名(アドレス)にサーバのIPアドレスを入力します
- ユーザ名の枠に、ユーザ名を入れて下さい。SSHと同じです。
- パスワード/パスフレーズの枠に、パスワードを入れて下さい。
- OKボタンを押してください。
- 接続ボタンを押してください。
- 「現在の暗号化の状態を保存しますか」と表示されるので「はい」をクリックします。
- ウインドウの右側にディレクトリ一覧(ダウンロードとかテンプレートとか)が出れば接続OKです。
- 並んでいるディレクトリの下くらいにダウンロードしたACSをドラッグ&ドロップします。
以上でACSをサーバに転送できました。
引き続きサーバ設定を行います
SSHは再起動のときに閉じてしまったと思うので、再度起動してサーバにログインします。手順は割愛します。
ODBC(IBM i Access)のインストール
ルートに変身します(パスワード要)
$ su -
systemユーザのホームディレクトリに移動(centuser私の場合です)
# cd /home/centuser
ACSの圧縮ファイルがアップされているか確認します。lsはListFiles(ファイル一覧の照会)の意味です。
# ls
FTPでアップしたACSのファイルを/root直下に移動します。mvはmoveの意味です。
# mv IBM_i_Access_Client_Solutions_-_Linux_AP_LCD8_2012_07.zip /root
/root直下に移動します
# cd /root
iaccessというディレクトリを作り、その中にACSファイルを解凍します。
# unzip IBM_i_Access_Client_Solutions_-_Linux_AP_LCD8_2012_07.zip -d iaccess
作成したiaccessディレクトリ内のx86_64ディレクトリ内に移動
cd iaccess/x86_64/
x86_64.rpmのファイルがあるか確認
# ls
IBM iaccessドライバーをインストール(バージョンが替わってるかもしれないので、確認したファイルを指定すること)
# yum install -y ibm-iaccess-1.1.0.7-1.0.x86_64.rpm
これでインストールが完了しました。
AS400と意思疎通をする
続いてODBCの設定を行います。インストールしたら/opt直下にibmディレクトリができます。
出来たディレクトリの中、/opt/ibm/iaccess/binに移動します。
# cd /opt/ibm/iaccess/bin/
AS400にPingを飛ばして疎通確認をする。
# ./cwbping AS400のIPアドレス
うまくいけば、「正常に接続できました」が9行くらいでるはずです。
ODBCの設定を行う
まずODBCの設定ファイルがどこにあるか確認します。一覧のDRIVERSのパスを↓のコマンドに打ちます。
# odbcinst -j
設定ファイルの中を確認します。今回編集はしないのでVimではなくcatコマンドを使います。
# cat /etc/odbcinst.ini
おそらく
[PostreSQL]
[MySQL]
[IBM i Access ODBC Driver]
[IBM i Access ODBC Driver 64-bit]
というODBCドライバーの一覧が出てくると思います。
この名前でドライバー名を指定することになるので、[IBM i Access ODBC Driver 64-bit]という文字を覚えておきます。
名前解決(名前とIPアドレスを関連づける)できるように、hostsファイルに登録しておきます。??はAS400のIPアドレスを入れて下さい。
# echo "???.???.???.??? ibmi" >> /etc/hosts
次にODBCの設定ファイルを作ります。
vi /etc/odbc.ini
内容は下記を入力して、:wqで保存します。
[ibmi] Description = IBM i Driver = IBM i Access ODBC Driver 64-bit System = ibmi CCSID = 943
これでODBC設定は完了です。
AS400のデータを取得できるかテストします
簡易SQL機能を使います。ユーザー名とパスワードはもちろんAS400のログイン情報です。
# isql ibmi ユーザー名 パスワード
Connected!と出れば接続成功です。次は何か物理ファイルのデータを引っ張ってみます。
ライブラリと物理ファイル名は適当なものを選んでください。AS400ではライブラリとファイルの間はスラッシュで区切りますが、SQLではピリオドになります。
またSQL文はセミコロンで閉じるのですが、ここでは不要です。
SQL> SELECT * FROM HOGELIB.HOGEPF
文字化けしていても構いません。指定したファイルのレコードらしきものが表示されれば成功です。
用は済んだので、SQLを閉じます。
SQL> quit
続いてHTTPサーバ(Apache)とPHPをインストール入れていきます。
さっきからvsftpdやi accessのときにyum installという命令を使っていますが、CentOSはこれでアプリケーションをインストールします。
正確にいうと補足が多くなって解りにくいので誤解を恐れず申し上げますと、yum install vsftpdとするとFTPサーバソフトがインストールできるのですが、そのデータをどこから取得しているのかというと、リポジトリという場所から取っています。Windowsならネットで探してダウンロードしてインストールとかしますが、Linuxの場合はコマンドで指定する格好になります。
もちろんリポジトリはインターネット上なので、http://〇〇〇〇というアドレスがあります。
その場所はベースリポジトリといい、デフォルトのリポジトリとしてCentOS内にある某ファイルで管理しています。
しかし今回使おうとしているLaravel(バージョン5.6)はそのベースリポジトリに保管されているPHPのバージョンでは合わないのです。
ベースリポジトリのPHPのバーションは5.4です。Laravel5.6で必要なPHPのバージョンは7.2以上が必要です(現時点)
なので別のremiというリポジトリを利用できるようにしなければなりません。
最初にEPELというのを入れます。これが無いとremiは使えません。
# yum install -y epel-release
次にremiを入れます。これはyumではなくrpmでアドレスを指定して入れます。
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
インストールPHPとHTTPDをインストールします。
# yum install -y --enablerepo=remi,remi-php73 php httpd
これでPHPとHTTPD(Apache)がインストールできます。
あとPHPでPDOやODBCや日本語文字を使えるようにするなど、追加機能(モジュール)を追加する必要があります。
# yum install -y --enablerepo=remi,remi-php73 php-mbstring php-odbc php-pdo php-mysqlnd
これでOKです。
HTTPサーバを起動します
いよいよHTTPサーバを起動します。
といっても操作は簡単。
# systemctl start httpd
次にサーバを再起動しても自動的にHTTPサーバが起動するようにします。スタートアップみたいなものです。
# chkconfig httpd on
自席のパソコンからサーバにアクセスしてみましょう。
SSHではなくブラウザからするのです。http://サーバのIPアドレスにアクセスします。
こんな画面が出たら成功です。
PHPプログラムを入れてテストします
最後にPHPプログラムを入れてテストします。
一番最初にやったフラットなPHP編にでてくるコードを載せてみます。
index.phpという名前で保存していると思いますが、それをご用意ください。
新しいドキュメントルート用の場所を作ります
HTTPサーバを入れた現在のドキュメントルートは/var/www/htmlになっているはずです。
今回はこの中にsystemというフォルダを作ってそこをドキュメントルートに変更します。
個人的メモ↓(無視してください)
var 755 root
www 755 root
html 755 root
現在のドキュメントルートに移動します
# cd /var/www/html
ディレクトリを作ります(Linuxではフォルダのことをディレクトリと言います)名前はなんでも構いません。
# mkdir system
所有者と所有グループをcentuser(一般ユーザにします)
# chown centuser@centuser system
ドキュメントルートを変更します
またVimの登場です。今までもそうですが今回はHTTPサーバのconfigを触るので注意してください。一文字でも違えば動かなくなります。
Apacheの設定ファイルのある場所に移動します
# cd /etc/httpd/conf/
ls (list files)でhttpd.confというファイルが確認できるはずです。これが設定ファイルになります。
# ls
一応バックアップを取っておきます。httpd_old.confという名前でコピーします。
# cp httpd.conf httpd_old.conf
お待たせしました。Vimの登場です。
# vim httpd.conf
119行目くらいにあるDocumentRootを/var/www/html/systemに変更します
DocumentRoot "/var/www/html/system"
164行目くらいにあるDirectoryIndexの箇所にindex.phpを追加します。
DirectoryIndex index.html index.php
とりあえず変更はこれだけです。:wqで保存してVimを終了します。
HTTPサーバを再起動します
サーバ本体の再起動ではありません。HTTPサーバソフトの再起動です。
先ほど行ったDocumentRootやDirectoryIndexの変更は、再起動しないと設定が定着しません。
HTTPサーバソフトの再起動
# systemctl restart httpd
コマンド入力後に何も表示されなければOK。エラーが出た場合は、configファイルの設定が間違っているので確認してください。
index.phpをサーバに転送します
自席PCからFTTTPソフトを使ってコードをサーバに転送します。
FFFTPを起動し、ログインするとこんな感じだと思います。
左が自席PCのProgramFilesのなかで、右がサーバのhome/centuserの中を見ている感じです。
それをサーバの/var/www/html/systemのなかに入れます。
現在は/home/centuserの中を見ているので、そこまで移動してドラッグ&ドロップして下さい。GUIなので説明不要ですよね。
きちんと画面が表示されるか確認する
ふたたび http://サーバのIPアドレス にアクセスします。
物理ファイルの内容が表示されればOKです。
ひとまず完成です。
お疲れさまでした。
コメント
以前別記事でコメントさせていただいた者です。
今回WindowsマシンにXAMPPで立てていた環境を
CentOS7に乗せ換えることになり、
再び大変参考にさせて頂きました。
ありがとうございます。
てつやん様
ご丁寧にありがとうございます。参考になれば嬉しいです。