15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2019-05-14

はじめに

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

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

対象環境

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

  • Red Hat Enterprise Linux 9やCentOS Stream 9、Oracle Linux 9、AlmaLinuxなどの9系OS
  • Red Hat Enterprise Linux 8やCentOS 8、Oracle Linux 8、AlmaLinuxなどの8系OS
  • Red Hat Enterprise Linux 7やCentOS 7、Oracle Linux 7、Amazon Linux 2などの7系OS
  • Red Hat Enterprise Linux 6やCentOS 6、Oracle Linux 6、Amazon Linuxなどの6系OS

※本文ではOracle Cloud Infrastructureを使用しているが、Amazon EC2やAzure VMでもほとんどの操作は同じだ。ただしAmazon Linux 2は7系の説明を参照してほしい。

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

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

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

6系 /etc/sysconfig/i18n
7/8/9系 /etc/locale.conf

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

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

6系 $HOME/.bashrcなどでLANG=ロケールをexportする
7/8/9系 $HOME/.i18nで指定する

7/8/9系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

キーマップを変更する

キーマップを変更しなくても日本語キーボードを使えることがほとんどだ。しかし、VNCやXmingなどのGUIクライアントを使用するときには変更しなければならないこともある。

  1. 次のコマンドでキーマップを変更する。
localectl set-keymap jp106

2.変更すると次のように出力される。

# localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

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

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

# yum update -y

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

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

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

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

# タイムゾーン変更
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=

キーマップを変更する

キーマップの設定はオプションだが、VNCやXmingなどのGUIクライアントを使用するときには変更する。

/etc/sysconfig/keyboard(修正前)
KEYTABLE="us"
MODEL="pc105+inet"
LAYOUT="us"
KEYBOARDTYPE="pc"
/etc/sysconfig/keyboard(修正後)
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"

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のほうが便利だなあ。

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?