まえがき
わたくし、現在、ネット販売を主に扱うお仕事をしています。
このネット販売というのは、インターネット上のショップ(例えば、Amazon、Yahooショッピング、楽天市場など)から、お客様からのご注文を受ける、その注文のデータというのは基本的にCSVファイルと呼ばれるテキストファイルになります。
このたび、このCSVファイルを処理するための環境を独自の仕様で構築する必要がでてきました。
現在のお仕事に就く前は、コンピューター関連の企業に勤めており、そこである程度プログラミングを学んでおりましたのでデータを加工する=プログラムで処理 という考えなりますので、基本的に、「テキストデータをプログラムで半自動的に加工して、加工したデータをデータベースに登録する。」ということを流れを行うための環境構築が必要となります。
この環境を実現するには、
●LINUXのLAMP環境(Linux、Apache、MySQL、PHP)が必須。
●さらに、好き勝手にいろんな機能を追加することを考えると、管理者(root)権限が必須
になりますので、現在使っていないPCを自前のサーバー専用マシンとし、そこにLINUXをインストールすることにしました。
以下、メモを記載するにあたり、設定するサーバーの呼称を以下の緑背景の内容に統一しておきます。
参考にされる方は、ご自分の環境に合わせて変更してくださいね。
●今回設定するLINUXマシン(緑背景の文字で記載します。)
IPアドレス: 192.168.1.111
サーバー名: UBLAMP111
バーチャルホスト名:
ublamp-sys1 (1台目)
ublamp-sys2 (2台目)
ublamp-sys3 (3台目)
ユーザーグループ名:
ublamp-usr-grp
●同一LAN環境内のDNSサーバー(黄色背景の文字で記載します。)
IPアドレス: 192.168.1.222
①最小インストール
LINUXのディストリビューションの選択ですが、ネット上にたくさん情報があり、比較的簡単に扱える最新の安定版である UBUNTU 18.04 LTS Desktop を使うことにします。
欲しい機能はあとから必要な分だけ追加するので、まずは最小限の機能でインストールします。
インストールに関しては、以下を参考にさせていただき最小限のインストール。
参考:Ubuntu 18.04 LTSインストールガイド【スクリーンショットつき解説】 - Linux Fan
②インストール直後にやっておいた方がよいこと
インストール後の作業を行う際に毎回 sudo を指定してコマンドを実行するのがかなり手間なので最初にroot権限で作業できるようにrootのパスワード設定してきます。
あとは、ログイン後に su コマンド叩いて、設定したパスワードを入れれば、root権限で作業できるようにしました。
参考:Ubuntu 18.04 LTSのインストール直後にやっておきたいことまとめ - Linux Fan
尚、上記を参考にしますが、最小限のことのみ。ここでの新たなソフトウェア追加はスキップ。
③LAMP server、Samba file server、OpenSSH serverのパッケージをインストール
参考:How to install SSH Server on Ubuntu 18.04 Bionic Beaver Linux - LinuxConfig.org
・上記を参考に tasksel をインストールします。(taskselのパッケージはUBUNTUに最初から入っています。)
・sudo tasksel でtaskselを起動します。
・起動したら、以下のパッケージの個所でスペースキーを押して選択する。
(スペースキーを押すと [ ] の中に * が入力され、選択された状態になる。)
[ ] LAMP server
[ ] Samba file server
[ ] OpenSSH server
・選択したら、Enterキーを押すとインストールが始まります。
・以上で Apache2、MySQL、PHP、Samba、OpenSSHのインストールが完了です。
★追加インストール
参考:phpでエラーがでた - パンクはいつも突然に
php-mbstringというパッケージをapt-getで追加インストールする。
参考:PHP7で、mysql_connect()が無いと怒られる件 (undefined function mysql_connect) - Qiita
パッケージのインストールは不要。mysql_connect関数をmysqli_connect関数に置き換える。
使い方が若干異なるので、PHPのソースを修正する場合は以下を参考にする。
④とりあえずnet-toolsパッケージをインストールしておく
参考:Ubuntu 17.04 その132 - ifconfigからipコマンドへ移行しよう・ipコマンドはifconfigを置き換える - kledgeb
ifconfigは非推奨になりつつあるようなのでなるべくipコマンドを使うようにしていく方がいいらしい。
⑤IPアドレスを固定にする。
参考: [Ubuntu]ローカルIPアドレスを固定にする(18.04-16.04) - 純規の暇人趣味ブログ
上記の18.04の個所を参考に以下のファイル設定を行うことでIPアドレスを固定。
/etc/netplan/50-cloud-init.yaml
--------------------------------------------------
network:
ethernets:
enp0s3:
addresses:
- 192.168.1.111/24
gateway4: 192.168.1.1
dhcp4: false
nameservers:
addresses:
- 192.168.1.222
version: 2
--------------------------------------------------
参考:2016年8月10日 Ubuntu,ネットワーク設定をYAMLベースの「nplan」で統一へ,Yakkety Yakでも提供:Linux Daily Topics|gihyo.jp … 技術評論社
※18.04は16.04からネットワーク設定の方法が変わっているようなので参考に記載。
⑥Apache2のエラーを回避
エラーの回避を目的として、あらかじめ以下を参考に設定をしておきます。
参考:apache2再起動時にAH00558が発生する – コバログ
⑦Apache2でSSLを有効にする
上記を参考にSSLを有効にします。
参考: 第387回 UbuntuでSSLを利用したサービスを構築する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
注意:
Webブラウザーからhttps://(サーバーのIPアドレス)にアクセスすると、「接続の安全性を確認できません」や「保護されていない・・・」のような警告が表示されるが、これはサーバーが(信頼できる認証局の署名のない)自己署名証明書=UBUNTUインストール時に自動生成した証明書を利用しているため。
今回の場合は、イントラネット内のみで処理することを目的としたサーバーを設置することなので、イントラでわざわざSSL証明書をとるのはやりすぎと考え、警告がでたままで無視しながら使うか、SSLを使わない(80ポート)での運用のいずれかにする必要があります。(運用しながら検討)
★★★:上記の理由でSSLで警告でまくるので、現状は、SSLを解除して80ポートで運用しています。
⑧Apache2でバーチャルホストの設定をする。
参考:バーチャルホストの例 - Apache HTTP サーバ バージョン 2.2
上記「一つの IP アドレスでいくつかの名前ベースの ウェブサイトを実行する」を以下の
参考: PHP7で、mysql_connect()が無いと怒られる件 (undefined function mysql_connect) – Qiita
を参考にして、一つのIP(NIC)で複数のサイトを運用できるようにするためApache2でバーチャルホストの設定を行います。
尚、今回はイントラネットでのサイト運用なので名前解決はhostsに直接記入で対応します。
【バーチャルホスト設定】
/etc/apache2/sites-available/ にて default-ssl.conf を vhosts.conf としてコピーします。
vhosts.confのデフォルトをコメントアウトし(青文字の部分)、追加するバーチャルホストの記述(以下赤文字の部分)を追加、ドキュメントルートをバーチャルホスト用のパスに変更(以下橙文字の部分)
★★★:SSLを無効にする場合は<ifModule mod_ssl.c></ifModule>を削除して :443 を :80 に書き換えます。
-------------------------
<IfModule mod_ssl.c>
#<VirtualHost _default_:443>
<VirtualHost 192.168.1.111:443>
ServerName ublamp-sys1
DocumentRoot /var/www/ublamp-sys1/public_html
:中略
</VirtualHost>
※複数ホストを作成する場合は上記をコピーして以下のように別ホスト名で追加していきます。
<VirtualHost 192.168.1.111:443>
ServerName ublamp-sys2
DocumentRoot /var/www/ublamp-sys2/public_html
:中略
</VirtualHost>
:
:
</IfModule>
-------------------------
【名前解決】
●Ubuntu 18.04 LTS側
/etc/hosts に以下のバーチャルホスト名を追加(赤文字の部分)
-------------------------
127.0.0.1 localhost ublamp-sys1 ublamp-sys2 ublamp-sys3
-------------------------
●Windows10側
C:\Windows\System32\drivers\etc\hosts に以下のIPアドレスとバーチャルホスト名を追加(赤文字の部分)
-------------------------
192.168.1.111 ublamp-sys1 ublamp-sys2 ublamp-sys3
-------------------------
上記設定が終わったら、apache2ctl restart でApache2を再起動し、ブラウザからhttps://(バーチャルホスト名)/ にアクセスします。
(初回は保護されていない旨のメッセージでるので例外追加等で対応することで2回目以降アクセスできるようになります。ただし、本物のSSL証明書ではないので警告メッセージは表示されます。)
⑨SAMBAでのファイル共有
LAMP serverをインストール済みなので、上記を参考にWindowsマシンとのファイル共有フォルダを作成します。
尚、フォルダーの共有設定の際は「□ゲストによるアクセス・・・」にはチェックを入れないようにします。(許可しないようにする)。
参考: Ubuntu かんたんにWindowsパソコンとファイル共有する方法 – SEECK.JP サポート
sambaユーザーのみアクセス可能にするため、を参考にsambaユーザー登録します。
参考: sambaサーバによるファイル共有環境の構築手順
尚、sambaユーザー登録する前にlinuxユーザーの登録が必要です。
グループ ublamp-usr-grp を作成し、そこにユーザーを登録します。(以降、新たに作成するユーザーは ublamp-usr-grp のグループに追加する)
-----------------
useradd -m user1
pdbedit -a user1
groupadd ublamp-usr-grp
gpasswd -a user1 ublamp-usr-grp
-----------------
⑩リモート操作ができるようにXRDPをインストール
参考: Ubuntu 18.04 GNOMEデスクトップ環境にXRDPで接続する - Narrow Escape
注意:
XRDPで接続する場合はUBUNTU側がログアウトしている必要があります。
ログアウトしていないと接続が切られるので、自動ログイン設定をしている場合は解除してください。
参考:Ubuntu 17.10で自動ログインを設定する方法 Linux Fan
尚、リモート接続からでは設定できないので本体側で直接作業してください。
上記を参考にすれば、そのまま接続・設定ができるようになります。
但し、リモート接続したのちにGNOME上で諸々の認証パスワードを要求されますが「キャンセル」をクリックしてスルーしとけばOKです。
あと、リモート接続するとユーザーフォルダの直下(デスクトップ直下)に thinclient_drives ができますが内容は以下を参考としてみておくとよいでしょう。
参考: リモートデスクトップ側と本体OSとのコピー&ペーストについて - Google グループ
注意しておきたいのが、リモートで操作できるようになったあと、本体からキーボードやマウスを外すなら、必ずBIOSの「Halt On」設定を見直してから外してください。
でないと、BIOS起動の時点で「Keyboard Failure」となり OSが起動しなくなります。
(例:当方が使用したDellのPCの場合、BIOS「Standard CMOS Features」→「Halt On」で「All Errors」を「All ,But Keybord」に変更」
参考: キーボード無しでWindowsマシンを起動する - プログラマのページ
⑪MySQLサーバーのセッティング
参考: 【Ubuntu 18.04 LTS Server】MySQLサーバを動かす - The modern stone age-
mysqlサーバー設定 パスワードのチェックレベルはLOW(あとでしっかりしたパスワードをつくること前提。)にし、あとは上記と同様の設定にしておきます(Macosの個所のみ飛ばす)。
rootのパスワードは 以下で入れるものと同じにします。
mysqlのユーザーに ublamp-admin(管理用ユーザー名)を追加します。(パスワードは例として ublamp-passwd とします。)
GRANT ALL ON *.* TO 'ublamp-admin'@'localhost' ; で権限を全て付与。
尚、外部ホストからの接続は許可しない設定にします。(mysqlに対してポートは閉じたままとする。)
今回はネットショップ運営の都合上、イントラ上の特定マシンでのみ運用とするので外からは見えないようにしています。
※MySQL5.6以降のバージョンだとmysqlコマンドラインで日本語が入力できなくなってしまうのでコマンドを直接打ってDBをいじるのはphpMyAdminで行う。(マニアックな回避方法はしたくないのでこれでいきます。)
参考: MySQLクライアントに日本語が入力できない理由 - Suzna Developer Blog
⑫phpMyAdminをインストール
参考: 【Ubuntu 18.04-16.04 LTS Server】phpMyAdminをインストール - The modern stone age-
最初に聞かれるphpMyAdminの管理ユーザーのパスワードはmysqlで設定した ublamp-passwd を登録。
ユーザー名は上記の ublamp-admin を入力します。
パスワードを聞かれるのでここで再入力したものが有効になります。(大文字+小文字+特殊記号+数値が全て入っていないと通してくれないので注意。)
しかし、インストールしてみたものの、PHP7.2に対して、リポジトリのphpMyAdmin側が古く、phpMyAdmin内部で使用している関数の仕様がPHP7.2では変更になってしまったため、
Warning in ./libraries/plugin_interface.lib.php#551
count(): Parameter must be an array or an object that implements Countable
というワーニングが「エクスポート」「インポート」のタブをクリックするたびにでてきてしまいます。
しょうがないので、手動で最新版を入手してインストールしました。(2018/05/16時点)
ダウンロード先URL: https://www.phpmyadmin.net/downloads/
参考: phpMyAdminを手動アップデートする - wp.bmemo.pw
上記を参考にアップデートを行い、ワーニングが出なくなったことを確認。(2018/05/16時点の最新バージョンは4.8.0.1。以下インストール時のバージョン情報)
⑬FTPサーバーをインストールする。
参考: Ubuntu 18.04- FTPサーバのvsftpdをインストールする - Narrow Escape
上記を参考にインストールをし、FTPサーバーとして使用できることを確認。
⑭git をインストールする。
参考: UbuntuにGitをインストールする - Qiita
参考: Git - 最初のGitの構成
上記を参考にインストール。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以上のインストール&設定により、WindowsマシンからLinuxの環境を使えるようになりました。
この環境の利用方法については別途記事を書いていきたいと思います。
ではでは、今回はここまでで~す。(^O^)/
また、バックアップ環境を構築するにあたり、参考にさせていただいたサイト作成者のみなさまが情報を公開してくださっているおかげでスムーズに環境構築ができました。サイト作成者の皆様に感謝です。