Edited at

OCI Compute払い出し直後にやること


はじめに

Computeインスタンス作成すると、初期状態ではタイムゾーンやロケールが日本向けに設定されていない。そのため設定を変更しなければならない。さまざまなところで使い古されているネタだけれど、防備録として書くことにする。

また手動で設定するのではなく、cloud-initでインスタンス作成と同時に設定する方法については下記の記事で紹介している。


対象環境

6系と7系ではまったく操作が違うので、それぞれについて説明する。


  • Oracle Linux 7/CentOS 7

  • Oracle Linux 6/CentOS 6


ローカルログインのロケールとsshログインのロケールの違い

Computeインスタンス作成直後にsshログインしたときでも、ロケールは日本(LANG=ja_JP.utf8)になっていたのでは無いだろうか。それはログイン方法によって、設定されるロケールが違うからである。

ローカルログインでは、システムワイドのロケールが使用される。その値は次のファイルに設定されている。

6系 /etc/sysconfig/i18n

7系 /etc/locale.conf

それに対してsshログインではsshクライアントのロケールが使用される。そのため日本語環境のWindows/Linuxからsshログインすると、日本のロケールが設定される。ただしsshログイン後sudo su -などを実行するとローカルログインなので、ロケールはLANG=en_US.UTF-8になる。

ローカルログインで、個別のユーザだけのロケールを変更するには以下のように設定する。

6系 $HOME/.bashrcなどでLANG=ロケールをexportする

7系 $HOME/.i18nで指定する


Oracle Linux 7/CentOS 7などの7系OSで変更する


タイムゾーンを変更する

現在のタイムゾーンを確認するとGMTになっている。

# timedatectl

Local time: Tue 2019-05-14 09:49:46 GMT
Universal time: Tue 2019-05-14 09:49:46 UTC
RTC time: Tue 2019-05-14 09:49:47
Time zone: GMT (GMT, +0000)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

タイムゾーンを日本に変更する。これで日本時刻が表示される。

# timedatectl set-timezone Asia/Tokyo

# timedatectl
Local time: Tue 2019-05-14 19:56:35 JST ★
Universal time: Tue 2019-05-14 10:56:35 UTC
RTC time: Tue 2019-05-14 10:56:36
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a


ロケールを変更する

現在のロケールを確認するとアメリカになっている。

# localectl

System Locale: LANG=en_US.utf8
VC Keymap: us
us

そこでロケールを日本に変更する。合わせてキーマップも日本語に変更する。

# localectl set-locale LANG=ja_JP.utf8

# localectl set-keymap jp106

同じコマンドを実行するとロケールが変更されていることがわかる。

# localectl

System Locale: LANG=ja_JP.utf8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp

設定値は次のファイルに書かれている。

# cat /etc/locale.conf

LANG=ja_JP.utf8


RPMパッケージをインストール/アップデートする

パッケージを最新化する。

# yum update -y

続いて便利なパッケージをインストールする。

# yum install nmap nc tree tmux multitail man-pages-ja -y

nmapにはncなどが含まれ、ポートの疎通確認などに使える。tmuxはターミナル多重化ソフトウェアで、1つのターミナルの中で複数のセッションを起動できるだけで無く、セッションが切れても、リモートデスクトップのようにサーバ上のセッションは保持されている。multitailはログファイルを参照するのに便利なツールである。


まとめバージョン(7系)

# タイムゾーン変更

timedatectl set-timezone Asia/Tokyo

# ロケール変更
localectl set-locale LANG=ja_JP.utf8
localectl set-keymap jp106

# パッケージアップデート
yum update -y

# 便利パッケージインストール
yum install nmap nc tree tmux multitail man-pages-ja -y


Oracle Linux 6/CentOS 6などの6系OSで変更する


タイムゾーンを変更する

現在のタイムゾーンを確認するとGMTになっている。

# strings /etc/localtime

TZif2
TZif2
GMT0

# ls -l /etc/localtime
-rw-r--r--. 1 root root 118 4月 19 02:12 2019 /etc/localtime

システムクロックのタイムゾーンを日本に変更する。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 30 5月 14 20:12 2019 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

# strings /etc/localtime
TZif2
TZif2
JST-9

ハードウェアクロックの設定も日本にする。

# cp -p /etc/sysconfig/clock /etc/sysconfig/clock-`date +%Y%m%d`

# cat <<_EOL_ >/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
_EOL_


ロケールを変更する

現在のロケールを確認するとアメリカになっている。

# locale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8

設定値は/etc/sysconfig/i18nファイルに書かれている。

# cat /etc/sysconfig/i18n

LANG=en_US.UTF-8
SYSFONT=latarcyrheb-sun16

そこでロケールを日本に変更する。

# sed -i -e "s/en_US/ja_JP/" /etc/sysconfig/i18n 

設定を有効にするために再起動する。

# reboot

同じコマンドを実行するとロケールが変更されていることがわかる。

$ cat /etc/sysconfig/i18n

LANG=ja_JP.utf8
SYSFONT=latarcyrheb-sun16

sshログインしたユーザーだとクライアントのロケールが反映されるので、suしてから実行する。

$ sudo su -

# locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=


RPMパッケージをインストール/アップデートする

パッケージを最新化する。

# yum update -y

続いて便利なパッケージをインストールする。

# yum install nmap nc tree tmux multitail man-pages-ja -y


まとめバージョン(6系)

# システムクロックのタイムゾーン変更

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# ハードウェアクロックのタイムゾーン変更
cp -p /etc/sysconfig/clock /etc/sysconfig/clock-`date +%Y%m%d`
cat <<_EOL_ >/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
_EOL_

# ロケール変更
sed -i -e "s/en_US/ja_JP/" /etc/sysconfig/i18n

# パッケージアップデート
yum update -y

# 便利パッケージインストール
yum install nmap nc tree tmux multitail man-pages-ja -y


おわりに

今回は手動で設定する方法を説明した。やっぱりcloud-initのほうが便利だなあ。