まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

2016/01

これまで MariaDB などの MySQL 系のリレーショナルデータベースばかり使っていたのですが、PostgreSQL を使う機会が増えそうなので、改めて勉強することにしました。

というわけで PostgreSQL を(いつもの CentOS に)インストール・・・しようとしたのですが、1つ問題が生じました。CentOS や RedHat の yum の標準リポジトリに PostgreSQL が含まれているので、yum で簡単にインストールできます。ただ標準リポジトリからインストールできるのは PostgreSQL 8.4 です。より新しいバージョン(9.x)をインストールしたい場合の、その手順を紹介します。

CentOS に yum で PostgreSQL 9.x をインストールするには、まず標準のリポジトリで PostgreSQL がインストールされないように設定を変更しておきます。/etc/yum.repos.d/CentOS-Base.repo をテキストエディタで開き、[base] セクションと [updates] セクション両方に以下の1行を追加します:
  :
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
  :

次に PostgreSQL 9.x 用の yum リポジトリを追加します。以下は 64bit 版での例です:
# yum -y localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm

これで PostgreSQL 9.x をインストールする準備が出来ました。次のコマンドで PostgreSQL 9.4 Server をインストールします:
# yum -y install postgresql94-server

インストール後に、データベース初期化のコマンドを実行する必要があります:
# service postgresql-9.4 initdb

そして PosgreSQL サーバーを起動して、自動起動設定も加えておきます:
# service postgresql-9.4 start
# chkconfig postgresql-9.4 on


ここまでの手順で PostgreSQL サーバーが導入され、サービスとして起動し、利用できる状態になりました。では実際に使ってみましょう。

このインストールの手順の中で postgres という名前のユーザーがシステムに追加されているはずです。まずはこのユーザーのパスワードを設定します:
# passwd postgresql
ユーザー postgres のパスワードを変更。
新しいパスワード: (設定するパスワードを入力、表示されません)
新しいパスワードを再入力してください:(パスワードを再入力)
passwd: 全ての認証トークンが正しく更新できました。

その後、postgres ユーザーに切り替えて、psql コマンドを実行するとコマンドライン環境でローカルの PostgreSQL サーバーに接続します:
# su - postgres
$ psql
psql (9.4.5)
"help" でヘルプを表示します.

postgres=#

この状態から SQL を発行してデータベースやユーザーを作ったり、テーブルを定義したり、問い合わせをしたり、・・・といった一連の作業を行うことができます。

このコマンドライン PostgreSQL 環境から抜ける場合は \q を実行します:
postgres=# \q
$



超っ速!と噂の PHP 7.0 がリリースされました。

というわけで、早速自分の CentOS 6 環境に導入してみました。手順はこんな感じで EPEL -> REMI とレポジトリを追加して yum で導入:
# cd /tmp
# yum -y install epel-release
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm
# yum -y install --enablerepo=remi --enablerepo=remi-php70 php

できたかな?
# php -v
PHP 7.0.2 (cli) (built: Jan  6 2016 15:33:31) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

簡単でした。

Linux で(無料で)使える仮想環境といえば、個人的な利用頻度だと
 KVM > VirtualBox > VMWare (Player)
となるかなあ・・・ KVM は標準機能の一部で実際自宅の仮想環境を構築してます。
各端末にインストールして使う、という意味では VirtualBox と VMWare がありますが、僕自身は対応フォーマットの多い VirtualBox を使うことが多いです。PC では Microsoft VirtualPC も使っているのですが、この VirtualPC 用のディスクも VirtualBox だとそのまま読み込めるというのがデカいです。

で、その VirtualBox を CentOS に導入する手順を紹介します。前回↓VMWare Player の導入手順紹介の際にも触れましたが、VirtualBox 「に」 CentOS を導入する手順の紹介記事は多いのに、VirtualBox 「を」 CentOS に導入する記事はあまり多くなさそうなので、あまり需要がないのかもしれません(苦笑):
CentOS で VMWare Player を使う


前提条件としては前回同様に CentOS に X Windows システムを導入しておく必要があります。

手順としては、VirutalBox の Linux 用ダウンロードサイトから該当ディストリビューションの環境にあったものをダウンロードしてインストールするだけです。CentOS 6 を使う場合であれば互換性のある "Oracle Linux 6" と書かれた所から(CPU のビット数にあうものを)ダウンロードします:
Linux_Downloads

2016012401


この記事を書いている 2016/Jan/24 の時点では 64bit 版としては 5.0.14(ファイル名では VirtualBox-5.0-5.0.14_105127_el6-1.x86_64.rpm)がダウンロードできました。これを rpm や yum でインストールします:
# yum install VirtualBox-5.0-5.0.14_105127_el6-1.x86_64.rpm
  または
# rpm -ivh VirtualBox-5.0-5.0.14_105127_el6-1.x86_64.rpm

インストールが成功すると VirtualBox はメニューの「システムツール」から選択できるようになります。選択して、起動してみましょう:
2016012402


PC 版と同様の VirtualBox の画面が表示されます。新規に仮想マシンを作成したり、既存の仮想マシンのディスクをインポートするには「新規」を選択します:
2016012403


仮想マシンの情報を入力します。ここで新規に作成するのではなく、既存の仮想マシンのディスクを使って作成する場合は「すでにある仮想ハードディスクファイルを使用する」を選びます。また仮想ハードディスクファイルを指定するためにフォルダアイコンをクリックします:
2016012404


ここで仮想ハードディスクファイルを選択します。図のように VirtualBox では VirtualPC の .vhd フォーマットの仮想ディスクファイルがサポートされており、ここから直接指定して開くことが可能です:
2016012405


ためしに VirtualPC で作成した PC-DOS 環境の仮想ディスクファイルを指定して仮想マシンを作成してみました。「起動」ボタンで起動します:
2016012406


ちゃんと PC-DOS として起動し、PC-DOS として動作できるようです(VirtualPC とは違い、EMS は未対応のようです):
2016012407


少なくとも僕の利用スタイルでは CentOS 環境で仮想マシンを使う時は KVM か VirtualBox が便利そうだなあ、という印象です。

「VMWare Player で CentOS を使う」ための情報は溢れていますが、逆の「CentOS で VMWare Player を使う」情報が少なかったのでまとめておきました。RedHat 環境でも同様だと思うので、適宜読み替えてください。


まず CentOS に VMWare Player を使うには X WIndow 環境が前提となります。X Window 未導入の場合は以下のコマンドで事前にインストールしておいてください:
# yum groupinstall "X Window System"

VMWare Player 本体は VMWare のサイトから(非商用であれば)無料で提供されています。Linux 用のモジュールを選んでダウンロードしてください(2016/Jan/22 時点での最新バージョンは 12.1.0 で、Linux 用モジュールのファイル名は VMware-Player-12.1.0-3272444.x86_64.bundle でした):
ダウンロード VMWare Workstation Player

2016012201


ダウンロードしたファイルはシェルで実行可能なインストーラーになっています。X Window 環境内のターミナルからダウンロードファイルを指定して以下を実行します:
# bash VMWare-Player-12.1.0-3272444.x86_64.bundle

VMWare Player のインストーラーが展開されて、インストールウィザードが開始されます:
2016012202


ライセンスに同意して進めていき、インストールを行います:
2016012204


インストールが完了しました!:
2016012205


導入した VMWare Player は CentOS メニューの「システムツール」として登録されているので、ここから起動できます:
2016012206


初回起動時にライセンスの確認が行われます。商用利用の場合はライセンスキーを指定します。非商用利用であればメールアドレスを入力して先に進みます:
2016012207


CentOS 内で VMWare Player が起動しました。ここから先は Windows 版と同様に利用することができます:
2016012208



CentOS に OpenVPN のコマンドラインクライアントを導入する手順を紹介します。


OpenVPN そのものは yum で導入可能ですが、前提として EPEL のリポジトリが必要です。未登録の場合はこのコマンドで EPEL リポジトリを作成しておきます:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

そして EPEL リポジトリから OpenVPN を導入します:
# yum install --enablerepo=epel openvpn

これで導入は完了です。/usr/sbin/openvpn コマンドが導入されたはずです:
# which openvpn
/usr/sbin/openvpn

次に接続の設定を行います。.crt ファイルや .ovpn ファイルが存在する場合はそのまま使います。設定ファイルは /etc/openvpn/ フォルダ以下にまとめてコピーしておきます。ない場合は以下のような内容の接続設定ファイルを作成します(以下は一例です。XX.XX.XX.XX 部分に VPN サーバーのアドレスを指定しています。/etc/openvpn/wasaas-uss.ovpn というファイル名で作成しているものとします):
client
dev tun
proto tcp
remote XX.XX.XX.XX 1194
remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
ca wasaas-uss-ca.crt
cert wasaas-uss-client.crt
key wasaas-uss-client.key
ns-cert-type server
verb 3

接続設定ファイルができたら、そのファイルを指定して OpenVPN クライアントを起動します。なお、このコマンドは VPN 接続中はプロンプトが戻ってこないので、メインで利用するのは別のターミナルを開いて行ってください:
# cd /etc/openvpn
# openvpn /etc/openvpn/wasaas-uss.ovpn

しばらく待つと、以下の様なメッセージが表示されて、VPN 接続が完了したことがわかります(プロンプトは戻ってきません):
  :
  :
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.55.255.64/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.55.255.160/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.45.151.32/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.54.255.192/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.55.4.160/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.55.235.0/27 via 10.255.255.1
Wed Jan 20 17:11:30 2016 /sbin/ip route add 169.45.191.0/25 via 10.255.255.1
Wed Jan 20 17:11:30 2016 Initialization Sequence Completed


この状態で ifconfig コマンドを実行すると、VPN 接続で追加された tun0 デバイスが確認できて、IP アドレスも正しく設定されていることが確認できるはずです:
# ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:356 errors:0 dropped:0 overruns:0 frame:0
          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:228991 (223.6 KiB)  TX bytes:228991 (223.6 KiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.XX.XX.XX  P-t-P:10.255.255.9  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr CC:E1:D5:3E:37:A2  
          inet addr:192.168.0.114  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:627126 errors:0 dropped:0 overruns:0 frame:0
          TX packets:253371 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:272600426 (259.9 MiB)  TX bytes:157587766 (150.2 MiB)

これで VPN 接続ができました。VPN 接続を終了する場合は openvpn コマンドを実行したターミナルで Ctrl+C を実行して、コマンドを終了してください。


このページのトップヘ