RedHatEnterpriseLinuxのVMWare開発サブスクリプションの使い方

仕事でRedHatEnterpriseLinuxを使う際、一時的に動作検証のためにVMWarePlayerでVMを作り、RHELをインストールして使いたい時があります。

 

 

そんな時に使えるのが、開発サブスクリプション。もちろん開発用にしか利用できませんが、yumも使えるし、検証には十分です。そんな手順をまとめてみました。

 

 

 

1. アカウント登録

http://developers.redhat.com/

Registerから登録しておきます。

 


2. RHELダウンロードしインストール

https://access.redhat.com/ja/downloads

ここのメニューから[RedHatEnterpriseLinux]を選んでいきます。バージョンとプラットフォームを選び、インストールメディアISOファイルをダウンロードします。かなり古いバージョンも取得できるようです。

インストールの詳細はここでは割愛します。

 

 

3.  もし社内プロキシ環境などでVMから直接外部へ通信ができない場合は、yumとRHSMのプロキシ設定をします。

  

・/etc/yum.confにプロキシ追加
proxy=http://proxy.xxx.co.jp:8080

※proxy.xxx.co.jpにはプロキシサーバのホスト名を、:8080にはプロキシポート番号を指定します。 

 
・/etc/rhsm/rhsm.conf にプロキシ設定追加
# an http proxy server to use
proxy_hostname = proxy.xxx.co.jp
# port for http proxy server
proxy_port = 8080

 


4. インストールしたRHELyumを有効化します。
# yum repolist
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repolist: 0

 

# subscription-manager register
登録中: subscription.rhn.redhat.com:443/subscription
ユーザー名: [1で登録したユーザ名(メールアドレス)]
パスワード: [1で登録したパスワード]
このシステムは次の ID で登録されました: 999999ZZ-9999-99Z9-ZZZZ-9Z9Z9Z999999

 

# yum repolist
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is registered to Red Hat Subscription Management, but is not receiving updates. You can use subscription-manager to assign subscriptions.
repolist: 0

 


# subscription-manager list --available
+-------------------------------------------+
利用可能なサブスクリプション
+-------------------------------------------+
サブスクリプション名: Red Hat Enterprise Linux Developer Suite
提供: Red Hat Software Collections (for RHEL Server)
Red Hat Container Development Kit
MRG Realtime
Red Hat EUCJP Support (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Server - Extended Update Support
Red Hat Beta
Oracle Java (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux High Performance Networking (for RHEL Compute Node)
dotNET on RHEL Beta (for RHEL Server)
Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended
Update Support
Red Hat Enterprise Linux Resilient Storage (for RHEL Server)
Oracle Java (for RHEL Server)
Red Hat Container Images
Red Hat Enterprise Linux for Real Time
dotNET on RHEL (for RHEL Server)
Red Hat Enterprise Linux Atomic Host
Red Hat S-JIS Support (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Scalable File System (for RHEL Server)
Red Hat Enterprise Linux Resilient Storage (for RHEL Server) - Extended Update
Support
Red Hat Enterprise Linux Atomic Host Beta
Red Hat Enterprise Linux High Availability (for RHEL Server) - Extended Update
Support
Red Hat Container Images Beta
Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update
Support
Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Server
Red Hat Enterprise Linux High Availability (for RHEL Server)
Red Hat Software Collections Beta (for RHEL Server)
Red Hat Enterprise Linux Load Balancer (for RHEL Server)
Red Hat Enterprise Linux High Performance Networking (for RHEL Server)
Red Hat Developer Toolset (for RHEL Server)
SKU: RH2262474
契約: 11303825
プール ID: 8a85f9815a52ae8c015a53cd4d45241c
管理の提供: はい
数量: 1
推奨: 1
サービスレベル: Self-Support
サービスタイプ: L1-L3
サブスクリプションタイプ: 標準
終了: 2018年02月18日
システムタイプ: 物理

サブスクリプション名: Red Hat Enterprise Linux Developer Suite
提供: Red Hat Software Collections (for RHEL Server)
Red Hat Container Development Kit
MRG Realtime
Red Hat EUCJP Support (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Server - Extended Update Support
Red Hat Beta
Oracle Java (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux High Performance Networking (for RHEL Compute Node)
dotNET on RHEL Beta (for RHEL Server)
Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended
Update Support
Red Hat Enterprise Linux Resilient Storage (for RHEL Server)
Oracle Java (for RHEL Server)
Red Hat Container Images
Red Hat Enterprise Linux for Real Time
dotNET on RHEL (for RHEL Server)
Red Hat Enterprise Linux Atomic Host
Red Hat S-JIS Support (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Scalable File System (for RHEL Server)
Red Hat Enterprise Linux Resilient Storage (for RHEL Server) - Extended Update
Support
Red Hat Enterprise Linux Atomic Host Beta
Red Hat Enterprise Linux High Availability (for RHEL Server) - Extended Update
Support
Red Hat Container Images Beta
Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update
Support
Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux Server
Red Hat Enterprise Linux High Availability (for RHEL Server)
Red Hat Software Collections Beta (for RHEL Server)
Red Hat Enterprise Linux Load Balancer (for RHEL Server)
Red Hat Enterprise Linux High Performance Networking (for RHEL Server)
Red Hat Developer Toolset (for RHEL Server)
SKU: RH2262474
契約: 11303825
プール ID: 8a85f9815a52ae8c015a53cd4d7a244f ⇒このプールIDを次のコマンドで使います。
管理の提供: はい
数量: 100
推奨: 1
サービスレベル: Self-Support
サービスタイプ: L1-L3
サブスクリプションタイプ: 標準
終了: 2018年02月18日
システムタイプ: 仮想

 

 

# subscription-manager attach --pool=8a85f9815a52ae8c015a53cd4d7a244f
サブスクリプションが正しく割り当てられました: Red Hat Enterprise Linux Developer Suite

 


# yum repolist
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
rhel-7-server-rpms | 3.5 kB 00:00:00
rhel-7-server-rt-beta-rpms | 4.0 kB 00:00:00
rhel-7-server-rt-rpms | 4.0 kB 00:00:00
rhel-ha-for-rhel-7-server-rpms | 3.4 kB 00:00:00
rhel-rs-for-rhel-7-server-rpms | 3.4 kB 00:00:00
(1/15): rhel-7-server-rpms/7Server/x86_64/updateinfo | 1.8 MB 00:00:04
(2/15): rhel-7-server-rpms/7Server/x86_64/group | 701 kB 00:00:05
(3/15): rhel-7-server-rt-beta-rpms/x86_64/group | 1.7 kB 00:00:01
(4/15): rhel-7-server-rt-beta-rpms/x86_64/updateinfo | 91 B 00:00:01
(5/15): rhel-7-server-rt-beta-rpms/x86_64/primary_db | 13 kB 00:00:01
(6/15): rhel-7-server-rt-rpms/7Server/x86_64/group | 2.5 kB 00:00:02
(7/15): rhel-7-server-rt-rpms/7Server/x86_64/updateinfo | 46 kB 00:00:01
(8/15): rhel-7-server-rt-rpms/7Server/x86_64/primary_db | 77 kB 00:00:01
(9/15): rhel-ha-for-rhel-7-server-rpms/7Server/x86_64/group | 15 kB 00:00:01
(10/15): rhel-ha-for-rhel-7-server-rpms/7Server/x86_64/updateinfo | 55 kB 00:00:01
(11/15): rhel-ha-for-rhel-7-server-rpms/7Server/x86_64/primary_db | 183 kB 00:00:01
(12/15): rhel-rs-for-rhel-7-server-rpms/7Server/x86_64/group | 26 kB 00:00:01
(13/15): rhel-rs-for-rhel-7-server-rpms/7Server/x86_64/updateinfo | 81 kB 00:00:01
(14/15): rhel-rs-for-rhel-7-server-rpms/7Server/x86_64/primary_db | 234 kB 00:00:01
(15/15): rhel-7-server-rpms/7Server/x86_64/primary_db | 33 MB 00:00:36
リポジトリー ID リポジトリー名 状態
rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 13,838
rhel-7-server-rt-beta-rpms/x86_64 Red Hat Enterprise Linux for Real Time Beta (RHEL 7 Server 15
rhel-7-server-rt-rpms/7Server/x86_64 Red Hat Enterprise Linux for Real Time (RHEL 7 Server) (RP 171
rhel-ha-for-rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux High Availability (for RHEL 7 Ser 277
rhel-rs-for-rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux Resilient Storage (for RHEL 7 Ser 343
repolist: 14,644

 

 

5. これでyumが使えるようになりました。試しにリポジトリを検索してみましょう。以下はpostgresの最新パッケージを調べています。
# yum list postgresql

 

 


■参考文献

http://wordpress.honobono-life.info/lin-base/yum-list%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E3%80%81%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3/

https://access.redhat.com/ja/node/321223

http://www.neko-no-me.net/2015/05/12/984/

http://ccrw.co.jp/owned/redhat-developer-suite/

https://oss.sios.com/redhat-ch/blog/developer





 

 

 

CentOS7.2にTomcat7をyumインストールしたが猫が出てくれない

CentOS7.2にTomcat7をyumインストールする際にハマったことを備忘録として残します。

 

 

環境は、ローカルマシン上のVMWare Player12にCentOS7.2を仮想環境として導入し、そこにtomcatを構築しようとしています。yumリポジトリはインストール直後の状態であり、特別なリポジトリを使いません。

 

 

まずはjavaのインストールから。CentOS7.2ではjavaは1.8なんですね。

 

yum install java-1.8.0-openjdk

 

 

 

 

そしてtomcatのインストール。

 

yum install tomcat

 

バージョンを見ると、tomcat 7.0.76-2でした。

 

この状態で、私はてっきりhttp://仮想マシンのIP:8080にアクセスしたらTomcatのいつものネコが出てきてくれるものと思っておりました。

 

しかし、アクセスできませんでした。

/var/log/tomcat/以下にあるlocalhost_accessログを見たところ、そもそもログ出力がなく、リクエストが届いていません。ブラウザ上はタイムアウトしているようです。

 

 

こういう時怪しいのはたいていSELinuxやFirewallなので、両方見てみました。

 

getenforceしたところ、Enforcing、つまりSELinux有効となっていたので、まずこれは

 

setenforce 0

 

と無効化し、念のため/etc/selinux/configの中でDisabledに変更しておきました。

 

さらに、firewalldも起動していたので、停止。

 

systemctl stop firewalld

 

 

再度、http://仮想マシンのIP:8080にアクセス。

しかしブラウザはまた無応答。

再度tomcatlocalhost_accessログを見たところ、今度はログは出力されていましたが、404となっていました。

 

おかしいなと思って、/usr/share/tomcat/webapps配下を見たところ、なんと、なんもありませんではないですか。そりゃ404になるのも当たり前です。

 

昔はtomcatをインストールしたら普通にサンプルディレクトリができてくれていたような気がするんですが、気のせいだったのか。

 

 

で、追加のyumインストール。

 

yum install tomcat-webapps

 

これでtomcatを再起動し、http://仮想マシンのIP:8080にアクセス。

 

やっと猫が出てきました。やれやれ。

 

ちなみに管理コンソールのyumインストールは以下でした。

 

yum install tomcat-admin-webapps

 

 

 

こんな初歩で躓くとは思わなかった。

 

CentOS7.2へのLaravel5.4インストール

CentOS7.2へのLaravel5.4インストールをやってみました。

 

自分のやり方がもしかしたらおかしかったのかもしれないが、いろいろとつまづいたので、備忘録に残します。

 

このやり方も、もしかしたら間違っているかもしれないので、もし変なところがあったら指摘コメントをいただけると幸いです。

 

●まず、CentOSを最小構成でインストールしておく。

 ※環境はVMWare Player上にしました。

 

 

 

SELinuxをOFF

※これやっとかないと、インストール後のブラウザアクセスで500エラーになります。apacheのエラーログに

PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0

PHP Fatal error:  Unknown: Failed opening required '/home/laravel/project/public/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

が出ます。

 

・とりあえずOFF
setenforce 0

・リブート後も反映されるように設定ファイル編集しておく。
vi /etc/selinux/config
disabledに変更し保存
SELINUX=disabled

 

 

●FirewalldをOFF
・とりあえず停止
systemctl stop firewalld

自動起動設定を停止しておく。
systemctl disable firewalld

 

 


●PHP7インストール
通常だとCentOS7.2はPHP5.4が標準インストールされるが、laravel5.4はPHP5.6以上が必要。PHP7をインストールするために、リポジトリを追加する。


yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

・PHP7をインストール。
yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-xml
※この時同時にApacheもインストールされるらしい。

 


●composerインストール
composerを取得し、PATHが通る場所に置いておく。ここでは/usr/localbin。

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

 

 

 

●Laravelインストール

どうもzipが必要らしい。入れておく。
yum install zip unzip

インストールはlaravel用に準備したアカウントで行う。ここではlaravel。
useradd laravel
passwd laravel

apacheがのぞけるようにパーミッションを変更。
chmod 777 /home/laravel


ここでlaravelユーザでログインしなおす

プロジェクトディレクトリを作成し、そこにlaravelをインストール。
mkdir /home/laravel/project
composer create-project laravel/laravel:5.4 /home/laravel/project

 

 


●日本語化
なんだかわからないけど日本語化。

cd /home/laravel/project

composer require laravel-ja/comja5:~1

./vendor/bin/comja5 -f
./vendor/bin/comja5 -a


composer global require laravel-ja/comja5:~1

※ どうも、PHPのソースコメントが日本語化されるっぽい。

 

 

 

デバッグモードがtrueの時にコンパイル済みコアファイル削除
php artisan optimize

※プロジェクトディレクトリの.envファイルの中にあるAPP_DEBUGがデバッグモード。install直後はtrueになっていた。

 

 

 

Apache用にパーミッション変更

chmod -R a+w storage/*
chmod -R a+w bootstrap/cache

 

 

 

Apacheの設定
・ドキュメントルート変更
vi /etc/httpd/conf/httpd

DocumentRoot "/home/laravel/project/public"
<Directory "/home/laravel/project/public">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>


httpdを再起動
systemctl restart httpd

 

・ブラウザでアクセスしてみたら、やっと出た。ここまで来るのにまる1日。実際のサイト作りはまた今度書きます。

 

 

f:id:ponkotsu_engine:20170211164812p:plain

VMWare Playerでプロキシ経由のRubyOnRails環境構築

Ruby on Railsの試験環境をVMWare Playerで作っていて、プロキシ周りでいろいろと躓いたので、備忘録に残しておきます。

 

●やりたいこと

 ・GETリクエストで適当なパラメータを投げたら、それに応じた内容のHTMLを返すこと

 ・投げたパラメータによって、タイムアウトを起こしたり、任意のHTTPステータスコードを返すようにすること

 

 

 

 

VMWare OS環境の準備: CentOS6.7

VMWare PlayerにNAT設定でCentOS6.7がすでにインストールされているものとします。
※VMWarePlayerのNAT設定は、C:\users\all users\vmware\vmnetnat.cnfに記述します。
(例)22番のSSHポートをホストPCの8822に、80番のhttpポートをホストPCの8880ポートにマッピングする場合・・・
8822 = 192.168.58.129:22
8880 = 192.168.58.129:80

反映するためにおそらくPCの再起動が必要です。

 

 


rubyのインストール

・必要なパッケージのインストール
yum -y install readline-devel git gcc zlib zlib-devel openssl openssl-devel sqlite sqlite-devel libffi-devel readline gcc-c++ glibc-headers libyaml-devel


・rbenvインストールに必要なプロキシ設定
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080


・rbenv をインストール(clone)する
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv


・PATH に追加
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile


・.bash_profile に追加
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile


環境変数を有効化
exec $SHELL -l


・rbenvのバージョン確認

rbenv --version
rbenv 0.4.0-74-g95a039a


ruby-build を インストール(clone)する
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build


・プロキシ設定
echo 'proxy = "https://proxy.hogehoge.net:8080/"' >> ~/.curlrc
echo 'http_proxy = http://proxy.hogehoge.net:8080/' >> /etc/wgetrc


ruby-buildのプロキシ設定
vi /root/.rbenv/plugins/ruby-build/bin/ruby-build
http_head_curl() {
curl -qsILf "$1" >&4 2>&1
}
http_get_curl() {
curl -q -o "${2:--}" -sSLf "$1"
※これらの-qオプションを取り除く


ruby の最新版を確認
rbenv install --list
このように表示される。
Available versions:
1.8.6-p383
1.8.6-p420
1.8.7-p249
:
:
2.0.0-p195
2.0.0-p247
2.0.0-p353 ← こいつが2.0系の最新版っぽい
2.0.0-preview1
:


ruby のインストール
rbenv install -v 2.3.0


・再読み込み
rbenv rehash


rubyバージョンを確定
rbenv global 2.3.0


・バージョンの確認
ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]


・テスト用rubyで動作確認
こんな内容でhello.rbを作って動かしてみる。
puts 'Hello, world!'

ruby hello.rb
→Hello, world! と表示されればOK。

 

 


Railsのインストール


gem update --system

gem install --no-ri --no-rdoc rails

gem install bundler

rbenv rehash

・インストールバージョンの確認
rails -v
Rails 4.2.6

 

 

 

Railsアプリケーション作成
・アプリケーションを配置するディレクトリに移動
cd /root/pgm/ruby/testRails


・アプリケーション作成
rails new アプリケーション名(ここではtestRails)


cd testRails

 

 

●WEBricks起動
ここではApacheではなく、Railsに含まれている簡易WebサーバWEBricksを使います。

gem install uglifier

vi Gemfile
gem 'therubyracer', platforms: :ruby ←コメントを外す


bundle install

 


・WEBRicks起動
rails server -p 80 -b 192.168.58.129 ←明示的にIP指定しないとだめです。
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://192.168.58.129:80
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-13 03:42:06] INFO WEBrick 1.3.1
[2016-04-13 03:42:06] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-04-13 03:42:06] INFO WEBrick::HTTPServer#start: pid=70530 port=80


・試しにアクセスしましょう。
http://ホストPCのIP:8880/
アクセスすると、RubyOnRailsのトップページが出ます。
About your application’s environment をクリックすると、インストール環境の情報が見れます。

 

 

●静的コンテンツ
rubyアプリケーションディレクトリのpublicの下に置くと、静的コンテンツとして閲覧可能となります。
/root/pgm/ruby/testRails/public

ログ・・・/root/pgm/ruby/testRails/log/development.log

DB・・・/root/pgm/ruby/testRails/db
RailsでDBを使う場合は、デフォルトはここにSQLiteが配置されます。

 

 

 

●コントローラ作成

rails generate controller testRails

(Railsアプリケーションのルート)/app/controllers/testRails_controller.rbがコントローラ本体に関する記述がされたファイルです。
ここにメソッドを記述していきます。

def launch
arg = params[:rocket]
if arg == "apollo"
render "testRails/apollo"
elsif arg == "shuttle"
sleep(10)              ←タイムアウトをシミュレーションする場合
render "testRails/SpaceShuttle"
else
render "testRails/h2a", status: 500  ←ステータスコードを任意のものにする場合
end
end

 


●ルーティング作成
呼び出しとアクションの紐づけを行います。
(Railsアプリケーションのルート)/config/routes.rb

編集します。下の内容の場合、http://ホスト名/rocket にアクセスすると先ほど作成したlaunchメソッドを動かします。


get 'rocket' => 'testRails#launch'


・WEBRicks起動(※停止するときにはCtrl-Cです)
rails server -p 80 -b 192.168.58.129

もしエラーが出たらrake routes でチェックします。
rake routes
ArgumentError: You should not use the `match` method in your router without specifying an HTTP method.

 


●ビューテンプレートの作成

(Railsアプリケーションのルート)/app/views/testRails

ここにxxx.html.erbファイルを作っていきます。
testRails_controller.rbで"testRails/apollo"と記載しましたので、
apollo.html.erbで適当なHTMLテンプレート等を作成します。jsonをレスポンスとして返したいのならjsonファイルをそのまま置けばいいです。

 

これで、
http://ホスト名/testRails?rocket=apollo
http://ホスト名/testRails?rocket=shuttle
にアクセスすれば、それぞれ作成したViewテンプレートで表示されるはずです。

 

 

 

一番躓いたのは、プロキシでした。なかなか社内環境でプロキシがないところって、ないですからね。ちゃんちゃん。

 

 

 

 

Windows2003でLDAPS通信

Windows2003ServerでLDAP over SSLを行う。ldapはAD問い合わせにも使えるプロトコルだ。ADのユーザやグループを問い合わせたり、ldap認証リクエストをやりとりする。しかし、ldapのままでは暗号化されていないため、たとえば認証などに使うとなるとまずいし、問い合わせ結果応答には重要な個人情報なども含まれるため、実際に業務で使う場合にはSSL化は必須だ。今日はこれをWindows2003で行う段取りについてのお話。

 

SSL化するためには証明書が必要になる。Windowsで手軽にオレオレ証明局を立てればよい。Windows2003サーバーで証明局を立てる場合には証明書サービスをインストールする。

Windows2008だとAD CAサービスだったかな。しかし2003を使っている企業もまだまだ多い。ここでは2003のCAで苦労した点をいくつかまとめる。

 

 

CAにはいくつか種類がある。

 

・エンタープライズのルートCA

・エンタープライズの下位CA

スタンドアロンのルートCA

スタンドアロンの下位CA

 

エンタープライズは、アクティブディレクトリが必須だ。エンタープライズCAを構築すると、そのドメインに参加しているコンピュータに自動的にそのルート証明書がクライアントのログイン時に配布される。ユーザはなにもしなくても自分のクライアントマシンのルート証明書ストアにCA証明書が勝手に放り込まれる。スタンドアロンCAにはこの機能はない。

 

ではスタンドアロンCAは役に立たないのかと言うと、そんなことはない。単純な話、ドメインコントローラのない環境でも使えるということだ。ドメインコントローラは組んでないけどADサーバを立てている環境などではこちらが使える。ただし証明書の自動配布などはしてくれないが。

 

 

今回はエンタープライズCA。ドメインコントローラをプライマリとバックアップで冗長化しているケース。

 

証明書サービスのインストールは、コントロールパネルのプログラムの追加と削除から実行する。インストールを実行するユーザはAdministratorだ。たしかNetworkAdminかDomainAdminである必要があったような気がするが詳細は忘れた。プログラムの追加と削除を開き、Windowsコンポーネントのインストールをクリックすると、インストールが始まる。

 

CAの種類の選択、ここではエンタープライズのルートCAだ。次に、証明局(CA)のCommonNameを指定する。ほとんどの場合はドメインFQDNを指定すればいいだろう。たとえばドメインが[example.com]だったら、そのまま[example.com]でよい。というか、CNは見分けがついて他と重複していなければなんでもよい。さらに、ここで証明局の有効期間を指定するのだが、なるたけ長期間にした方がよい。思い切って99年とかでもよい。普通の証明書は長くても2,3年くらいが普通だが、このインストール時に指定する期間は「CAとしての期間」なので、これが短いと話にならない。

 

インストール中にはインストールメディアをドライブに入れておく必要がある。ここでよくあるのが、SP(ServicePack)のバージョンによるエラーだ。Windows2003ではSP2まで出ているが、SP1購入しWindowsUpdateでSP2を適用したような場合には、SP1のメディアしかない。そうすると、インストールの途中で、

 

「XXXXXのファイルが見つかりません」

 

といったエラーに出くわす。こういう場合に役立つのが、SPダウンロードだ。ここでは現時点で普通にMicrosoftのサイトから入手できるものを例に説明する。

 

http://www.microsoft.com/ja-jp/download/details.aspx?id=41

 

まずここからSPのexeをダウンロードする。その後、コマンドラインから

WindowsServer2003-KB914961-SP2-x86-JPN.exe -x

と入力しコマンド実行すると、ファイルを展開だけしてインストールまではやらない展開モードで起動してくれる。展開先を指定し実行すると、そこにi386という名前のフォルダが生成され、その中にServicePackの全ファイル群が解凍される。

 

これを準備しておいて、先ほどの証明書サービスインストール途中で「xxxxxxのファイルが見つかりません」のダイアログが表示されたら、そこで展開したi386のフォルダを指定してやる。すると、ほとんどの場合、そこに「xxxxx.xx_」とファイル名末尾がアンダーバーになっているファイルがあり、それが目的のファイルだ。これで99%解決するだろう。

 

 

証明書サービスがインストールされると、その時点ですでにエンタープライズルートCAのサービスが立ちあがっている。ここでクライアントPCがそのドメインにログオンすると、裏で自動的にADがクライアントPCにルート証明書を配布してくれる。

 

ルート証明書とは何か?詳細は証明書のサイトを見てもらえばいいが、証明書は信頼のつながりで成り立っている。A社はB社にA社の信頼性を保証してもらい、B社はさらにC社にB社の信頼性を保証してもらう。こうしてトラストツリーが出来上がるわけだが、その頂点にいるのがルートCAだ。ルートCAにはその上がない。行き止まりだ。だからルートCAは絶対に信頼できるものでなければならない。世界でもその数は限られていて、サイバートラストやベリサインが有名だ。しかし、わざわざお金をかけてまで保証していらんという場合には、自己証明つまりオレオレCAもありだ。商用でECなどに使うことはできないが、たとえばADでLDAP認証通信をSSL暗号化するLDAPS(Ldap over SSL)に必要なサーバー証明などの場合には、オレオレでも十分だ。

 

Windows2003でLDAPSを実現する場合、ひとつ注意しなくてはならないことがある。それは、証明書サービスをインストールしてCA証明書ができあがるだけではダメで、サーバーの再起動が必要ということだ。

 

Windows2003では、ActiveDirectoryのDomainServiceがサービスとしてOSから分かれていない。そのため、ActiveDirectoryに紐づけた証明書をDomainServiceは認識してくれない。再起動しない限り、そこにある証明書に気づいてくれないのだ。

 

再起動すれば、LDAPS通信ができるようになる。確認するためには、ldp.exeというツールが便利だ。これは単純にOSインストールした状態では存在しないものだが、Windows 2003 Serverのサポートツールをインストールすれば、C:\Program Files\SupportTools\配下にインストールされる。ちなみにサポートツールはインストールメディアのSUPPORT\TOOLS配下にインストーラがあり、特にどこかからダウンロードしたりする必要はない。

 

インストールしたらldp.exeを起動しよう。2003の場合は英語メニューだったような気がする。メニューのConnectionからConnectを選択し、ホスト名にlocalhost、ポート番号は636、SSLにチェックをつけてOKクリックすると、特にエラーが出なければ正常にLDAPS通信ができている。もし何らかの問題があって通信できない場合にはエラーダイアログが出るだろう。その場合は、サーバー再起動を忘れていないか、あるいはファイアウォールで636を閉じていないかなどを確認することになるだろう。

 

 

なお、再起動すると、再起動前にはなかった証明書がひとつ増えている。mmcの証明書スナップインで確認できる。ファイル名を指定して実行でmmc実行し、スナップインの追加で「証明書」、コンピュータアカウントのローカルコンピュータの証明書を選び、スナップインに追加する。ここで「個人」の証明書ストアを見てみよう。名前がそのサーバのFQDNになっている証明書がひとつ増えているはずだ。その有効期限を見てみよう。1年間になっているはずだ。Windowsの証明書サービスでは、発行するサーバー証明書の有効期限はデフォルトで1年になっている。この値はレジストリ変更で変えることも可能だが、それはまた今度にしよう。

 

 

 

 

vmware playerにCentOS 6.2をインストール

仕事でLinuxを使うことになった。Linuxは学生時代によく使ったが、それ以来長いことあまりメインで使うことはなく、家で気が向いたときにちょっと触る程度だったので、ちょっと不安があった。

久しぶりに環境を構築するかとやってみたら、まあ世の流れの速い事よ。VMWareは無償版が普通に入手できるようになっているし、FedoraCentOSとかいうのに変わってるし。

というわけで、我が家のWindows7-64bitマシンに、VMware Player4.0をインストール。vmware playerのダウンロードにはvmwareへの登録が必要。

http://www.vmware.com/jp/products/desktop_virtualization/player/overview.html

インストールは、普通にダウンロードしたexeを実行してイエスマンになれば難なく完了。ただし、CPUが対応していないぞとか叱られる場合もある。Pentium4とかだとVMwarePlayer4が動かないようで、そういう場合には、VMwarePlayer3.4あたりを持ってくればよかろう。

そして今度はインストールするLinuxのDVDイメージファイルを取得する。今回は現時点でCentOS最新の6.2を理研ミラーサイトから持ってきた。

ftp://ftp.riken.jp/Linux/centos/6.2/isos/x86_64/
CentOS-6.2-x86_64-bin-DVD1.iso

ISOファイルがたくさんあるが、Live~とかファイル名についてるやつは、HDDインストールタイプではなくCD上で起動するタイプなので要注意。bin~のやつを選ぶ。ちなみにうちは64bitマシンなので、アーキテクチャx86_64となる。もし32bitならi686になるはず。

ダウンロードしたら、いよいよvmware playerを起動する。

・「新規仮想マシンの作成」をクリック

20120704002627

・先ほどダウンロードしたCentOSのインストーライメージを使って、直接イメージからインストールすることができる!昔はわざわざフロッピー作ってたのに・・・時代を感じます。

ここで、なにやら「簡易インストール」という文字が表示されています。一部のLinuxにだけ対応しているようですが、とにかくインストールが開始されたら完全に全自動で全てやってくれる、恐ろしく親切なモードです。ちなみにCentOS6.2のイメージインストールでは、簡易インストール以外のインストールが出来ませんでした。まあ、困りゃしないんだけど、昔インストールに苦労した時代を知っているので、なんとなく複雑な気分。

20120704002628

・初期ユーザアカウントを作ります。これ、管理者(root)権限ユーザになるので要注意です。rootはrootで別に作られまして、なぜかここで設定したパスワードがこのアカウントにもrootにも適用されます。いいのかこれで本当に。

20120704002629

・マシン名を適当につけます。これはホスト名ではない、単にvmware上での識別名だし後でなんぼでも変えられるので問題なし。

20120704002630

・インストールした後のOS仮想ディスクを1ファイルとして持たせるか、複数分散させるか。私はコピーが楽だという理由で1ファイルにするようにしていますが、実運用でどっちがいいのかは知りません。誰か知ってたら教えてください。

20120704002631

・ここで「ハードウェアをカスタマイズ」してみましょう。

20120704002632

・ここでは割り当てるメモリやCPUを変えることができます。メモリは沢山あればあるに越したことないけど、うちは8GB積んでて今後vmware上でたくさん動かす予定なので、とりあえずこいつには1GB割り当てました。

20120704002633

・そしてプロセッサつまりCPU。最近のintel系は物理的にCPUチップが1つでも、中身はコアが複数あるのが普通なので、自分のマシンのCPUに合わせて、ここは増やしたら楽しいかも。うちは8コアなので2つ割り当ててみました。

20120704002634

・あと重要なのはネットワーク。vmware playerはデフォルトではNATになる模様。宅内ではきちんと1マシンに1つのプライベートアドレスを割り当てたいので、うちはNATではなくブリッジに変更。

20120704002635

・これでパラメータ設定は完了。

20120704002636

・「完了」を押したら、インストールが始まります。

20120704002637

なんと・・・インストール中になにも聞かれません。あれ、ホスト名は?IPアドレスは??ネットマスクは??インストールするパッケージは???勝手にどうしてくれるの??VMWare Toolsは???すげーというかなんというか・・・これに頼っていたらエンジニアとしてはダメかも・・・

20120704002638

20120704002639

・そんなこんなで、気がついたらXウィンドウのログイン画面。ここでひとつささやかなオチがある。

 昔はXというと、/etc/X11R6/配下のややこしいxinitrcなどを編集したりしたものだが、Cent6.2はインストールしたらもう完全に普通にXが使える。で、このままログインすると、ウィンドウマネージャとしてはGNOMEが起動するのだが、メニューが全て英語。英語得意な人はいいけどオレはダメなので、昔なら環境変数LANG=ja_JP.eucかなんかしたところだが、Cent6.2では、このログイン画面でそれを切り替えられる。

20120704002640

20120704002641

・さて、ログインしてktermを立ち上げようかなと思ったら、メニューにそれっぽいのがないので、デスクトップで右クリックしてみたら、「端末の中に開く」とある。まさかこれかと思ったらこれだよ。ps -eで見たら「gnome-terminal」というのがあったので、たぶんこれだろう。早速起動。

20120704002642

あれ。なんかプロンプトに「デスクトップ」とカタカナで表示されてる。これってもしかして、カレントディレクトリ名称がカタカナってことか?

20120704002643

ってPWDコマンドで確認したら間違いない。念のため自分のホームディレクトリをls -Faしてみると・・・

20120704002644

ほかにもたくさんある~・・・・・なんとまあ、昔のLinuxなら日本語フォルダ名称は禁じ手だったのに。

うまく扱えるようになったのかね。そういや、LANGはUTF8になってました。マルチバイトに強くなったんだね。

・さて、ではインストールされているパッケージを見てみる。

と、ここでつまづいた。rpm -qa | moreをやりたかったのだが、コマンドリダイレクトの「|」が打てない。キーボードの設定だ。たぶんjp106ではない設定になっているんだろう。ここで昔なら/etc/X11R6/xinitrcなどを見たりしたような記憶があるが、今はもう違う。普通に画面で見て設定変更できる。

20120704002646

今日はこんなところにしておこう。明日はインストールパッケージの確認をしようっと。





やっとできたshutdown / startup!!!

shutdownについて、大きく理解が進展。

まず、WindowsマシンにおけるOracleインスタンスについて。

こちらのサイトが非常に参考になった。
http://www.shift-the-oracle.com/config/startup-oracle.html

Windowsマシンでは、Oracle.exeはサービスのプロセスとして存在する。そのプロセスの中で、インスタンスは1つのスレッドとして存在するらしい。つまり、Oracleサービスが立ち上がっている状態で、インスタンスをスレッド起動したり停止したりする。なので、サービスが起動していなければ、インスタンスは起動できないし停止もできない。

先日、shutdownを実行したのに、なぜかサービスは起動したままだった、というのは、このことだったのだ。




そしてもうひとつ。
sqlplusからshutdownを実行した時の動作について。

コマンドプロンプトから

shutdown normal

とすると、画面が固まり、受け付けなくなってしまった。
同時に別コマンドプロンプトを開いてsqlplus接続しようとすると、リスナーが新規接続を拒否しているエラーが出て接続すらできない。

なんででしょうと職場のDBAに聞いたら、一発で解決した。

shutdown には、normal、transactional、immediate、abortの4種類のオプションがある。詳細は上記のサイトに譲るが、ようは、normalだと、生きているセッションがある限り、shutdownシーケンスが始まってくれないのだ。

夜間バッチなどで普通に使用するのは immediate だという。
ためしにやってみた。

 SQL> conn sys/password@orcl as sysdba
 接続されました。
 SQL> shutdown immediate
 データベースがクローズされました。
 データベースがディスマウントされました。
 ORACLEインスタンスがシャットダウンされました。
 SQL>

ちゃんと制御が戻ってきました!!

では、今度はstartupをやってみよう。

 SQL> startup
 ORA-12528: TNS:リスナー: 該当するインスタンスはすべて、新規接続をブロックしています
 SQL>

うーむ。また壁にぶつかった。さっきのサイトを見てみる。

startupは、OS認証でと書いてある。ああなるほど。つまりインスタンスはアイドル状態にあるから、インスタンス認証はできない、つまりOracleのsysでは接続できないってことだ。当たり前っちゃ当たり前だね。

というわけで、OS認証つまり、Win2000Serverの管理者権限でログインをしてみる。

 D:\>sqlplus /nolog
 SQL*Plus: Release 10.1.0.2.0 - Production on 日 9月 11 10:47:22 2011
 Copyright (c) 1982, 2004, Oracle. All rights reserved.
 SQL> conn Administrator/password as sysdba
 ERROR:ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました
 SQL>

ネットワーク系のエラーが出た。もしかして、別マシンからログインしようとしてるからかな。試しにサーバにログインしてやってみる。


 C:\>sqlplus /nolog
 SQL*Plus: Release 10.1.0.2.0 - Production on 土 9月 10 18:45:45 2011
 Copyright (c) 1982, 2004, Oracle. All rights reserved.
 SQL> conn Administrator/password as sysdba
 Connected.
 SQL>

やったね!うまくいきました。これでstartupしてみよう。

 SQL> startup
 ORACLE instance started.
 Total System Global Area 171966464 bytes
 Fixed Size 787988 bytes
 Variable Size 145750508 bytes
 Database Buffers 25165824 bytes
 Redo Buffers 262144 bytes
 Database mounted.
 Database opened.
 SQL>

やった〜!!!!!
やっとできました。

なるほどね。Windows環境においては、Oracleのサービスは起動したままで、OS管理者権限でsqlplus接続した状態で、shutdown または startup を実行する、ってことですね。

次は、startupの各ステージである、unmount, mount, open それぞれでなにがどう進んでなにが出来てなにが出来ないのかを試してみようと思っています。