社内で運用してる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キーで代替可能です。

仮想マシンの作成

これも非常に簡単です。ダウンロードしておいた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をインストールすることが出来ました。

その他

ポートフォワーディング

ネットワークをブリッジではなく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で作業中の様子

関連リンク

共有してみる: