公開日 2020年11月16日
更新日 2023年10月26日
はじめに
当社ではWindowsパソコンに仮想化ソフトウェアを導入し、
仮想マシンにRed Hat系のOSをインストールして開発を行っています。
ここでは仮想化ソフトウェアとしてOracle VM VirtualBox、
OSとしてAlmaLinuxを利用した開発環境の構築方法について記載します。
Oracle VM VirtualBoxのインストール
Oracle VM VirtualBox(以降、VirtualBoxと記述)のサイトから最新版をダウンロードします。
※2023/10/26時点の最新版のダウンロードは下記になります。
https://www.virtualbox.org/wiki/Downloads
ダウンロードしたexeファイルを実行しインストールします。
AlmaLinuxのインストール
ISOイメージファイルのダウンロード
AlmaLinuxの公式サイトからISOイメージファイルをダウンロードします。
※2023/10/26時点での最新版のダウンロードは下記になります。
https://almalinux.org/ja/get-almalinux/
適当なバージョンのISOイメージファイルをダウンロードします。
新規仮想マシンの作成
VirtualBoxを起動後、「新規」をクリックします。
「名前」に仮想マシン名を入力し、「ISO Image」に先ほどダウンロードしたIOSイメージファイルを選択して、「次へ」をクリックします。
メモリとCPU数を入力して、「次へ」をクリックします。
ディスク容量を入力して、「次へ」をクリックします。
「完了」をクリックします。
新規に仮想マシンが作成されます。
仮想マシンでのAlmaLinuxのインストール
仮想マシンを選択して、「起動」をクリックします。
「Install AlmaLinux」を選択します。
「日本語」を選択します。
各種の設定を行います。
「ソフトウェアの選択」をクリックします。
開発時にGUIは利用しませんので、「最小限のインストール」を選択し、「完了」をクリックします。
「インストール先」を選択し「完了」をクリックします。
「ネットワークとホスト名」を選択します。
ネットワーク接続がある場合は「オン」を選択し「完了」をクリックします。
「日付と時刻」を選択します。
「地域」をアジア、「都市」を東京とし、ネットワーク接続がある場合は「ネットワーク時刻」をオンにして
「完了」をクリックします。
「ユーザーの作成」を選択します。
適当なユーザーとパスワードを入力します。
「rootパスワード」を選択します。
rootユーザーのパスワードを入力します。
「インストールの開始」をクリックします。
インストールが完了するまで待機します。
インストールが完了したら「システムの再起動」をクリックします。
再起動後、作成したユーザーでログインできることを確認します。
ログイン時にTera TermやPuTTyなどSSHクライアントを利用するのが便利です。
共有フォルダ設定
VirtualBoxを起動後、「設定」を選択します。
メニューから「共有フォルダ」を選択します。
新規追加のボタンをクリックします。
「フォルダーのパス」からWindows側で共有したいフォルダを選択し、
「フォルダー名」にゲストOS側に作成する共有フォルダ名を入力します。
入力後、「OK」をクリックします。
以上の設定が完了するとゲストOS上の/media/sf_***/以下に共有フォルダが作成されます。
※***は先ほど入力したフォルダー名
エディタについて
当社では開発者が各々に好きなエディタを使用しています。
主にはEclipse、Visual Studio Code、Pulsarなどです。
ゲストOS上のファイルをWindows側のエディタで直接参照できませんが、
共有フォルダの設定後、共有フォルダを通してアクセスできます。
また、FTP接続が行えるプラグインなどを利用できる場合は共有フォルダ設定なしでもアクセスできます。
共有フォルダを通してアクセスするための設定ですが、ゲストOS上の共有フォルダを/media/sf_folder、ソースコードを格納するディレクトリを/var/www/srcとすると
$ ln -s /media/sf_folder /var/www/src
のようにシンボリックリンクを作成することで、共有フォルダを通して/var/www/src以下に配置されたソースコードを参照できます。その後、各種エディタにおいて共有フォルダから編集することができます。
developmentモードでの起動
通常のインストール手順でJoruriをインストールした際、起動モードはproductionモードとなります。
productionモードは本番稼働を想定した環境となり、高速化のためクラスをキャッシュしておりアプリケーションを再起動しないとソースコードの変更が反映されません。
また、ログ出力のレベルも高く設定されており、デバッグ情報を確認できません。 開発を行う際はdevelopmentモードでの起動を推奨しています。
developmentモードで起動する場合は、インストール手順書内の「14.サーバーの起動」の前に、以下の手順を実行してください。
unicorn起動ファイルの編集
unicorn(アプリケーションサーバー)の起動設定をdevelopmentモードに変更します。
# vi /var/www/joruri/config/samples/unicorn.service
---
Environment=RAILS_ENV=development
Environment=PATH=/usr/local/nodenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
SyslogIdentifier=joruri_unicorn
PIDFile=/var/www/unicorn/pids/unicorn.pid
ExecStart=/usr/local/rbenv/shims/bundle exec unicorn_rails -c config/unicorn/development.rb -E production
ExecStop=/usr/bin/kill -QUIT $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID
---
developmentモードのデータベース
developmentモードのデータベースはデフォルトではjoruri_developmentです。
データベースを作成するためには、下記のコマンドを実行します。
$ bundle exec rake db:create db:schema:load RAILS_ENV=development
共有フォルダ上でのJoruriの稼働
共有フォルダ上のソースでJoruriを稼働させる場合、通常のインストール手順内でのソースコード設置をシンボリックリンク作成に変更することに加えて、ソースコード内のunicorn設定ファイルを編集する必要があります。
シンボリックリンク作成によるソースコードの設置
「共有フォルダ設定」で登録したWindows上のフォルダにファイルを置くと、ゲストOS上の /media/sf_*** にファイルが共有されます。
以下の画像のように、共有フォルダとして設定したWindows側のフォルダにjoruriのソースコードを設置すると、ゲストOS側からは /media/sf_***/joruri のパスでソースコードにアクセスできるようになります。
インストール手順書では「11. Joruriのインストール」で /var/www/joruriディレクトリにJoruriのソースコードを設置しています。これを共有フォルダ上のJoruriソースコードに置き換えるため、「11. Joruriのインストール」の「 専用ディレクトリを作成します。 」の手順を下記の通り変更します。
# ln -s /media/sf_folder/joruri /var/www/joruri
# chown -R joruri:joruri /var/www/joruri
unicornの設定ファイル編集
unicornのpidファイルとsocketファイルが共有フォルダ上に存在している時、unicornプロセスが両ファイルにアクセスできずに起動が失敗します。
pidファイルとsocketファイルの場所はソースコード内の以下のファイルで設定しているため、ソースコードの設置場所に合わせて適宜設定を変更してください。
・/var/www/joruri/config/development.rb (developmentモードの場合)
・/var/www/joruri/config/production.rb (productionモードの場合)
例として、/var/runディレクトリ以下に設置する手順を紹介します。修正した内容は太字で表記します。
/var/runディレクトリ以下にunicorn用のディレクトリを作成します。
# mkdir /var/www/unicorn
# mkdir /var/www/unicorn/sockets
# mkdir /var/www/unicorn/pids
unicorn設定ファイルを編集します。(developmentモードの場合)
# vi /var/www/joruri/config/development.rb
---
# listen 8080, backlog: 1024
listen "/var/www/unicorn/sockets/unicorn.sock", backlog: 1024
pid "/var/www/unicorn/pids/unicorn.pid"
---
その他、nginxの設定ファイルとunicorn起動設定ファイル内でもpidファイルとsocketファイルの参照場所を指定しているので、上記の手順で編集した内容に合わせて修正してください。
・/var/www/joruri/config/nginx/nginx.conf
---
upstream joruri_unicorn {
server unix:///var/www/unicorn/sockets/unicorn.sock;
} upstream joruri_dynamic {
server unix:///var/www/unicorn/sockets/unicorn.sock;
}
---
・/var/www/joruri/config/samples/unicorn.service
---
PIDFile=/var/www/unicorn/pids/unicorn.pid
---
設定ファイルの編集はインストール手順書内の「14.サーバーの起動」の前に行ってください。