Red Hat Enterprise Linux 7(RHEL7)からは、従来までのRed Hat Enterprise Linux 6(RHEL6)までと比べて、相違点が沢山あります。
中でもネットワーク関連のコマンドについては大きな違いがあります。
Linuxサーバ(RHEL7)のネットワーク設定
IPアドレスを確認するコマンドです。[ifconfig]の代替コマンドです。
ip a
ルーティングテーブルを確認するコマンドです。[netstat -r]、[route]の代替コマンドです。
ip r
開放ポートなどを確認するコマンドです。[netstat]の代替コマンドです。
ss
ネットワークデバイスのステータス/設定を確認(GUIから対話式に設定)
※IPアドレス、デフォルトGW、DNSサーバ、起動時の有効化などが設定可能。
nmtui
ネットワークデバイスのステータス/設定を確認(CUIからコマンドにより設定)
nmcli device status
nmcli con show ens33
IPアドレスの設定
nmcli c mod ensXX ipv4.addresses 0.0.0.0/24
デフォルトゲートウェイの設定
nmcli c mod ensXX ipv4.dateway 0.0.0.0
IPアドレスとデフォルトゲートウェイの設定
nmcli c mod ensXX ipv4.method manual ipv4.addresses "0.0.0.0/24 0.0.0.0"
DNSサーバの設定
nmcli c mod ensXX ipv4.dns 0.0.0.0
ネットワークの接続を有効化/無効化
※/etc/sysconfig/network-scripts/ifcfg-ensXXの”ONBOOT”のパラメータ(yes/no)が書き換えられます。
nmcli c mod ensXX connection.autoconnect yes
nmcli c mod ensXX connection.autoconnect no
インタフェースの接続/切断
nmcli connection up ensXX
nmcli connection down ensXX
デバイスの確認
※インタフェースが無効化でもデバイスは表示されます。
nmcli d
nmcli c
IPアドレスを手動設定/自動設定(DHCP)に設定する
nmcli c modify ensXX ipv4.method manual
nmcli c modify ensXX ipv4.method auto
ネットワークの再起動
systemctl restart network
ネットワーク設定のために参考にしたサイト


Linuxサーバ(RHEL7)を構築する時に最低限設定している項目
RHEL7設計、構築時は、最低限、以下の設定項目を確認しています。
内容 | 設定箇所 | 内容 |
---|---|---|
Subscription Manager | subscription-managerコマンド | rhelのライセンス認証 |
yum | /etc/yum.conf | 接続用プロキシの指定、自動更新除外の設定 |
サービスステイタス | systemctlコマンド | OS起動時にサービス起動するか |
シェル設定 | /etc/profile.d/ | プロンプト表示、記録履歴 |
firewalld | firewall-cmdコマンド | ファイアウォール設定 |
rsyslog | /etc/rsyslog.conf | ログ出力設定、転送設定 |
journal | /etc/systemd/jounald.conf | ログ出力設定 |
logrotate | /etc/logrotate.conf | ログローテーション |
chrony | /etc/chronyd.conf | 時刻同期 |
subscription-managerによるライセンス認証
# 対象端末のサブスクリプション情報を確認する
subscription-manager list
# 対象の端末をRHNに登録する ※対話式でアカウント名とパスワードを入力する
subscription-manager register
# プールIDを確認
subscription-manager list --available
# サブスクリプションのアタッチ
subscription-manager subscribe --pool=____________
# サブスクリプションの全てのアタッチを解除
subscription-manager unsubscribe --all
※サブスクリプションのアタッチの解除はRHELの公式サイト(WEBページ)からも可能です。
オフラインシステムの登録
ネットワーク環境に問題がある場合はオフラインシステムの登録によりライセンス認証を実施します。
- 公式ページへアクセス(https://access.redhat.com/management/systems)
- [新規作成]ボタンよりシステムプロファイルを新規作成する
- 作成したシステムプロファイルのサブスクリプションをアタッチする
- [証明書をダウンロード]ボタンよりエンタイトルメント証明書(zipファイル)を取得する
- エンタイトルメント証明書(zipファイル)を展開し[/export/entitlement_certificates/***.pem]を入手する
- 展開した証明書(pemファイル)を該当サーバの任意のディレクトリに保管し、[subscription-manager]コマンドを実行する
# オフラインシステムの登録
subscription-manager import --certificate=/tmp/Name_Of_Downloaded_Entitlement_Cert.pem

パッケージ管理
rpmnewとrpmsave
[yum update]を実行すると以下のファイルが自動作成されることがあります。
- *.rpmnew
- 既存ファイルを上書きしないために作成された新しい設定ファイル
- *.rpmsave
- 新しい設定ファイルにより上書きされないための既存の設定ファイル
アップデート後に不具合が発生した場合は、[*.rpmnew]および[*.rpmsave]を確認し、適切に修正する必要があります。
# ファイル名の末尾が[rpmnew]または[rpmsave]のものを探す
find / -print | egrep "rpmnew$|rpmsave$"
# アップデートの前後で変更内容を比較する
diff -U0 httpd.conf httpd.conf.rpmnew
diff -U0 httpd.conf httpd.conf.rpmsave

リポジトリの追加(PHP7のインストール)
RHEL7/CentOS7の標準リポジトリにはPHP5までしか含まれていないため、PHP7をインストールするにはREMIパッケージが必要となります。※remi-php71など。
ただし、RemiリポジトリのようにRHEL7/CentOS7の標準リポジトリで提供されていないパッケージ(リポジトリ)をインストールする場合、まず、拡張版リポジトリであるEPEL(Extra Packages for Enterprise Linux)リポジトリなどを追加でインストールする必要があります。
EPELリポジトリがインストールできていない状態でREMIリポジトリをインストールしようとすると、依存関係の問題(依存性の欠如)でエラーになります。
# wgetコマンドにより[.rpm]ファイルをダウンロードし、rpmコマンドによりインストール
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
rpm -ivh epel-release-7-12.noarch.rpm
# rpmコマンドにより直接インストール
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
# yumコマンドにより標準リポジトリから直接インストールも可能
yum install epel-release
※ダウンロード元のディレクトリ構造はFedora Projectのサイトより適切なバージョンを確認する
EPELリポジトリをインストールしたら、次にREMIパッケージをインストールし、その後、PHP7をインストールします。
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install php
リポジトリの有効化/無効化の切替
拡張リポジトリはデフォルトでは有効化されています。有効化/無効化を切り替えるには以下のファイルを修正する必要があります。
- ファイル名
- /etc/yum.repos.d/epel.repo
- 修正前(有効化)
- enabled=1
- 修正後(無効化)
- enabled=0
epel.repoファイルを修正するには以下の方法があります。
- epel.repoファイルを直接編集する
- viエディタによる編集
- sedコマンドによる編集
- yum-config-managerにより指定する
なお、CentOS7でyum-config-managerを利用するには、予め、yum-utilsパッケージをインストールする必要があります。
# sedコマンドによる編集
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
# yum-utilsをインストール
yum install yum-utils
# 有効化または無効化の切替え
yum-config-manager --enable remi-php70
yum-config-manager --disable remi-php70
ログ管理
ログ収集はjournaldとrsyslogdにより管理されています。
- 各プロセスの標準出力/標準エラー出力はjournaldによってジャーナルに書き出される
- ジャーナルを参照するにはjournalctlコマンドを使う
- ジャーナルの情報は再起動により消去される
- 恒久的にログを保存するためにrsyslogによるファイル出力が必要になる
- loggerコマンドにより任意のログを出力できる
rsyslogの設定
デフォルトのrsyslog.confは以下の通りです。行数が多いため[egrep]コマンドでコメント行と空行を非表示としています。
cat /etc/rsyslog.conf | egrep -v '^#|^$'
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
local4.* /var/log/slapd
基本的には、FACILITY(ファシリティ)とPRIORITY(優先度)により制御されますが、プロパティベースおよびフィルタリングベースの制御も可能です。
プロパティ名 | 説明 |
---|---|
msg | 出力されたログ |
hostname | 出力元のホスト名 |
fromhost-ip | 出力元のIPアドレス |
programname | 出力元のプログラム |
syslogfacility-text | 出力されたログのFacility |
pri | 出力されたログのPriority |
条件キーワード | 説明 |
---|---|
contains | 指定した値を含むログ |
isequal | 指定した値と一致するログ |
startswith | 指定した値が先頭に含まれるログ |
regex | 指定した正規表現と一致するログ |
その他の補足事項は以下の通りです。
- ログを二重で取得することを防ぐには次行に”$ ~”を追記する
- ログファイル名の前に”-“を指定すると非同期でログを出力するためパフォーマンスが向上する
logrotate設定
主に以下の関連ファイルがあります。
- /etc/logrotate.conf…設定ファイル(メイン)
- /etc/logrotate.d/*…設定ファイル(個別設定)
- /var/lib/logrotate/logrotate.status…来週ローテーション日時が記載
項目 | 説明 |
---|---|
daily | 日時ローテーション |
weekly | 週時ローテーション |
monthly | 月時ローテーション |
routete | ローテーション世代指定 |
missingok | ログファイルが存在しなくてもエラーとしない |
notifempty | ログファイルが空ならローテーションしない |
ifempty | ログファイルが空でもローテーションする |
compress | 圧縮する |
sharedscripts | 指定ログファイルに対してpostrotateまたはprerotateを実行させる |
postrotate~endscript | ローテーション後のコマンドを指定する |
prerotate~endscript | ローテーション前のコマンドを指定する |
dateformat | データフォーマットを任意の形式に指定 |
cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
logrotateはデーモンが存在しないため、crondによって実行されます。
RHEL6以降は多数のゲストOSを搭載した仮想環境上での運用を想定し、同じ時刻に一斉にログローテーションが実行されない仕様になっています。
anacronの設定内容によりログローテーションを実行することで複数サーバ間で実行時間(ランダム時間)をずらすことでリソースの負荷が集中することを防ぎます。
cronとanacron
crondにより実行されるcronには主に以下の3種類に分けられます。
- /var/spool/cron/*…各ユーザごとに設定可(crontabコマンド)
- /etc/crontab、/etc/cron.d/*…システム全体に影響
- anacrontab…システム全体に影響
タスク実行時間にOS(またはcrond)が停止していた場合、cronではタスクの再実行を実施しませんが、anacronではOS(またはcrond)起動後に再実行が可能です。
一方、cronでは同一タスクを1日に複数回実行できますが、anacronでは同一タスクを1日複数回のタスク実行はできません。
anacronによりlogrotateが実行されるまでの流れは以下の通りです。
- crondが1秒毎に以下のcronジョブを実行する
- /var/spool/cron/アカウト名(crontab -l)
- /etc/crontab
- /etc/cron.d/0hourly
- /etc/cron.d/0hourlyにより毎時1分に/etc/cron.hourly配下全スクリプトが実行される
- /etc/cron.hourly/0anacronが実行される
- /etc/cron.hourly/0anacronによりanacronが実行される
- anacronにより/etc/cron.daily配下の全スクリプトが実行される
- /etc/cron.daily/logrotateが実行される
# /etc/cron.d/配下の0hourlyが実行される
cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
# /etc/cron.hourly/配下の0anacronが実行される
cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
exit 0;
fi
# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
/usr/bin/on_ac_power >/dev/null 2>&1
if test $? -eq 1; then
exit 0
fi
fi
/usr/sbin/anacron -s
# anacronが実行される
cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
# /etc/cron.daily/配下のlogrotate が実行される
cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
以下のサイトが参考になりました。

基本的なコマンド
ファイルの内容を出力⇒バッククォートで(`)で囲みecho出力
echo `cat test2.txt`
重複行と空行を削除し、別ファイルにリダイレクトする
sort test1.txt | uniq | grep -v '^\s*$' > test2.txt
ファイルの行数を変数に格納
変数名=`wc -l test1.txt | cut -d ' ' -f1`
変数の値を標準出力
printf "変数の値は${変数名}です。\n"
タブを出力
echo $'\t'
echo test$'\t'test
プロンプトの表示に日付を追加
PS1='[\u@\h:\w \D{%F %T}]\$ '
ヒストリーコマンドに日付を追加
HISTTIMEFORMAT='%Y-%m-%d %T '
マッチする部分のみを表示する
grep -o
1列目のみを表示
awk '{print $1}'
行末の改行を行わない
echo -n
再帰的に階層の深いディレクトリを作成する
mkdir -p /dir1/dir2/dir3
2つのファイルを左右に列に並べて比較する
diff -ywB test01.txt test01.txt
変数に格納したコマンドを実行するコマンド
eval ${cmd}
findコマンドで抽出したファイルを削除する
find . -name "*.rb" -type f | xargs rm
findコマンドで抽出したファイルのパーミッションを変更する
find . -name "*.rb" -type f -exec chmod 600 () ¥;
findコマンドでカレントディレクトリ配下のファイル名末尾に[.bk]を付ける(コピー)
find . -type f | xargs -I {} cp {} {}.bk
拡張子[.jpg]を[.jpeg]に置き換え
※置き換え前の指定で取り出したい部分を(.*)で囲み、置き換え後の指定で\1~\9で取り出す
ls | sed -r "s/(.*)\jpg$/&\1.jpeg/"
テキストファイルからパスワード部分のみを取り出す
※該当箇所(.*)のみを出力する
sed -r -n -e 's/Password="(.*)"/\1/p' password.txt
プロキシサーバの設定
# profileを編集し以下の5行を追加する
vi /etc/profile
PROXY='プロキシサーバ:8080'
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
# 設定を反映
source /etc/profile
mountコマンド(ISOファイルをマウントする)
オプション | 内容 |
---|---|
-a | /etc/fstabに記載されているファイルシステムをマウント |
-t | マウントするファイルシステムのタイプを指定 |
-r | 読み取り専用でマウント |
-w | 書き込み可能でマウント |
# UUIDとマウント先のパーティションを確認
cat /etc/fstab
# UUIDに対応するデバイスのディスクパーティションを確認
blkid
# ISOファイルをマウントする
mount -r -t iso9660 /dev/cdrom /mnt/cdrom
# マウント状態を確認
df
# ISOファイルをアンマウント
umount /mnt/cdrom
時刻同期
NTPサーバとの時刻同期の確認
# 時刻同期状況の確認(同期候補のNTPサーバ一覧)
chronyc sources
# 時刻設定の確認
timedatectl
LVMとファイルシステムについて
LVM(Logical Volume Manager)とは
LVMを利用すると複数のHDDやパーティションにまたがった記憶領域を一つのボリュームグループにまとめて単一の論理ボリュームとして扱うことができます。
OSのインストール後にもパーティション構成の拡大や縮小が行えます。
LVMおよびその他に関連する基本用語
項目 | 説明 |
---|---|
物理ボリューム(PV) | 物理的なパーティションをLVM用のパーティション(物理ボリューム)に変換する |
ボリュームグループ(VG) | 一つ以上のブル地ボリュームをまとめてプール化し物理エクステントとして論理ボリュームに割り当てる |
論理ボリューム(LV) | ボリュームグループともとに作成した論理ボリューム上にファイルシステムを作成しマウントする |
物理エクステント(PE) | LVMの扱うデータの最小単位 |
XFSファイルシステム | RHEL7のデフォルトファイルシステム、最大ファイルサイズ/最大ボリュームサイズは500TiB |
LVMおよびその他に関連するコマンド・ファイル
fdisk | パーティションの作成/削除/システムタイプの変更/パーティションテーブルの書き込み |
---|---|
/etc/fstab | OS起動時に自動でマウントする情報を記載したファイル |
lsblk | ブロックデバイス情報を一覧表示(HDDに新規パーティションを作成するための残容量があるか確認) |
blkid | デバイスとUUIDの関連付け |
lvmdiskscan | LVM情報の表示 |
pvs / pvscan / pvdisply | 物理ボリューム情報の表示 |
vgs / vgscan / vgdisply | ボリュームグループ情報の表示 |
lvs / lvscan / vldisply | 論理ボリューム情報の表示 |
LVMの注意点
XFSでは論理ボリュームの縮小ができないためパーティションサイズを縮小するには論理ボリュームの削除および再作成が必要になる。
ブートローダはLVMボリュームを読み込むことができないため/bootパーティションは標準パーティションになる。
LVMを利用するケース【HDDを追加して既存パーティション(/var)拡張する】
# HDDの空き容量に新規標準パーティションを作成しシステムタイプ(LVM:8e)を変更
fdisk /dev/sda
# パーティション追加を反映するためにOS再起動
reboot
# 新規パーティションをもとに物理ボリュームを作成
pvcreate /dev/sda3
# 物理ボリュームを既存のボリュームグループに統合
vgextend VolGroup /dev/sda3
# 論理ボリュームを拡張(最大サイズで拡張する場合)
lvextend -l +100%FREE /dev/VolGroup/var
# 論理ボリュームを拡張(サイズしていで拡張する場合)
lvextend -l L+5G /dev/VolGroup/var
# 拡張した論理ボリューム上のファイルシステムのサイズを拡張
xfs_growfs /var
LVMを利用するケース【既存パーティション(/home)の縮小】
# xfsdumpのインストール
yum install xfsdump
# psmiscパッケージをインストール(fuserコマンド利用のため)
yum install psmisc
# homeのダンプファイル(home.dump)を作成
cd /work
xfsdump -j -L home -M drive -f home.dump /home
# homeパーティションをアンマウント
umount /dev/VolGroup/home
# アンマウントが失敗した場合は依存プロセスを停止(killコマンドによる停止)
fuser -va /dev/VolGroup/home
kill XXXX
# アンマウントが失敗した場合は依存プロセスを停止(fuserコマンドによる停止)
fuser -km /dev/VolGroup/home
# 論理ボリューム(homeパーティション)の利用停止(非アクティブ化)および削除
lvchange -an /dev/VolGroup/home
lvmore /dev/VolGroup/home
# 論理ボリューム(homeパーティション)を再作成(新規作成)
lvcreate -L 500M -n home VolGroup
# 論理ボリュームにファイルシステムを新規作成しマウント
mkfs.xfs /dev/VolGroup/home
mount /dev/VolGroup/home /home
homeのダンプファイル(home.dump)のリストあ
cd /work
xfsrestore -J -L home -f home.dump /home
# OS再起動時に自動的にマウントするように設定
vi /etc/fstab
LVMの参考サイト



コメント