Webmin / Virtualmin のすヽめ

0
400

「Virtualbox / vagrant のすヽめ」の続編です。
前回、LAMP環境構築を目指すと言って途中で挫折したので、その続きを。

「Virtualbox / vagrant のすヽめ」の内容を実行することでCentOS7の仮想マシン環境が構築されたかと思います。
これでLAMP環境のL(Linux)は構築できました。
残りのAMP(Apache, MySQL/MariaDB, PHP)の環境を行います。

個別にインストールと言う方法もあるのですが、今回はその他ソフトも含めて一括してインストール・更新ができたり、仮想マシン(Linuxサーバ)全般の設定・管理ができるソフトウェア「Webmin」を使いたいと思います。
また、LAMP環境はWebサーバ環境をオープンソースで構築したものですので、何らかのWebサービスを使用可能にすることが最終目的と言えます。その場合、Apacheの設定等が必要になりますが、仮想ホスト(1つのサーバで複数のドメインを管理する形態)環境の構築も含めて設定・管理ができるソフトウェア「Virtualmin」を合わせて使いたいと思います。

仮想マシンへのログイン

仮想マシン環境の構築および起動、ログイン方法は「Virtualbox / vagrant のすヽめ」で書いたので、そちらに準じてログインするところまで進めます。
と言うことで今回の操作内容は基本的に仮想マシン内(CentOS)で実施するものです。

Webminのインストール

まずはブラウザ上で以下のURLにアクセスします。

http://download.webmin.com/download/yum

ページの下の方にyumでインストール可能なwebminのパッケージ名が並んでいますので、この中から適当なものを選んでリンクのアドレスを覚えます。特別な事情がなければ一番新しいものを選んでおけば良いかと思います。
2020年9月11日現在、最新のパッケージは「http://download.webmin.com/download/yum/webmin-1.955-1.noarch.rpm」でした。
これをインストールしたいと思います。

仮想マシン上のrootアカウントで以下を実行します。

$ yum install -y http://download.webmin.com/download/yum/webmin-1.955-1.noarch.rpm

上記コマンドが完了したら、ブラウザからWebminにアクセスできます。
当然ながら仮想マシンにはドメイン名など割り振られていませんので、IPアドレス指定でアクセスすることになります。
仮想マシンのIPアドレスはVagrantfileで指定しているはずなので、そのIPに対して以下のようにアクセスします。
※以下ではIPを192.168.33.10とします。環境に合わせて読み替えてください。

https://192.168.33.10:10000

「:10000」はWebminのポート番号を指定するもので、固定です。

Webminのログイン画面が表示されたかと思います。rootでログインしますが、vagrant環境のrootのパスワード(初期値)は「vagrant」です。

ログインできたら最初に表示を日本語化しましょう(英語が得意な方はそのままでも良いですが)。
左メニュで、[Webmin]-[Change Language and Theme] と選択し、表示された画面上の「Webmin UI language」を「Personal choice」に変更し、横のリストボックスから「日本語」を選択します。
他は特に変更の必要はないので、下の「Make Changes」ボタンをクリックします

Modifying Webmin login ..
.. done
Reloading Webmin ..
.. done

のように表示され、左メニューが日本語になったかと思います。
画面左上の「Webmin」タグをクリックしてトップ画面に戻ります。

次にパッケージのアップデートを行います。Webminをインストールした直後の状態ではかなりの数のパッケージが古いままです。
トップページ内に「パッケージアップデート」として「XXX(数字)のパッケージアップデートが利用可能です」と表示されている箇所があるかと思います。この表示はリンクになっているので、これをクリックします。
「Software Package Updates」(英語かよ)というページに移動し、アップデート対象のパッケージ一覧が表示され、かつ一番左の選択チェックボックスが全てチェックされた状態になっていると思います。
必要であれば対象パッケージの絞り込みを行なっても良いですが、大半の人がそれぞれのパッケージが何者かということなど分からないと思いますので、大人しくそのまま「Update Selected Packages」をクリックします。
「Update Packages」が表示され、本当にアップデートして良いか念押しされますが、ここも大人しく「Install Now」を実行します。
これでパッケージのアップデートが開始されたかと思います。
おそらくは170以上のパッケージが対象になっていたかと思いますので、環境(マシン性能)にもよりますが完了まで10〜20分程度待ちます。
なお、このアップデートを行わずに後述するVirtualminのインストールを行なった場合、仮想マシンの再起動時にエラーが発生するようになります(個人的には100%再現ありでした)。将来的に状況が変わるかもしれませんが、当面は大人しくこのタイミングでアップデートを実施しておいた方が吉です。

アップデートが終わったら最後にサーバのタイムゾーンを「Asia/Tokyo」に変更します。これを行わないと、システム内での様々な時刻情報がUTCになってしまい分かりにくいです。
左メニューから [ハードウェア]-[システム時間] を選択し、表示された「システム時間」画面で「Change Timezone」タグをクリックします。
「現在の場所」として「UTC(UTC)」が選択された状態になっているかと思いますので、これを「Asia/Tokyo」に変更し、「保存」をクリックします。

以上の操作が終わったら、一度仮想マシンを再起動しておきましょう。
$ vagrant halt
$ vagrant up
と実行しても良いですが、
$ vagrant reload
で再起動できます。

Virtualminのインストール

仮想マシンが再起動できたらログインし、rootアカウントになります。
Virtualminに関してはインストール用のシェルファイルをダウンロードし、このシェルファイルでインストールを実行することになりますので、作業環境として/tmp辺りに移動しておきましょう。
その後、以下のコマンドを実行します。

$ curl -O http://software.virtualmin.com/gpl/scripts/install.sh

上記を実行したディレクトリ配下に「install.sh」ファイルが存在するかと思います。
これを実行します。

$ sh install.sh

英語でいろいろと説明された後で

Continue? (y/n) 

と表示されて止まると思いますので、黙って「y」を入力。

[ERROR] Your system hostname localhost is not fully qualified.
Please enter a fully qualified hostname (e.g.: host.example.com):

「ERROR」とか言われてドキっとしますが、ホスト名が正式な形式(FQDN)になっていないとダメだということらしいです。
今回はあくまで開発用の仮想マシン環境を構築することが目的なので適当な名称で問題ないのですが、一応このドメイン名で構築したWebサービス環境にアクセスできるようにすることも可能なので、ある程度は分かりやすい名称を付けておくと後々便利かもしれません。
ということで、ホスト名を入力後EnterでVirtualminのインストールが始まります。
こちらも10〜20分程度かかるかと思います。

はじめての仮想ホスト

Virtualminのインストールが終わったら、先ほどのWebminの画面を見てみましょう。
※セッションが切れた云々でパスワードの入力を求められた場合は、「vagrant」と入力。

Virtualminのメニューが追加されているかと思います。
また「Post-Installation Wizard」画面が表示された状態かと思います。このウィザードにしたがってVirtualminの初期設定をして行きます。
最初の画面は黙って「Next」。

メモリ使用に関する選択肢が示されますが、デフォルト(メモリ使用量を増やさない)の方が吉だと思います。
よって、黙って「Next」。

メールのスキャンに関する選択肢が示されますが、ここも黙って「Next」(どうせ開発環境でメールのスキャンなど期待していないので「No」を選択しても良いかもしれません)。

SPAMフィルタに関する選択肢が示されますが、ここも黙って「Next」。

DBに何を使うかの選択肢が示されます。LAMP環境としてMySQL/MariaDBの使用を考えているので、「Run MariaDB/MySQL database server?」は「Yes」、「Run PostgreSQL database server?」は「No」、つまりデフォルトのままで「Next」。

MySQL/MariaDBのrootのパスワード設定を行う画面になりますので、適当なパスワードを指定するか、元々指定されているランダム生成のパスワードを覚えておきます。その他はそのまま「Next」。

MySQL/MariaDBが使用できるメモリ量の設定です。ここは少々悩みどころかもしれません。開発中の動作検証で遅さが気になり出したら見直すとして、とりあえずはそのまま「Next」。

DNSの設定ができますが、開発環境としての運用でDNSに依存することはないので、深く考えずそのまま「Next」。

パスワードの保存方法(プレーンテキストかハッシュか)を選択できますが、開発環境なのでここもそのまま「Next」で。

いよいよ最後ですが、仮想マシンに対してWebアクセスがあった場合で、マシン内に対応する仮想ホスト(ドメイン)を発見できなかった場合に呼び出されるデフォルト仮想ホスト(ドメイン)を構築するかどうかということで、Virtualminインストール時に指定したホスト名で仮想ホストを生成する選択肢が有効な状態になっていると思います。
この状態で「Next」すると、ホスト名から自動でユーザーを生成し(例えばhoge.comのようにホスト名が指定されていると、hogeというユーザーが生成されます)、同ユーザーのホームディレクトリ(先の例に準じれば/home/hoge)に同仮想ホストの運用に必要な環境が構築されます。
ホスト名を適切に決めていればそのまま開発・動作確認で使える環境ができてしまいますし、必要ならば後から仮想ホストを追加することもできますので、このままデフォルト仮想ホストを生成してしまいましょう。
ということで、黙って「Next」。

しばらく待つと

Virtualmin post-installation configuration is now complete!

と表示されて、一連の設定が終了します。

改めて仮想マシンにログインしてみましょう。
/homeディレクトリ配下に先ほどの操作の最後で生成されたユーザーのホームディレクトリが生成されており、同ディレクトリ配下に同仮想ホストの管理環境が構築されているかと思います。
なお、「public_html」配下がドキュメントルートなので、例えばここに

<?php
echo "hello World!";

というように古典的な内容のindex.phpを生成し、ブラウザから
http://<仮想マシンのIPアドレス>/index.php
のようにアクセスすると、前述のPHPの実行結果が確認できるはず…と思いきや、実はできません。
少々ややこしいのですが、Vagrantfileで仮想マシンにIPアドレスを設定したとして、Virtualboxにはそれ以外にデフォルトで生成されてしまうIPアドレスがあるようで(多分共通的に10.0.2.15という値になっているかと思います)、Virtualminで仮想ホストの生成をした際にhttpd.conf内に自動生成される当該仮想ホストのIPとして「10.0.2.15」の方が採用されてしまっています。
よって、「10.0.2.15」の部分をVagrantfileで指定したIPに書き換えてhttpdを再起動すると初めて前述のPHPの処理結果がブラウザで確認できます(ふぅ)。

最後はかなり端折りましたが、とりあえずLAMP環境の構築および初歩的動作確認ができたかと思います。