MNPしました.

約12年間お世話になった携帯キャリアを解約,MNPして.念願のiPhone4Sをゲットしました.

秋には新しいiPhoneが出るというのに,なんでこの時期なの? というお声が聞こえてきそうですが,色々と理由があるのです...

まず,これまでは,ガラケーとスマホ(Galaxy S)の2台持ちをしておりました.
ガラケーのキャリアはdocomoで,SSプランのファミ割りMAX50(980円),iモード(315円)とパケホーダイダブル(390円)で月額約1,700円弱の,パケットはほとんど使わず,家族とのメール利用(無料)のみ.
そしてスマホの方は,日本通信のイオンSIM(100kbps)の利用のデータ通信のみで,月額約1,000円弱の,合計月額約3,700円で過ごしていました.

2台持ちは,このようにとてもリーズナブルです.
Galaxy Sもちょうど去年の夏頃,型落ちの8,000円(ポイントも使って)で購入しました.
ただ,色々と不満がありました...

【理由1】2台持ちは面倒くさい.

当たり前ですが,ガラケーとスマホを常に一緒に持ち歩かなくてはならず,これに財布を併せるとジーンズのポケットを占領してしまいます.
また,どちらかを持っていくのを忘れたり,とにかくスマートではないですね.
でも,ガラケーの方は電池の持ちがいいので,電池切れで電話ができないというトラブルはなかったです.

【理由2】通信速度が遅い.

イオンSIMは通信速度100kbpsですので遅いのはわかりますが,昔56kのモデムでネットにつないで利用していた時代を過ごした者としては,ISDNの64kより速いではないか!ということで,楽にみていたのですが,実際は100kも出ていない感じで,とても遅い...
Twitterやメールの使用は何ら問題はないですが,マップやWebは遅かったですね.
マクドナルドのレジの前で,見せるクーポンが表示されるまでに時間がかかって焦ったことがあります.
あと,その前に同じ日本通信でも,b-mobile Fair(FOMA速度制限無しの120日間,1GBまで)を使っていたので,なおのこと遅く感じていたのです.
でもFairと違って容量縛りがないので気持ち的には楽でしたが...

【理由3】GPSがてんでだめ.

これは機種にもよるのかもしれませんが,GPSの示す現在地と実際の位置の誤差が30〜50mはありました.
田舎にいるときは別にこれでも良いのですが,このせいで天神や銀座で道に迷ってしまいました.
今,使用しているiPhoneは正確な位置を示してくれて,本当にストレスがありません.

【理由4】いきなりフリーズ,いきなりリブート

まあ,フリーズすることは日常茶飯事ですが,この前スマホを職場に置いたまま家に持って帰るのを忘れたと思い,家でくつろいでいると,いきなり仕事用カバンからGalaxyの起動音がして,まるでGalaxyが「ココよー」って言っているかのように,リブートしてくれました(笑).
就寝中にリブートしてくれたこともあります.

...というような不満な理由が数々ありまして,
そこにきて,ちょうど「ファミ割りMAX50」の更新月になってしまったのです.
そう,今解約すれば高い解約金(約1万円弱)を払わずにすみます.
でも,私の場合docomoに10年以上契約したことになっているので,そのまま「いちねん割引(50%割)」となり,1年縛りの解約金3,150円になるので,もうちょっと先延ばししても良いかなとも思いましたが....

 ・docomoからはiPhoneはしばらく(おそらくずっと)出ない
 ・WWDC2012で,新しいiPhoneの発表がなかった
 ・今,ちょうどiPhone4Sが安い

ということで,じゃあ,いつ買うの...今でしょ!ということで,今度は家族との相談です.
これまでずっとdocomoの家族間無料の恩恵を得ていたのでどうかなと思っていましたら,あっさりOK!優しい奥さんです.

では,iPhone4Sにするということで,今度はキャリアをどうするかということになり,月額料金が安いSoftbankにするか,つながりやすいauにするか...と,これは迷いました.

なるべく月々の負担は減らす方向でということで,機種本体は一括で買おうと決めていたので,後はできるだけ月額料金を安くしたいと考えていました.
そこはSoftbankが,まず定額パケット料金が安いし,今なら基本料金もタダということでこれは圧倒的だと思いました.
しかし色々調べてみるとやはり電波の問題が....家族を持つ身としては,もしものときに電話がつながらない事があってはならないという大前提があります.
プラチナバンドを取得したといっても,すぐ田舎でつながりやすくなるということは期待できません.ということで,月額料金が少し高いですがauに決めました.

契約はヤマダ電機で,21,000円引き+ヤマダポイント20,000円分付きで,16GBモデルが実質1万円.これを一括で購入.そして月額料金は...

SSシンプル(980円)+IS NET(315円)+ISフラット(5,460円)=6,755円で,それから,毎月割(-2,140円)を引いて,ユニバーサル料5円をプラスすると,計4,620円となります.

毎月5千円弱ならなんとかなりそうです.無料通話分(1,050円分)も付いていますし...
2年間という制約ですが,2年後になればSoftbankの900MHz帯も安定してきているでしょうし,LTEが本格的になれば,3G側は若干安くなる?でしょうし,新しいiPhoneもお手頃になると思いますので,そのときはまたMNPです.

ということで,新しいiPhoneを待たずに,iPhone4Sを購入した訳ですが,とても快適です (^_^)

CentOSサーバ構築 Apache,PHPセットアップ

やっとここまできました...

ここでは,Webサーバを構築し,PHPスクリプトを利用した動的ページが利用できるまでの環境を構築していきます.

まずは,オープンソースのWebサーバソフトウェアであるApacheをインストールします.
CentOSでは,「httpd」パッケージをインストールします.

01. 一般ユーザでログインしている場合は,suコマンドでrootになります.

$ su -
パスワード入力:

02. yumコマンドで,httpdをインターネット経由でインストールします.

# yum install httpd

※依存するパッケージも合わせて3つほどダウンロードされます.
 「Is this ok [y/N]:」と聞いてくるので「y」を入力してEnterキーを押します.

※「Complete!」と出ればOKです.

03. Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を書き換えます.
  まずは.オリジナル(既存)の設定ファイルの複製をとっておきます.

# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.ORG

viエディタを使用して一部修正します.ServerNameの設定を変更します.

# vi /etc/httpd/conf/httpd.conf

[/etc/httpd/httpd.conf の内容(抜粋)]

 :
#ServerName www.example.com:80
ServerName 192.168.56.102:80
 :

04. Apache(httpdデーモン)の自動起動設定を行います.
 まずは,MySQLの時と同様に現在の起動設定状況をチェックしてから変更します.

# chkconfig --list | grep httpd
httpd     0:off     1:off     2:off     3:off     4:off     5:off     6:off

自動起動をONに設定します.

# chkconfig httpd on
# chkconfig --list | grep httpd
httpd     0:off     1:off     2:on     3:on     4:on     5:on     6:off

05. それではApache(httpdデーモン)を手動で起動します.

# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ]

06. ここで,別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.

URLとして「http://192.168.56.199/」を入力(IPアドレスはそれぞれ設定した仮想マシンのIPアドレスを指定)

→おそらく失敗します(接続できない).

07. (仮想マシン内部の)ファイアウォール設定を確認します.

# iptables -L

[iptablesコマンドの結果]

Chain INPUT (policy ACCEPT)
target     prot opt source       destination        
ACCEPT     all  --  anywhere     anywhere      state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere     anywhere           
ACCEPT     all  --  anywhere     anywhere           
ACCEPT     tcp  --  anywhere     anywhere      state NEW tcp dpt:ssh
REJECT     all  --  anywhere     anywhere      reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source       destination        
REJECT     all  --  anywhere     anywhere      reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source       destination

※現在のポリシーとしては,受信としてicmp(pingなどに利用)とsshのプロトコルだけAcceptで,
 後はRejectとなっています.よって,httpプロトコル(ポート80番)をAcceptするようにします.

08. 設定ファイルの確認
  ファイアウォール(iptables)の設定ファイルは,「/etc/sysconfig/iptables」です.

# cat /etc/sysconfig/iptables

[/etc/sysconfig/iptables の内容]

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

※これを直接エディタで編集し,iptablesのサービスを再起動させても良いのですが,もっと簡単なツール(system-config-firewall-tui)があるので,今回はそちらをインストールして利用します.

09. ファイアウォール設定ツール for テキスト版UI(system-config-firewall-tui)のインストール

# yum install system-config-firewall-tui

10. system-config-firewall-tuiによるファイアウォール(iptables)の設定

# system-config-firewall-tui

まず,最初の画面で,Firewall: [*] Enabled となっているのを確認して,「Customize」をTabキーで選択してEnterを押します.

この画面で,「SSH」がONになっているのを確認し,「WWW(HTTP)」を新たにONします.
その後,順に「Close」→「OK」→「Yes」としていくと,自動的にサービスが再起動して,設定が有効になります.

11. 再度,ファイアウォール設定を確認します.

# cat /etc/sysconfig/iptables
# iptables -L

12. 改めて,別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/」を入力


※Apacheのテストページが表示されればOKです.

13. Webサーバが無事に動作することを確認したら,今度はPHPの環境をインストールします.
  インストールするパッケージは,以下の通りです.
  ・php … PHP本体
  ・php-mysql … PHPからMySQLにアクセスするためのモジュール
  ・php-mbstring … PHPでマルチバイト(MB)文字列を利用するためのモジュール

  yumで一度に入れてみます.

# yum install php php-mysql php-mbstring

※これら3つとは別に,これらに依存するパッケージ(モジュール)が3つインストールされます.

14. PHPの設定ファイル「/etc/php.ini」を編集します.
  編集する前に,オリジナルファイルを複製しておきます.

# cp -p /etc/php.ini /etc/php.ini.ORG
# vi /etc/php.ini

[/etc/php.ini の内容(抜粋)]

 :
;;display_errors = Off
display_errors = On  ← エラーがあった場合,Webブラウザにその表示をすることを許可
 :

その他の設定ファイルを確認だけしてみます.

# cat /etc/php.d/mysql.ini

[/etc/php.d/mysql.ini の内容]

; Enable mysql extension module
extension=mysql.so
# cat /etc/httpd/conf.d/php.conf

[/etc/httpd/conf.d/php.conf の内容(抜粋)]

#
# PHP is an HTML-embedded scripting language which attempts to make it
:
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
:
AddHandler php5-script .php
AddType text/html .php
:
DirectoryIndex index.php
:

15. PHPの実行確認のため,簡単なPHPスクリプトを埋め込んだページを作成してみます.
 ファイル名は「info.php」とし,Webサーバのドキュメントルートである「/var/www/html」ディレクトリに保存します.

# vi /var/www/html/info.php

[/var/www/html/info.php の内容]

<html>
<body>
<h1>info.php</h1>
<?php
    phpinfo();
?>
</body>
</html>

16. PHPをインストールしたことで,Apacheの設定ファイルを読み直す必要があるので,httpd(Webサーバ)を再起動します.

# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

17. 別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/info.php」を入力

 次のように,PHPの関数「phpinfo()」が出力する結果(PHPの設定状況)が表示されればOKです.

【以下,研究室ゼミ専用です】

18. 次に,PHPで動作するMySQLのGUIツール(WebMySQL)をインストールします.
  パッケージファイル(webmsl_4.21J.zip)は,研究室共有サーバHuygens@workの中にあります.

  各自適当に,ホストマシン(Mac)のデスクトップにコピー(ダウンロード)してください.

19. ここで一旦,仮想マシンとの接続を切ります.

# exit
$ exit
logout
Connection to 192.168.56.199 closed.

20. ホストマシンのデスクトップ上にある「webmsl_4.21J.zip」ファイルを,仮想マシンのadminのホームディレクトリにSCPコマンドを使って転送します.SCPはSSHを利用したコピーで,リモートホストに任意のファイルを転送することが可能です.

まずは,ホストマシン上のデスクトップへカレントディレクトリを変更します.

$ cd ~/Desktop/

SCPコマンドを実行します.最後の「:(コロン)」は忘れずに!

$ scp webmsl_4.21J.zip admin@192.168.56.199:
admin@192.168.56.199's password: 

21. 無事に転送されたか,再度SSHでログインして確認してみます.

$ ssh admin@192.168.56.199
admin@192.168.56.199's password: 

$ ls
webmsl_4.21J.zip

※ちゃんと転送されていますね.

22. 転送されたZIPファイルを「/var/www/html」へコピーして展開します.
  権限のあるrootに変更してから,コピー操作をします.

$ su -
パスワード:
# cd /var/www/html/
# cp /home/admin/webmsl_4.21J.zip .

23. ZIPファイルを解凍(展開)します.

# unzip webmsl_4.21J.zip 

Archive:  webmsl_4.21J.zip
   creating: webmsl_4.21J/
  inflating: webmsl_4.21J/.DS_Store  
   :
  inflating: __MACOSX/webmsl_4.21J/._user_check.php  
# ls
info.php  __MACOSX  webmsl_4.21J  webmsl_4.21J.zip

24. 余計なディレクトリや必要なくなったZIPファイルを削除 (remove)します.

# cd /var/www/html
# rm -rf __MACOSX
# rm webmsl_4.21J.zip

25. ディレクトリ「webmsl_4.21J」へのシンボリックリンクを張ります.

# ls
info.php  webmsl_4.21J

# ln -s webmsl_4.21J webmsl
# ls -l

[lsコマンドの結果]

-rw-r--r-- 1 root root   69 Jun 15 13:48 info.php
lrwxrwxrwx 1 root root   12 Jun 15 13:58 webmsl -> webmsl_4.21J
drwxrwxrwx 5 root root 4096 Nov  3  2010 webmsl_4.21J

※これで,エイリアス「webmsl」で実体「webmsl_4.21J」アクセスできるようになります.

26. WebMySQLの設定ファイル「html_start.php」を編集します.

# cd webmsl
# vi html_start.php

[/var/www/html/webmsl/html_start.php の内容(抜粋)]

:
//MySQLフォルダ
//define("MySQL_F", "/usr/local/mysql/bin/");//for MacOSX(個別インストール)
//define("MySQL_F", "/usr/bin/");//for MacOSX(組み込み)
define("MySQL_F", "/usr/bin/");//for Linux       ← これだけを有効にし,他をコメントアウトします.
//define("MySQL_F", "D:\\MySQL\\MySQL Server 5.0\\bin\\");//for Windows
//define("MySQL_F", "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\");//for Windows

//許可するリモートアドレスの一覧
$permit_adr="127.0.0.1";
$permit_adr.=", 192.168.56.1"; ← 変更
:

27. 別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/webmsl/start.php」を入力

Login-ID」はMySQLの管理者である「root」を,そしてrootのパスワードを入力して「Enter」をクリック


※MySQLのデータベース(テーブル)をブラウザで操作できるようになります.

CentOSサーバ構築 MySQLサーバインストール

それでは,オープンソースのリレーショナルデータベース管理システム(DBMS)であるMySQLをインストールします.

CentOSでは,MySQLのサーバ(デーモン)である「mysql-server」パッケージとMySQLのクライアントコンソールである「mysql」パッケージをインストールします.

01. 一般ユーザでログインしている場合は,suコマンドでrootになります(sudoで操作しても良いです).

$ su -

02. yumコマンドで,mysqlとmysql-serverをインターネット経由でインストールします.

# yum install mysql mysql-server

  ※依存するパッケージも合わせて5つほどダウンロードされます.
   「Is this ok [y/N]:」と聞いてくるので「y」を入力してEnterキーを押します.

  ※「Complete!」と出ればOKです.

03. MySQLサーバの設定ファイル「/etc/my.cnf」を書き換えます.
  まずは.オリジナル(既存)の設定ファイルの複製をとっておきます.

# cp -p /etc/my.cnf /etc/my.cnf.ORG

viエディタを使用して,次の文を挿入します.デフォルトの文字エンコーディングを「UTF-8(utf8)」にします.

# vi /etc/my.cnf

[/etc/my.cnf の内容]

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8  ← 追加

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]          ← 追加
default-character-set=utf8  ← 追加

04. MySQLサーバ(デーモン)の自動起動設定を行います.まずは,現在の起動設定状況をチェックします.

# chkconfig --list | grep mysqld
mysqld    0:off     1:off     2:off     3:off     4:off     5:off     6:off

  
すべてのランレベルでoffとなっています.
それではonにしてみます.

# chkconfig mysqld on

再度チェックします.

# chkconfig --list | grep mysqld
mysqld    0:off     1:off     2:on     3:on     4:on     5:on     6:off

ランレベル(2, 3, 4, 5)でonになっています.

05. それではMySQLサーバを手動で起動します.

# /etc/init.d/mysqld start
Starting mysqld:                                           [  OK  ]

06. MySQLのセキュア設定を行います.

# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
:
Set root password? [Y/n] ← そのままEnterキーを押す
New password:        ← 指定の新しいパスワードを入力
Re-enter new password:   ← 再度,指定の新しいパスワードを入力
Password updated successfully!
Reloading privilege tables..
 ... Success!

:
Remove anonymous users? [Y/n] ← そのままEnterキーを押す
 ... Success!

:
Disallow root login remotely? [Y/n] ← そのままEnterキーを押す
 ... Success!

:
Remove test database and access to it? [Y/n] ← そのままEnterキーを押す
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

:
Reload privilege tables now? [Y/n] ← そのままEnterキーを押す
 ... Success!

Cleaning up...
:
Thanks for using MySQL!

最後,忘れずに一般ユーザに戻ります.

# exit

06. MySQLクライアントツールを使ってMySQLにアクセスしてみます.

$ mysql -u root -p

Enter password:   ← 設定したパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.1.61 Source distribution
  :

07. ステータスを確認します.

mysql> status
mysql  Ver 14.14 Distrib 5.1.61, for redhat-linux-gnu (i386) using readline 5.1
  
Connection id:          10
Current database:    
Current user:          root@localhost
:
Server version:          5.1.61 Source distribution
Protocol version:     10
Connection:          Localhost via UNIX socket
Server characterset:     utf8
Db     characterset:     utf8
Client characterset:     utf8
Conn.  characterset:     utf8
UNIX socket:          /var/lib/mysql/mysql.sock
:

08. 確認したらとりあえず終了します.

mysql> \q
Bye

09. 少しだけMySQLを扱ってみます.再度,MySQLの管理者であるroot(Linuxシステムのアカウントのrootとは違う)で接続します.

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

現在既にあるデータベースの一覧を見てみます.

mysql> show databases;

[出力結果]

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

基本的に,コマンドの終わりは「;(セミコロン)」を付けます.

カレントのデータベースを「mysql」に変更します.
「mysql」データベースには,ユーザを管理するテーブル「user」などが含まれています.

mysql> use mysql;
Database changed

SQLコマンドを利用して,そのuserテーブルから,ユーザ名,ホスト名,パスワードを抽出してみます.

mysql> select user, host, password from user;

[出力結果]

+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *F66B049F18EA0009C7322C72A40B329B48F74CFB |
| root | 127.0.0.1 | *F66B049F18EA0009C7322C72A40B329B48F74CFB |
+------+-----------+-------------------------------------------+

1つ新たにデータベースを作成してみます.ここでは「morilab」という名前のデータベースを作成してみます.

mysql> create database morilab;
Query OK, 1 row affected

再度,データベース一覧で確認すると...

mysql> show databases;

[出力結果]

+--------------------+
| Database           |
+--------------------+
| information_schema |
| morilab            |
| mysql              |
+--------------------+
3 rows in set

MySQLサーバとの接続を終了します.

mysql> \q
Bye
$

CentOSサーバ構築 SSH接続設定

VirtualBoxのLinuxコンソールは日本語も表示できませんし,スクロールもできません.何かと使いづらいので,Mac上のターミナルからSSH接続して利用することにします.

そこで問題なのが,現在は,NATのネットワークアダプタを利用しているので,ホストマシンであるMacから,仮想マシン(ゲストマシン)にアクセスすることができません.

そこで,VirtualBoxの機能として,ホストマシンと仮想マシンのみ接続できる「ホストオンリーネットワーク(vboxnet0)」を構築し,仮想マシンに「ホストオンリーネットワークアダプタ」を追加し,ネットワークの設定を行います.

01. まずは,ホストオンリーネットワーク「vboxnet0」の追加を行います.

 ・VirtualBoxメニューバーの「VirtualBox」→「環境設定
 ・「ネットワーク」をクリック
 ・ホストオンリーネットワーク追加のボタン「」をクリック,「vboxnet0」の追加

 ・作成された「vboxnet0」を選択して,編集のボタン(ドライバみたいなアイコン)をクリック

 ・「DHCPサーバー」をクリック
 ・「サーバーを有効化」→チェックを外す(即ち,DHCPサーバを無効化する)

このホストオンリーネットワークは「192.168.56.0」のネットワークで,ネットマスクが「255.255.255.0」であるので,仮想マシンのIPアドレスは「192.168.56.XXX」になります.

SSH接続するので,IPアドレスは,DHCPによる動的割り当てではなく,静的(static)に割り当てます.

02. 続いて,仮想マシンの設定でネットワークアダプタをもう1つ追加します.

 ・仮想マシンの設定画面→「ネットワーク
 ・「アダプタ2」を選択
 ・「ネットワークアダプタを有効化」をON
 ・「割り当て」→「ホストオンリーアダプタ
 ・MACアドレスを確認しておきましょう.
  (後で,Linux上で設定するときに,このMACアドレスが必要となります)

03. Linuxを起動して,イーサネットインターフェース「eth1」のセット
  eth1側は固定IPアドレス(Static IP Address)で割り当てます.

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth1
# vi ifcfg-eth1

[/etc/sysconfig/network-scripts/ifcfg-eth1 の内容]

DEVICE="eth1"
HWADDR="08:00:27:XX:XX:XX" ← MACアドレスは各自確認
NM_CONTROLLED="yes"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.56.102 ← IPアドレス(4オクテット目) 101〜下2桁は各自の番号
NETMASK=255.255.255.0

04. ネットワークの設定を有効にするために,ネットワークのサービスを再起動します.

# cd
# /etc/init.d/network restart

05. SSHでリモート接続(ホストマシンからの接続)するために,一般ユーザアカウントを作成しておきます.
 ・ユーザ名: admin
 ・パスワード: admin
 ・所属グループ: users(GID: 100)

現在のユーザアカウント情報の確認

# cat /etc/passwd

現在は「admin」という名前のユーザは登録されていません.

現在のグループ情報の確認

# cat /etc/group

「users」というグループがあるはずですので,そのグループID(GID)が「100」であることを確認します.

ユーザアカウント「admin」の作成

# useradd -c "Admin User" -g 100 admin

パスワードの設定

# passwd admin

※パスワードは適当に決めます.「admin」でも良いです.

確認

# cat /etc/passwd

[/etc/passwd の内容(抜粋)]

:
admin:x:500:100:Admin User:/home/admin:/bin/bash

06. macのターミナルからSSH接続してみる.

$ ssh admin@192.168.56.199

SSH接続が遅い(パスワード認証までが遅い)ので,次のようにSSHdの設定ファイルを修正します.

07. 一般ユーザ「admin」でログインしているので,suコマンドでrootになります.

$ su -
パスワード: 

※パスワードはrootのパスワードを入力します.

08. SSHdの設定ファイル「/etc/ssh/sshd_config」を書き換えます.

# vi /etc/ssh/sshd_config

[/etc/ssh/sshd_config の内容(抜粋)]

  :
UseDNS no  ←「yes」を「no」に変更(コメントアウトしない)
  :
GSSAPIAuthentication no  ←「yes」を「no」に変更
  :

【参考】CentOS 6.2を最小構成でインストール(CentOS-6.2-i386-minimal.iso使用) – Symfoware

09. SSHd(SSHのサービス)を再起動します.

# /etc/init.d/sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

10. ログアウトして,再度SSHでログインしてみます.

# exit ←rootからadminに戻ります.
logout
$ exit ←仮想マシンからログアウトします.
logout
Connection to 192.168.56.199 closed.

$ ssh admin@192.168.56.199 ←再度,仮想マシンにログインします.
admin@192.168.56.199's password: 

※今度は,ログインの際のパスワード要求が早くなったと思います.

それでは,suコマンドを入力していちいちrootになるのが面倒なので,sudoコマンドを有効にします.

sudoコマンドを利用すると,「$ sudo vi /etc/hosts」のように,一般ユーザであっても,コマンドの頭に「sudo」を付けるだけで,rootの権限でコマンド処理できるようになります.

11. まずは,とりあえず,suでrootになります.

$ su -
パスワード:

12. yumを利用して「sudo」パッケージをダウンロードして,インストールします.

# yum install sudo
Loaded plugins: fastestmirror, presto
:
================================================================================
 Package       Arch          Version                     Repository        Size
================================================================================
Installing:
 sudo          i686          1.7.4p5-9.el6_2             updates          415 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 415 k
Installed size: 1.0 M
Is this ok [y/N]: y  ←「y」を入力
Downloading Packages:
:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 415 k
sudo-1.7.4p5-9.el6_2.i686.rpm                            | 415 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : sudo-1.7.4p5-9.el6_2.i686                                    1/1 

Installed:
  sudo.i686 0:1.7.4p5-9.el6_2                                                   

Complete!
#

13. 一般ユーザ「admin」がsudoコマンドを利用できるように,sudoの設定ファイル「/etc/sudoers」を編集します.編集するには「visudo」を実行します.

# visudo

[/etc/sudoers の内容(抜粋)]

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
:
## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL
admin	ALL=(ALL) 	ALL  ← この行を追加
:
#includedir /etc/sudoers.d

これで,すぐにユーザadminは,sudoコマンドを使用することができます.

14. 一旦,rootからadminユーザに変更します.

# exit
logout
$

15. sudoコマンドを使用すれば,一般ユーザでもroot権限でコマンドが実行できます.

$ sudo vi /etc/hosts
[sudo] password for admin: 

CentOSサーバ構築 開発環境とGuestAdditionsのインストール

前回のところで,とりあえずCentOSがセットアップCD-ROM(実際はISOイメージファイル)から素の状態のCentOSを入れることができました.

まずは,何はともあれネットワーク(インターネット)に接続できなければ,この後追加のパッケージインストールも,アップデートもできませんので,ネットワークの設定をします.VirtualBox上でNATがデフォルトで動いているはずですので,DHCPによる動的IPアドレス取得の設定をします.

01. システムに「root」でログインします.

CentOS release 6.2 (Final)
Kernel 2.6.32-220.el6.i686 on an i686

localhost login: root
Password: ********

02. まずは現在のネットワークインターフェース設定を確認します.

# ifconfig

(現在は,「lo」Local Loopbackインターフェースしか設定されていません)

03. 既定のイーサネットインターフェース「eth0」を設定します.

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

[/etc/sysconfig/network-scripts/ifcfg-eth0 の内容]

DEVICE="eth0"
HWADDR="08:00:27:XX:XX:XX"
NM_CONTROLLED="yes"
ONBOOT="yes"   ← "no"から"yes"へ変更
BOOTPROTO="dhcp"  ←追加

04. ネットワークの設定を有効にするために,ネットワークのサービスを再起動します.

# service network restart

または,

# /etc/init.d/network restart

pingコマンドで外のホストとのping応答を確認しましょう.

# ifconfig
# ping 適当なホスト

05. ホスト名を「semiXX.local(ホスト名は適当)」に変更します.

# vi /etc/sysconfig/network

[/etc/sysconfig/network の内容]

NETWORKING=yes
HOSTNAME=semiXX.local ←変更

(ホスト名はシステムを再起動しないと有効になりません)

06. 再起動する前に,SELinuxを無効化しておきましょう.
その前に,現在,SELinuxが有効かどうか確認

# getenforce
Enforcing

「Enforcing」と表示された場合は,現在,SELinuxが有効になっています.

# vi /etc/sysconfig/selinux

[/etc/sysconfig/selinux の内容(抜粋)]

:
SELINUX=disabled ←「enforcing」から「disabled」へ変更
:

07. 再起動します.

# shutdown -r now

または,

# reboot

これでNATを通して外部のネットワークに接続可能となりましたので,パッケージのアップデートと開発環境のインストールを行います.

08. まずはインストール済みの既存パッケージを最新版にアップデートします.

# yum -y update

  
この後,最新版のパッケージがダウンロードされ,アップデートされます.
半分近くのパッケージがアップデートされます.
終わるまでしばらく待ちましょう(時間: 約10分間)

09. 続いて,開発環境のインストールです.個別に行わず,グループインストールによりまとめてパッケージをインストールします.

# yum groupinstall "Development Tools"

この後,各種開発ツールパッケージがダウンロードされ,インストールされます.
約100ものパッケージがインストールされます.終わるまでしばらく待ちましょう(時間: 約5分間)

今回は,yumコマンドで「-y」オプションを付加していませんので,ダウンロードが終わった時点で,続けるか否かの「y/N」を答える場面が出てきますので,その際は「y」を入力してください.

10. いったんここでリブートしてみます.(カーネルもアップデートされているので...)

# reboot

11. 再度,rootでログオンします.
ここで一旦スナップショットを撮っておきましょう!

gcc,makeなどの開発環境が入りましたので,ここでGuest Additionsのインストールを行います.

VirtualBoxの追加機能である「Guest Additions」を,この仮想マシンにインストールすると,色んなモジュールが仮想マシンであるLinuxにセットアップされ,仮想マシンの色々なサポートをしてくれます.例えばこんなの...
 ・マウスポインタの統合(ホストマシンとゲストマシンとでマウスポインタがシームレスに動きます)
 ・画面解像度が(ウィンドウの大きさに合わせて)自動的に変化します.
 ・(ホストマシンとゲストマシンとで)クリップボードが共有で利用できます.
 ・(ホストマシンとゲストマシンとで)共有フォルダが利用できます.
 ・(ホストマシンとゲストマシンとで)時刻が同期します.

などなど,色々なメリットがあります.

12. セットアップイメージディスク(仮想CD)のマウント

VirtualBoxのメニューバー「デバイス」→「Guest Additions のインストール」

GUI環境ならこれで自動的にマウントしてくれますが,今回CUI環境なので手動でマウントさせます.

# mount /dev/cdrom /mnt
# ls /mnt

13. Guest Additionsのインストーラの起動

# cd /mnt
# ./VBoxLinuxAdditions.run

この後,仮想CDから各種ソースファイルがコピーされ,Cコンパイラでビルドされます.
今回,Windowシステムを入れていないのでX Window関連のドライバのインストールには失敗します.
終わるまでしばらく待ちましょう(時間: 約5分間)

14. 仮想CDドライブのアンマウント

# cd 
# umount /mnt

15. 仮想ドライブからのディスク除去
アンマウントはデバイスのディレクトリへのマウントを解除するだけで,仮想CDドライブからCDは抜き取られていません.
ここでは,実際に仮想CDメディアを抜き取る(除去する)操作を行います.
仮想マシンのウィンドウの右下部にCDのアイコンがあるので,それを右クリックし,「仮想ドライブからディスクを除去」を選択します.

または,VirtualBoxのメニューバー「デバイス」→「CD/DVDデバイス」→「仮想ドライブからディスクを除去」でもOK

16. 次の作業のために,シャットダウンしておきます.

# shutdown -h now

スナップショットも撮っておきましょう.