VMware WorkstationにUbuntu Linuxを入れて社内サーバを作る

社内で運用してるUbuntu Serverを一新しようという事で、現在テストでUbuntu 20.04で社内向けサーバを構築中です。しかし、社内にはActive Directoryや一番のネックであるプロキシサーバが存在する。また、随分と古いままのサーバだったので、Ubuntuも大分内部構造が変わってたりしたので、ゼロから調査し社内向けのLAMP環境を構築しようと考えました。

今回は、VMware Workstation Player上に構築するので、予めVMwareにアカウントを作成し、VMware Workstation Playerをダウンロードしておく必要があります。また、Ubuntuもisoファイルでダウンロードしておく必要があります。

今回使用するソフトウェア等

最近のLinuxは、1995年当時のSlackwareなどとは違って恐ろしく簡単にインストールが出来てしまうので、ここで躓く人は殆どいないと思いますが、一応手順として記述しておきます。今回はブリッジではなくNATで運用しています。

図:非常にお手軽に作れる時代です

VMware Workstation Player

VMware本体のインストール

本体のインストール

本体のインストールは非常に簡単です。インストーラを起動して、進めるだけ。途中仮想NICドライバのインストールなどで結構時間が掛かりますが、それ以外は特に難しい所はありません。

途中「拡張キーボードドライバのインストール」を問われますが、これはCtrl+Alt+Delをできるようにするためのものなので、入れてもいれなくてもOKです。Ctrl+Alt+Insキーで代替可能です。

インストールトラブル

仮想ネットワークドライバ

VMware Workstation Player 16になってから、アプデが来たのでインストールを実行した所、「仮想ネットワークドライバのインストール」でずーっと待たされてインストールが完了しないというトラブルが生じました。海外でもこちらにその報告がなされており、いくつかの解決案が提示されていますが、UACの無効化やWindows Defenderの無効化、ファイアウォールの無効化などは効果がありませんでした。

結局調べてみた所、以下のような事がわかりました。

  • 仮想ネットワークドライバのインストール前の時点で、VMware Workstation Player自体はインストールが終わってる
  • キャンセルをして止めても、ドライバのインストールがずっと出たまま
  • 強制的に停止するには、dllhost.exeを止める必要がある

この解決法ですが、以下の手順になります

  1. 既にvmware player自体はインストール済みなので、コントロールパネル -> アンインストールを開く
  2. vmware workstation playerを右クリックして、変更をクリック
  3. 修復をクリックして実行する
  4. やはり同じく仮想ネットワークアダプタの部分で止まるが、辛抱強く待つ
  5. 結構時間が経過した後、一応インストールが完了する

何が問題でこんな時間が掛かるようになったのか不明ですが、素直にインストールが出来ない状態にあるのは面倒ですね。また、Hyper-Vの仮想ネットワークデバイスがあるとやはり問題が起きるようで、一旦デバイスマネージャから削除し、再度修復インストールで入れてみたら成功しました。

仮想マシンがビジー

この問題単純そうで実はいくつかのパターンがあり、それに応じて対処をしないと解決しません

  1. 仮想マシンのフォルダ内にあるlckファイルやフォルダ類を削除して再起動(よくある解決法)
  2. Windows Updateがきちんと適用できておらず、このような現象が出ているケース
  3. 仮想プリンタを削除し、vmxファイルにethernet0.virtualDev = "e1000e"を明示的に追加

1つ目はよくある解決法なのですが、効かないケースが多いです。2つ目は、修復インストールしてもその後の仮想マシン起動時に「仮想マシンはビジーです」の症状で、起動しないなどの現象が出るケース。この場合、こちらのリンク先を参考に「更新プログラムを更新できませんでした」の解決法を実行し、再度、VMware Playerの修復セットアップを行うと良いでしょう。

また、3つ目は自分の場合は有効だったのですが、対策は簡単なのでやってみる価値はあります。

※また、VMware Workstation Player 16.0.0は問題ないのですが、それ以降のバージョンだとビジーで動かなくなる現象を確認しています。なので、あえて、16.0.0を使ってます。

図:ここでずっと停止してしまうトラブル

仮想マシンの作成

これも非常に簡単です。ダウンロードしておいたUbuntuのISOファイルを元にサクっと作成可能です。以下の手順で作成します。

  1. VMware Workstation Playerを起動する
  2. 新規仮想マシンの作成をクリック
  3. インストーラ ディスクイメージファイルにて、ISOファイルを指定して、次へ進む
  4. Linuxパーソナライズと出てきますが、Linuxのアカウント作成情報をここで作ってしまいます。基本英語で入力して次へ進む
  5. 保存場所を指定して次へ
  6. 仮想HDDのサイズは初期値は20GBです。ディスクの余裕に合わせて変更します。次へ進む
  7. ハードウェアをカスタマイズにて、サウンドカードやフロッピーの追加などが可能です。今回は特に何もせずに進む
  8. 完了をクリックする。この時、終了時に仮想マシンを起動にチェックを入れておくとそのまま、Ubuntuのインストールへ進めます。

図:デフォルト設定だとこんな感じになる

Ubuntu Linuxのインストール

OS本体のインストール

インストールは驚くほど簡単です。

isoファイルからブートしたら、後は完全にお任せです。注意すべきポイントは途中でアカウントの作成画面がありますが、ここでユーザアカウント名に日本語を使わない事。これくらいです。ユーザアカウントとパスワードを設定するくらいしか、ユーザはやることがありません。

open-vm-toolsをインストール

macOSでVMware Fusionを快適に使う方法でも紹介済みですが、随分前からVMwareではLinuxに対してはVMware Toolsを提供せず、open-vm-toolsを使ってくださいという方針になっています。これを入れないと画面サイズが固定のままで、なおかつクリップボード共有やドラッグアンドドロップが使えないので、ターミナルから使えるようにインストールします。

インストール直後からウィンドウのリサイズなどができるようになっているはずです。

デスクトップ共有をさせる

以前は自動でvmtoolsを入れると共有フォルダで追加しておいたデスクトップに即時にアクセスが出来たのですが、今回ターミナルからマウントしないと出来なかったので、/mnt/hgfsをマウントできるようにします。コマンドラインから手動でマウントする場合は以下のコマンドを入力。

これで、/mnt/hgfsにデスクトップなどの共有フォルダとして追加したフォルダがマウントされたはずです。

図:デスクトップにあるファイルが見えるようになった

しかし、毎回コマンドラインで手動マウントは面倒なので、/etc/fstabに以下の記述を追加して自動でマウントするようにします。

  1. ターミナルからsudo nano /etc/fstabで開く
  2. .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0を追記
  3. Ctrl + Oを押し、Enterで上書き保存
  4. Ctrl + Xを押すとnanoが終了する
  5. 再起動してみて、自動でマウントされているかどうかを確認
  6. ついでに、ターミナルよりln -sf /mnt/hgfs/ /home/ユーザ名/デスクトップ/でショートカットをデスクトップに作っておくと尚便利

canonical-livepatchのインストール

OSを再起動する事なくリアルタイムでパッチを当ててノンストップ運用できるシステムがこのlivepatchなのですがLTS版で利用可能になっています。ターミナルより以下のコマンドを入力する事で簡単に導入が可能です。

完了すると、installedの文字が出てくる。次に、アクセストークンが必要なので、以下の手順でトークンを取得しセットする。

  1. こちらのサイトにアクセスする
  2. I don’t have an Ubuntu One accountにチェックを入れて、色々入力してアカウントを作成する
  3. Ubuntu Oneからメールが届くので、メールの中のURLをクリックして確認する
  4. そのままログインする
  5. 次にこちらのサイトにアクセスする
  6. Generate your credentialsという場所が下の方にある。ここのCanonical Livepatch portal.というリンクをクリックする
  7. Ubuntu userにチェックを入れて、Get Your Livepatch tokenをクリック
  8. The key for your account is:にキーが生成されるので、これを控えておく
  9. ターミナルから以下のコマンドを入力して、Tokenを登録する

successfully enable deviceの文字がでたら成功。canonical-livepatch statusで設定を確認可能です

図:リアルタイムパッチでノンストップ運用

Node.jsのインストール

今回はnvmからインストールをしようと思います。そのためには、curlとgitが必要なので、まずは2つをターミナルよりインストールします。

インストールが終わったら続けて、nvmを導入します。

これで、nvmのバージョンが表示されると思います。最新版は0.35.3です。しかし、これでは次回起動時にnvmでコマンドが出てこないので、bashrcに以下のコマンドで設定を追加します。

これで、nvmがインストールされたので、node.jsをインストールします。今回はv12.14.0をインストールしてみます。

これで、Node.jsとnpmのバージョンが表示されれば成功です。

Proxyの設定

社内サーバ構築をする際に何よりも一番面倒というかトラブルの原因になっているのが、プロキシー超え。自宅などとは違い社内で利用する以上はどの端末もプロキシーサーバを超えなければなりません。また、自分の環境では仮想環境はActive Directoryの管理外であるため、ホストのPCのNATとして参加しなければならない(つまり、ブリッジにてDHCPからIPアドレスを取得出来ない)。

ゲストOS内からNAT越しにプロキシーサーバへはアクセス可能なので、それらの設定を行う。OS側で設定すればOKというわけにはいかないのが、Linuxの面倒な所ですね。

今回サンプルとするプロキシのアドレスは「hogehoge.co.jp:8080」とします

共通設定

これから設定するプロキシ設定の共通部分をターミナルから設定しておきます。その値を持って各項目でプロキシの設定を追加していく必要があります。以降の設定では、プロキシのアドレスは共通設定の変数からそのまま取ってきてるので、アドレスやポート番号を個別に入れる必要はありません。再起動やターミナルを閉じると消えてしまうので注意。

Ubuntu本体のプロキシ設定

Ubuntu本体のプロキシ設定は、共通設定のそれを使わず、OSの設定から行う必要があります。以下の手順でプロキシ設定を手動で追加する必要があります。

  1. Ubuntu左サイドバーの一番下にあるツブツブのボタンをクリックする
  2. すべてのアプリが出ている状態で、おそらく2ページ目に「設定」があるので、マウススクロールさせて見つけてクリック
  3. 設定の左サイドバーに於いてネットワークを開く
  4. ネットワークプロキシの右側の歯車アイコンをクリック
  5. 手動にチェックを入れる
  6. 今回自分の環境ではhttpおよびhttpsともに同じプロキシ経由なので、httpから始まるアドレスとポート番号(今回は8080)を入力する。
  7. そのまま閉じれば設定は反映される

この設定を有効にする事で、OS本体が外部にアクセスするようなケースでプロキシをきちんと経由してくれるようになるので、Ubuntu Softwareなどがソフトウェア・アップデート通知などを取得できるようになります。

図:これでソフトウェア・アップデートなどが動く

FireFoxのプロキシ設定

FireFoxは前述のOSのプロキシ設定も使えますが、別のプロキシを使う場合にはOS本体同様個別にソフトウェア上から設定が必要です。以下の手順でFireFox本体にプロキシ設定を通す事で、ブラウザでインターネット環境にアクセスできるようになります。

  1. FireFoxを起動する
  2. 右上の「」記号のボタンをクリックし、設定を開く
  3. 一番下にあるネットワーク設定の所にある接続設定をクリックする
  4. システムのプロキシー設定を利用するの場合、前述のUbuntu本体のプロキシ設定を流用します。個別に設定する場合は、手動でプロキシを設定するにチェックを入れる
  5. HTTPプロキシーおよびHTTPSプロキシーとポートにそれぞれhttpから始まるプロキシーのアドレスとポート番号を指定する。
  6. OKボタンをクリックすると保存される

図:通常はシステムの設定流用でOK

ターミナルのプロキシ設定

ターミナル自身が外部へ出られないと、pingなどのコマンドが使えないので、ターミナルより以下のコマンドを入力して、プロキシ設定を環境変数に追加しておく必要があります。

恒久化するために、.bashrcにも追記しましょう。ターミナルから以下のコマンドを入力します。再起動後も有効化します。これで、curlやgitなどのコマンドからプロキシ経由でファイルのダウンロードが可能になります。

aptのプロキシ設定

以前と異なり、aptコマンドの設定ファイルの場所が異なっているので注意。以下の設定を記述に追加してあげます。ターミナルから以下のコマンドで設定を追記します。

実際に、/etc/apt/apt.conf.d/00proxyを覗いてみると、きちんと正規のプロキシアドレスとポートが追加されていると思います。この設定をすることにより、apt-getなどでアプリケーションを追加することが可能になります。

図:プロキシアドレスがきちんと書き込まれているか確認

snapのプロキシ設定

ここ数年、aptとは別にアプリケーションを簡単に追加できるシステムとしてsnapが結構利用されるようになっています。以前紹介したLAN内チャットサーバである「Rocket Chat」などもsnapで簡単に追加できるようになっていて、構築の手間が本当に少なくなりました。このsnapコマンドも別途プロキシを設定する必要があります。

snapはデフォルトでインストール済みです。

  1. ターミナルからsudo nautilusを入力してファイラを起動
  2. /etc/systemd/systemの中にあるsnapd.serviceをダブルクリックする
  3. geditが起動し設定ファイルが開かれるので以下の内容を追記する

追記が完了したら、以下のコマンドを入力して、snapデーモンを再起動する

canonical-livepatchのプロキシ設定

ライブパッチを当てるシステムもプロキシ設定が必要です。ターミナルよりsudo canonical-livepatch configで現在の設定を確認可能です。初期は空のはずなので、ターミナルより設定を追加します。

npmのプロキシ設定

ここまでのプロキシ設定をしていると、通常はnpmに特別Proxyをセットしなくても、プロキシ経由でモジュールのインストールができるようになっていると思いますが、念の為にそれでもnpmでインストールできないケースの為に、以下のコマンドを入力しておくと良いかもしれません。

試しに、npm i -g electron@5.0.0としてみた所、きちんとElectronをインストールすることが出来ました。

その他

動作が重たくなった場合

長く、VMware Workstation Playerで動作させていると次第に重たくなっていき、ディスクのスペース消費もどんどん増えていきます。故に定期的なメンテナンスの1つとして、以下の作業を行うようにしましょう。但し事前にシャットダウンし、スナップショットなどがない状態にしておく必要があります。

  1. 仮想マシンを右クリック⇒設定を開く
  2. ハードディスクを選択
  3. ディスクを圧縮して未使用の領域を再利用しますの項目の圧縮をクリック
  4. 次に、ファイルをデフラグし、空き領域を統合しますのデフラグをクリック

Windowsの機能のそれとは別にVMwareに備わってる機能で、自分の場合これで20GB程度の圧縮と、動作の高速化がなされました。

図:たまにはメンテナンスをしましょう

ポートフォワーディング

ネットワークをブリッジではなくNATで運用した場合、外部から仮想環境内のサーバなどにアクセスさせたい時に利用します。そのままではアクセスが出来ないので、ポートフォワーディングの設定を施してあげると、親のポートに対してのアクセスをそのまま仮想環境のポートへ渡すことが可能です。

※この辺の設定は、VirtualBoxだとGUIでできるようになっています。

仮想環境で尚且つNATで運用している場合には、外部から仮想環境内のサーバへそのままではアクセスが出来ません。ブリッジの場合は外からサーバが見えるので、この設定は不要です。

今回はVMware Workstation Playerを使っているので、以下の手順でポートフォワーディングを有効化します。ホストOSはWindows10です。

  1. ifconfigコマンドでゲストOSのIPアドレスを調べておく
  2. C:\ProgramData\VMwareにあるvmnetnat.confをテキストエディタで開く
  3. [incomingtcp]の行を探す
  4. 3306 = ゲストOSのIPアドレス:3306を下に追記する
  5. コントロールパネル⇒管理ツール⇒サービスを開く
  6. VMware DHCP ServiceVMware NAT Serviceを再起動する
  7. HidiSQLなどの外部ツールなどから仮想環境上のMySQLへアクセス可能になる

アクセスする場合はホストOSのIPアドレス:3306で接続する事になります。ホストOSからは127.0.0.1:3306で接続出来ます。

図:ポートの転送がこれで可能になる

開発ツールを入れておく

デフォルトの状態だと、Python3はインストール済みなのですが、gccやmakeといったコマンド類が全く入っていません。electronなどでnode-gypやelectron-rebuildする場合に必要になるので、インストールしておきましょう。完了すればNode.jsのkeytarのインストール、node-gyp configure, electron-rebuildなどのコマンドが通るようになります。

図:node-gypでエラーが発生する事に

サイドバーを非表示にする

Ubuntuは昔からサイドバーにドックが表示されている状態なのですが、これが結構鬱陶しいので、画面を広く使う為に消しておこうと思います。ターミナルより以下のコマンドで消したり、表示したりが可能です。

タイトルバーのアクティビティをクリックすれば、ドックは表示されるので、普段遣いでは邪魔になりません。

図:すっきりしたデスクトップになりました

タイムゾーンをTokyoにする

Ubuntu 20.04ですが、インストール完了直後はAmericaのタイムゾーンになっています。ターミナルからこれをTokyoに変更します。GUIの設定からも変更できますが、そんなに変更するものじゃないので、ターミナルからが一番ラクです。サーバ運営する場合、時間帯のズレはちょっとまずいので、直しておきます。

これだけです。

図:設定から変更している場合の様子

デスクトップにファイルを置けるようにする

20.04にしてからデスクトップにファイルアイコンを置けなくなっていたので、以下のツールをインストール、設定変更して以前のようにデスクトップにアイコンを置けるようにします。ターミナルからgnome-tweaksをインストールします。

インストールが完了したら、ターミナルから「gnome-tweaks」にて起動できます。起動したら以下の手順で設定をオンにします。

  1. 拡張機能をクリックする
  2. Desktop Iconsのスイッチをオンにする

これだけです。

図:デスクトップにファイル置きたい

ショートカットを簡単に作る

Ubuntuはショートカット一つ作るのに、ちょっと大変なのでツールを使います。端末エミュレータのショートカットを作ってみます。

  1. Arronaxのサイトから最新版のarronaxのdebファイルをダウンロード
  2. ダブルクリックし、インストール
  3. arronaxを起動する
  4. This is a starter for an applicationを選択
  5. TitleはTerminalとでもしておく
  6. Commandはgnome-terminalがそれなので、入力する
  7. starter folderは自分のホームフォルダで良いでしょう。
  8. アイコンは適当なのを選んでおきます。
  9. Save to Application Starterのアイコンをクリックして、デスクトップに保存
  10. デスクトップに出来たアイコンを右クリック⇒起動を許可をする
  11. デスクトップにターミナルのショートカットが出来た

図:面倒だけれど仕方ない

SSH接続出来るようにする

Windows10から標準でコマンドプロンプトにてSSH接続出来るようになっているので、Ubuntuサーバ側でSSH経由で接続できるようにしておきます。

  1. ターミナルからsudo apt install openssh-serverを実行して、SSHDをインストール
  2. さらに、設定ファイルを開き、ポート番号を変更しておきます。sudo nano /etc/ssh/sshd_configを実行
  3. Port 22がコメントアウトされているので、#を削除し、番号を2200とでもして保存する
  4. sudo systemctl restart sshdにてSSHDを再起動

事前に、VMwareのポートフォワーディングにて2200を転送するように設定を追加しておきましょう。Window10からは

  1. コマンドプロンプトを開く
  2. ssh ユーザ名@ホストのIPアドレス -p 2200でポート番号指定でログイン可能

リモートから軽量なターミナル経由で設定変更などが出来るので便利です

図:SSHで作業中の様子

フォルダ名を英語に変更する

Ubuntuを使っていて意味がわからないのがホームフォルダ以下の「ダウンロード」や「ドキュメント」といった日本語のフォルダ。Windowsの場合はターミナルから操作する場合、DownloadsやDocumentsできちんとアクセスが出来るのに、Ubuntuはどういうわけかこの日本語のフォルダ名をいちいち入れないと操作できない。これが非常に鬱陶しい。

ということで、フォルダ名を英語に変更してターミナルから操作しやすくする必要がある。

  1. ターミナルを起動して以下のコマンドを入力する
  2. ダイアログが出るので、Update Namesをクリックする
  3. 一括でホームフォルダ内の日本語フォルダが英語表記に変更される。
  4. 再起動する
  5. また4.と同様のダイアログが出るので、左下の次回から表示しないにチェックを入れて、古い名前のままにするをクリック
  6. ホームディレクトリを開く
  7. 古い日本語のフォルダが残ったままになってるので、ターミナルを起動して以下のコマンドを入力する。
  8. これで古い日本語フォルダが消える
  9. ターミナルから英語でアクセスできるかを確認する

こういう細かい点が商用OSよりも劣ってる点がマズイ所なのだけれど、22.04LTSでも今だこのままなので、仕方ない。

図:表記はこれでも良いのだが・・・

図:英語でアクセスが可能になる

Hyper-Vと共存させる

Windows側の設定

これまで、VMware WorkstationやVirtualBoxは、WIndows10のHyper-V(それを利用するWSL2)と共存出来ないと言われてきました。しかし、バージョンがあがり、共存ができるようになっています。共存させる設定をしないと、致命的なエラーとして仮想環境が起動できないなどの問題に遭遇します。(これまでは、Hyper-V Stopなどのツールを使って、仮想環境を使う場合は一時的にHyper-Vを停止させていたりしました)

  1. タスクバーの検索窓より、「Windowsの機能の有効化または無効化」を開きます。
  2. 仮想マシンプラットフォームにチェックを入れます。
  3. Windowsハイパーバイザープラットフォームにチェックを入れます。
  4. OKをクリックすると、機能が有効化されます。
  5. 再起動します。

図:いちいち切り替えしなくてもよくなりました

VMware Workstation側の設定

VMware Workstation側は以下の設定をオフにしたり追加する必要があります。特にIntel VT-x関係がオンの場合には仮想マシンが起動しなくなります。

  1. 仮想マシンの設定に入る
  2. ハードウェアの中にあるプロセッサを開く
  3. Intel VT-x/EPTまたはAMD-V RVIを仮想化のチェックを外す
  4. CPUパフォーマンスカウンタの仮想化のチェックを外す

このまま起動すると、CPUによっては「サイドチャネル緩和が有効化になってる」と表示されパフォーマンスダウンする旨のダイアログが出るケースがあります。これは、以前話題になったCPUの潜在的な問題である「SpectreやMeltdown」の問題に起因しているものらしいのですが、Hyper-Vと同居した途端に出てきたりします。このサイドチャネル緩和については、有償のWorkstation Pro Playerの場合は設定箇所があるのですが、無償のプレイヤーの場合設定箇所が無いので、vmxファイルを直接編集してオフにすることで、起動時のメッセージ表示やパフォーマンスダウンをさせないように出来ます。

VMXファイルに追記する項目は以下の通り。但しこれをオフにするということは、悪意のあるSpectre関係の攻撃を受けた場合緩和ができなくなるので注意。

図:Hyper-V共存時には要注意のダイアログ

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)