#はじめに
OSS-DB Silverの学習のために、Windowsパソコン上に環境構築をしました。
その過程の記録です。
OSS-DB Silverは既にプログラマとして働いている方向けの資格なのか、プログラミング初心者が書いた記事が見当たりません。
私のように "プログラミング初心者 で OSS-DB Silver取得に向けて学習している人" に向けて、参考にしてもらえたら良いなと思って記事にしました。
【前回の失敗】
OSS-DB Silver学習のためにパッケージ版PostgreSQLをインストールしたけれど、結局アンインストールした話
前回の失敗をふまえ、今回はWindowsパソコン上にLinux環境を構築し、そこにPostgreSQLをソースコードからインストールしていきます。ソースコードからインストールする方法については、教科書(緑本) の3章で解説されています。
この記事ではPostgreSQLインストールの手前の、環境構築について書いていきます。
環境構築作業は以下の3段階です。
作業1 : VirtualBoxをインストールして、PCに仮想環境を構築
作業2 : Vagrantをインストールして、VirtualBoxをCUIで操作できるようにする
作業3 : Vagrant上にCentOSをインストールして、Linux環境をつくる
【つまずいたポイント】
・Vagrantを使うか使わないか (自分メモ:←ページ内リンクが組めない)
・コマンドプロンプト、どこにコマンドを記述すれば良いのか?
#Linux環境構築のために、何が必要?
まず、ソースコードからPostgreSQLをインストールするためのLinux環境を構築するには、何が必要なのか調べました。以下2件の体験記を参考にしました。
>1.環境構築 実機に触れた方がコマンドやディレクトリ構造が頭に入るので自宅のノートPCにPostgreSQL環境を作ってみました。 具体的にはVagrantでCentOS7環境をつくり、PostgreSQL9.4をインストールしました。 PostgreSQLのインストールはパッケージをyumでインストールするのではなく、ソースコードをコンパイルしてインストールしましょう。 ソースコードをコンパイルしてインストールする手順および、その後のセットアップ手順が試験範囲に含まれるためです。 パッケージを用いた方が簡単にインストールできますが、インストール後のディレクトリの構成や初期設定内容がパッケージによって変わる場合があります。 OSS-DBの試験はソースコードから手動でインストールして出来上がった環境を前提にしています。 Vagrantってナニ?という方にはドットインストールの無料で視聴できる動画レッスンをお勧めします。 (引用:つれづれテック - 2018/10/2記事[「OSS-DB Silver 勉強法」](https://tsurezure-tech.net/entry/exam/oss-db-silver))実機学習
コンフィグファイル(postgresql.conf・pg_hba.conf)の設定や、
運用管理系コマンド・SQLの確認に。
例の如くVirtualBox+CentOSにPostgreSQL10.4をインストール。
※ちょっと失敗したのが、試験で問われるバージョンは9.4らしいです。
やはりコマンドを打つと覚えが早いですね。学習環境の構築は面倒だけど大事。
(引用:ねみぎログ - 2018/7/15記事「OSS-DB Silver 合格体験記」)
Linux環境を作るためには、CentOS7が必要なようです。
双方「CentOS環境をつくり、PostgreSQLをインストール」しています。が、CentOS環境をつくるために用いているのが「VirtualBox」or「Vagrant」と、異なっています。
尚、上記に「ソースコードをコンパイルしてインストールする手順および、その後のセットアップ手順が試験範囲に含まれるためです。」とありましたが、教科書(3章インストールp48)には「インストール方法そのものは、OSS-DB Exam Silverの試験範囲ではありませんが、」とありました。試験範囲に含まれないってことで良いのかな。
CentOS7:Linuxの種類のひとつ。Linuxサーバを構築するときに使うOS。(参考:【3分でわかるシリーズ】CentOSとは?)
→Linuxって種類があるの⁉どういうこと??と思ったのでこちらの記事を読みました。→【ざっくりまとめ】Linuxディストリビューションを比較してみる
VirtualBox:PCに仮想環境を構築してくれるフリーソフト。仮想化ソフト。色々なOSを使ってみるときに必須(?)なツール。
Vagrant:ベイグラント。VirtualBoxなどの仮想化ソフトと一緒に使うツール。仮想化ソフトを「CUI(キャラクタユーザインタフェース)」で操作するソフト。
(参考:・Vagrantって流行ってるらしいけど何が便利なの?
・Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する
・【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!)
コンパイル:プログラミング言語で書かれた文字列(ソースコード)を、コンピュータ上で実行可能な形式(オブジェクトコード)に変換すること(引用元:コンパイルって何?)
##Vagrantを使うか使わないか
Vagrantを使うべきか、使わないで良いのかが、よくわかりませんでした。Vagrant無しでVirtualBoxのみで使えるようですし、今回のOSS-DB Silverの学習のためにこのVagrantが必要なのか不要なのかが今の私には判断できませんでした。教科書の[3章インストール]で指定されているインストールの前提は「Linux環境」だけだったので、なるべくシンプルな環境で実行したいので、まずはVagrantを使わずにやってみるかな?と思ったのですが、こちらの記事を読んで、結局Vargrantをインストールすることにしました。
つまり、VirtualBoxでの環境構築は、かなり大変だということ。
それに比べてVagrantであれば、これらの問題をすべて簡単に解決できちゃうのです!
(引用:【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!)
ということで、ソースコードからPostgreSQLをインストールするため、環境構築をしていきます。
#仮想環境を作るってこういうこと
「仮想環境」とはつまり、
自分のPCの中に VirtualBoxで仮想のPC を作り、
その仮想PCに OS として CentOS7(=Linux) をインストールする。
そうして出来上がった 仮想LinuxPC で PostgreSQL なり何なりを試す。
そうすれば自分のPCの環境は汚れなくて使い勝手が良いよね!
ということなのね。いったいどんな環境になるのか。初Linux。楽しみ!
#VirtualBox、Vagrant、CentOS7 のインストール
VirtualBox、Vagrant、CentOS7をインストールしていきます。
こちらの記事を参考にしました。
「【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!」-キツネの惑星 -2020/3/27記事
Vagrantfileのことや、PCのbitの確認方法まで解説されていて、つまずかないように配慮された初心者にやさしい記事でした。ありがたいです。
##作業1:VirtualBoxをインストールして、PCに仮想環境を構築
1.VirtualBox公式サイトにアクセスし、Windows hostsを選択。
2.ダウンロードしたインストーラを起動。指示通りにクリックしたら、インストール完了しました。
3.Finishをクリックしてインストールが完了すると、自動でVisualBoxが起動して、こんな画面になりました。
4.作業2に進みます。
##作業2:Vagrantをインストールして、VirtualBoxをCUIで操作できるようにする
1.Vagrant公式サイトにアクセス。こんな画面が開きます。
Windows64-bit版が表示されているので、そのままDownloadをクリック。(私のPCではダウンロード所要時間約6分)
2.ダウンロードしたインストーラを起動。指示通りにクリックしたら、インストール完了。
3.Finishをクリックするとこんなダイアログボックスが表示されます。
Yesをクリックすると自動でPCが再起動されます。なのでYesをクリックする前に、他のウィンドウで何か作業をしていたら、そのウィンドウを閉じます。
4.PCが再起動されたら、作業3に進みます。
##作業3:Vagrant上にCentOSをインストールして、Linux環境をつくる
キツネの惑星さんの記事の「Vagrantの使い方」の項を参考に進めていきます。
###「Vagrantfileを作成」の部分で手が止まりました。
記事中ではコマンドプロンプトに指示されたコードを入力するよう書かれているのですが、
記事では
コマンドプロンプトを使って、さきほど作った「C:\Users\user_name\training\vagrant」に移動しましょう。
コマンドプロンプトに以下を入力して実行してください。```
【フォルダの移動】
$ cd C:\Users\user_name\training\vagrant
と書かれていますが、記事どおりにコマンドプロンプトを起動すると、私の画面はこうなっていました。
![cmd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498057/021f765a-8546-dbf5-b368-3821e6300669.png)
どの部分に、指示されたコマンドを入力すれば良いのでしょうか?
そして、「実行」はどのようにすれば良いのでしょうか?Enterを押せば良いのでしょうか?
まず、コマンドプロンプトとは何でしょうか?
**コマンドプロンプト**:コマンド(命令)を実行するWindows搭載のCUI(ーボードだけで操作する画面インタフェース)。LinuxやMacOSでは「ターミナル」と呼ばれる。よく「黒い画面」と言われているのは、この画面のこと!
####コマンドプロンプト、どこにコマンドを記述すれば良いのか?
1.まず、表示されている「C:¥Users¥(user name)>」の右に「\training\vagrant
」を追記して、Enterを押してみました。
→エラー。\は¥と表示され(キツネの惑星さんの記事の通り。)、次の行に「指定されたパスが見つかりません。」と表示され、さらに下の行に新たに「C:\Users\miho>」と表示された。下記の通り。
(※入力した部分を★で囲いました。太字にしたかったのですが、コードブロック内では「**で囲う」等のマークアップが効かなくなるようだったので、妥協案。)
Microsoft Windows [Version 10.0.18363.1256]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\ユーザー名>★\training\vagrant★
指定されたパスが見つかりません。
C:\Users\ユーザー名>
2.次に、コマンドプロンプトで今追加した部分を削除して新たに入力し直そうと思ったら、DeleteやBack Spaceでの削除ができないようだったので、コマンドプロンプトを一度閉じてから開き直し、「C:¥Users¥(user name)>」の右に「$ cd C:\Users\user_name\training\vagrant」を追記してみました。またエラー。下記の通り。
Microsoft Windows [Version 10.0.18363.1256]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\ユーザー名>★$ cd C:\Users\user_name\training\vagrant★
'$' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
C:\Users\ユーザー名>
3.3度目の正直です。「$」以外を同じ位置に張り付けてみます。新しい行に「C:\Users\miho\training\vagrant>」と表示されました。
Microsoft Windows [Version 10.0.18363.1256]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\miho>★cd C:\Users\miho\training\vagrant★
C:\Users\miho\training\vagrant>
この状態は、「「C:\Users\user_name\training\vagrant」に移動できた状態」だということで良いのでしょうか?わからない...。とりあえず移動できたのだとみなして進みます。
>移動できたら以下のコマンドを実行して、Vagrantfileを作ってみましょう。```
【Vagrantfile作成】
$ vagrant init
ちなみに、「vagrant init」は最初の1回だけしか実行しません。
すでにVagrantfileがあなら必要ないもんね!
とのことなので、さきほどのコマンドプロンプトに、続けて「vagrant init」を入力。「$」はまたエラーになりそうなので入力しませんでした。
すると、こうなりました。
Microsoft Windows [Version 10.0.18363.1256]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\ユーザー名>cd C:\Users\ユーザー名\training\vagrant
C:\Users\ユーザー名\training\vagrant>★vagrant init★
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
C:\Users\ユーザー名\training\vagrant>
「A ~」と、表示されました。読むと、Vagrantfileは無事に作成されたようです。一応、PCのデスクトップから、ドライブCの中身を確認してみると、training→vagrant→Vagrantfileと、ちゃんとファイルが作成されていました。無事完了です。
続いて「Vagrantfileの設定」以降を進めます。
記事の通りVagrantfileをメモ帳で開くとこのような内容になっていました。
【Vagrantfileをメモ帳で開くと表示された文言】
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "base"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
メモ帳に表記された上記を、記事の通りに全部消して、記事のコードを上書きしました。
「仮想マシンを起動」に進みます。これまで入力してきたコマンドプロンプトに続けて、記事の通りに「vagrant up」を追記しました。(「$」は省いて記しました。)
CeontOSのバージョン7をインストールしたいので、その中で「config.vm.box = "centos/7"」と記述しています。
すると、コマンドプロンプトの続きにダダーっと何行もコマンドが現れて一番下の行に秒読みが表示されました。PCに2回「変更を加えることを許可しますか?」のダイアログボックスが表示され、2回とも「はい」をクリックしました。しばらくすると、コマンドプロンプトのコマンドの動きも止まったので、Cドライブの中身をマウスで確認しました。
上記のように、「.vagrant」ファイルが増えていました。これ↑ を開くと こう↓ なっていました。
この中に「centos7」のファイルが入っていると思ったのですが、「machines」ファイルを開いても、下記のような中身で、どこにも「centos」の文字はありませんでした。
PC>Windows(C:)>ユーザー>ユーザー名>trainimg>vagrant>.vagrant>machines>default>virtualbox
【 ↓ virrualboxファイルの中身】
↑この どれかの中に、「Centos7」が入っているのでしょうか?
見た目では、私にはわかりませんでした。
「仮想マシンにログイン」に進みます。記事の通りにコマンドプロンプトに「vagrant ssh」と追記すると、数秒後に下の行に「 [vagrant@localhost ~]$ 」と表示されました。ログインできたということでしょうか?
コマンドプロンプト上にはコマンドが表示されていますが、PC上には何か該当するウィンドウが開いているというわけではないので、実際にちゃんと動いているのか、いまいちよくわかりません。
何か新しいウィンドウが開くだろうと勝手にイメージしていたので、消化不良な感じがします。
今はやりませんが、記事には続いて「仮想マシンを停止」「仮想マシンの削除」のコマンドも解説されていたので、必要なときにやりたいと思います。
(自分メモ:最終的なコマンドプロンプトの画面=学習用ファイルに記録)
ここで作業を中断し、PCをシャットダウンしました。再びPCを再起動すると、デスクトップに次のように「Oracle VM VirtualBox」のショートカットアイコンが表示されていました。もしかしたらシャットダウンする前にも表示されていたのかもしれません。そのときは気づきませんでした。このアイコンをクリックすると、次のようなウィンドウが開きました。
「training - 中断」となっています。クリックして開いてみます。
「起動」というアイコンがあったのでクリックしました。
すると、コマンドプロンプトに似た黒いウィンドウが現れ、コマンドが次々に表示されて、そして止まりました。
そのウィンドウを「×」で閉じようとすると、次のように表示されました。
ここで「仮想マシンの電源オフ(P)」を選択し「OK」をクリックすると
「training - 電源オフ」になりました。正常に動いているようです。嬉しい!
#おわりに
・Linux環境構築、右往左往しながらかなりの日数(12/13(日)~12/22(火))が経ってしまいました。何とか完了できてほっとしています。
・完了するまでの過程を、正解(?)の道だけではなく、間違った道も合わせて記事に記録したので、読みにくい記事になってしまった気がします。OSS-DB Silverは既にプログラマとして働いている方向けの資格なのか、プログラミング初心者が書いた記事が見当たりません。
環境構築作業に入る前に「OSS-DB Silver 環境構築」等でググっても適当な記事がヒットしなかったので、私のような非プログラマの方に参考にしてもらえたらと思い記事にしました。
・Cent OSについて、調べていると今ちょうどザワザワしている様子です。8が終了するとのこと。今回はサポート終了が8よりも先らしい7をインストールしました。Cent OSで本番サーバを立ち上げちゃダメとか、ファイルはGitで管理せよとか、今の私には理解できない情報が飛び交っています。どんどん学ぶぞー!!
・次は「ソースコードからのPostgreSQLインストール」にチャレンジします。記事にアウトプットしながら進めたいと思います。
#参考
・rzi's diary - 2018/7/21記事「pgAdmin4について」
・Programming Style - 2019/11/29 記事「PostgreSQL アンインストール(Windows編)」
・ねみぎログ - 2018/7/15記事「OSS-DB Silver 合格体験記」
・つれづれテック - 2018/10/2記事「OSS-DB Silver 勉強法」
・エンジニアの入り口 - 2016/6/25記事「【3分でわかるシリーズ】CentOSとは?」
・エンジニアの入り口 - 2019/7/4記事「【ざっくりまとめ】Linuxディストリビューションを比較してみる」
・Developers.IO - 2013/7/31記事 「Vagrantって流行ってるらしいけど何が便利なの?」
・Qiita 「Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する」
・☆ キツネの惑星 -2020/3/27記事 「【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!」
・エン転職 - 2016/11/26記事 「コンパイルって何?」
・エンジニアの入り口 - 2017/2/28記事 【初心者でもわかる】VirtualBoxインストール方法を詳しく!
・エンジニアの入り口 - 2020/8/31記事 「【初心者でもわかる】Linux CentOSのインストール方法まとめ」
・Qiita ページ内リンクの方法